From 9c7120d5f864286e3d78e5649c8715cd8b8a21c3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 26 Sep 2026 21:29:40 +0000 Subject: [PATCH] Preview for PR #1773 6c2d73236993d3f160b87c19a200156d2e9e3059 --- preview/pr-1773/.nojekyll | 0 preview/pr-1773/api/index.html | 6 + .../api/latest/BayesFilter_8h_source.html | 249 + .../api/latest/CameraDepthAI_8h_source.html | 247 + .../api/latest/CameraEvent_8h_source.html | 149 + .../api/latest/CameraFreenect2_8h_source.html | 231 + .../api/latest/CameraFreenect_8h_source.html | 207 + .../api/latest/CameraImages_8h_source.html | 364 + .../api/latest/CameraInfo_8h_source.html | 149 + .../api/latest/CameraK4A_8h_source.html | 229 + .../api/latest/CameraK4W2_8h_source.html | 225 + .../api/latest/CameraModel_8h_source.html | 342 + .../api/latest/CameraMyntEye_8h_source.html | 238 + .../api/latest/CameraOpenNI2_8h_source.html | 223 + .../api/latest/CameraOpenNICV_8h_source.html | 191 + .../api/latest/CameraOpenni_8h_source.html | 229 + .../api/latest/CameraOrbbecSDK_8h_source.html | 236 + .../latest/CameraRGBDImages_8h_source.html | 188 + .../api/latest/CameraRGBD_8h_source.html | 160 + .../api/latest/CameraRGB_8h_source.html | 150 + .../latest/CameraRealSense2_8h_source.html | 288 + .../api/latest/CameraRealSense_8h_source.html | 234 + .../api/latest/CameraSeerSense_8h_source.html | 186 + .../latest/CameraStereoDC1394_8h_source.html | 194 + .../CameraStereoFlyCapture2_8h_source.html | 195 + .../latest/CameraStereoImages_8h_source.html | 230 + .../latest/CameraStereoTara_8h_source.html | 198 + .../latest/CameraStereoVideo_8h_source.html | 222 + .../latest/CameraStereoZedOC_8h_source.html | 214 + .../api/latest/CameraStereoZed_8h_source.html | 246 + .../api/latest/CameraStereo_8h_source.html | 157 + .../api/latest/CameraThread_8h_source.html | 149 + .../api/latest/CameraVideo_8h_source.html | 212 + .../pr-1773/api/latest/Camera_8h_source.html | 200 + .../api/latest/CloudMap_8h_source.html | 193 + .../api/latest/Compression_8h_source.html | 215 + .../api/latest/DBDriverSqlite3_8h_source.html | 369 + .../api/latest/DBDriver_8h_source.html | 483 + .../api/latest/DBReader_8h_source.html | 265 + .../api/latest/EnvSensor_8h_source.html | 237 + .../latest/EpipolarGeometry_8h_source.html | 377 + .../api/latest/Features2d_8h_source.html | 922 + .../api/latest/FlannIndex_8h_source.html | 272 + preview/pr-1773/api/latest/GPS_8h_source.html | 215 + .../api/latest/GainCompensator_8h_source.html | 229 + .../api/latest/GeodeticCoords_8h_source.html | 223 + .../GlobalDescriptorExtractor_8h_source.html | 199 + .../latest/GlobalDescriptor_8h_source.html | 182 + .../api/latest/GlobalMap_8h_source.html | 253 + .../pr-1773/api/latest/Graph_8h_source.html | 431 + .../pr-1773/api/latest/GridMap_8h_source.html | 200 + .../api/latest/IMUFilter_8h_source.html | 212 + .../api/latest/IMUThread_8h_source.html | 209 + preview/pr-1773/api/latest/IMU_8h_source.html | 281 + .../pr-1773/api/latest/Image_8h_source.html | 158 + .../api/latest/LASWriter_8h_source.html | 178 + .../api/latest/Landmark_8h_source.html | 245 + .../api/latest/LaserScan_8h_source.html | 327 + .../api/latest/LidarVLP16_8h_source.html | 276 + .../pr-1773/api/latest/Lidar_8h_source.html | 175 + .../pr-1773/api/latest/Link_8h_source.html | 265 + .../api/latest/LocalGridMaker_8h_source.html | 259 + .../api/latest/LocalGrid_8h_source.html | 230 + .../api/latest/LocalMapMaker_8hpp_source.html | 390 + .../api/latest/MarkerDetector_8h_source.html | 234 + .../pr-1773/api/latest/Memory_8h_source.html | 647 + .../api/latest/OccupancyGrid_8h_source.html | 157 + .../pr-1773/api/latest/OctoMap_8h_source.html | 157 + .../api/latest/OdometryCuVSLAM_8h_source.html | 232 + .../api/latest/OdometryDVO_8h_source.html | 200 + .../api/latest/OdometryEvent_8h_source.html | 269 + .../api/latest/OdometryF2F_8h_source.html | 200 + .../api/latest/OdometryF2M_8h_source.html | 234 + .../api/latest/OdometryFLOAM_8h_source.html | 195 + .../api/latest/OdometryFovis_8h_source.html | 201 + .../api/latest/OdometryInfo_8h_source.html | 261 + .../api/latest/OdometryLIOSAM_8h_source.html | 214 + .../api/latest/OdometryLOAM_8h_source.html | 206 + .../api/latest/OdometryMSCKF_8h_source.html | 200 + .../api/latest/OdometryMono_8h_source.html | 216 + .../latest/OdometryORBSLAM2_8h_source.html | 193 + .../latest/OdometryORBSLAM3_8h_source.html | 204 + .../api/latest/OdometryOkvis_8h_source.html | 203 + .../api/latest/OdometryOpen3D_8h_source.html | 190 + .../latest/OdometryOpenVINS_8h_source.html | 199 + .../api/latest/OdometryThread_8h_source.html | 211 + .../latest/OdometryVINSFusion_8h_source.html | 198 + .../api/latest/OdometryVINS_8h_source.html | 150 + .../api/latest/OdometryViso2_8h_source.html | 196 + .../api/latest/Odometry_8h_source.html | 280 + .../api/latest/OptimizerCVSBA_8h_source.html | 191 + .../api/latest/OptimizerCeres_8h_source.html | 214 + .../api/latest/OptimizerG2O_8h_source.html | 221 + .../api/latest/OptimizerGTSAM_8h_source.html | 228 + .../api/latest/OptimizerTORO_8h_source.html | 203 + .../api/latest/Optimizer_8h_source.html | 377 + .../api/latest/PDALWriter_8h_source.html | 167 + .../api/latest/ParamEvent_8h_source.html | 183 + .../api/latest/Parameters_8h_source.html | 1110 + .../api/latest/ParticleFilter_8h_source.html | 305 + .../api/latest/Posix_2UThreadC_8h_source.html | 530 + .../api/latest/ProgressState_8h_source.html | 187 + .../api/latest/PythonInterface_8h_source.html | 168 + .../api/latest/Recovery_8h_source.html | 170 + .../api/latest/RegistrationIcp_8h_source.html | 246 + .../latest/RegistrationInfo_8h_source.html | 257 + .../api/latest/RegistrationVis_8h_source.html | 265 + .../api/latest/Registration_8h_source.html | 265 + .../api/latest/RtabmapEvent_8h_source.html | 440 + .../api/latest/RtabmapThread_8h_source.html | 261 + .../pr-1773/api/latest/Rtabmap_8h_source.html | 580 + .../latest/SensorCaptureInfo_8h_source.html | 232 + .../latest/SensorCaptureThread_8h_source.html | 384 + .../api/latest/SensorCapture_8h_source.html | 231 + .../api/latest/SensorData_8h_source.html | 655 + .../api/latest/SensorEvent_8h_source.html | 249 + .../api/latest/Signature_8h_source.html | 390 + .../api/latest/Statistics_8h_source.html | 594 + .../api/latest/StereoBM_8h_source.html | 196 + .../latest/StereoCameraModel_8h_source.html | 337 + .../api/latest/StereoDense_8h_source.html | 197 + .../api/latest/StereoSGBM_8h_source.html | 194 + .../pr-1773/api/latest/Stereo_8h_source.html | 278 + .../api/latest/Transform_8h_source.html | 383 + .../pr-1773/api/latest/UConversion_8h.html | 1075 + preview/pr-1773/api/latest/UConversion_8h.js | 26 + .../api/latest/UConversion_8h__dep__incl.map | 122 + .../api/latest/UConversion_8h__dep__incl.md5 | 1 + .../api/latest/UConversion_8h__dep__incl.png | Bin 0 -> 310712 bytes .../api/latest/UConversion_8h__incl.map | 11 + .../api/latest/UConversion_8h__incl.md5 | 1 + .../api/latest/UConversion_8h__incl.png | Bin 0 -> 13703 bytes .../api/latest/UConversion_8h_source.html | 222 + .../api/latest/UDestroyer_8h_source.html | 184 + .../api/latest/UDirectory_8h_source.html | 210 + .../pr-1773/api/latest/UEvent_8h_source.html | 170 + .../api/latest/UEventsHandler_8h_source.html | 177 + .../api/latest/UEventsManager_8h_source.html | 336 + .../api/latest/UEventsSender_8h_source.html | 151 + .../api/latest/UException_8h_source.html | 155 + .../pr-1773/api/latest/UFile_8h_source.html | 220 + preview/pr-1773/api/latest/ULogger_8h.html | 625 + preview/pr-1773/api/latest/ULogger_8h.js | 11 + .../api/latest/ULogger_8h__dep__incl.map | 111 + .../api/latest/ULogger_8h__dep__incl.md5 | 1 + .../api/latest/ULogger_8h__dep__incl.png | Bin 0 -> 290590 bytes .../pr-1773/api/latest/ULogger_8h__incl.map | 35 + .../pr-1773/api/latest/ULogger_8h__incl.md5 | 1 + .../pr-1773/api/latest/ULogger_8h__incl.png | Bin 0 -> 51207 bytes .../pr-1773/api/latest/ULogger_8h_source.html | 479 + preview/pr-1773/api/latest/UMath_8h.html | 2599 + preview/pr-1773/api/latest/UMath_8h.js | 58 + .../api/latest/UMath_8h__dep__incl.map | 111 + .../api/latest/UMath_8h__dep__incl.md5 | 1 + .../api/latest/UMath_8h__dep__incl.png | Bin 0 -> 273128 bytes preview/pr-1773/api/latest/UMath_8h__incl.map | 9 + preview/pr-1773/api/latest/UMath_8h__incl.md5 | 1 + preview/pr-1773/api/latest/UMath_8h__incl.png | Bin 0 -> 8108 bytes .../pr-1773/api/latest/UMath_8h_source.html | 899 + .../pr-1773/api/latest/UMutex_8h_source.html | 260 + .../latest/UObjDeletionThread_8h_source.html | 234 + .../pr-1773/api/latest/UProcessInfo_8h.html | 154 + preview/pr-1773/api/latest/UProcessInfo_8h.js | 4 + .../api/latest/UProcessInfo_8h__dep__incl.map | 5 + .../api/latest/UProcessInfo_8h__dep__incl.md5 | 1 + .../api/latest/UProcessInfo_8h__dep__incl.png | Bin 0 -> 7095 bytes .../api/latest/UProcessInfo_8h__incl.map | 5 + .../api/latest/UProcessInfo_8h__incl.md5 | 1 + .../api/latest/UProcessInfo_8h__incl.png | Bin 0 -> 6856 bytes .../api/latest/UProcessInfo_8h_source.html | 159 + .../api/latest/USemaphore_8h_source.html | 353 + preview/pr-1773/api/latest/UStl_8h.html | 2098 + preview/pr-1773/api/latest/UStl_8h.js | 43 + .../pr-1773/api/latest/UStl_8h__dep__incl.map | 21 + .../pr-1773/api/latest/UStl_8h__dep__incl.md5 | 1 + .../pr-1773/api/latest/UStl_8h__dep__incl.png | Bin 0 -> 34503 bytes preview/pr-1773/api/latest/UStl_8h__incl.map | 17 + preview/pr-1773/api/latest/UStl_8h__incl.md5 | 1 + preview/pr-1773/api/latest/UStl_8h__incl.png | Bin 0 -> 15554 bytes .../pr-1773/api/latest/UStl_8h_source.html | 791 + .../api/latest/UThreadC_8h_source.html | 155 + .../pr-1773/api/latest/UThreadNode_8h.html | 204 + preview/pr-1773/api/latest/UThreadNode_8h.js | 4 + .../api/latest/UThreadNode_8h__dep__incl.map | 17 + .../api/latest/UThreadNode_8h__dep__incl.md5 | 1 + .../api/latest/UThreadNode_8h__dep__incl.png | Bin 0 -> 32989 bytes .../api/latest/UThreadNode_8h__incl.map | 25 + .../api/latest/UThreadNode_8h__incl.md5 | 1 + .../api/latest/UThreadNode_8h__incl.png | Bin 0 -> 41997 bytes .../api/latest/UThreadNode_8h_source.html | 149 + .../pr-1773/api/latest/UThread_8h_source.html | 266 + .../pr-1773/api/latest/UTimer_8h_source.html | 189 + preview/pr-1773/api/latest/UVariant_8h.html | 170 + preview/pr-1773/api/latest/UVariant_8h.js | 4 + .../api/latest/UVariant_8h__dep__incl.map | 9 + .../api/latest/UVariant_8h__dep__incl.md5 | 1 + .../api/latest/UVariant_8h__dep__incl.png | Bin 0 -> 15445 bytes .../pr-1773/api/latest/UVariant_8h__incl.map | 9 + .../pr-1773/api/latest/UVariant_8h__incl.md5 | 1 + .../pr-1773/api/latest/UVariant_8h__incl.png | Bin 0 -> 10406 bytes .../api/latest/UVariant_8h_source.html | 377 + .../pr-1773/api/latest/UWin32_8h_source.html | 180 + .../api/latest/UserDataEvent_8h_source.html | 181 + .../pr-1773/api/latest/UtiLite_8h_source.html | 165 + .../api/latest/VWDictionary_8h_source.html | 416 + .../pr-1773/api/latest/Version_8h_source.html | 231 + .../api/latest/VisualWord_8h_source.html | 206 + .../api/latest/Win32_2UThreadC_8h_source.html | 505 + preview/pr-1773/api/latest/_formulas.tex | 59 + preview/pr-1773/api/latest/annotated.html | 295 + preview/pr-1773/api/latest/annotated_dup.js | 183 + preview/pr-1773/api/latest/bc_s.png | Bin 0 -> 676 bytes preview/pr-1773/api/latest/bc_sd.png | Bin 0 -> 635 bytes .../api/latest/classUDestroyer-members.html | 119 + .../pr-1773/api/latest/classUDestroyer.html | 234 + preview/pr-1773/api/latest/classUDestroyer.js | 5 + .../api/latest/classUDirectory-members.html | 134 + .../pr-1773/api/latest/classUDirectory.html | 578 + preview/pr-1773/api/latest/classUDirectory.js | 11 + .../api/latest/classUEvent-members.html | 120 + preview/pr-1773/api/latest/classUEvent.html | 318 + preview/pr-1773/api/latest/classUEvent.js | 6 + .../latest/classUEventDispatcher-members.html | 159 + .../api/latest/classUEventDispatcher.html | 308 + .../api/latest/classUEventDispatcher.js | 4 + .../classUEventDispatcher__coll__graph.map | 7 + .../classUEventDispatcher__coll__graph.md5 | 1 + .../classUEventDispatcher__coll__graph.png | Bin 0 -> 6156 bytes .../classUEventDispatcher__inherit__graph.map | 7 + .../classUEventDispatcher__inherit__graph.md5 | 1 + .../classUEventDispatcher__inherit__graph.png | Bin 0 -> 6156 bytes .../latest/classUEvent__inherit__graph.map | 33 + .../latest/classUEvent__inherit__graph.md5 | 1 + .../latest/classUEvent__inherit__graph.png | Bin 0 -> 67499 bytes .../latest/classUEventsHandler-members.html | 125 + .../api/latest/classUEventsHandler.html | 381 + .../pr-1773/api/latest/classUEventsHandler.js | 7 + .../classUEventsHandler__coll__graph.map | 5 + .../classUEventsHandler__coll__graph.md5 | 1 + .../classUEventsHandler__coll__graph.png | Bin 0 -> 4186 bytes .../classUEventsHandler__inherit__graph.map | 9 + .../classUEventsHandler__inherit__graph.md5 | 1 + .../classUEventsHandler__inherit__graph.png | Bin 0 -> 10091 bytes .../latest/classUEventsManager-members.html | 167 + .../api/latest/classUEventsManager.html | 469 + .../pr-1773/api/latest/classUEventsManager.js | 4 + .../classUEventsManager__coll__graph.map | 7 + .../classUEventsManager__coll__graph.md5 | 1 + .../classUEventsManager__coll__graph.png | Bin 0 -> 6027 bytes .../classUEventsManager__inherit__graph.map | 7 + .../classUEventsManager__inherit__graph.md5 | 1 + .../classUEventsManager__inherit__graph.png | Bin 0 -> 6027 bytes .../latest/classUEventsSender-members.html | 119 + .../api/latest/classUEventsSender.html | 213 + .../pr-1773/api/latest/classUEventsSender.js | 4 + .../classUEventsSender__inherit__graph.map | 13 + .../classUEventsSender__inherit__graph.md5 | 1 + .../classUEventsSender__inherit__graph.png | Bin 0 -> 16354 bytes .../api/latest/classUException-members.html | 117 + .../pr-1773/api/latest/classUException.html | 178 + .../latest/classUException__coll__graph.map | 5 + .../latest/classUException__coll__graph.md5 | 1 + .../latest/classUException__coll__graph.png | Bin 0 -> 4024 bytes .../classUException__inherit__graph.map | 5 + .../classUException__inherit__graph.md5 | 1 + .../classUException__inherit__graph.png | Bin 0 -> 4024 bytes .../api/latest/classUFile-members.html | 132 + preview/pr-1773/api/latest/classUFile.html | 682 + preview/pr-1773/api/latest/classUFile.js | 11 + .../api/latest/classULogEvent-members.html | 123 + .../pr-1773/api/latest/classULogEvent.html | 298 + preview/pr-1773/api/latest/classULogEvent.js | 6 + .../latest/classULogEvent__coll__graph.map | 5 + .../latest/classULogEvent__coll__graph.md5 | 1 + .../latest/classULogEvent__coll__graph.png | Bin 0 -> 3109 bytes .../latest/classULogEvent__inherit__graph.map | 5 + .../latest/classULogEvent__inherit__graph.md5 | 1 + .../latest/classULogEvent__inherit__graph.png | Bin 0 -> 3109 bytes .../api/latest/classULogger-members.html | 166 + preview/pr-1773/api/latest/classULogger.html | 1336 + preview/pr-1773/api/latest/classULogger.js | 15 + .../api/latest/classUMutex-members.html | 121 + preview/pr-1773/api/latest/classUMutex.html | 291 + preview/pr-1773/api/latest/classUMutex.js | 7 + .../latest/classUObjDeletedEvent-members.html | 122 + .../api/latest/classUObjDeletedEvent.html | 250 + .../api/latest/classUObjDeletedEvent.js | 4 + .../classUObjDeletedEvent__coll__graph.map | 5 + .../classUObjDeletedEvent__coll__graph.md5 | 1 + .../classUObjDeletedEvent__coll__graph.png | Bin 0 -> 3870 bytes .../classUObjDeletedEvent__inherit__graph.map | 5 + .../classUObjDeletedEvent__inherit__graph.md5 | 1 + .../classUObjDeletedEvent__inherit__graph.png | Bin 0 -> 3870 bytes .../classUObjDeletionThread-members.html | 160 + .../api/latest/classUObjDeletionThread.html | 444 + .../api/latest/classUObjDeletionThread.js | 8 + .../classUObjDeletionThread__coll__graph.map | 7 + .../classUObjDeletionThread__coll__graph.md5 | 1 + .../classUObjDeletionThread__coll__graph.png | Bin 0 -> 6769 bytes ...lassUObjDeletionThread__inherit__graph.map | 7 + ...lassUObjDeletionThread__inherit__graph.md5 | 1 + ...lassUObjDeletionThread__inherit__graph.png | Bin 0 -> 6769 bytes .../api/latest/classUProcessInfo-members.html | 119 + .../pr-1773/api/latest/classUProcessInfo.html | 182 + .../pr-1773/api/latest/classUProcessInfo.js | 5 + .../api/latest/classUScopeMutex-members.html | 119 + .../pr-1773/api/latest/classUScopeMutex.html | 236 + .../api/latest/classUSemaphore-members.html | 122 + .../pr-1773/api/latest/classUSemaphore.html | 353 + preview/pr-1773/api/latest/classUSemaphore.js | 8 + .../api/latest/classUThread-members.html | 155 + preview/pr-1773/api/latest/classUThread.html | 644 + preview/pr-1773/api/latest/classUThread.js | 21 + .../api/latest/classUThreadC-members.html | 145 + preview/pr-1773/api/latest/classUThreadC.html | 1056 + .../classUThreadC_3_01void_01_4-members.html | 144 + .../latest/classUThreadC_3_01void_01_4.html | 1090 + ...UThreadC_3_01void_01_4__inherit__graph.map | 25 + ...UThreadC_3_01void_01_4__inherit__graph.md5 | 1 + ...UThreadC_3_01void_01_4__inherit__graph.png | Bin 0 -> 43343 bytes .../api/latest/classUThread__coll__graph.map | 5 + .../api/latest/classUThread__coll__graph.md5 | 1 + .../api/latest/classUThread__coll__graph.png | Bin 0 -> 3851 bytes .../latest/classUThread__inherit__graph.map | 25 + .../latest/classUThread__inherit__graph.md5 | 1 + .../latest/classUThread__inherit__graph.png | Bin 0 -> 43094 bytes .../api/latest/classUTimer-members.html | 125 + preview/pr-1773/api/latest/classUTimer.html | 277 + preview/pr-1773/api/latest/classUTimer.js | 7 + .../api/latest/classUVariant-members.html | 195 + preview/pr-1773/api/latest/classUVariant.html | 2007 + preview/pr-1773/api/latest/classUVariant.js | 83 + ...1DiscreteDepthDistortionModel-members.html | 149 + ...clams_1_1DiscreteDepthDistortionModel.html | 652 + ...ssclams_1_1DiscreteDepthDistortionModel.js | 10 + ...creteDepthDistortionModel__coll__graph.map | 5 + ...creteDepthDistortionModel__coll__graph.md5 | 1 + ...creteDepthDistortionModel__coll__graph.png | Bin 0 -> 6020 bytes ...classclams_1_1DiscreteFrustum-members.html | 131 + .../latest/classclams_1_1DiscreteFrustum.html | 395 + .../latest/classclams_1_1DiscreteFrustum.js | 4 + .../classclams_1_1FrameProjector-members.html | 123 + .../latest/classclams_1_1FrameProjector.html | 222 + .../latest/classclams_1_1FrameProjector.js | 4 + ...classclams_1_1ProjectivePoint-members.html | 120 + .../latest/classclams_1_1ProjectivePoint.html | 213 + preview/pr-1773/api/latest/classes.html | 167 + .../latest/classrtabmap_1_1BRISK-members.html | 169 + .../api/latest/classrtabmap_1_1BRISK.html | 339 + .../classrtabmap_1_1BRISK__coll__graph.map | 5 + .../classrtabmap_1_1BRISK__coll__graph.md5 | 1 + .../classrtabmap_1_1BRISK__coll__graph.png | Bin 0 -> 4418 bytes .../classrtabmap_1_1BRISK__inherit__graph.map | 5 + .../classrtabmap_1_1BRISK__inherit__graph.md5 | 1 + .../classrtabmap_1_1BRISK__inherit__graph.png | Bin 0 -> 4418 bytes .../classrtabmap_1_1BayesFilter-members.html | 130 + .../latest/classrtabmap_1_1BayesFilter.html | 521 + .../api/latest/classrtabmap_1_1BayesFilter.js | 16 + .../classrtabmap_1_1Camera-members.html | 140 + .../api/latest/classrtabmap_1_1Camera.html | 452 + .../api/latest/classrtabmap_1_1Camera.js | 4 + ...classrtabmap_1_1CameraDepthAI-members.html | 154 + .../latest/classrtabmap_1_1CameraDepthAI.html | 406 + .../latest/classrtabmap_1_1CameraDepthAI.js | 5 + ...srtabmap_1_1CameraDepthAI__coll__graph.map | 7 + ...srtabmap_1_1CameraDepthAI__coll__graph.md5 | 1 + ...srtabmap_1_1CameraDepthAI__coll__graph.png | Bin 0 -> 6839 bytes ...abmap_1_1CameraDepthAI__inherit__graph.map | 7 + ...abmap_1_1CameraDepthAI__inherit__graph.md5 | 1 + ...abmap_1_1CameraDepthAI__inherit__graph.png | Bin 0 -> 6839 bytes ...lassrtabmap_1_1CameraFreenect-members.html | 146 + .../classrtabmap_1_1CameraFreenect.html | 398 + .../latest/classrtabmap_1_1CameraFreenect.js | 5 + ...assrtabmap_1_1CameraFreenect2-members.html | 150 + .../classrtabmap_1_1CameraFreenect2.html | 405 + .../latest/classrtabmap_1_1CameraFreenect2.js | 5 + ...tabmap_1_1CameraFreenect2__coll__graph.map | 7 + ...tabmap_1_1CameraFreenect2__coll__graph.md5 | 1 + ...tabmap_1_1CameraFreenect2__coll__graph.png | Bin 0 -> 6872 bytes ...map_1_1CameraFreenect2__inherit__graph.map | 7 + ...map_1_1CameraFreenect2__inherit__graph.md5 | 1 + ...map_1_1CameraFreenect2__inherit__graph.png | Bin 0 -> 6872 bytes ...rtabmap_1_1CameraFreenect__coll__graph.map | 7 + ...rtabmap_1_1CameraFreenect__coll__graph.md5 | 1 + ...rtabmap_1_1CameraFreenect__coll__graph.png | Bin 0 -> 6690 bytes ...bmap_1_1CameraFreenect__inherit__graph.map | 7 + ...bmap_1_1CameraFreenect__inherit__graph.md5 | 1 + ...bmap_1_1CameraFreenect__inherit__graph.png | Bin 0 -> 6690 bytes .../classrtabmap_1_1CameraImages-members.html | 170 + .../latest/classrtabmap_1_1CameraImages.html | 1235 + .../latest/classrtabmap_1_1CameraImages.js | 6 + ...ssrtabmap_1_1CameraImages__coll__graph.map | 7 + ...ssrtabmap_1_1CameraImages__coll__graph.md5 | 1 + ...ssrtabmap_1_1CameraImages__coll__graph.png | Bin 0 -> 6739 bytes ...tabmap_1_1CameraImages__inherit__graph.map | 11 + ...tabmap_1_1CameraImages__inherit__graph.md5 | 1 + ...tabmap_1_1CameraImages__inherit__graph.png | Bin 0 -> 14840 bytes .../classrtabmap_1_1CameraK4A-members.html | 146 + .../api/latest/classrtabmap_1_1CameraK4A.html | 382 + .../api/latest/classrtabmap_1_1CameraK4A.js | 5 + ...classrtabmap_1_1CameraK4A__coll__graph.map | 7 + ...classrtabmap_1_1CameraK4A__coll__graph.md5 | 1 + ...classrtabmap_1_1CameraK4A__coll__graph.png | Bin 0 -> 6753 bytes ...ssrtabmap_1_1CameraK4A__inherit__graph.map | 7 + ...ssrtabmap_1_1CameraK4A__inherit__graph.md5 | 1 + ...ssrtabmap_1_1CameraK4A__inherit__graph.png | Bin 0 -> 6753 bytes .../classrtabmap_1_1CameraK4W2-members.html | 151 + .../latest/classrtabmap_1_1CameraK4W2.html | 508 + .../api/latest/classrtabmap_1_1CameraK4W2.js | 5 + ...lassrtabmap_1_1CameraK4W2__coll__graph.map | 7 + ...lassrtabmap_1_1CameraK4W2__coll__graph.md5 | 1 + ...lassrtabmap_1_1CameraK4W2__coll__graph.png | Bin 0 -> 7075 bytes ...srtabmap_1_1CameraK4W2__inherit__graph.map | 7 + ...srtabmap_1_1CameraK4W2__inherit__graph.md5 | 1 + ...srtabmap_1_1CameraK4W2__inherit__graph.png | Bin 0 -> 7075 bytes .../classrtabmap_1_1CameraModel-members.html | 165 + .../latest/classrtabmap_1_1CameraModel.html | 1930 + .../api/latest/classrtabmap_1_1CameraModel.js | 48 + ...classrtabmap_1_1CameraMyntEye-members.html | 147 + .../latest/classrtabmap_1_1CameraMyntEye.html | 424 + .../latest/classrtabmap_1_1CameraMyntEye.js | 7 + ...srtabmap_1_1CameraMyntEye__coll__graph.map | 7 + ...srtabmap_1_1CameraMyntEye__coll__graph.md5 | 1 + ...srtabmap_1_1CameraMyntEye__coll__graph.png | Bin 0 -> 6983 bytes ...abmap_1_1CameraMyntEye__inherit__graph.map | 7 + ...abmap_1_1CameraMyntEye__inherit__graph.md5 | 1 + ...abmap_1_1CameraMyntEye__inherit__graph.png | Bin 0 -> 6983 bytes ...classrtabmap_1_1CameraOpenNI2-members.html | 156 + .../latest/classrtabmap_1_1CameraOpenNI2.html | 426 + .../latest/classrtabmap_1_1CameraOpenNI2.js | 5 + ...srtabmap_1_1CameraOpenNI2__coll__graph.map | 7 + ...srtabmap_1_1CameraOpenNI2__coll__graph.md5 | 1 + ...srtabmap_1_1CameraOpenNI2__coll__graph.png | Bin 0 -> 6987 bytes ...abmap_1_1CameraOpenNI2__inherit__graph.map | 7 + ...abmap_1_1CameraOpenNI2__inherit__graph.md5 | 1 + ...abmap_1_1CameraOpenNI2__inherit__graph.png | Bin 0 -> 6987 bytes ...lassrtabmap_1_1CameraOpenNICV-members.html | 143 + .../classrtabmap_1_1CameraOpenNICV.html | 375 + .../latest/classrtabmap_1_1CameraOpenNICV.js | 5 + ...rtabmap_1_1CameraOpenNICV__coll__graph.map | 7 + ...rtabmap_1_1CameraOpenNICV__coll__graph.md5 | 1 + ...rtabmap_1_1CameraOpenNICV__coll__graph.png | Bin 0 -> 7128 bytes ...bmap_1_1CameraOpenNICV__inherit__graph.map | 7 + ...bmap_1_1CameraOpenNICV__inherit__graph.md5 | 1 + ...bmap_1_1CameraOpenNICV__inherit__graph.png | Bin 0 -> 7128 bytes .../classrtabmap_1_1CameraOpenni-members.html | 143 + .../latest/classrtabmap_1_1CameraOpenni.html | 379 + .../latest/classrtabmap_1_1CameraOpenni.js | 5 + ...ssrtabmap_1_1CameraOpenni__coll__graph.map | 7 + ...ssrtabmap_1_1CameraOpenni__coll__graph.md5 | 1 + ...ssrtabmap_1_1CameraOpenni__coll__graph.png | Bin 0 -> 6707 bytes ...tabmap_1_1CameraOpenni__inherit__graph.map | 7 + ...tabmap_1_1CameraOpenni__inherit__graph.md5 | 1 + ...tabmap_1_1CameraOpenni__inherit__graph.png | Bin 0 -> 6707 bytes ...assrtabmap_1_1CameraOrbbecSDK-members.html | 147 + .../classrtabmap_1_1CameraOrbbecSDK.html | 385 + .../latest/classrtabmap_1_1CameraOrbbecSDK.js | 5 + ...tabmap_1_1CameraOrbbecSDK__coll__graph.map | 7 + ...tabmap_1_1CameraOrbbecSDK__coll__graph.md5 | 1 + ...tabmap_1_1CameraOrbbecSDK__coll__graph.png | Bin 0 -> 7440 bytes ...map_1_1CameraOrbbecSDK__inherit__graph.map | 7 + ...map_1_1CameraOrbbecSDK__inherit__graph.md5 | 1 + ...map_1_1CameraOrbbecSDK__inherit__graph.png | Bin 0 -> 7440 bytes ...ssrtabmap_1_1CameraRGBDImages-members.html | 173 + .../classrtabmap_1_1CameraRGBDImages.html | 444 + .../classrtabmap_1_1CameraRGBDImages.js | 4 + ...abmap_1_1CameraRGBDImages__coll__graph.map | 9 + ...abmap_1_1CameraRGBDImages__coll__graph.md5 | 1 + ...abmap_1_1CameraRGBDImages__coll__graph.png | Bin 0 -> 10041 bytes ...ap_1_1CameraRGBDImages__inherit__graph.map | 9 + ...ap_1_1CameraRGBDImages__inherit__graph.md5 | 1 + ...ap_1_1CameraRGBDImages__inherit__graph.png | Bin 0 -> 10041 bytes ...assrtabmap_1_1CameraRealSense-members.html | 149 + .../classrtabmap_1_1CameraRealSense.html | 438 + .../latest/classrtabmap_1_1CameraRealSense.js | 6 + ...ssrtabmap_1_1CameraRealSense2-members.html | 152 + .../classrtabmap_1_1CameraRealSense2.html | 532 + .../classrtabmap_1_1CameraRealSense2.js | 8 + ...abmap_1_1CameraRealSense2__coll__graph.map | 7 + ...abmap_1_1CameraRealSense2__coll__graph.md5 | 1 + ...abmap_1_1CameraRealSense2__coll__graph.png | Bin 0 -> 7207 bytes ...ap_1_1CameraRealSense2__inherit__graph.map | 7 + ...ap_1_1CameraRealSense2__inherit__graph.md5 | 1 + ...ap_1_1CameraRealSense2__inherit__graph.png | Bin 0 -> 7207 bytes ...tabmap_1_1CameraRealSense__coll__graph.map | 7 + ...tabmap_1_1CameraRealSense__coll__graph.md5 | 1 + ...tabmap_1_1CameraRealSense__coll__graph.png | Bin 0 -> 7047 bytes ...map_1_1CameraRealSense__inherit__graph.map | 7 + ...map_1_1CameraRealSense__inherit__graph.md5 | 1 + ...map_1_1CameraRealSense__inherit__graph.png | Bin 0 -> 7047 bytes ...assrtabmap_1_1CameraSeerSense-members.html | 143 + .../classrtabmap_1_1CameraSeerSense.html | 471 + .../latest/classrtabmap_1_1CameraSeerSense.js | 7 + ...tabmap_1_1CameraSeerSense__coll__graph.map | 7 + ...tabmap_1_1CameraSeerSense__coll__graph.md5 | 1 + ...tabmap_1_1CameraSeerSense__coll__graph.png | Bin 0 -> 6899 bytes ...map_1_1CameraSeerSense__inherit__graph.map | 7 + ...map_1_1CameraSeerSense__inherit__graph.md5 | 1 + ...map_1_1CameraSeerSense__inherit__graph.png | Bin 0 -> 6899 bytes ...rtabmap_1_1CameraStereoDC1394-members.html | 143 + .../classrtabmap_1_1CameraStereoDC1394.html | 373 + .../classrtabmap_1_1CameraStereoDC1394.js | 5 + ...map_1_1CameraStereoDC1394__coll__graph.map | 7 + ...map_1_1CameraStereoDC1394__coll__graph.md5 | 1 + ...map_1_1CameraStereoDC1394__coll__graph.png | Bin 0 -> 7682 bytes ..._1_1CameraStereoDC1394__inherit__graph.map | 7 + ..._1_1CameraStereoDC1394__inherit__graph.md5 | 1 + ..._1_1CameraStereoDC1394__inherit__graph.png | Bin 0 -> 7682 bytes ...ap_1_1CameraStereoFlyCapture2-members.html | 143 + ...assrtabmap_1_1CameraStereoFlyCapture2.html | 373 + ...classrtabmap_1_1CameraStereoFlyCapture2.js | 5 + ..._1CameraStereoFlyCapture2__coll__graph.map | 7 + ..._1CameraStereoFlyCapture2__coll__graph.md5 | 1 + ..._1CameraStereoFlyCapture2__coll__graph.png | Bin 0 -> 8485 bytes ...ameraStereoFlyCapture2__inherit__graph.map | 7 + ...ameraStereoFlyCapture2__inherit__graph.md5 | 1 + ...ameraStereoFlyCapture2__inherit__graph.png | Bin 0 -> 8485 bytes ...rtabmap_1_1CameraStereoImages-members.html | 175 + .../classrtabmap_1_1CameraStereoImages.html | 565 + .../classrtabmap_1_1CameraStereoImages.js | 5 + ...map_1_1CameraStereoImages__coll__graph.map | 9 + ...map_1_1CameraStereoImages__coll__graph.md5 | 1 + ...map_1_1CameraStereoImages__coll__graph.png | Bin 0 -> 9940 bytes ..._1_1CameraStereoImages__inherit__graph.map | 9 + ..._1_1CameraStereoImages__inherit__graph.md5 | 1 + ..._1_1CameraStereoImages__inherit__graph.png | Bin 0 -> 9940 bytes ...ssrtabmap_1_1CameraStereoTara-members.html | 143 + .../classrtabmap_1_1CameraStereoTara.html | 373 + .../classrtabmap_1_1CameraStereoTara.js | 5 + ...abmap_1_1CameraStereoTara__coll__graph.map | 7 + ...abmap_1_1CameraStereoTara__coll__graph.md5 | 1 + ...abmap_1_1CameraStereoTara__coll__graph.png | Bin 0 -> 6967 bytes ...ap_1_1CameraStereoTara__inherit__graph.map | 7 + ...ap_1_1CameraStereoTara__inherit__graph.md5 | 1 + ...ap_1_1CameraStereoTara__inherit__graph.png | Bin 0 -> 6967 bytes ...srtabmap_1_1CameraStereoVideo-members.html | 149 + .../classrtabmap_1_1CameraStereoVideo.html | 482 + .../classrtabmap_1_1CameraStereoVideo.js | 5 + ...bmap_1_1CameraStereoVideo__coll__graph.map | 7 + ...bmap_1_1CameraStereoVideo__coll__graph.md5 | 1 + ...bmap_1_1CameraStereoVideo__coll__graph.png | Bin 0 -> 7266 bytes ...p_1_1CameraStereoVideo__inherit__graph.map | 7 + ...p_1_1CameraStereoVideo__inherit__graph.md5 | 1 + ...p_1_1CameraStereoVideo__inherit__graph.png | Bin 0 -> 7266 bytes ...assrtabmap_1_1CameraStereoZed-members.html | 148 + .../classrtabmap_1_1CameraStereoZed.html | 512 + .../latest/classrtabmap_1_1CameraStereoZed.js | 7 + ...srtabmap_1_1CameraStereoZedOC-members.html | 144 + .../classrtabmap_1_1CameraStereoZedOC.html | 376 + .../classrtabmap_1_1CameraStereoZedOC.js | 5 + ...bmap_1_1CameraStereoZedOC__coll__graph.map | 7 + ...bmap_1_1CameraStereoZedOC__coll__graph.md5 | 1 + ...bmap_1_1CameraStereoZedOC__coll__graph.png | Bin 0 -> 7467 bytes ...p_1_1CameraStereoZedOC__inherit__graph.map | 7 + ...p_1_1CameraStereoZedOC__inherit__graph.md5 | 1 + ...p_1_1CameraStereoZedOC__inherit__graph.png | Bin 0 -> 7467 bytes ...tabmap_1_1CameraStereoZed__coll__graph.map | 7 + ...tabmap_1_1CameraStereoZed__coll__graph.md5 | 1 + ...tabmap_1_1CameraStereoZed__coll__graph.png | Bin 0 -> 7192 bytes ...map_1_1CameraStereoZed__inherit__graph.map | 7 + ...map_1_1CameraStereoZed__inherit__graph.md5 | 1 + ...map_1_1CameraStereoZed__inherit__graph.png | Bin 0 -> 7192 bytes .../classrtabmap_1_1CameraVideo-members.html | 150 + .../latest/classrtabmap_1_1CameraVideo.html | 523 + .../api/latest/classrtabmap_1_1CameraVideo.js | 6 + ...assrtabmap_1_1CameraVideo__coll__graph.map | 7 + ...assrtabmap_1_1CameraVideo__coll__graph.md5 | 1 + ...assrtabmap_1_1CameraVideo__coll__graph.png | Bin 0 -> 6814 bytes ...rtabmap_1_1CameraVideo__inherit__graph.map | 7 + ...rtabmap_1_1CameraVideo__inherit__graph.md5 | 1 + ...rtabmap_1_1CameraVideo__inherit__graph.png | Bin 0 -> 6814 bytes .../classrtabmap_1_1Camera__coll__graph.map | 5 + .../classrtabmap_1_1Camera__coll__graph.md5 | 1 + .../classrtabmap_1_1Camera__coll__graph.png | Bin 0 -> 4526 bytes ...classrtabmap_1_1Camera__inherit__graph.map | 53 + ...classrtabmap_1_1Camera__inherit__graph.md5 | 1 + ...classrtabmap_1_1Camera__inherit__graph.png | Bin 0 -> 131753 bytes .../classrtabmap_1_1CloudMap-members.html | 149 + .../api/latest/classrtabmap_1_1CloudMap.html | 407 + .../api/latest/classrtabmap_1_1CloudMap.js | 6 + .../classrtabmap_1_1CloudMap__coll__graph.map | 5 + .../classrtabmap_1_1CloudMap__coll__graph.md5 | 1 + .../classrtabmap_1_1CloudMap__coll__graph.png | Bin 0 -> 4411 bytes ...assrtabmap_1_1CloudMap__inherit__graph.map | 5 + ...assrtabmap_1_1CloudMap__inherit__graph.md5 | 1 + ...assrtabmap_1_1CloudMap__inherit__graph.png | Bin 0 -> 4411 bytes ...srtabmap_1_1CompressionThread-members.html | 160 + .../classrtabmap_1_1CompressionThread.html | 440 + .../classrtabmap_1_1CompressionThread.js | 8 + ...bmap_1_1CompressionThread__coll__graph.map | 7 + ...bmap_1_1CompressionThread__coll__graph.md5 | 1 + ...bmap_1_1CompressionThread__coll__graph.png | Bin 0 -> 6405 bytes ...p_1_1CompressionThread__inherit__graph.map | 7 + ...p_1_1CompressionThread__inherit__graph.md5 | 1 + ...p_1_1CompressionThread__inherit__graph.png | Bin 0 -> 6405 bytes .../classrtabmap_1_1DBDriver-members.html | 301 + .../api/latest/classrtabmap_1_1DBDriver.html | 1366 + .../api/latest/classrtabmap_1_1DBDriver.js | 35 + ...assrtabmap_1_1DBDriverSqlite3-members.html | 310 + .../classrtabmap_1_1DBDriverSqlite3.html | 3302 + .../latest/classrtabmap_1_1DBDriverSqlite3.js | 13 + ...tabmap_1_1DBDriverSqlite3__coll__graph.map | 9 + ...tabmap_1_1DBDriverSqlite3__coll__graph.md5 | 1 + ...tabmap_1_1DBDriverSqlite3__coll__graph.png | Bin 0 -> 9517 bytes ...map_1_1DBDriverSqlite3__inherit__graph.map | 9 + ...map_1_1DBDriverSqlite3__inherit__graph.md5 | 1 + ...map_1_1DBDriverSqlite3__inherit__graph.png | Bin 0 -> 9517 bytes .../classrtabmap_1_1DBDriver__coll__graph.map | 7 + .../classrtabmap_1_1DBDriver__coll__graph.md5 | 1 + .../classrtabmap_1_1DBDriver__coll__graph.png | Bin 0 -> 6375 bytes ...assrtabmap_1_1DBDriver__inherit__graph.map | 9 + ...assrtabmap_1_1DBDriver__inherit__graph.md5 | 1 + ...assrtabmap_1_1DBDriver__inherit__graph.png | Bin 0 -> 9596 bytes .../classrtabmap_1_1DBReader-members.html | 144 + .../api/latest/classrtabmap_1_1DBReader.html | 498 + .../api/latest/classrtabmap_1_1DBReader.js | 7 + .../classrtabmap_1_1DBReader__coll__graph.map | 7 + .../classrtabmap_1_1DBReader__coll__graph.md5 | 1 + .../classrtabmap_1_1DBReader__coll__graph.png | Bin 0 -> 6698 bytes ...assrtabmap_1_1DBReader__inherit__graph.map | 7 + ...assrtabmap_1_1DBReader__inherit__graph.md5 | 1 + ...assrtabmap_1_1DBReader__inherit__graph.png | Bin 0 -> 6698 bytes .../classrtabmap_1_1EnvSensor-members.html | 138 + .../api/latest/classrtabmap_1_1EnvSensor.html | 427 + .../api/latest/classrtabmap_1_1EnvSensor.js | 25 + ...ssrtabmap_1_1EpipolarGeometry-members.html | 138 + .../classrtabmap_1_1EpipolarGeometry.html | 566 + .../latest/classrtabmap_1_1FAST-members.html | 169 + .../api/latest/classrtabmap_1_1FAST.html | 372 + .../api/latest/classrtabmap_1_1FAST.js | 4 + .../classrtabmap_1_1FAST__BRIEF-members.html | 171 + .../latest/classrtabmap_1_1FAST__BRIEF.html | 347 + ...assrtabmap_1_1FAST__BRIEF__coll__graph.map | 7 + ...assrtabmap_1_1FAST__BRIEF__coll__graph.md5 | 1 + ...assrtabmap_1_1FAST__BRIEF__coll__graph.png | Bin 0 -> 6510 bytes ...rtabmap_1_1FAST__BRIEF__inherit__graph.map | 7 + ...rtabmap_1_1FAST__BRIEF__inherit__graph.md5 | 1 + ...rtabmap_1_1FAST__BRIEF__inherit__graph.png | Bin 0 -> 6510 bytes .../classrtabmap_1_1FAST__FREAK-members.html | 171 + .../latest/classrtabmap_1_1FAST__FREAK.html | 347 + ...assrtabmap_1_1FAST__FREAK__coll__graph.map | 7 + ...assrtabmap_1_1FAST__FREAK__coll__graph.md5 | 1 + ...assrtabmap_1_1FAST__FREAK__coll__graph.png | Bin 0 -> 6534 bytes ...rtabmap_1_1FAST__FREAK__inherit__graph.map | 7 + ...rtabmap_1_1FAST__FREAK__inherit__graph.md5 | 1 + ...rtabmap_1_1FAST__FREAK__inherit__graph.png | Bin 0 -> 6534 bytes .../classrtabmap_1_1FAST__coll__graph.map | 5 + .../classrtabmap_1_1FAST__coll__graph.md5 | 1 + .../classrtabmap_1_1FAST__coll__graph.png | Bin 0 -> 4158 bytes .../classrtabmap_1_1FAST__inherit__graph.map | 9 + .../classrtabmap_1_1FAST__inherit__graph.md5 | 1 + .../classrtabmap_1_1FAST__inherit__graph.png | Bin 0 -> 10022 bytes .../classrtabmap_1_1Feature2D-members.html | 167 + .../api/latest/classrtabmap_1_1Feature2D.html | 583 + .../api/latest/classrtabmap_1_1Feature2D.js | 28 + ...ssrtabmap_1_1Feature2D__inherit__graph.map | 39 + ...ssrtabmap_1_1Feature2D__inherit__graph.md5 | 1 + ...ssrtabmap_1_1Feature2D__inherit__graph.png | Bin 0 -> 66093 bytes .../classrtabmap_1_1FeatureBA-members.html | 121 + .../api/latest/classrtabmap_1_1FeatureBA.html | 276 + .../api/latest/classrtabmap_1_1FeatureBA.js | 7 + .../classrtabmap_1_1FlannIndex-members.html | 138 + .../latest/classrtabmap_1_1FlannIndex.html | 691 + .../api/latest/classrtabmap_1_1FlannIndex.js | 24 + .../latest/classrtabmap_1_1GFTT-members.html | 169 + .../api/latest/classrtabmap_1_1GFTT.html | 348 + .../api/latest/classrtabmap_1_1GFTT.js | 4 + .../classrtabmap_1_1GFTT__BRIEF-members.html | 171 + .../latest/classrtabmap_1_1GFTT__BRIEF.html | 347 + ...assrtabmap_1_1GFTT__BRIEF__coll__graph.map | 7 + ...assrtabmap_1_1GFTT__BRIEF__coll__graph.md5 | 1 + ...assrtabmap_1_1GFTT__BRIEF__coll__graph.png | Bin 0 -> 6091 bytes ...rtabmap_1_1GFTT__BRIEF__inherit__graph.map | 7 + ...rtabmap_1_1GFTT__BRIEF__inherit__graph.md5 | 1 + ...rtabmap_1_1GFTT__BRIEF__inherit__graph.png | Bin 0 -> 6091 bytes .../classrtabmap_1_1GFTT__DAISY-members.html | 171 + .../latest/classrtabmap_1_1GFTT__DAISY.html | 347 + ...assrtabmap_1_1GFTT__DAISY__coll__graph.map | 7 + ...assrtabmap_1_1GFTT__DAISY__coll__graph.md5 | 1 + ...assrtabmap_1_1GFTT__DAISY__coll__graph.png | Bin 0 -> 6525 bytes ...rtabmap_1_1GFTT__DAISY__inherit__graph.map | 7 + ...rtabmap_1_1GFTT__DAISY__inherit__graph.md5 | 1 + ...rtabmap_1_1GFTT__DAISY__inherit__graph.png | Bin 0 -> 6525 bytes .../classrtabmap_1_1GFTT__FREAK-members.html | 171 + .../latest/classrtabmap_1_1GFTT__FREAK.html | 347 + ...assrtabmap_1_1GFTT__FREAK__coll__graph.map | 7 + ...assrtabmap_1_1GFTT__FREAK__coll__graph.md5 | 1 + ...assrtabmap_1_1GFTT__FREAK__coll__graph.png | Bin 0 -> 6376 bytes ...rtabmap_1_1GFTT__FREAK__inherit__graph.map | 7 + ...rtabmap_1_1GFTT__FREAK__inherit__graph.md5 | 1 + ...rtabmap_1_1GFTT__FREAK__inherit__graph.png | Bin 0 -> 6376 bytes .../classrtabmap_1_1GFTT__ORB-members.html | 171 + .../api/latest/classrtabmap_1_1GFTT__ORB.html | 347 + ...classrtabmap_1_1GFTT__ORB__coll__graph.map | 7 + ...classrtabmap_1_1GFTT__ORB__coll__graph.md5 | 1 + ...classrtabmap_1_1GFTT__ORB__coll__graph.png | Bin 0 -> 6209 bytes ...ssrtabmap_1_1GFTT__ORB__inherit__graph.map | 7 + ...ssrtabmap_1_1GFTT__ORB__inherit__graph.md5 | 1 + ...ssrtabmap_1_1GFTT__ORB__inherit__graph.png | Bin 0 -> 6209 bytes .../classrtabmap_1_1GFTT__coll__graph.map | 5 + .../classrtabmap_1_1GFTT__coll__graph.md5 | 1 + .../classrtabmap_1_1GFTT__coll__graph.png | Bin 0 -> 4014 bytes .../classrtabmap_1_1GFTT__inherit__graph.map | 13 + .../classrtabmap_1_1GFTT__inherit__graph.md5 | 1 + .../classrtabmap_1_1GFTT__inherit__graph.png | Bin 0 -> 13971 bytes .../latest/classrtabmap_1_1GPS-members.html | 125 + .../api/latest/classrtabmap_1_1GPS.html | 459 + .../pr-1773/api/latest/classrtabmap_1_1GPS.js | 12 + ...assrtabmap_1_1GainCompensator-members.html | 130 + .../classrtabmap_1_1GainCompensator.html | 169 + ...lassrtabmap_1_1GeodeticCoords-members.html | 130 + .../classrtabmap_1_1GeodeticCoords.html | 520 + .../latest/classrtabmap_1_1GeodeticCoords.js | 15 + ...ssrtabmap_1_1GlobalDescriptor-members.html | 122 + .../classrtabmap_1_1GlobalDescriptor.html | 316 + ..._1_1GlobalDescriptorExtractor-members.html | 127 + ...srtabmap_1_1GlobalDescriptorExtractor.html | 236 + .../classrtabmap_1_1GlobalMap-members.html | 145 + .../api/latest/classrtabmap_1_1GlobalMap.html | 1041 + .../api/latest/classrtabmap_1_1GlobalMap.js | 20 + ...ssrtabmap_1_1GlobalMap__inherit__graph.map | 11 + ...ssrtabmap_1_1GlobalMap__inherit__graph.md5 | 1 + ...ssrtabmap_1_1GlobalMap__inherit__graph.png | Bin 0 -> 13175 bytes .../classrtabmap_1_1GridMap-members.html | 152 + .../api/latest/classrtabmap_1_1GridMap.html | 332 + .../api/latest/classrtabmap_1_1GridMap.js | 5 + .../classrtabmap_1_1GridMap__coll__graph.map | 5 + .../classrtabmap_1_1GridMap__coll__graph.md5 | 1 + .../classrtabmap_1_1GridMap__coll__graph.png | Bin 0 -> 4291 bytes ...lassrtabmap_1_1GridMap__inherit__graph.map | 5 + ...lassrtabmap_1_1GridMap__inherit__graph.md5 | 1 + ...lassrtabmap_1_1GridMap__inherit__graph.png | Bin 0 -> 4291 bytes .../latest/classrtabmap_1_1IMU-members.html | 128 + .../api/latest/classrtabmap_1_1IMU.html | 594 + .../pr-1773/api/latest/classrtabmap_1_1IMU.js | 15 + .../classrtabmap_1_1IMUEvent-members.html | 124 + .../api/latest/classrtabmap_1_1IMUEvent.html | 338 + .../api/latest/classrtabmap_1_1IMUEvent.js | 8 + .../classrtabmap_1_1IMUEvent__coll__graph.map | 5 + .../classrtabmap_1_1IMUEvent__coll__graph.md5 | 1 + .../classrtabmap_1_1IMUEvent__coll__graph.png | Bin 0 -> 3775 bytes ...assrtabmap_1_1IMUEvent__inherit__graph.map | 5 + ...assrtabmap_1_1IMUEvent__inherit__graph.md5 | 1 + ...assrtabmap_1_1IMUEvent__inherit__graph.png | Bin 0 -> 3775 bytes .../classrtabmap_1_1IMUFilter-members.html | 128 + .../api/latest/classrtabmap_1_1IMUFilter.html | 594 + .../api/latest/classrtabmap_1_1IMUFilter.js | 12 + .../classrtabmap_1_1IMUThread-members.html | 164 + .../api/latest/classrtabmap_1_1IMUThread.html | 394 + .../api/latest/classrtabmap_1_1IMUThread.js | 8 + ...classrtabmap_1_1IMUThread__coll__graph.map | 9 + ...classrtabmap_1_1IMUThread__coll__graph.md5 | 1 + ...classrtabmap_1_1IMUThread__coll__graph.png | Bin 0 -> 8912 bytes ...ssrtabmap_1_1IMUThread__inherit__graph.map | 9 + ...ssrtabmap_1_1IMUThread__inherit__graph.md5 | 1 + ...ssrtabmap_1_1IMUThread__inherit__graph.png | Bin 0 -> 8912 bytes .../latest/classrtabmap_1_1KAZE-members.html | 169 + .../api/latest/classrtabmap_1_1KAZE.html | 339 + .../classrtabmap_1_1KAZE__coll__graph.map | 5 + .../classrtabmap_1_1KAZE__coll__graph.md5 | 1 + .../classrtabmap_1_1KAZE__coll__graph.png | Bin 0 -> 4329 bytes .../classrtabmap_1_1KAZE__inherit__graph.map | 5 + .../classrtabmap_1_1KAZE__inherit__graph.md5 | 1 + .../classrtabmap_1_1KAZE__inherit__graph.png | Bin 0 -> 4329 bytes .../classrtabmap_1_1Landmark-members.html | 124 + .../api/latest/classrtabmap_1_1Landmark.html | 433 + .../api/latest/classrtabmap_1_1Landmark.js | 10 + .../classrtabmap_1_1LaserScan-members.html | 184 + .../api/latest/classrtabmap_1_1LaserScan.html | 1315 + .../api/latest/classrtabmap_1_1LaserScan.js | 25 + .../latest/classrtabmap_1_1Lidar-members.html | 132 + .../api/latest/classrtabmap_1_1Lidar.html | 276 + .../api/latest/classrtabmap_1_1Lidar.js | 4 + .../classrtabmap_1_1LidarVLP16-members.html | 137 + .../latest/classrtabmap_1_1LidarVLP16.html | 381 + .../api/latest/classrtabmap_1_1LidarVLP16.js | 6 + ...lassrtabmap_1_1LidarVLP16__coll__graph.map | 9 + ...lassrtabmap_1_1LidarVLP16__coll__graph.md5 | 1 + ...lassrtabmap_1_1LidarVLP16__coll__graph.png | Bin 0 -> 10242 bytes ...srtabmap_1_1LidarVLP16__inherit__graph.map | 9 + ...srtabmap_1_1LidarVLP16__inherit__graph.md5 | 1 + ...srtabmap_1_1LidarVLP16__inherit__graph.png | Bin 0 -> 10242 bytes .../classrtabmap_1_1Lidar__coll__graph.map | 5 + .../classrtabmap_1_1Lidar__coll__graph.md5 | 1 + .../classrtabmap_1_1Lidar__coll__graph.png | Bin 0 -> 4411 bytes .../classrtabmap_1_1Lidar__inherit__graph.map | 7 + .../classrtabmap_1_1Lidar__inherit__graph.md5 | 1 + .../classrtabmap_1_1Lidar__inherit__graph.png | Bin 0 -> 6572 bytes .../latest/classrtabmap_1_1Link-members.html | 155 + .../api/latest/classrtabmap_1_1Link.html | 863 + .../api/latest/classrtabmap_1_1Link.js | 36 + .../classrtabmap_1_1LocalGrid-members.html | 124 + .../api/latest/classrtabmap_1_1LocalGrid.html | 369 + .../api/latest/classrtabmap_1_1LocalGrid.js | 10 + ...lassrtabmap_1_1LocalGridCache-members.html | 129 + .../classrtabmap_1_1LocalGridCache.html | 440 + .../latest/classrtabmap_1_1LocalGridCache.js | 8 + ...lassrtabmap_1_1LocalGridMaker-members.html | 154 + .../classrtabmap_1_1LocalGridMaker.html | 1218 + .../latest/classrtabmap_1_1LocalGridMaker.js | 11 + ...lassrtabmap_1_1MarkerDetector-members.html | 124 + .../classrtabmap_1_1MarkerDetector.html | 164 + .../classrtabmap_1_1MarkerInfo-members.html | 120 + .../latest/classrtabmap_1_1MarkerInfo.html | 262 + .../classrtabmap_1_1Memory-members.html | 222 + .../api/latest/classrtabmap_1_1Memory.html | 3134 + .../api/latest/classrtabmap_1_1Memory.js | 105 + .../classrtabmap_1_1Memory__coll__graph.map | 9 + .../classrtabmap_1_1Memory__coll__graph.md5 | 1 + .../classrtabmap_1_1Memory__coll__graph.png | Bin 0 -> 9984 bytes .../latest/classrtabmap_1_1ORB-members.html | 169 + .../api/latest/classrtabmap_1_1ORB.html | 368 + .../pr-1773/api/latest/classrtabmap_1_1ORB.js | 4 + .../classrtabmap_1_1ORBOctree-members.html | 169 + .../api/latest/classrtabmap_1_1ORBOctree.html | 339 + ...classrtabmap_1_1ORBOctree__coll__graph.map | 5 + ...classrtabmap_1_1ORBOctree__coll__graph.md5 | 1 + ...classrtabmap_1_1ORBOctree__coll__graph.png | Bin 0 -> 4702 bytes ...ssrtabmap_1_1ORBOctree__inherit__graph.map | 5 + ...ssrtabmap_1_1ORBOctree__inherit__graph.md5 | 1 + ...ssrtabmap_1_1ORBOctree__inherit__graph.png | Bin 0 -> 4702 bytes .../classrtabmap_1_1ORB__coll__graph.map | 5 + .../classrtabmap_1_1ORB__coll__graph.md5 | 1 + .../classrtabmap_1_1ORB__coll__graph.png | Bin 0 -> 4267 bytes .../classrtabmap_1_1ORB__inherit__graph.map | 5 + .../classrtabmap_1_1ORB__inherit__graph.md5 | 1 + .../classrtabmap_1_1ORB__inherit__graph.png | Bin 0 -> 4267 bytes ...classrtabmap_1_1OccupancyGrid-members.html | 150 + .../latest/classrtabmap_1_1OccupancyGrid.html | 358 + .../latest/classrtabmap_1_1OccupancyGrid.js | 6 + ...srtabmap_1_1OccupancyGrid__coll__graph.map | 5 + ...srtabmap_1_1OccupancyGrid__coll__graph.md5 | 1 + ...srtabmap_1_1OccupancyGrid__coll__graph.png | Bin 0 -> 4912 bytes ...abmap_1_1OccupancyGrid__inherit__graph.map | 5 + ...abmap_1_1OccupancyGrid__inherit__graph.md5 | 1 + ...abmap_1_1OccupancyGrid__inherit__graph.png | Bin 0 -> 4912 bytes .../classrtabmap_1_1OctoMap-members.html | 157 + .../api/latest/classrtabmap_1_1OctoMap.html | 406 + .../api/latest/classrtabmap_1_1OctoMap.js | 6 + .../classrtabmap_1_1OctoMap__coll__graph.map | 5 + .../classrtabmap_1_1OctoMap__coll__graph.md5 | 1 + .../classrtabmap_1_1OctoMap__coll__graph.png | Bin 0 -> 4378 bytes ...lassrtabmap_1_1OctoMap__inherit__graph.map | 5 + ...lassrtabmap_1_1OctoMap__inherit__graph.md5 | 1 + ...lassrtabmap_1_1OctoMap__inherit__graph.png | Bin 0 -> 4378 bytes .../classrtabmap_1_1Odometry-members.html | 151 + .../api/latest/classrtabmap_1_1Odometry.html | 811 + .../api/latest/classrtabmap_1_1Odometry.js | 36 + ...assrtabmap_1_1OdometryCuVSLAM-members.html | 153 + .../classrtabmap_1_1OdometryCuVSLAM.html | 289 + .../latest/classrtabmap_1_1OdometryCuVSLAM.js | 5 + ...tabmap_1_1OdometryCuVSLAM__coll__graph.map | 5 + ...tabmap_1_1OdometryCuVSLAM__coll__graph.md5 | 1 + ...tabmap_1_1OdometryCuVSLAM__coll__graph.png | Bin 0 -> 6014 bytes ...map_1_1OdometryCuVSLAM__inherit__graph.map | 5 + ...map_1_1OdometryCuVSLAM__inherit__graph.md5 | 1 + ...map_1_1OdometryCuVSLAM__inherit__graph.png | Bin 0 -> 6014 bytes .../classrtabmap_1_1OdometryDVO-members.html | 153 + .../latest/classrtabmap_1_1OdometryDVO.html | 289 + .../api/latest/classrtabmap_1_1OdometryDVO.js | 5 + ...assrtabmap_1_1OdometryDVO__coll__graph.map | 5 + ...assrtabmap_1_1OdometryDVO__coll__graph.md5 | 1 + ...assrtabmap_1_1OdometryDVO__coll__graph.png | Bin 0 -> 5318 bytes ...rtabmap_1_1OdometryDVO__inherit__graph.map | 5 + ...rtabmap_1_1OdometryDVO__inherit__graph.md5 | 1 + ...rtabmap_1_1OdometryDVO__inherit__graph.png | Bin 0 -> 5318 bytes ...classrtabmap_1_1OdometryEvent-members.html | 129 + .../latest/classrtabmap_1_1OdometryEvent.html | 503 + .../latest/classrtabmap_1_1OdometryEvent.js | 12 + ...srtabmap_1_1OdometryEvent__coll__graph.map | 5 + ...srtabmap_1_1OdometryEvent__coll__graph.md5 | 1 + ...srtabmap_1_1OdometryEvent__coll__graph.png | Bin 0 -> 4339 bytes ...abmap_1_1OdometryEvent__inherit__graph.map | 5 + ...abmap_1_1OdometryEvent__inherit__graph.md5 | 1 + ...abmap_1_1OdometryEvent__inherit__graph.png | Bin 0 -> 4339 bytes .../classrtabmap_1_1OdometryF2F-members.html | 154 + .../latest/classrtabmap_1_1OdometryF2F.html | 318 + .../api/latest/classrtabmap_1_1OdometryF2F.js | 5 + ...assrtabmap_1_1OdometryF2F__coll__graph.map | 5 + ...assrtabmap_1_1OdometryF2F__coll__graph.md5 | 1 + ...assrtabmap_1_1OdometryF2F__coll__graph.png | Bin 0 -> 5204 bytes ...rtabmap_1_1OdometryF2F__inherit__graph.map | 5 + ...rtabmap_1_1OdometryF2F__inherit__graph.md5 | 1 + ...rtabmap_1_1OdometryF2F__inherit__graph.png | Bin 0 -> 5204 bytes .../classrtabmap_1_1OdometryF2M-members.html | 155 + .../latest/classrtabmap_1_1OdometryF2M.html | 347 + .../api/latest/classrtabmap_1_1OdometryF2M.js | 5 + ...assrtabmap_1_1OdometryF2M__coll__graph.map | 5 + ...assrtabmap_1_1OdometryF2M__coll__graph.md5 | 1 + ...assrtabmap_1_1OdometryF2M__coll__graph.png | Bin 0 -> 5380 bytes ...rtabmap_1_1OdometryF2M__inherit__graph.map | 5 + ...rtabmap_1_1OdometryF2M__inherit__graph.md5 | 1 + ...rtabmap_1_1OdometryF2M__inherit__graph.png | Bin 0 -> 5380 bytes ...classrtabmap_1_1OdometryFLOAM-members.html | 153 + .../latest/classrtabmap_1_1OdometryFLOAM.html | 289 + .../latest/classrtabmap_1_1OdometryFLOAM.js | 5 + ...srtabmap_1_1OdometryFLOAM__coll__graph.map | 5 + ...srtabmap_1_1OdometryFLOAM__coll__graph.md5 | 1 + ...srtabmap_1_1OdometryFLOAM__coll__graph.png | Bin 0 -> 5482 bytes ...abmap_1_1OdometryFLOAM__inherit__graph.map | 5 + ...abmap_1_1OdometryFLOAM__inherit__graph.md5 | 1 + ...abmap_1_1OdometryFLOAM__inherit__graph.png | Bin 0 -> 5482 bytes ...classrtabmap_1_1OdometryFovis-members.html | 153 + .../latest/classrtabmap_1_1OdometryFovis.html | 289 + .../latest/classrtabmap_1_1OdometryFovis.js | 5 + ...srtabmap_1_1OdometryFovis__coll__graph.map | 5 + ...srtabmap_1_1OdometryFovis__coll__graph.md5 | 1 + ...srtabmap_1_1OdometryFovis__coll__graph.png | Bin 0 -> 5369 bytes ...abmap_1_1OdometryFovis__inherit__graph.map | 5 + ...abmap_1_1OdometryFovis__inherit__graph.md5 | 1 + ...abmap_1_1OdometryFovis__inherit__graph.png | Bin 0 -> 5369 bytes .../classrtabmap_1_1OdometryInfo-members.html | 155 + .../latest/classrtabmap_1_1OdometryInfo.html | 948 + .../latest/classrtabmap_1_1OdometryInfo.js | 41 + ...ssrtabmap_1_1OdometryInfo__coll__graph.map | 9 + ...ssrtabmap_1_1OdometryInfo__coll__graph.md5 | 1 + ...ssrtabmap_1_1OdometryInfo__coll__graph.png | Bin 0 -> 19487 bytes ...lassrtabmap_1_1OdometryLIOSAM-members.html | 153 + .../classrtabmap_1_1OdometryLIOSAM.html | 319 + .../latest/classrtabmap_1_1OdometryLIOSAM.js | 6 + ...rtabmap_1_1OdometryLIOSAM__coll__graph.map | 5 + ...rtabmap_1_1OdometryLIOSAM__coll__graph.md5 | 1 + ...rtabmap_1_1OdometryLIOSAM__coll__graph.png | Bin 0 -> 5590 bytes ...bmap_1_1OdometryLIOSAM__inherit__graph.map | 5 + ...bmap_1_1OdometryLIOSAM__inherit__graph.md5 | 1 + ...bmap_1_1OdometryLIOSAM__inherit__graph.png | Bin 0 -> 5590 bytes .../classrtabmap_1_1OdometryLOAM-members.html | 153 + .../latest/classrtabmap_1_1OdometryLOAM.html | 289 + .../latest/classrtabmap_1_1OdometryLOAM.js | 5 + ...ssrtabmap_1_1OdometryLOAM__coll__graph.map | 5 + ...ssrtabmap_1_1OdometryLOAM__coll__graph.md5 | 1 + ...ssrtabmap_1_1OdometryLOAM__coll__graph.png | Bin 0 -> 5383 bytes ...tabmap_1_1OdometryLOAM__inherit__graph.map | 5 + ...tabmap_1_1OdometryLOAM__inherit__graph.md5 | 1 + ...tabmap_1_1OdometryLOAM__inherit__graph.png | Bin 0 -> 5383 bytes ...classrtabmap_1_1OdometryMSCKF-members.html | 153 + .../latest/classrtabmap_1_1OdometryMSCKF.html | 349 + .../latest/classrtabmap_1_1OdometryMSCKF.js | 7 + ...srtabmap_1_1OdometryMSCKF__coll__graph.map | 5 + ...srtabmap_1_1OdometryMSCKF__coll__graph.md5 | 1 + ...srtabmap_1_1OdometryMSCKF__coll__graph.png | Bin 0 -> 5752 bytes ...abmap_1_1OdometryMSCKF__inherit__graph.map | 5 + ...abmap_1_1OdometryMSCKF__inherit__graph.md5 | 1 + ...abmap_1_1OdometryMSCKF__inherit__graph.png | Bin 0 -> 5752 bytes .../classrtabmap_1_1OdometryMono-members.html | 153 + .../latest/classrtabmap_1_1OdometryMono.html | 289 + .../latest/classrtabmap_1_1OdometryMono.js | 5 + ...ssrtabmap_1_1OdometryMono__coll__graph.map | 5 + ...ssrtabmap_1_1OdometryMono__coll__graph.md5 | 1 + ...ssrtabmap_1_1OdometryMono__coll__graph.png | Bin 0 -> 5256 bytes ...tabmap_1_1OdometryMono__inherit__graph.map | 5 + ...tabmap_1_1OdometryMono__inherit__graph.md5 | 1 + ...tabmap_1_1OdometryMono__inherit__graph.png | Bin 0 -> 5256 bytes ...ssrtabmap_1_1OdometryORBSLAM2-members.html | 153 + .../classrtabmap_1_1OdometryORBSLAM2.html | 289 + .../classrtabmap_1_1OdometryORBSLAM2.js | 5 + ...abmap_1_1OdometryORBSLAM2__coll__graph.map | 5 + ...abmap_1_1OdometryORBSLAM2__coll__graph.md5 | 1 + ...abmap_1_1OdometryORBSLAM2__coll__graph.png | Bin 0 -> 6191 bytes ...ap_1_1OdometryORBSLAM2__inherit__graph.map | 5 + ...ap_1_1OdometryORBSLAM2__inherit__graph.md5 | 1 + ...ap_1_1OdometryORBSLAM2__inherit__graph.png | Bin 0 -> 6191 bytes ...ssrtabmap_1_1OdometryORBSLAM3-members.html | 153 + .../classrtabmap_1_1OdometryORBSLAM3.html | 317 + .../classrtabmap_1_1OdometryORBSLAM3.js | 6 + ...abmap_1_1OdometryORBSLAM3__coll__graph.map | 5 + ...abmap_1_1OdometryORBSLAM3__coll__graph.md5 | 1 + ...abmap_1_1OdometryORBSLAM3__coll__graph.png | Bin 0 -> 6213 bytes ...ap_1_1OdometryORBSLAM3__inherit__graph.map | 5 + ...ap_1_1OdometryORBSLAM3__inherit__graph.md5 | 1 + ...ap_1_1OdometryORBSLAM3__inherit__graph.png | Bin 0 -> 6213 bytes ...classrtabmap_1_1OdometryOkvis-members.html | 153 + .../latest/classrtabmap_1_1OdometryOkvis.html | 349 + .../latest/classrtabmap_1_1OdometryOkvis.js | 7 + ...srtabmap_1_1OdometryOkvis__coll__graph.map | 5 + ...srtabmap_1_1OdometryOkvis__coll__graph.md5 | 1 + ...srtabmap_1_1OdometryOkvis__coll__graph.png | Bin 0 -> 5452 bytes ...abmap_1_1OdometryOkvis__inherit__graph.map | 5 + ...abmap_1_1OdometryOkvis__inherit__graph.md5 | 1 + ...abmap_1_1OdometryOkvis__inherit__graph.png | Bin 0 -> 5452 bytes ...lassrtabmap_1_1OdometryOpen3D-members.html | 153 + .../classrtabmap_1_1OdometryOpen3D.html | 289 + .../latest/classrtabmap_1_1OdometryOpen3D.js | 5 + ...rtabmap_1_1OdometryOpen3D__coll__graph.map | 5 + ...rtabmap_1_1OdometryOpen3D__coll__graph.md5 | 1 + ...rtabmap_1_1OdometryOpen3D__coll__graph.png | Bin 0 -> 5545 bytes ...bmap_1_1OdometryOpen3D__inherit__graph.map | 5 + ...bmap_1_1OdometryOpen3D__inherit__graph.md5 | 1 + ...bmap_1_1OdometryOpen3D__inherit__graph.png | Bin 0 -> 5545 bytes ...ssrtabmap_1_1OdometryOpenVINS-members.html | 152 + .../classrtabmap_1_1OdometryOpenVINS.html | 349 + .../classrtabmap_1_1OdometryOpenVINS.js | 7 + ...abmap_1_1OdometryOpenVINS__coll__graph.map | 5 + ...abmap_1_1OdometryOpenVINS__coll__graph.md5 | 1 + ...abmap_1_1OdometryOpenVINS__coll__graph.png | Bin 0 -> 5791 bytes ...ap_1_1OdometryOpenVINS__inherit__graph.map | 5 + ...ap_1_1OdometryOpenVINS__inherit__graph.md5 | 1 + ...ap_1_1OdometryOpenVINS__inherit__graph.png | Bin 0 -> 5791 bytes ...rtabmap_1_1OdometryResetEvent-members.html | 123 + .../classrtabmap_1_1OdometryResetEvent.html | 293 + .../classrtabmap_1_1OdometryResetEvent.js | 6 + ...map_1_1OdometryResetEvent__coll__graph.map | 5 + ...map_1_1OdometryResetEvent__coll__graph.md5 | 1 + ...map_1_1OdometryResetEvent__coll__graph.png | Bin 0 -> 4713 bytes ..._1_1OdometryResetEvent__inherit__graph.map | 5 + ..._1_1OdometryResetEvent__inherit__graph.md5 | 1 + ..._1_1OdometryResetEvent__inherit__graph.png | Bin 0 -> 4713 bytes ...lassrtabmap_1_1OdometryThread-members.html | 165 + .../classrtabmap_1_1OdometryThread.html | 367 + .../latest/classrtabmap_1_1OdometryThread.js | 5 + ...rtabmap_1_1OdometryThread__coll__graph.map | 11 + ...rtabmap_1_1OdometryThread__coll__graph.md5 | 1 + ...rtabmap_1_1OdometryThread__coll__graph.png | Bin 0 -> 11891 bytes ...bmap_1_1OdometryThread__inherit__graph.map | 11 + ...bmap_1_1OdometryThread__inherit__graph.md5 | 1 + ...bmap_1_1OdometryThread__inherit__graph.png | Bin 0 -> 11891 bytes ...rtabmap_1_1OdometryVINSFusion-members.html | 153 + .../classrtabmap_1_1OdometryVINSFusion.html | 349 + .../classrtabmap_1_1OdometryVINSFusion.js | 7 + ...map_1_1OdometryVINSFusion__coll__graph.map | 5 + ...map_1_1OdometryVINSFusion__coll__graph.md5 | 1 + ...map_1_1OdometryVINSFusion__coll__graph.png | Bin 0 -> 6121 bytes ..._1_1OdometryVINSFusion__inherit__graph.map | 5 + ..._1_1OdometryVINSFusion__inherit__graph.md5 | 1 + ..._1_1OdometryVINSFusion__inherit__graph.png | Bin 0 -> 6121 bytes ...classrtabmap_1_1OdometryViso2-members.html | 153 + .../latest/classrtabmap_1_1OdometryViso2.html | 289 + .../latest/classrtabmap_1_1OdometryViso2.js | 5 + ...srtabmap_1_1OdometryViso2__coll__graph.map | 5 + ...srtabmap_1_1OdometryViso2__coll__graph.md5 | 1 + ...srtabmap_1_1OdometryViso2__coll__graph.png | Bin 0 -> 5548 bytes ...abmap_1_1OdometryViso2__inherit__graph.map | 5 + ...abmap_1_1OdometryViso2__inherit__graph.md5 | 1 + ...abmap_1_1OdometryViso2__inherit__graph.png | Bin 0 -> 5548 bytes ...assrtabmap_1_1Odometry__inherit__graph.map | 37 + ...assrtabmap_1_1Odometry__inherit__graph.md5 | 1 + ...assrtabmap_1_1Odometry__inherit__graph.png | Bin 0 -> 94878 bytes .../classrtabmap_1_1Optimizer-members.html | 156 + .../api/latest/classrtabmap_1_1Optimizer.html | 1446 + .../api/latest/classrtabmap_1_1Optimizer.js | 30 + ...lassrtabmap_1_1OptimizerCVSBA-members.html | 160 + .../classrtabmap_1_1OptimizerCVSBA.html | 483 + .../latest/classrtabmap_1_1OptimizerCVSBA.js | 5 + ...rtabmap_1_1OptimizerCVSBA__coll__graph.map | 5 + ...rtabmap_1_1OptimizerCVSBA__coll__graph.md5 | 1 + ...rtabmap_1_1OptimizerCVSBA__coll__graph.png | Bin 0 -> 5265 bytes ...bmap_1_1OptimizerCVSBA__inherit__graph.map | 5 + ...bmap_1_1OptimizerCVSBA__inherit__graph.md5 | 1 + ...bmap_1_1OptimizerCVSBA__inherit__graph.png | Bin 0 -> 5265 bytes ...lassrtabmap_1_1OptimizerCeres-members.html | 160 + .../classrtabmap_1_1OptimizerCeres.html | 577 + .../latest/classrtabmap_1_1OptimizerCeres.js | 7 + ...rtabmap_1_1OptimizerCeres__coll__graph.map | 5 + ...rtabmap_1_1OptimizerCeres__coll__graph.md5 | 1 + ...rtabmap_1_1OptimizerCeres__coll__graph.png | Bin 0 -> 4677 bytes ...bmap_1_1OptimizerCeres__inherit__graph.map | 5 + ...bmap_1_1OptimizerCeres__inherit__graph.md5 | 1 + ...bmap_1_1OptimizerCeres__inherit__graph.png | Bin 0 -> 4677 bytes .../classrtabmap_1_1OptimizerG2O-members.html | 163 + .../latest/classrtabmap_1_1OptimizerG2O.html | 537 + .../latest/classrtabmap_1_1OptimizerG2O.js | 7 + ...ssrtabmap_1_1OptimizerG2O__coll__graph.map | 5 + ...ssrtabmap_1_1OptimizerG2O__coll__graph.md5 | 1 + ...ssrtabmap_1_1OptimizerG2O__coll__graph.png | Bin 0 -> 4674 bytes ...tabmap_1_1OptimizerG2O__inherit__graph.map | 5 + ...tabmap_1_1OptimizerG2O__inherit__graph.md5 | 1 + ...tabmap_1_1OptimizerG2O__inherit__graph.png | Bin 0 -> 4674 bytes ...lassrtabmap_1_1OptimizerGTSAM-members.html | 159 + .../classrtabmap_1_1OptimizerGTSAM.html | 498 + .../latest/classrtabmap_1_1OptimizerGTSAM.js | 7 + ...rtabmap_1_1OptimizerGTSAM__coll__graph.map | 5 + ...rtabmap_1_1OptimizerGTSAM__coll__graph.md5 | 1 + ...rtabmap_1_1OptimizerGTSAM__coll__graph.png | Bin 0 -> 5228 bytes ...bmap_1_1OptimizerGTSAM__inherit__graph.map | 5 + ...bmap_1_1OptimizerGTSAM__inherit__graph.md5 | 1 + ...bmap_1_1OptimizerGTSAM__inherit__graph.png | Bin 0 -> 5228 bytes ...classrtabmap_1_1OptimizerTORO-members.html | 162 + .../latest/classrtabmap_1_1OptimizerTORO.html | 495 + .../latest/classrtabmap_1_1OptimizerTORO.js | 5 + ...srtabmap_1_1OptimizerTORO__coll__graph.map | 5 + ...srtabmap_1_1OptimizerTORO__coll__graph.md5 | 1 + ...srtabmap_1_1OptimizerTORO__coll__graph.png | Bin 0 -> 4589 bytes ...abmap_1_1OptimizerTORO__inherit__graph.map | 5 + ...abmap_1_1OptimizerTORO__inherit__graph.md5 | 1 + ...abmap_1_1OptimizerTORO__inherit__graph.png | Bin 0 -> 4589 bytes ...ssrtabmap_1_1Optimizer__inherit__graph.map | 13 + ...ssrtabmap_1_1Optimizer__inherit__graph.md5 | 1 + ...ssrtabmap_1_1Optimizer__inherit__graph.png | Bin 0 -> 20157 bytes .../classrtabmap_1_1ParamEvent-members.html | 124 + .../latest/classrtabmap_1_1ParamEvent.html | 319 + .../api/latest/classrtabmap_1_1ParamEvent.js | 4 + ...lassrtabmap_1_1ParamEvent__coll__graph.map | 5 + ...lassrtabmap_1_1ParamEvent__coll__graph.md5 | 1 + ...lassrtabmap_1_1ParamEvent__coll__graph.png | Bin 0 -> 3690 bytes ...srtabmap_1_1ParamEvent__inherit__graph.map | 5 + ...srtabmap_1_1ParamEvent__inherit__graph.md5 | 1 + ...srtabmap_1_1ParamEvent__inherit__graph.png | Bin 0 -> 3690 bytes .../classrtabmap_1_1Parameters-members.html | 1994 + .../latest/classrtabmap_1_1Parameters.html | 59623 ++++++++++++++++ ...lassrtabmap_1_1ParticleFilter-members.html | 119 + .../classrtabmap_1_1ParticleFilter.html | 241 + ...classrtabmap_1_1ProgressState-members.html | 121 + .../latest/classrtabmap_1_1ProgressState.html | 272 + ...assrtabmap_1_1PythonInterface-members.html | 119 + .../classrtabmap_1_1PythonInterface.html | 143 + .../classrtabmap_1_1Registration-members.html | 147 + .../latest/classrtabmap_1_1Registration.html | 640 + .../latest/classrtabmap_1_1Registration.js | 24 + ...assrtabmap_1_1RegistrationIcp-members.html | 158 + .../classrtabmap_1_1RegistrationIcp.html | 506 + .../latest/classrtabmap_1_1RegistrationIcp.js | 12 + ...tabmap_1_1RegistrationIcp__coll__graph.map | 5 + ...tabmap_1_1RegistrationIcp__coll__graph.md5 | 1 + ...tabmap_1_1RegistrationIcp__coll__graph.png | Bin 0 -> 5431 bytes ...map_1_1RegistrationIcp__inherit__graph.map | 5 + ...map_1_1RegistrationIcp__inherit__graph.md5 | 1 + ...map_1_1RegistrationIcp__inherit__graph.png | Bin 0 -> 5431 bytes ...ssrtabmap_1_1RegistrationInfo-members.html | 140 + .../classrtabmap_1_1RegistrationInfo.html | 619 + .../classrtabmap_1_1RegistrationInfo.js | 26 + ...assrtabmap_1_1RegistrationVis-members.html | 158 + .../classrtabmap_1_1RegistrationVis.html | 680 + .../latest/classrtabmap_1_1RegistrationVis.js | 14 + ...tabmap_1_1RegistrationVis__coll__graph.map | 5 + ...tabmap_1_1RegistrationVis__coll__graph.md5 | 1 + ...tabmap_1_1RegistrationVis__coll__graph.png | Bin 0 -> 5449 bytes ...map_1_1RegistrationVis__inherit__graph.map | 5 + ...map_1_1RegistrationVis__inherit__graph.md5 | 1 + ...map_1_1RegistrationVis__inherit__graph.png | Bin 0 -> 5449 bytes ...tabmap_1_1Registration__inherit__graph.map | 7 + ...tabmap_1_1Registration__inherit__graph.md5 | 1 + ...tabmap_1_1Registration__inherit__graph.png | Bin 0 -> 9537 bytes .../classrtabmap_1_1Rtabmap-members.html | 199 + .../api/latest/classrtabmap_1_1Rtabmap.html | 2780 + .../api/latest/classrtabmap_1_1Rtabmap.js | 85 + ...rtabmap_1_1RtabmapColorOcTree-members.html | 131 + .../classrtabmap_1_1RtabmapColorOcTree.html | 524 + .../classrtabmap_1_1RtabmapColorOcTree.js | 7 + ...map_1_1RtabmapColorOcTreeNode-members.html | 136 + ...lassrtabmap_1_1RtabmapColorOcTreeNode.html | 459 + ...1_1RtabmapColorOcTreeNode__coll__graph.map | 5 + ...1_1RtabmapColorOcTreeNode__coll__graph.md5 | 1 + ...1_1RtabmapColorOcTreeNode__coll__graph.png | Bin 0 -> 6138 bytes ...RtabmapColorOcTreeNode__inherit__graph.map | 5 + ...RtabmapColorOcTreeNode__inherit__graph.md5 | 1 + ...RtabmapColorOcTreeNode__inherit__graph.png | Bin 0 -> 6138 bytes ...ee_1_1StaticMemberInitializer-members.html | 118 + ...olorOcTree_1_1StaticMemberInitializer.html | 161 + ...pColorOcTree_1_1StaticMemberInitializer.js | 4 + ...map_1_1RtabmapColorOcTree__coll__graph.map | 7 + ...map_1_1RtabmapColorOcTree__coll__graph.md5 | 1 + ...map_1_1RtabmapColorOcTree__coll__graph.png | Bin 0 -> 18242 bytes ..._1_1RtabmapColorOcTree__inherit__graph.map | 5 + ..._1_1RtabmapColorOcTree__inherit__graph.md5 | 1 + ..._1_1RtabmapColorOcTree__inherit__graph.png | Bin 0 -> 8280 bytes .../classrtabmap_1_1RtabmapEvent-members.html | 123 + .../latest/classrtabmap_1_1RtabmapEvent.html | 276 + .../latest/classrtabmap_1_1RtabmapEvent.js | 4 + ...srtabmap_1_1RtabmapEvent3DMap-members.html | 126 + .../classrtabmap_1_1RtabmapEvent3DMap.html | 380 + .../classrtabmap_1_1RtabmapEvent3DMap.js | 4 + ...bmap_1_1RtabmapEvent3DMap__coll__graph.map | 5 + ...bmap_1_1RtabmapEvent3DMap__coll__graph.md5 | 1 + ...bmap_1_1RtabmapEvent3DMap__coll__graph.png | Bin 0 -> 4353 bytes ...p_1_1RtabmapEvent3DMap__inherit__graph.map | 5 + ...p_1_1RtabmapEvent3DMap__inherit__graph.md5 | 1 + ...p_1_1RtabmapEvent3DMap__inherit__graph.png | Bin 0 -> 4353 bytes ...assrtabmap_1_1RtabmapEventCmd-members.html | 154 + .../classrtabmap_1_1RtabmapEventCmd.html | 768 + .../latest/classrtabmap_1_1RtabmapEventCmd.js | 25 + ...tabmap_1_1RtabmapEventCmd__coll__graph.map | 5 + ...tabmap_1_1RtabmapEventCmd__coll__graph.md5 | 1 + ...tabmap_1_1RtabmapEventCmd__coll__graph.png | Bin 0 -> 4128 bytes ...map_1_1RtabmapEventCmd__inherit__graph.map | 5 + ...map_1_1RtabmapEventCmd__inherit__graph.md5 | 1 + ...map_1_1RtabmapEventCmd__inherit__graph.png | Bin 0 -> 4128 bytes ...ssrtabmap_1_1RtabmapEventInit-members.html | 134 + .../classrtabmap_1_1RtabmapEventInit.html | 396 + .../classrtabmap_1_1RtabmapEventInit.js | 4 + ...abmap_1_1RtabmapEventInit__coll__graph.map | 5 + ...abmap_1_1RtabmapEventInit__coll__graph.md5 | 1 + ...abmap_1_1RtabmapEventInit__coll__graph.png | Bin 0 -> 3863 bytes ...ap_1_1RtabmapEventInit__inherit__graph.map | 5 + ...ap_1_1RtabmapEventInit__inherit__graph.md5 | 1 + ...ap_1_1RtabmapEventInit__inherit__graph.png | Bin 0 -> 3863 bytes ...ssrtabmap_1_1RtabmapEvent__coll__graph.map | 5 + ...ssrtabmap_1_1RtabmapEvent__coll__graph.md5 | 1 + ...ssrtabmap_1_1RtabmapEvent__coll__graph.png | Bin 0 -> 3614 bytes ...tabmap_1_1RtabmapEvent__inherit__graph.map | 5 + ...tabmap_1_1RtabmapEvent__inherit__graph.md5 | 1 + ...tabmap_1_1RtabmapEvent__inherit__graph.png | Bin 0 -> 3614 bytes ...map_1_1RtabmapGlobalPathEvent-members.html | 128 + ...lassrtabmap_1_1RtabmapGlobalPathEvent.html | 458 + .../classrtabmap_1_1RtabmapGlobalPathEvent.js | 4 + ...1_1RtabmapGlobalPathEvent__coll__graph.map | 5 + ...1_1RtabmapGlobalPathEvent__coll__graph.md5 | 1 + ...1_1RtabmapGlobalPathEvent__coll__graph.png | Bin 0 -> 4687 bytes ...RtabmapGlobalPathEvent__inherit__graph.map | 5 + ...RtabmapGlobalPathEvent__inherit__graph.md5 | 1 + ...RtabmapGlobalPathEvent__inherit__graph.png | Bin 0 -> 4687 bytes ...map_1_1RtabmapGoalStatusEvent-members.html | 122 + ...lassrtabmap_1_1RtabmapGoalStatusEvent.html | 247 + .../classrtabmap_1_1RtabmapGoalStatusEvent.js | 4 + ...1_1RtabmapGoalStatusEvent__coll__graph.map | 5 + ...1_1RtabmapGoalStatusEvent__coll__graph.md5 | 1 + ...1_1RtabmapGoalStatusEvent__coll__graph.png | Bin 0 -> 4920 bytes ...RtabmapGoalStatusEvent__inherit__graph.map | 5 + ...RtabmapGoalStatusEvent__inherit__graph.md5 | 1 + ...RtabmapGoalStatusEvent__inherit__graph.png | Bin 0 -> 4920 bytes ...map_1_1RtabmapLabelErrorEvent-members.html | 124 + ...lassrtabmap_1_1RtabmapLabelErrorEvent.html | 315 + .../classrtabmap_1_1RtabmapLabelErrorEvent.js | 4 + ...1_1RtabmapLabelErrorEvent__coll__graph.map | 5 + ...1_1RtabmapLabelErrorEvent__coll__graph.md5 | 1 + ...1_1RtabmapLabelErrorEvent__coll__graph.png | Bin 0 -> 4519 bytes ...RtabmapLabelErrorEvent__inherit__graph.map | 5 + ...RtabmapLabelErrorEvent__inherit__graph.md5 | 1 + ...RtabmapLabelErrorEvent__inherit__graph.png | Bin 0 -> 4519 bytes ...classrtabmap_1_1RtabmapThread-members.html | 176 + .../latest/classrtabmap_1_1RtabmapThread.html | 614 + .../latest/classrtabmap_1_1RtabmapThread.js | 17 + ...srtabmap_1_1RtabmapThread__coll__graph.map | 11 + ...srtabmap_1_1RtabmapThread__coll__graph.md5 | 1 + ...srtabmap_1_1RtabmapThread__coll__graph.png | Bin 0 -> 11958 bytes ...abmap_1_1RtabmapThread__inherit__graph.map | 11 + ...abmap_1_1RtabmapThread__inherit__graph.md5 | 1 + ...abmap_1_1RtabmapThread__inherit__graph.png | Bin 0 -> 11958 bytes .../classrtabmap_1_1RvlCodec-members.html | 119 + .../api/latest/classrtabmap_1_1RvlCodec.html | 133 + .../latest/classrtabmap_1_1SIFT-members.html | 169 + .../api/latest/classrtabmap_1_1SIFT.html | 368 + .../api/latest/classrtabmap_1_1SIFT.js | 4 + .../classrtabmap_1_1SIFT__coll__graph.map | 5 + .../classrtabmap_1_1SIFT__coll__graph.md5 | 1 + .../classrtabmap_1_1SIFT__coll__graph.png | Bin 0 -> 3963 bytes .../classrtabmap_1_1SIFT__inherit__graph.map | 5 + .../classrtabmap_1_1SIFT__inherit__graph.md5 | 1 + .../classrtabmap_1_1SIFT__inherit__graph.png | Bin 0 -> 3963 bytes .../latest/classrtabmap_1_1SURF-members.html | 169 + .../api/latest/classrtabmap_1_1SURF.html | 372 + .../api/latest/classrtabmap_1_1SURF.js | 4 + .../classrtabmap_1_1SURF__DAISY-members.html | 171 + .../latest/classrtabmap_1_1SURF__DAISY.html | 347 + ...assrtabmap_1_1SURF__DAISY__coll__graph.map | 7 + ...assrtabmap_1_1SURF__DAISY__coll__graph.md5 | 1 + ...assrtabmap_1_1SURF__DAISY__coll__graph.png | Bin 0 -> 6732 bytes ...rtabmap_1_1SURF__DAISY__inherit__graph.map | 7 + ...rtabmap_1_1SURF__DAISY__inherit__graph.md5 | 1 + ...rtabmap_1_1SURF__DAISY__inherit__graph.png | Bin 0 -> 6732 bytes .../classrtabmap_1_1SURF__FREAK-members.html | 171 + .../latest/classrtabmap_1_1SURF__FREAK.html | 347 + ...assrtabmap_1_1SURF__FREAK__coll__graph.map | 7 + ...assrtabmap_1_1SURF__FREAK__coll__graph.md5 | 1 + ...assrtabmap_1_1SURF__FREAK__coll__graph.png | Bin 0 -> 6620 bytes ...rtabmap_1_1SURF__FREAK__inherit__graph.map | 7 + ...rtabmap_1_1SURF__FREAK__inherit__graph.md5 | 1 + ...rtabmap_1_1SURF__FREAK__inherit__graph.png | Bin 0 -> 6620 bytes .../classrtabmap_1_1SURF__coll__graph.map | 5 + .../classrtabmap_1_1SURF__coll__graph.md5 | 1 + .../classrtabmap_1_1SURF__coll__graph.png | Bin 0 -> 4255 bytes .../classrtabmap_1_1SURF__inherit__graph.map | 9 + .../classrtabmap_1_1SURF__inherit__graph.md5 | 1 + .../classrtabmap_1_1SURF__inherit__graph.png | Bin 0 -> 10424 bytes ...classrtabmap_1_1SensorCapture-members.html | 130 + .../latest/classrtabmap_1_1SensorCapture.html | 773 + .../latest/classrtabmap_1_1SensorCapture.js | 17 + ...srtabmap_1_1SensorCaptureInfo-members.html | 135 + .../classrtabmap_1_1SensorCaptureInfo.html | 597 + .../classrtabmap_1_1SensorCaptureInfo.js | 22 + ...bmap_1_1SensorCaptureInfo__coll__graph.map | 5 + ...bmap_1_1SensorCaptureInfo__coll__graph.md5 | 1 + ...bmap_1_1SensorCaptureInfo__coll__graph.png | Bin 0 -> 6246 bytes ...tabmap_1_1SensorCaptureThread-members.html | 190 + .../classrtabmap_1_1SensorCaptureThread.html | 1642 + .../classrtabmap_1_1SensorCaptureThread.js | 35 + ...ap_1_1SensorCaptureThread__coll__graph.map | 9 + ...ap_1_1SensorCaptureThread__coll__graph.md5 | 1 + ...ap_1_1SensorCaptureThread__coll__graph.png | Bin 0 -> 9602 bytes ...1_1SensorCaptureThread__inherit__graph.map | 9 + ...1_1SensorCaptureThread__inherit__graph.md5 | 1 + ...1_1SensorCaptureThread__inherit__graph.png | Bin 0 -> 9602 bytes ...abmap_1_1SensorCapture__inherit__graph.map | 57 + ...abmap_1_1SensorCapture__inherit__graph.md5 | 1 + ...abmap_1_1SensorCapture__inherit__graph.png | Bin 0 -> 139601 bytes .../classrtabmap_1_1SensorData-members.html | 206 + .../latest/classrtabmap_1_1SensorData.html | 3716 + .../api/latest/classrtabmap_1_1SensorData.js | 82 + .../classrtabmap_1_1SensorEvent-members.html | 132 + .../latest/classrtabmap_1_1SensorEvent.html | 628 + .../api/latest/classrtabmap_1_1SensorEvent.js | 17 + ...assrtabmap_1_1SensorEvent__coll__graph.map | 5 + ...assrtabmap_1_1SensorEvent__coll__graph.md5 | 1 + ...assrtabmap_1_1SensorEvent__coll__graph.png | Bin 0 -> 4084 bytes ...rtabmap_1_1SensorEvent__inherit__graph.map | 5 + ...rtabmap_1_1SensorEvent__inherit__graph.md5 | 1 + ...rtabmap_1_1SensorEvent__inherit__graph.png | Bin 0 -> 4084 bytes .../classrtabmap_1_1Signature-members.html | 169 + .../api/latest/classrtabmap_1_1Signature.html | 2005 + .../api/latest/classrtabmap_1_1Signature.js | 56 + .../classrtabmap_1_1Statistics-members.html | 176 + .../latest/classrtabmap_1_1Statistics.html | 2291 + .../api/latest/classrtabmap_1_1Statistics.js | 60 + .../classrtabmap_1_1Stereo-members.html | 128 + .../api/latest/classrtabmap_1_1Stereo.html | 606 + .../api/latest/classrtabmap_1_1Stereo.js | 14 + .../classrtabmap_1_1StereoBM-members.html | 128 + .../api/latest/classrtabmap_1_1StereoBM.html | 388 + .../api/latest/classrtabmap_1_1StereoBM.js | 8 + .../classrtabmap_1_1StereoBM__coll__graph.map | 5 + .../classrtabmap_1_1StereoBM__coll__graph.md5 | 1 + .../classrtabmap_1_1StereoBM__coll__graph.png | Bin 0 -> 4967 bytes ...assrtabmap_1_1StereoBM__inherit__graph.map | 5 + ...assrtabmap_1_1StereoBM__inherit__graph.md5 | 1 + ...assrtabmap_1_1StereoBM__inherit__graph.png | Bin 0 -> 4967 bytes ...srtabmap_1_1StereoCameraModel-members.html | 155 + .../classrtabmap_1_1StereoCameraModel.html | 1861 + .../classrtabmap_1_1StereoCameraModel.js | 42 + .../classrtabmap_1_1StereoDense-members.html | 125 + .../latest/classrtabmap_1_1StereoDense.html | 451 + .../api/latest/classrtabmap_1_1StereoDense.js | 11 + ...rtabmap_1_1StereoDense__inherit__graph.map | 7 + ...rtabmap_1_1StereoDense__inherit__graph.md5 | 1 + ...rtabmap_1_1StereoDense__inherit__graph.png | Bin 0 -> 7453 bytes ...srtabmap_1_1StereoOpticalFlow-members.html | 134 + .../classrtabmap_1_1StereoOpticalFlow.html | 522 + .../classrtabmap_1_1StereoOpticalFlow.js | 9 + ...bmap_1_1StereoOpticalFlow__coll__graph.map | 5 + ...bmap_1_1StereoOpticalFlow__coll__graph.md5 | 1 + ...bmap_1_1StereoOpticalFlow__coll__graph.png | Bin 0 -> 5164 bytes ...p_1_1StereoOpticalFlow__inherit__graph.map | 5 + ...p_1_1StereoOpticalFlow__inherit__graph.md5 | 1 + ...p_1_1StereoOpticalFlow__inherit__graph.png | Bin 0 -> 5164 bytes .../classrtabmap_1_1StereoSGBM-members.html | 127 + .../latest/classrtabmap_1_1StereoSGBM.html | 350 + .../api/latest/classrtabmap_1_1StereoSGBM.js | 7 + ...lassrtabmap_1_1StereoSGBM__coll__graph.map | 5 + ...lassrtabmap_1_1StereoSGBM__coll__graph.md5 | 1 + ...lassrtabmap_1_1StereoSGBM__coll__graph.png | Bin 0 -> 5265 bytes ...srtabmap_1_1StereoSGBM__inherit__graph.map | 5 + ...srtabmap_1_1StereoSGBM__inherit__graph.md5 | 1 + ...srtabmap_1_1StereoSGBM__inherit__graph.png | Bin 0 -> 5265 bytes ...classrtabmap_1_1Stereo__inherit__graph.map | 5 + ...classrtabmap_1_1Stereo__inherit__graph.md5 | 1 + ...classrtabmap_1_1Stereo__inherit__graph.png | Bin 0 -> 5200 bytes ...rtabmap_1_1SuperPointRpautrat-members.html | 169 + .../classrtabmap_1_1SuperPointRpautrat.html | 368 + .../classrtabmap_1_1SuperPointRpautrat.js | 4 + ...map_1_1SuperPointRpautrat__coll__graph.map | 5 + ...map_1_1SuperPointRpautrat__coll__graph.md5 | 1 + ...map_1_1SuperPointRpautrat__coll__graph.png | Bin 0 -> 5178 bytes ..._1_1SuperPointRpautrat__inherit__graph.map | 5 + ..._1_1SuperPointRpautrat__inherit__graph.md5 | 1 + ..._1_1SuperPointRpautrat__inherit__graph.png | Bin 0 -> 5178 bytes ...assrtabmap_1_1SuperPointTorch-members.html | 169 + .../classrtabmap_1_1SuperPointTorch.html | 368 + .../latest/classrtabmap_1_1SuperPointTorch.js | 4 + ...tabmap_1_1SuperPointTorch__coll__graph.map | 5 + ...tabmap_1_1SuperPointTorch__coll__graph.md5 | 1 + ...tabmap_1_1SuperPointTorch__coll__graph.png | Bin 0 -> 5094 bytes ...map_1_1SuperPointTorch__inherit__graph.map | 5 + ...map_1_1SuperPointTorch__inherit__graph.md5 | 1 + ...map_1_1SuperPointTorch__inherit__graph.png | Bin 0 -> 5094 bytes .../classrtabmap_1_1Transform-members.html | 200 + .../api/latest/classrtabmap_1_1Transform.html | 1635 + .../api/latest/classrtabmap_1_1Transform.js | 47 + ...ssrtabmap_1_1TransformStamped-members.html | 119 + .../classrtabmap_1_1TransformStamped.html | 233 + ...classrtabmap_1_1UserDataEvent-members.html | 123 + .../latest/classrtabmap_1_1UserDataEvent.html | 279 + .../latest/classrtabmap_1_1UserDataEvent.js | 4 + ...srtabmap_1_1UserDataEvent__coll__graph.map | 5 + ...srtabmap_1_1UserDataEvent__coll__graph.md5 | 1 + ...srtabmap_1_1UserDataEvent__coll__graph.png | Bin 0 -> 4033 bytes ...abmap_1_1UserDataEvent__inherit__graph.map | 5 + ...abmap_1_1UserDataEvent__inherit__graph.md5 | 1 + ...abmap_1_1UserDataEvent__inherit__graph.png | Bin 0 -> 4033 bytes .../classrtabmap_1_1VWDictionary-members.html | 172 + .../latest/classrtabmap_1_1VWDictionary.html | 1706 + .../latest/classrtabmap_1_1VWDictionary.js | 54 + .../classrtabmap_1_1VisualWord-members.html | 127 + .../latest/classrtabmap_1_1VisualWord.html | 474 + .../api/latest/classrtabmap_1_1VisualWord.js | 14 + preview/pr-1773/api/latest/closed.png | Bin 0 -> 132 bytes preview/pr-1773/api/latest/custom.css | 55 + preview/pr-1773/api/latest/deprecated.html | 172 + .../pr-1773/api/latest/dir_000004_000023.html | 111 + .../pr-1773/api/latest/dir_000010_000023.html | 111 + .../pr-1773/api/latest/dir_000012_000023.html | 111 + .../pr-1773/api/latest/dir_000019_000023.html | 111 + .../dir_04d49acea3c42cab2afcd35cb2f2a48f.html | 126 + .../dir_04d49acea3c42cab2afcd35cb2f2a48f.js | 4 + ...r_04d49acea3c42cab2afcd35cb2f2a48f_dep.map | 7 + ...r_04d49acea3c42cab2afcd35cb2f2a48f_dep.md5 | 1 + ...r_04d49acea3c42cab2afcd35cb2f2a48f_dep.png | Bin 0 -> 3690 bytes .../dir_0ba908baca6d808b21359711c92b5f16.html | 131 + .../dir_0ba908baca6d808b21359711c92b5f16.js | 5 + ...r_0ba908baca6d808b21359711c92b5f16_dep.map | 4 + ...r_0ba908baca6d808b21359711c92b5f16_dep.md5 | 1 + ...r_0ba908baca6d808b21359711c92b5f16_dep.png | Bin 0 -> 2000 bytes .../dir_21f2edb779785a2efd6396476d03a0e2.html | 124 + .../dir_21f2edb779785a2efd6396476d03a0e2.js | 4 + ...r_21f2edb779785a2efd6396476d03a0e2_dep.map | 5 + ...r_21f2edb779785a2efd6396476d03a0e2_dep.md5 | 1 + ...r_21f2edb779785a2efd6396476d03a0e2_dep.png | Bin 0 -> 3343 bytes .../dir_249903c078ca6be5fe8a43d73ba57f0e.html | 173 + .../dir_249903c078ca6be5fe8a43d73ba57f0e.js | 26 + ...r_249903c078ca6be5fe8a43d73ba57f0e_dep.map | 4 + ...r_249903c078ca6be5fe8a43d73ba57f0e_dep.md5 | 1 + ...r_249903c078ca6be5fe8a43d73ba57f0e_dep.png | Bin 0 -> 1842 bytes .../dir_3587399b7774227770d0fd39c2d22121.html | 137 + .../dir_3587399b7774227770d0fd39c2d22121.js | 8 + ...r_3587399b7774227770d0fd39c2d22121_dep.map | 4 + ...r_3587399b7774227770d0fd39c2d22121_dep.md5 | 1 + ...r_3587399b7774227770d0fd39c2d22121_dep.png | Bin 0 -> 2369 bytes .../dir_449b2e54cbad5b668a24993c3878cc51.html | 130 + .../dir_449b2e54cbad5b668a24993c3878cc51.js | 4 + ...r_449b2e54cbad5b668a24993c3878cc51_dep.map | 5 + ...r_449b2e54cbad5b668a24993c3878cc51_dep.md5 | 1 + ...r_449b2e54cbad5b668a24993c3878cc51_dep.png | Bin 0 -> 3226 bytes .../dir_4e8d938e9ddb5a617c200d5739d1f41a.html | 114 + .../dir_55226059184c2c5c345e42665cf98aec.html | 124 + .../dir_55226059184c2c5c345e42665cf98aec.js | 4 + ...r_55226059184c2c5c345e42665cf98aec_dep.map | 5 + ...r_55226059184c2c5c345e42665cf98aec_dep.md5 | 1 + ...r_55226059184c2c5c345e42665cf98aec_dep.png | Bin 0 -> 3223 bytes .../dir_5807fd1f37f21884b665e4f5337b2441.html | 124 + .../dir_5807fd1f37f21884b665e4f5337b2441.js | 4 + ...r_5807fd1f37f21884b665e4f5337b2441_dep.map | 5 + ...r_5807fd1f37f21884b665e4f5337b2441_dep.md5 | 1 + ...r_5807fd1f37f21884b665e4f5337b2441_dep.png | Bin 0 -> 3327 bytes .../dir_623bdbaac6fe9b3f6f5de21b17f93501.html | 131 + .../dir_623bdbaac6fe9b3f6f5de21b17f93501.js | 5 + ...r_623bdbaac6fe9b3f6f5de21b17f93501_dep.map | 4 + ...r_623bdbaac6fe9b3f6f5de21b17f93501_dep.md5 | 1 + ...r_623bdbaac6fe9b3f6f5de21b17f93501_dep.png | Bin 0 -> 2010 bytes .../dir_65d456be8cef94751a4d1b4df815a100.html | 129 + .../dir_65d456be8cef94751a4d1b4df815a100.js | 4 + ...r_65d456be8cef94751a4d1b4df815a100_dep.map | 4 + ...r_65d456be8cef94751a4d1b4df815a100_dep.md5 | 1 + ...r_65d456be8cef94751a4d1b4df815a100_dep.png | Bin 0 -> 1692 bytes .../dir_67ee77bab1d00e5527b3ba66cff8b822.html | 138 + .../dir_67ee77bab1d00e5527b3ba66cff8b822.js | 7 + ...r_67ee77bab1d00e5527b3ba66cff8b822_dep.map | 7 + ...r_67ee77bab1d00e5527b3ba66cff8b822_dep.md5 | 1 + ...r_67ee77bab1d00e5527b3ba66cff8b822_dep.png | Bin 0 -> 3066 bytes .../dir_6fc574af21c01044bbfc485d931ba1b6.html | 129 + .../dir_6fc574af21c01044bbfc485d931ba1b6.js | 4 + ...r_6fc574af21c01044bbfc485d931ba1b6_dep.map | 4 + ...r_6fc574af21c01044bbfc485d931ba1b6_dep.md5 | 1 + ...r_6fc574af21c01044bbfc485d931ba1b6_dep.png | Bin 0 -> 1824 bytes .../dir_7b07a0fe62d0fac6129c48e2cb6c7633.html | 133 + .../dir_7b07a0fe62d0fac6129c48e2cb6c7633.js | 6 + ...r_7b07a0fe62d0fac6129c48e2cb6c7633_dep.map | 4 + ...r_7b07a0fe62d0fac6129c48e2cb6c7633_dep.md5 | 1 + ...r_7b07a0fe62d0fac6129c48e2cb6c7633_dep.png | Bin 0 -> 1761 bytes .../dir_7c77c469ef71e5893c1567cf621a9d83.html | 114 + .../dir_7c77c469ef71e5893c1567cf621a9d83.js | 4 + .../dir_85e098119c0e838040cd00f42e29c3c2.html | 187 + .../dir_85e098119c0e838040cd00f42e29c3c2.js | 27 + ...r_85e098119c0e838040cd00f42e29c3c2_dep.map | 6 + ...r_85e098119c0e838040cd00f42e29c3c2_dep.md5 | 1 + ...r_85e098119c0e838040cd00f42e29c3c2_dep.png | Bin 0 -> 4337 bytes .../dir_884419f21456e80aa47bc1d0c2ab0140.html | 325 + .../dir_884419f21456e80aa47bc1d0c2ab0140.js | 94 + ...r_884419f21456e80aa47bc1d0c2ab0140_dep.map | 17 + ...r_884419f21456e80aa47bc1d0c2ab0140_dep.md5 | 1 + ...r_884419f21456e80aa47bc1d0c2ab0140_dep.png | Bin 0 -> 13877 bytes .../dir_8c6d2b7fb0f1009468191a56b06a1387.html | 114 + .../dir_8c6d2b7fb0f1009468191a56b06a1387.js | 4 + .../dir_b3c8af46e4c1aa88d96b6d1863f8ab51.html | 133 + .../dir_b3c8af46e4c1aa88d96b6d1863f8ab51.js | 6 + ...r_b3c8af46e4c1aa88d96b6d1863f8ab51_dep.map | 4 + ...r_b3c8af46e4c1aa88d96b6d1863f8ab51_dep.md5 | 1 + ...r_b3c8af46e4c1aa88d96b6d1863f8ab51_dep.png | Bin 0 -> 1967 bytes .../dir_ca74fa0ef74cdae9a74fcd374d99516a.html | 124 + .../dir_ca74fa0ef74cdae9a74fcd374d99516a.js | 4 + ...r_ca74fa0ef74cdae9a74fcd374d99516a_dep.map | 5 + ...r_ca74fa0ef74cdae9a74fcd374d99516a_dep.md5 | 1 + ...r_ca74fa0ef74cdae9a74fcd374d99516a_dep.png | Bin 0 -> 3114 bytes .../dir_d5b9494e18cb3ada3ef427a965bb34ab.html | 130 + .../dir_d5b9494e18cb3ada3ef427a965bb34ab.js | 4 + ...r_d5b9494e18cb3ada3ef427a965bb34ab_dep.map | 5 + ...r_d5b9494e18cb3ada3ef427a965bb34ab_dep.md5 | 1 + ...r_d5b9494e18cb3ada3ef427a965bb34ab_dep.png | Bin 0 -> 3267 bytes .../dir_e4607d1f674c8fc63d3b87c7bc0020e1.html | 123 + ...r_e4607d1f674c8fc63d3b87c7bc0020e1_dep.map | 4 + ...r_e4607d1f674c8fc63d3b87c7bc0020e1_dep.md5 | 1 + ...r_e4607d1f674c8fc63d3b87c7bc0020e1_dep.png | Bin 0 -> 2943 bytes .../dir_e996b11fd4b3a747423759b16a8ba4a6.html | 127 + .../dir_e996b11fd4b3a747423759b16a8ba4a6.js | 4 + ...r_e996b11fd4b3a747423759b16a8ba4a6_dep.map | 8 + ...r_e996b11fd4b3a747423759b16a8ba4a6_dep.md5 | 1 + ...r_e996b11fd4b3a747423759b16a8ba4a6_dep.png | Bin 0 -> 4925 bytes .../dir_ee30f6c257683889c7b4a28a79d90ef3.html | 135 + .../dir_ee30f6c257683889c7b4a28a79d90ef3.js | 7 + ...r_ee30f6c257683889c7b4a28a79d90ef3_dep.map | 4 + ...r_ee30f6c257683889c7b4a28a79d90ef3_dep.md5 | 1 + ...r_ee30f6c257683889c7b4a28a79d90ef3_dep.png | Bin 0 -> 2216 bytes .../dir_fbc3350978c71aef49f2eeb1c9d88691.html | 163 + .../dir_fbc3350978c71aef49f2eeb1c9d88691.js | 21 + ...r_fbc3350978c71aef49f2eeb1c9d88691_dep.map | 4 + ...r_fbc3350978c71aef49f2eeb1c9d88691_dep.md5 | 1 + ...r_fbc3350978c71aef49f2eeb1c9d88691_dep.png | Bin 0 -> 2403 bytes .../dir_ff01f7bc5399ccf9ff1cc91d1f45726a.html | 133 + .../dir_ff01f7bc5399ccf9ff1cc91d1f45726a.js | 4 + ...r_ff01f7bc5399ccf9ff1cc91d1f45726a_dep.map | 8 + ...r_ff01f7bc5399ccf9ff1cc91d1f45726a_dep.md5 | 1 + ...r_ff01f7bc5399ccf9ff1cc91d1f45726a_dep.png | Bin 0 -> 4513 bytes ...e__depth__distortion__model_8h_source.html | 265 + preview/pr-1773/api/latest/doc.svg | 12 + preview/pr-1773/api/latest/docd.svg | 12 + .../latest/doxygen-awesome-darkmode-toggle.js | 157 + .../pr-1773/api/latest/doxygen-awesome.css | 2681 + preview/pr-1773/api/latest/doxygen.css | 1685 + preview/pr-1773/api/latest/doxygen.svg | 28 + preview/pr-1773/api/latest/dynsections.js | 199 + preview/pr-1773/api/latest/files.html | 312 + preview/pr-1773/api/latest/files_dup.js | 6 + preview/pr-1773/api/latest/folderclosed.svg | 11 + preview/pr-1773/api/latest/folderclosedd.svg | 11 + preview/pr-1773/api/latest/folderopen.svg | 17 + preview/pr-1773/api/latest/folderopend.svg | 12 + .../latest/frame__projector_8h_source.html | 215 + preview/pr-1773/api/latest/functions.html | 119 + preview/pr-1773/api/latest/functions_a.html | 148 + preview/pr-1773/api/latest/functions_b.html | 122 + preview/pr-1773/api/latest/functions_c.html | 177 + preview/pr-1773/api/latest/functions_d.html | 763 + preview/pr-1773/api/latest/functions_dup.js | 30 + preview/pr-1773/api/latest/functions_e.html | 136 + .../pr-1773/api/latest/functions_enum.html | 123 + .../pr-1773/api/latest/functions_eval.html | 255 + preview/pr-1773/api/latest/functions_f.html | 147 + .../pr-1773/api/latest/functions_func.html | 145 + preview/pr-1773/api/latest/functions_func.js | 29 + .../pr-1773/api/latest/functions_func_b.html | 119 + .../pr-1773/api/latest/functions_func_c.html | 170 + .../pr-1773/api/latest/functions_func_d.html | 760 + .../pr-1773/api/latest/functions_func_e.html | 135 + .../pr-1773/api/latest/functions_func_f.html | 139 + .../pr-1773/api/latest/functions_func_g.html | 315 + .../pr-1773/api/latest/functions_func_h.html | 118 + .../pr-1773/api/latest/functions_func_i.html | 205 + .../pr-1773/api/latest/functions_func_j.html | 116 + .../pr-1773/api/latest/functions_func_k.html | 737 + .../pr-1773/api/latest/functions_func_l.html | 153 + .../pr-1773/api/latest/functions_func_m.html | 125 + .../pr-1773/api/latest/functions_func_n.html | 118 + .../pr-1773/api/latest/functions_func_o.html | 136 + .../pr-1773/api/latest/functions_func_p.html | 131 + .../pr-1773/api/latest/functions_func_r.html | 162 + .../pr-1773/api/latest/functions_func_s.html | 266 + .../pr-1773/api/latest/functions_func_t.html | 767 + .../pr-1773/api/latest/functions_func_u.html | 140 + .../pr-1773/api/latest/functions_func_v.html | 119 + .../pr-1773/api/latest/functions_func_w.html | 118 + .../pr-1773/api/latest/functions_func_x.html | 115 + .../pr-1773/api/latest/functions_func_y.html | 115 + .../pr-1773/api/latest/functions_func_z.html | 115 + .../pr-1773/api/latest/functions_func_~.html | 135 + preview/pr-1773/api/latest/functions_g.html | 320 + preview/pr-1773/api/latest/functions_h.html | 119 + preview/pr-1773/api/latest/functions_i.html | 223 + preview/pr-1773/api/latest/functions_j.html | 116 + preview/pr-1773/api/latest/functions_k.html | 871 + preview/pr-1773/api/latest/functions_l.html | 171 + preview/pr-1773/api/latest/functions_m.html | 129 + preview/pr-1773/api/latest/functions_n.html | 121 + preview/pr-1773/api/latest/functions_o.html | 140 + preview/pr-1773/api/latest/functions_p.html | 133 + preview/pr-1773/api/latest/functions_r.html | 166 + .../pr-1773/api/latest/functions_rela.html | 113 + preview/pr-1773/api/latest/functions_s.html | 267 + preview/pr-1773/api/latest/functions_t.html | 795 + preview/pr-1773/api/latest/functions_u.html | 141 + preview/pr-1773/api/latest/functions_v.html | 122 + .../pr-1773/api/latest/functions_vars.html | 302 + preview/pr-1773/api/latest/functions_w.html | 120 + preview/pr-1773/api/latest/functions_x.html | 115 + preview/pr-1773/api/latest/functions_y.html | 115 + preview/pr-1773/api/latest/functions_z.html | 115 + preview/pr-1773/api/latest/functions_~.html | 135 + .../global__map_2OccupancyGrid_8h_source.html | 197 + .../global__map_2OctoMap_8h_source.html | 348 + preview/pr-1773/api/latest/globals.html | 185 + preview/pr-1773/api/latest/globals_defs.html | 118 + preview/pr-1773/api/latest/globals_enum.html | 113 + preview/pr-1773/api/latest/globals_func.html | 177 + preview/pr-1773/api/latest/globals_type.html | 113 + preview/pr-1773/api/latest/graph_legend.html | 173 + preview/pr-1773/api/latest/graph_legend.md5 | 1 + preview/pr-1773/api/latest/graph_legend.png | Bin 0 -> 23370 bytes .../group__ComputeNormalsComplexity.html | 159 + .../latest/group__ComputeNormalsComplexity.js | 8 + ...up__ComputeVarianceAndCorrespondences.html | 160 + ...roup__ComputeVarianceAndCorrespondences.js | 7 + .../pr-1773/api/latest/group__CropBox.html | 195 + preview/pr-1773/api/latest/group__CropBox.js | 16 + .../api/latest/group__ExtractClusters.html | 175 + .../api/latest/group__ExtractClusters.js | 11 + .../api/latest/group__ExtractIndices.html | 182 + .../api/latest/group__ExtractIndices.js | 14 + .../api/latest/group__FrustumFiltering.html | 163 + .../api/latest/group__FrustumFiltering.js | 6 + .../group__LaserScan2dFromPointCloud.html | 167 + .../group__LaserScan2dFromPointCloud.js | 9 + .../group__LaserScanFromPointCloud.html | 266 + .../latest/group__LaserScanFromPointCloud.js | 21 + .../latest/group__LaserScanToPointCloud.html | 178 + .../latest/group__LaserScanToPointCloud.js | 16 + .../api/latest/group__PassThrough.html | 191 + .../pr-1773/api/latest/group__PassThrough.js | 15 + .../latest/group__PointCloudDownSampling.html | 173 + .../latest/group__PointCloudDownSampling.js | 10 + .../group__PointCloudRangeFiltering.html | 158 + .../latest/group__PointCloudRangeFiltering.js | 7 + .../group__PointCloudSplitRangeFiltering.html | 152 + .../group__PointCloudSplitRangeFiltering.js | 7 + .../latest/group__PointNormalFiltering.html | 174 + .../api/latest/group__PointNormalFiltering.js | 11 + .../group__ProportionalRadiusFiltering.html | 194 + .../group__ProportionalRadiusFiltering.js | 15 + .../api/latest/group__RadiusFiltering.html | 185 + .../api/latest/group__RadiusFiltering.js | 15 + .../api/latest/group__RandomSampling.html | 163 + .../api/latest/group__RandomSampling.js | 9 + .../group__RemoveNaNFromPointCloud.html | 149 + .../latest/group__RemoveNaNFromPointCloud.js | 7 + ...group__RemoveNaNNormalsFromPointCloud.html | 144 + .../group__RemoveNaNNormalsFromPointCloud.js | 6 + .../api/latest/group__RoiComputation.html | 301 + .../api/latest/group__RoiComputation.js | 7 + .../api/latest/group__SubtractFiltering.html | 177 + .../api/latest/group__SubtractFiltering.js | 13 + .../api/latest/group__TransformPoint.html | 167 + .../api/latest/group__TransformPoint.js | 11 + .../latest/group__TransformPointcloud.html | 185 + .../api/latest/group__TransformPointcloud.js | 15 + .../pr-1773/api/latest/group__UtiLite.html | 228 + .../api/latest/group__VoxelFiltering.html | 192 + .../api/latest/group__VoxelFiltering.js | 15 + preview/pr-1773/api/latest/hierarchy.html | 305 + preview/pr-1773/api/latest/hierarchy.js | 213 + preview/pr-1773/api/latest/index.html | 364 + preview/pr-1773/api/latest/index.js | 8 + .../pr-1773/api/latest/inherit_graph_0.map | 3 + .../pr-1773/api/latest/inherit_graph_0.md5 | 1 + .../pr-1773/api/latest/inherit_graph_0.png | Bin 0 -> 3234 bytes .../pr-1773/api/latest/inherit_graph_1.map | 3 + .../pr-1773/api/latest/inherit_graph_1.md5 | 1 + .../pr-1773/api/latest/inherit_graph_1.png | Bin 0 -> 1833 bytes .../pr-1773/api/latest/inherit_graph_10.map | 39 + .../pr-1773/api/latest/inherit_graph_10.md5 | 1 + .../pr-1773/api/latest/inherit_graph_10.png | Bin 0 -> 65937 bytes .../pr-1773/api/latest/inherit_graph_11.map | 3 + .../pr-1773/api/latest/inherit_graph_11.md5 | 1 + .../pr-1773/api/latest/inherit_graph_11.png | Bin 0 -> 1966 bytes .../pr-1773/api/latest/inherit_graph_12.map | 3 + .../pr-1773/api/latest/inherit_graph_12.md5 | 1 + .../pr-1773/api/latest/inherit_graph_12.png | Bin 0 -> 1965 bytes .../pr-1773/api/latest/inherit_graph_13.map | 3 + .../pr-1773/api/latest/inherit_graph_13.md5 | 1 + .../pr-1773/api/latest/inherit_graph_13.png | Bin 0 -> 2427 bytes .../pr-1773/api/latest/inherit_graph_14.map | 3 + .../pr-1773/api/latest/inherit_graph_14.md5 | 1 + .../pr-1773/api/latest/inherit_graph_14.png | Bin 0 -> 2652 bytes .../pr-1773/api/latest/inherit_graph_15.map | 3 + .../pr-1773/api/latest/inherit_graph_15.md5 | 1 + .../pr-1773/api/latest/inherit_graph_15.png | Bin 0 -> 2544 bytes .../pr-1773/api/latest/inherit_graph_16.map | 3 + .../pr-1773/api/latest/inherit_graph_16.md5 | 1 + .../pr-1773/api/latest/inherit_graph_16.png | Bin 0 -> 3419 bytes .../pr-1773/api/latest/inherit_graph_17.map | 11 + .../pr-1773/api/latest/inherit_graph_17.md5 | 1 + .../pr-1773/api/latest/inherit_graph_17.png | Bin 0 -> 14158 bytes .../pr-1773/api/latest/inherit_graph_18.map | 3 + .../pr-1773/api/latest/inherit_graph_18.md5 | 1 + .../pr-1773/api/latest/inherit_graph_18.png | Bin 0 -> 1763 bytes .../pr-1773/api/latest/inherit_graph_19.map | 3 + .../pr-1773/api/latest/inherit_graph_19.md5 | 1 + .../pr-1773/api/latest/inherit_graph_19.png | Bin 0 -> 2779 bytes .../pr-1773/api/latest/inherit_graph_2.map | 3 + .../pr-1773/api/latest/inherit_graph_2.md5 | 1 + .../pr-1773/api/latest/inherit_graph_2.png | Bin 0 -> 2056 bytes .../pr-1773/api/latest/inherit_graph_20.map | 3 + .../pr-1773/api/latest/inherit_graph_20.md5 | 1 + .../pr-1773/api/latest/inherit_graph_20.png | Bin 0 -> 1461 bytes .../pr-1773/api/latest/inherit_graph_21.map | 3 + .../pr-1773/api/latest/inherit_graph_21.md5 | 1 + .../pr-1773/api/latest/inherit_graph_21.png | Bin 0 -> 1875 bytes .../pr-1773/api/latest/inherit_graph_22.map | 3 + .../pr-1773/api/latest/inherit_graph_22.md5 | 1 + .../pr-1773/api/latest/inherit_graph_22.png | Bin 0 -> 1657 bytes .../pr-1773/api/latest/inherit_graph_23.map | 3 + .../pr-1773/api/latest/inherit_graph_23.md5 | 1 + .../pr-1773/api/latest/inherit_graph_23.png | Bin 0 -> 2056 bytes .../pr-1773/api/latest/inherit_graph_24.map | 3 + .../pr-1773/api/latest/inherit_graph_24.md5 | 1 + .../pr-1773/api/latest/inherit_graph_24.png | Bin 0 -> 1455 bytes .../pr-1773/api/latest/inherit_graph_25.map | 3 + .../pr-1773/api/latest/inherit_graph_25.md5 | 1 + .../pr-1773/api/latest/inherit_graph_25.png | Bin 0 -> 2054 bytes .../pr-1773/api/latest/inherit_graph_26.map | 3 + .../pr-1773/api/latest/inherit_graph_26.md5 | 1 + .../pr-1773/api/latest/inherit_graph_26.png | Bin 0 -> 2609 bytes .../pr-1773/api/latest/inherit_graph_27.map | 3 + .../pr-1773/api/latest/inherit_graph_27.md5 | 1 + .../pr-1773/api/latest/inherit_graph_27.png | Bin 0 -> 2654 bytes .../pr-1773/api/latest/inherit_graph_28.map | 3 + .../pr-1773/api/latest/inherit_graph_28.md5 | 1 + .../pr-1773/api/latest/inherit_graph_28.png | Bin 0 -> 2387 bytes .../pr-1773/api/latest/inherit_graph_29.map | 3 + .../pr-1773/api/latest/inherit_graph_29.md5 | 1 + .../pr-1773/api/latest/inherit_graph_29.png | Bin 0 -> 2126 bytes .../pr-1773/api/latest/inherit_graph_3.map | 3 + .../pr-1773/api/latest/inherit_graph_3.md5 | 1 + .../pr-1773/api/latest/inherit_graph_3.png | Bin 0 -> 2245 bytes .../pr-1773/api/latest/inherit_graph_30.map | 3 + .../pr-1773/api/latest/inherit_graph_30.md5 | 1 + .../pr-1773/api/latest/inherit_graph_30.png | Bin 0 -> 1920 bytes .../pr-1773/api/latest/inherit_graph_31.map | 37 + .../pr-1773/api/latest/inherit_graph_31.md5 | 1 + .../pr-1773/api/latest/inherit_graph_31.png | Bin 0 -> 93180 bytes .../pr-1773/api/latest/inherit_graph_32.map | 3 + .../pr-1773/api/latest/inherit_graph_32.md5 | 1 + .../pr-1773/api/latest/inherit_graph_32.png | Bin 0 -> 2451 bytes .../pr-1773/api/latest/inherit_graph_33.map | 13 + .../pr-1773/api/latest/inherit_graph_33.md5 | 1 + .../pr-1773/api/latest/inherit_graph_33.png | Bin 0 -> 20161 bytes .../pr-1773/api/latest/inherit_graph_34.map | 3 + .../pr-1773/api/latest/inherit_graph_34.md5 | 1 + .../pr-1773/api/latest/inherit_graph_34.png | Bin 0 -> 1802 bytes .../pr-1773/api/latest/inherit_graph_35.map | 3 + .../pr-1773/api/latest/inherit_graph_35.md5 | 1 + .../pr-1773/api/latest/inherit_graph_35.png | Bin 0 -> 1913 bytes .../pr-1773/api/latest/inherit_graph_36.map | 3 + .../pr-1773/api/latest/inherit_graph_36.md5 | 1 + .../pr-1773/api/latest/inherit_graph_36.png | Bin 0 -> 2518 bytes .../pr-1773/api/latest/inherit_graph_37.map | 3 + .../pr-1773/api/latest/inherit_graph_37.md5 | 1 + .../pr-1773/api/latest/inherit_graph_37.png | Bin 0 -> 2351 bytes .../pr-1773/api/latest/inherit_graph_38.map | 3 + .../pr-1773/api/latest/inherit_graph_38.md5 | 1 + .../pr-1773/api/latest/inherit_graph_38.png | Bin 0 -> 2420 bytes .../pr-1773/api/latest/inherit_graph_39.map | 3 + .../pr-1773/api/latest/inherit_graph_39.md5 | 1 + .../pr-1773/api/latest/inherit_graph_39.png | Bin 0 -> 2375 bytes .../pr-1773/api/latest/inherit_graph_4.map | 5 + .../pr-1773/api/latest/inherit_graph_4.md5 | 1 + .../pr-1773/api/latest/inherit_graph_4.png | Bin 0 -> 5924 bytes .../pr-1773/api/latest/inherit_graph_40.map | 7 + .../pr-1773/api/latest/inherit_graph_40.md5 | 1 + .../pr-1773/api/latest/inherit_graph_40.png | Bin 0 -> 8644 bytes .../pr-1773/api/latest/inherit_graph_41.map | 3 + .../pr-1773/api/latest/inherit_graph_41.md5 | 1 + .../pr-1773/api/latest/inherit_graph_41.png | Bin 0 -> 2555 bytes .../pr-1773/api/latest/inherit_graph_42.map | 3 + .../pr-1773/api/latest/inherit_graph_42.md5 | 1 + .../pr-1773/api/latest/inherit_graph_42.png | Bin 0 -> 1355 bytes .../pr-1773/api/latest/inherit_graph_43.map | 3 + .../pr-1773/api/latest/inherit_graph_43.md5 | 1 + .../pr-1773/api/latest/inherit_graph_43.png | Bin 0 -> 4261 bytes .../pr-1773/api/latest/inherit_graph_44.map | 3 + .../pr-1773/api/latest/inherit_graph_44.md5 | 1 + .../pr-1773/api/latest/inherit_graph_44.png | Bin 0 -> 2423 bytes .../pr-1773/api/latest/inherit_graph_45.map | 59 + .../pr-1773/api/latest/inherit_graph_45.md5 | 1 + .../pr-1773/api/latest/inherit_graph_45.png | Bin 0 -> 140734 bytes .../pr-1773/api/latest/inherit_graph_46.map | 3 + .../pr-1773/api/latest/inherit_graph_46.md5 | 1 + .../pr-1773/api/latest/inherit_graph_46.png | Bin 0 -> 2630 bytes .../pr-1773/api/latest/inherit_graph_47.map | 3 + .../pr-1773/api/latest/inherit_graph_47.md5 | 1 + .../pr-1773/api/latest/inherit_graph_47.png | Bin 0 -> 2240 bytes .../pr-1773/api/latest/inherit_graph_48.map | 3 + .../pr-1773/api/latest/inherit_graph_48.md5 | 1 + .../pr-1773/api/latest/inherit_graph_48.png | Bin 0 -> 2054 bytes .../pr-1773/api/latest/inherit_graph_49.map | 3 + .../pr-1773/api/latest/inherit_graph_49.md5 | 1 + .../pr-1773/api/latest/inherit_graph_49.png | Bin 0 -> 1791 bytes .../pr-1773/api/latest/inherit_graph_5.map | 5 + .../pr-1773/api/latest/inherit_graph_5.md5 | 1 + .../pr-1773/api/latest/inherit_graph_5.png | Bin 0 -> 5726 bytes .../pr-1773/api/latest/inherit_graph_50.map | 5 + .../pr-1773/api/latest/inherit_graph_50.md5 | 1 + .../pr-1773/api/latest/inherit_graph_50.png | Bin 0 -> 4678 bytes .../pr-1773/api/latest/inherit_graph_51.map | 3 + .../pr-1773/api/latest/inherit_graph_51.md5 | 1 + .../pr-1773/api/latest/inherit_graph_51.png | Bin 0 -> 2605 bytes .../pr-1773/api/latest/inherit_graph_52.map | 7 + .../pr-1773/api/latest/inherit_graph_52.md5 | 1 + .../pr-1773/api/latest/inherit_graph_52.png | Bin 0 -> 8155 bytes .../pr-1773/api/latest/inherit_graph_53.map | 3 + .../pr-1773/api/latest/inherit_graph_53.md5 | 1 + .../pr-1773/api/latest/inherit_graph_53.png | Bin 0 -> 1844 bytes .../pr-1773/api/latest/inherit_graph_54.map | 3 + .../pr-1773/api/latest/inherit_graph_54.md5 | 1 + .../pr-1773/api/latest/inherit_graph_54.png | Bin 0 -> 2527 bytes .../pr-1773/api/latest/inherit_graph_55.map | 3 + .../pr-1773/api/latest/inherit_graph_55.md5 | 1 + .../pr-1773/api/latest/inherit_graph_55.png | Bin 0 -> 2385 bytes .../pr-1773/api/latest/inherit_graph_56.map | 3 + .../pr-1773/api/latest/inherit_graph_56.md5 | 1 + .../pr-1773/api/latest/inherit_graph_56.png | Bin 0 -> 2576 bytes .../pr-1773/api/latest/inherit_graph_57.map | 5 + .../pr-1773/api/latest/inherit_graph_57.md5 | 1 + .../pr-1773/api/latest/inherit_graph_57.png | Bin 0 -> 3722 bytes .../pr-1773/api/latest/inherit_graph_58.map | 3 + .../pr-1773/api/latest/inherit_graph_58.md5 | 1 + .../pr-1773/api/latest/inherit_graph_58.png | Bin 0 -> 2196 bytes .../pr-1773/api/latest/inherit_graph_59.map | 3 + .../pr-1773/api/latest/inherit_graph_59.md5 | 1 + .../pr-1773/api/latest/inherit_graph_59.png | Bin 0 -> 3128 bytes .../pr-1773/api/latest/inherit_graph_6.map | 3 + .../pr-1773/api/latest/inherit_graph_6.md5 | 1 + .../pr-1773/api/latest/inherit_graph_6.png | Bin 0 -> 2107 bytes .../pr-1773/api/latest/inherit_graph_60.map | 3 + .../pr-1773/api/latest/inherit_graph_60.md5 | 1 + .../pr-1773/api/latest/inherit_graph_60.png | Bin 0 -> 2397 bytes .../pr-1773/api/latest/inherit_graph_61.map | 3 + .../pr-1773/api/latest/inherit_graph_61.md5 | 1 + .../pr-1773/api/latest/inherit_graph_61.png | Bin 0 -> 1616 bytes .../pr-1773/api/latest/inherit_graph_62.map | 33 + .../pr-1773/api/latest/inherit_graph_62.md5 | 1 + .../pr-1773/api/latest/inherit_graph_62.png | Bin 0 -> 67576 bytes .../pr-1773/api/latest/inherit_graph_63.map | 32 + .../pr-1773/api/latest/inherit_graph_63.md5 | 1 + .../pr-1773/api/latest/inherit_graph_63.png | Bin 0 -> 51271 bytes .../pr-1773/api/latest/inherit_graph_64.map | 3 + .../pr-1773/api/latest/inherit_graph_64.md5 | 1 + .../pr-1773/api/latest/inherit_graph_64.png | Bin 0 -> 786 bytes .../pr-1773/api/latest/inherit_graph_65.map | 3 + .../pr-1773/api/latest/inherit_graph_65.md5 | 1 + .../pr-1773/api/latest/inherit_graph_65.png | Bin 0 -> 1228 bytes .../pr-1773/api/latest/inherit_graph_66.map | 3 + .../pr-1773/api/latest/inherit_graph_66.md5 | 1 + .../pr-1773/api/latest/inherit_graph_66.png | Bin 0 -> 1245 bytes .../pr-1773/api/latest/inherit_graph_67.map | 3 + .../pr-1773/api/latest/inherit_graph_67.md5 | 1 + .../pr-1773/api/latest/inherit_graph_67.png | Bin 0 -> 1593 bytes .../pr-1773/api/latest/inherit_graph_68.map | 3 + .../pr-1773/api/latest/inherit_graph_68.md5 | 1 + .../pr-1773/api/latest/inherit_graph_68.png | Bin 0 -> 1995 bytes .../pr-1773/api/latest/inherit_graph_69.map | 3 + .../pr-1773/api/latest/inherit_graph_69.md5 | 1 + .../pr-1773/api/latest/inherit_graph_69.png | Bin 0 -> 1851 bytes .../pr-1773/api/latest/inherit_graph_7.map | 3 + .../pr-1773/api/latest/inherit_graph_7.md5 | 1 + .../pr-1773/api/latest/inherit_graph_7.png | Bin 0 -> 2200 bytes .../pr-1773/api/latest/inherit_graph_70.map | 3 + .../pr-1773/api/latest/inherit_graph_70.md5 | 1 + .../pr-1773/api/latest/inherit_graph_70.png | Bin 0 -> 2004 bytes .../pr-1773/api/latest/inherit_graph_71.map | 3 + .../pr-1773/api/latest/inherit_graph_71.md5 | 1 + .../pr-1773/api/latest/inherit_graph_71.png | Bin 0 -> 1042 bytes .../pr-1773/api/latest/inherit_graph_72.map | 3 + .../pr-1773/api/latest/inherit_graph_72.md5 | 1 + .../pr-1773/api/latest/inherit_graph_72.png | Bin 0 -> 1083 bytes .../pr-1773/api/latest/inherit_graph_8.map | 3 + .../pr-1773/api/latest/inherit_graph_8.md5 | 1 + .../pr-1773/api/latest/inherit_graph_8.png | Bin 0 -> 2296 bytes .../pr-1773/api/latest/inherit_graph_9.map | 3 + .../pr-1773/api/latest/inherit_graph_9.md5 | 1 + .../pr-1773/api/latest/inherit_graph_9.png | Bin 0 -> 2346 bytes preview/pr-1773/api/latest/inherits.html | 701 + preview/pr-1773/api/latest/jquery.js | 34 + preview/pr-1773/api/latest/menu.js | 136 + preview/pr-1773/api/latest/menudata.js | 171 + preview/pr-1773/api/latest/minus.svg | 8 + preview/pr-1773/api/latest/minusd.svg | 8 + .../pr-1773/api/latest/namespacemembers.html | 115 + .../api/latest/namespacemembers_b.html | 115 + .../api/latest/namespacemembers_c.html | 158 + .../api/latest/namespacemembers_d.html | 125 + .../api/latest/namespacemembers_dup.js | 22 + .../api/latest/namespacemembers_e.html | 126 + .../api/latest/namespacemembers_f.html | 130 + .../api/latest/namespacemembers_func.html | 115 + .../api/latest/namespacemembers_func.js | 22 + .../api/latest/namespacemembers_func_b.html | 115 + .../api/latest/namespacemembers_func_c.html | 155 + .../api/latest/namespacemembers_func_d.html | 125 + .../api/latest/namespacemembers_func_e.html | 125 + .../api/latest/namespacemembers_func_f.html | 130 + .../api/latest/namespacemembers_func_g.html | 123 + .../api/latest/namespacemembers_func_h.html | 115 + .../api/latest/namespacemembers_func_i.html | 120 + .../api/latest/namespacemembers_func_l.html | 135 + .../api/latest/namespacemembers_func_m.html | 116 + .../api/latest/namespacemembers_func_n.html | 116 + .../api/latest/namespacemembers_func_o.html | 118 + .../api/latest/namespacemembers_func_p.html | 122 + .../api/latest/namespacemembers_func_r.html | 129 + .../api/latest/namespacemembers_func_s.html | 124 + .../api/latest/namespacemembers_func_t.html | 119 + .../api/latest/namespacemembers_func_u.html | 118 + .../api/latest/namespacemembers_func_v.html | 115 + .../api/latest/namespacemembers_g.html | 123 + .../api/latest/namespacemembers_h.html | 115 + .../api/latest/namespacemembers_i.html | 120 + .../api/latest/namespacemembers_l.html | 136 + .../api/latest/namespacemembers_m.html | 116 + .../api/latest/namespacemembers_n.html | 116 + .../api/latest/namespacemembers_o.html | 118 + .../api/latest/namespacemembers_p.html | 124 + .../api/latest/namespacemembers_r.html | 129 + .../api/latest/namespacemembers_s.html | 124 + .../api/latest/namespacemembers_t.html | 119 + .../api/latest/namespacemembers_type.html | 116 + .../api/latest/namespacemembers_u.html | 118 + .../api/latest/namespacemembers_v.html | 115 + .../api/latest/namespacemembers_vars.html | 115 + .../pr-1773/api/latest/namespacertabmap.html | 1478 + .../pr-1773/api/latest/namespacertabmap.js | 510 + .../api/latest/namespacertabmap_1_1graph.html | 2229 + .../api/latest/namespacertabmap_1_1graph.js | 44 + .../latest/namespacertabmap_1_1util2d.html | 1750 + .../latest/namespacertabmap_1_1util3d.html | 8697 +++ preview/pr-1773/api/latest/namespaces.html | 270 + preview/pr-1773/api/latest/namespaces_dup.js | 4 + preview/pr-1773/api/latest/nav_f.png | Bin 0 -> 153 bytes preview/pr-1773/api/latest/nav_fd.png | Bin 0 -> 169 bytes preview/pr-1773/api/latest/nav_g.png | Bin 0 -> 95 bytes preview/pr-1773/api/latest/nav_h.png | Bin 0 -> 98 bytes preview/pr-1773/api/latest/nav_hd.png | Bin 0 -> 114 bytes preview/pr-1773/api/latest/navtree.css | 149 + preview/pr-1773/api/latest/navtree.js | 559 + preview/pr-1773/api/latest/navtreedata.js | 149 + preview/pr-1773/api/latest/navtreeindex0.js | 253 + preview/pr-1773/api/latest/navtreeindex1.js | 253 + preview/pr-1773/api/latest/navtreeindex10.js | 253 + preview/pr-1773/api/latest/navtreeindex11.js | 253 + preview/pr-1773/api/latest/navtreeindex12.js | 253 + preview/pr-1773/api/latest/navtreeindex13.js | 253 + preview/pr-1773/api/latest/navtreeindex14.js | 253 + preview/pr-1773/api/latest/navtreeindex15.js | 253 + preview/pr-1773/api/latest/navtreeindex16.js | 58 + preview/pr-1773/api/latest/navtreeindex2.js | 253 + preview/pr-1773/api/latest/navtreeindex3.js | 253 + preview/pr-1773/api/latest/navtreeindex4.js | 253 + preview/pr-1773/api/latest/navtreeindex5.js | 253 + preview/pr-1773/api/latest/navtreeindex6.js | 253 + preview/pr-1773/api/latest/navtreeindex7.js | 253 + preview/pr-1773/api/latest/navtreeindex8.js | 253 + preview/pr-1773/api/latest/navtreeindex9.js | 253 + preview/pr-1773/api/latest/open.png | Bin 0 -> 123 bytes preview/pr-1773/api/latest/pages.html | 121 + preview/pr-1773/api/latest/parameters.html | 1756 + preview/pr-1773/api/latest/plus.svg | 9 + preview/pr-1773/api/latest/plusd.svg | 9 + preview/pr-1773/api/latest/resize.js | 155 + .../rtabmap__core__export_8h_source.html | 162 + .../api/latest/rvl__codec_8h_source.html | 160 + preview/pr-1773/api/latest/search/all_0.js | 4 + preview/pr-1773/api/latest/search/all_1.js | 4 + preview/pr-1773/api/latest/search/all_10.js | 15 + preview/pr-1773/api/latest/search/all_11.js | 82 + preview/pr-1773/api/latest/search/all_12.js | 59 + preview/pr-1773/api/latest/search/all_13.js | 95 + preview/pr-1773/api/latest/search/all_14.js | 180 + preview/pr-1773/api/latest/search/all_15.js | 686 + preview/pr-1773/api/latest/search/all_16.js | 131 + preview/pr-1773/api/latest/search/all_17.js | 16 + preview/pr-1773/api/latest/search/all_18.js | 12 + preview/pr-1773/api/latest/search/all_19.js | 4 + preview/pr-1773/api/latest/search/all_1a.js | 4 + preview/pr-1773/api/latest/search/all_1b.js | 4 + preview/pr-1773/api/latest/search/all_1c.js | 24 + preview/pr-1773/api/latest/search/all_2.js | 8 + preview/pr-1773/api/latest/search/all_3.js | 47 + preview/pr-1773/api/latest/search/all_4.js | 17 + preview/pr-1773/api/latest/search/all_5.js | 151 + preview/pr-1773/api/latest/search/all_6.js | 671 + preview/pr-1773/api/latest/search/all_7.js | 38 + preview/pr-1773/api/latest/search/all_8.js | 64 + preview/pr-1773/api/latest/search/all_9.js | 229 + preview/pr-1773/api/latest/search/all_a.js | 10 + preview/pr-1773/api/latest/search/all_b.js | 120 + preview/pr-1773/api/latest/search/all_c.js | 5 + preview/pr-1773/api/latest/search/all_d.js | 762 + preview/pr-1773/api/latest/search/all_e.js | 85 + preview/pr-1773/api/latest/search/all_f.js | 33 + .../pr-1773/api/latest/search/classes_0.js | 5 + .../pr-1773/api/latest/search/classes_1.js | 30 + .../pr-1773/api/latest/search/classes_10.js | 5 + .../pr-1773/api/latest/search/classes_2.js | 8 + .../pr-1773/api/latest/search/classes_3.js | 5 + .../pr-1773/api/latest/search/classes_4.js | 10 + .../pr-1773/api/latest/search/classes_5.js | 15 + .../pr-1773/api/latest/search/classes_6.js | 7 + .../pr-1773/api/latest/search/classes_7.js | 4 + .../pr-1773/api/latest/search/classes_8.js | 11 + .../pr-1773/api/latest/search/classes_9.js | 7 + .../pr-1773/api/latest/search/classes_a.js | 35 + .../pr-1773/api/latest/search/classes_b.js | 11 + .../pr-1773/api/latest/search/classes_c.js | 19 + .../pr-1773/api/latest/search/classes_d.js | 23 + .../pr-1773/api/latest/search/classes_e.js | 5 + .../pr-1773/api/latest/search/classes_f.js | 28 + preview/pr-1773/api/latest/search/close.svg | 18 + .../pr-1773/api/latest/search/defines_0.js | 9 + preview/pr-1773/api/latest/search/enums_0.js | 5 + preview/pr-1773/api/latest/search/enums_1.js | 5 + preview/pr-1773/api/latest/search/enums_2.js | 4 + preview/pr-1773/api/latest/search/enums_3.js | 4 + preview/pr-1773/api/latest/search/enums_4.js | 4 + preview/pr-1773/api/latest/search/enums_5.js | 4 + preview/pr-1773/api/latest/search/enums_6.js | 4 + preview/pr-1773/api/latest/search/enums_7.js | 4 + preview/pr-1773/api/latest/search/enums_8.js | 4 + preview/pr-1773/api/latest/search/enums_9.js | 4 + .../pr-1773/api/latest/search/enumvalues_0.js | 7 + .../pr-1773/api/latest/search/enumvalues_1.js | 131 + .../pr-1773/api/latest/search/enumvalues_2.js | 4 + preview/pr-1773/api/latest/search/files_0.js | 10 + .../pr-1773/api/latest/search/functions_0.js | 35 + .../pr-1773/api/latest/search/functions_1.js | 9 + .../pr-1773/api/latest/search/functions_10.js | 66 + .../pr-1773/api/latest/search/functions_11.js | 163 + .../pr-1773/api/latest/search/functions_12.js | 660 + .../pr-1773/api/latest/search/functions_13.js | 95 + .../pr-1773/api/latest/search/functions_14.js | 9 + .../pr-1773/api/latest/search/functions_15.js | 7 + .../pr-1773/api/latest/search/functions_16.js | 4 + .../pr-1773/api/latest/search/functions_17.js | 4 + .../pr-1773/api/latest/search/functions_18.js | 4 + .../pr-1773/api/latest/search/functions_19.js | 24 + .../pr-1773/api/latest/search/functions_2.js | 97 + .../pr-1773/api/latest/search/functions_3.js | 660 + .../pr-1773/api/latest/search/functions_4.js | 34 + .../pr-1773/api/latest/search/functions_5.js | 44 + .../pr-1773/api/latest/search/functions_6.js | 210 + .../pr-1773/api/latest/search/functions_7.js | 8 + .../pr-1773/api/latest/search/functions_8.js | 98 + .../pr-1773/api/latest/search/functions_9.js | 5 + .../pr-1773/api/latest/search/functions_a.js | 626 + .../pr-1773/api/latest/search/functions_b.js | 62 + .../pr-1773/api/latest/search/functions_c.js | 16 + .../pr-1773/api/latest/search/functions_d.js | 9 + .../pr-1773/api/latest/search/functions_e.js | 29 + .../pr-1773/api/latest/search/functions_f.js | 28 + preview/pr-1773/api/latest/search/groups_0.js | 4 + preview/pr-1773/api/latest/search/groups_1.js | 4 + .../pr-1773/api/latest/search/groups_10.js | 4 + .../pr-1773/api/latest/search/groups_11.js | 5 + .../pr-1773/api/latest/search/groups_12.js | 4 + preview/pr-1773/api/latest/search/groups_2.js | 7 + preview/pr-1773/api/latest/search/groups_3.js | 4 + preview/pr-1773/api/latest/search/groups_4.js | 16 + preview/pr-1773/api/latest/search/groups_5.js | 4 + preview/pr-1773/api/latest/search/groups_6.js | 4 + preview/pr-1773/api/latest/search/groups_7.js | 7 + preview/pr-1773/api/latest/search/groups_8.js | 5 + preview/pr-1773/api/latest/search/groups_9.js | 5 + preview/pr-1773/api/latest/search/groups_a.js | 6 + preview/pr-1773/api/latest/search/groups_b.js | 7 + preview/pr-1773/api/latest/search/groups_c.js | 18 + preview/pr-1773/api/latest/search/groups_d.js | 9 + preview/pr-1773/api/latest/search/groups_e.js | 8 + preview/pr-1773/api/latest/search/groups_f.js | 10 + preview/pr-1773/api/latest/search/mag.svg | 24 + preview/pr-1773/api/latest/search/mag_d.svg | 24 + preview/pr-1773/api/latest/search/mag_sel.svg | 31 + .../pr-1773/api/latest/search/mag_seld.svg | 31 + .../pr-1773/api/latest/search/namespaces_0.js | 7 + preview/pr-1773/api/latest/search/pages_0.js | 4 + preview/pr-1773/api/latest/search/pages_1.js | 5 + preview/pr-1773/api/latest/search/pages_2.js | 4 + preview/pr-1773/api/latest/search/pages_3.js | 5 + preview/pr-1773/api/latest/search/pages_4.js | 4 + preview/pr-1773/api/latest/search/pages_5.js | 4 + preview/pr-1773/api/latest/search/pages_6.js | 5 + preview/pr-1773/api/latest/search/pages_7.js | 4 + preview/pr-1773/api/latest/search/pages_8.js | 4 + .../pr-1773/api/latest/search/related_0.js | 4 + preview/pr-1773/api/latest/search/search.css | 291 + preview/pr-1773/api/latest/search/search.js | 840 + .../pr-1773/api/latest/search/searchdata.js | 51 + .../pr-1773/api/latest/search/typedefs_0.js | 4 + .../pr-1773/api/latest/search/typedefs_1.js | 4 + .../pr-1773/api/latest/search/typedefs_2.js | 5 + .../pr-1773/api/latest/search/typedefs_3.js | 4 + .../pr-1773/api/latest/search/variables_0.js | 8 + .../pr-1773/api/latest/search/variables_1.js | 6 + .../pr-1773/api/latest/search/variables_10.js | 7 + .../pr-1773/api/latest/search/variables_11.js | 4 + .../pr-1773/api/latest/search/variables_12.js | 21 + .../pr-1773/api/latest/search/variables_13.js | 5 + .../pr-1773/api/latest/search/variables_14.js | 5 + .../pr-1773/api/latest/search/variables_2.js | 6 + .../pr-1773/api/latest/search/variables_3.js | 13 + .../pr-1773/api/latest/search/variables_4.js | 6 + .../pr-1773/api/latest/search/variables_5.js | 4 + .../pr-1773/api/latest/search/variables_6.js | 5 + .../pr-1773/api/latest/search/variables_7.js | 8 + .../pr-1773/api/latest/search/variables_8.js | 4 + .../pr-1773/api/latest/search/variables_9.js | 21 + .../pr-1773/api/latest/search/variables_a.js | 9 + .../pr-1773/api/latest/search/variables_b.js | 20 + .../pr-1773/api/latest/search/variables_c.js | 7 + .../pr-1773/api/latest/search/variables_d.js | 4 + .../pr-1773/api/latest/search/variables_e.js | 7 + .../pr-1773/api/latest/search/variables_f.js | 4 + .../latest/slam__calibrator_8h_source.html | 169 + preview/pr-1773/api/latest/splitbar.png | Bin 0 -> 314 bytes preview/pr-1773/api/latest/splitbard.png | Bin 0 -> 282 bytes .../stereoRectifyFisheye_8h_source.html | 1373 + .../structrtabmap_1_1PointXYZIRT-members.html | 120 + .../latest/structrtabmap_1_1PointXYZIRT.html | 206 + .../structrtabmap_1_1PointXYZIT-members.html | 121 + .../latest/structrtabmap_1_1PointXYZIT.html | 218 + ...ap_1_1graph_1_1MaxGraphErrors-members.html | 122 + ...uctrtabmap_1_1graph_1_1MaxGraphErrors.html | 271 + ...tructrtabmap_1_1graph_1_1MaxGraphErrors.js | 9 + ..._1graph_1_1MaxGraphErrors__coll__graph.map | 5 + ..._1graph_1_1MaxGraphErrors__coll__graph.md5 | 1 + ..._1graph_1_1MaxGraphErrors__coll__graph.png | Bin 0 -> 6450 bytes preview/pr-1773/api/latest/sync_off.png | Bin 0 -> 853 bytes preview/pr-1773/api/latest/sync_on.png | Bin 0 -> 845 bytes preview/pr-1773/api/latest/tab_a.png | Bin 0 -> 142 bytes preview/pr-1773/api/latest/tab_ad.png | Bin 0 -> 135 bytes preview/pr-1773/api/latest/tab_b.png | Bin 0 -> 169 bytes preview/pr-1773/api/latest/tab_bd.png | Bin 0 -> 173 bytes preview/pr-1773/api/latest/tab_h.png | Bin 0 -> 177 bytes preview/pr-1773/api/latest/tab_hd.png | Bin 0 -> 180 bytes preview/pr-1773/api/latest/tab_s.png | Bin 0 -> 184 bytes preview/pr-1773/api/latest/tab_sd.png | Bin 0 -> 188 bytes preview/pr-1773/api/latest/tabs.css | 1 + preview/pr-1773/api/latest/tools.html | 196 + preview/pr-1773/api/latest/topics.html | 142 + preview/pr-1773/api/latest/topics.js | 28 + .../api/latest/uResourceGeneratorPage.html | 137 + .../pr-1773/api/latest/util2d_8h_source.html | 346 + .../pr-1773/api/latest/util3d_8h_source.html | 570 + .../api/latest/util3d_8hpp_source.html | 553 + .../util3d__correspondences_8h_source.html | 239 + .../latest/util3d__features_8h_source.html | 225 + .../latest/util3d__filtering_8h_source.html | 964 + .../api/latest/util3d__mapping_8h_source.html | 333 + .../latest/util3d__mapping_8hpp_source.html | 506 + .../util3d__motion__estimation_8h_source.html | 259 + .../util3d__registration_8h_source.html | 267 + .../api/latest/util3d__surface_8h_source.html | 679 + .../latest/util3d__surface_8hpp_source.html | 480 + .../latest/util3d__transforms_8h_source.html | 244 + .../pr-1773/api/latest/version-switcher.js | 74 + preview/pr-1773/api/versions.js | 16 + preview/pr-1773/assets/css/style.css | 1 + preview/pr-1773/assets/images/bg_hr.png | Bin 0 -> 78 bytes preview/pr-1773/assets/images/blacktocat.png | Bin 0 -> 463 bytes .../pr-1773/assets/images/icon_download.png | Bin 0 -> 216 bytes .../pr-1773/assets/images/sprite_download.png | Bin 0 -> 14832 bytes preview/pr-1773/index.html | 440 + preview/pr-1773/index.md | 240 + preview/pr-1773/oauth2_redirect.html | 9 + preview/pr-1773/stylesheets/github-light.css | 124 + preview/pr-1773/stylesheets/pygment_trac.css | 70 + preview/pr-1773/stylesheets/stylesheet.css | 425 + 2158 files changed, 317019 insertions(+) create mode 100644 preview/pr-1773/.nojekyll create mode 100644 preview/pr-1773/api/index.html create mode 100644 preview/pr-1773/api/latest/BayesFilter_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraDepthAI_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraEvent_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraFreenect2_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraFreenect_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraImages_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraInfo_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraK4A_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraK4W2_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraModel_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraMyntEye_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraOpenNI2_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraOpenNICV_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraOpenni_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraOrbbecSDK_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraRGBDImages_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraRGBD_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraRGB_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraRealSense2_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraRealSense_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraSeerSense_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereoDC1394_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereoFlyCapture2_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereoImages_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereoTara_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereoVideo_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereoZedOC_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereoZed_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraStereo_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraThread_8h_source.html create mode 100644 preview/pr-1773/api/latest/CameraVideo_8h_source.html create mode 100644 preview/pr-1773/api/latest/Camera_8h_source.html create mode 100644 preview/pr-1773/api/latest/CloudMap_8h_source.html create mode 100644 preview/pr-1773/api/latest/Compression_8h_source.html create mode 100644 preview/pr-1773/api/latest/DBDriverSqlite3_8h_source.html create mode 100644 preview/pr-1773/api/latest/DBDriver_8h_source.html create mode 100644 preview/pr-1773/api/latest/DBReader_8h_source.html create mode 100644 preview/pr-1773/api/latest/EnvSensor_8h_source.html create mode 100644 preview/pr-1773/api/latest/EpipolarGeometry_8h_source.html create mode 100644 preview/pr-1773/api/latest/Features2d_8h_source.html create mode 100644 preview/pr-1773/api/latest/FlannIndex_8h_source.html create mode 100644 preview/pr-1773/api/latest/GPS_8h_source.html create mode 100644 preview/pr-1773/api/latest/GainCompensator_8h_source.html create mode 100644 preview/pr-1773/api/latest/GeodeticCoords_8h_source.html create mode 100644 preview/pr-1773/api/latest/GlobalDescriptorExtractor_8h_source.html create mode 100644 preview/pr-1773/api/latest/GlobalDescriptor_8h_source.html create mode 100644 preview/pr-1773/api/latest/GlobalMap_8h_source.html create mode 100644 preview/pr-1773/api/latest/Graph_8h_source.html create mode 100644 preview/pr-1773/api/latest/GridMap_8h_source.html create mode 100644 preview/pr-1773/api/latest/IMUFilter_8h_source.html create mode 100644 preview/pr-1773/api/latest/IMUThread_8h_source.html create mode 100644 preview/pr-1773/api/latest/IMU_8h_source.html create mode 100644 preview/pr-1773/api/latest/Image_8h_source.html create mode 100644 preview/pr-1773/api/latest/LASWriter_8h_source.html create mode 100644 preview/pr-1773/api/latest/Landmark_8h_source.html create mode 100644 preview/pr-1773/api/latest/LaserScan_8h_source.html create mode 100644 preview/pr-1773/api/latest/LidarVLP16_8h_source.html create mode 100644 preview/pr-1773/api/latest/Lidar_8h_source.html create mode 100644 preview/pr-1773/api/latest/Link_8h_source.html create mode 100644 preview/pr-1773/api/latest/LocalGridMaker_8h_source.html create mode 100644 preview/pr-1773/api/latest/LocalGrid_8h_source.html create mode 100644 preview/pr-1773/api/latest/LocalMapMaker_8hpp_source.html create mode 100644 preview/pr-1773/api/latest/MarkerDetector_8h_source.html create mode 100644 preview/pr-1773/api/latest/Memory_8h_source.html create mode 100644 preview/pr-1773/api/latest/OccupancyGrid_8h_source.html create mode 100644 preview/pr-1773/api/latest/OctoMap_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryCuVSLAM_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryDVO_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryEvent_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryF2F_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryF2M_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryFLOAM_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryFovis_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryInfo_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryLIOSAM_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryLOAM_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryMSCKF_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryMono_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryORBSLAM2_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryORBSLAM3_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryOkvis_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryOpen3D_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryOpenVINS_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryThread_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryVINSFusion_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryVINS_8h_source.html create mode 100644 preview/pr-1773/api/latest/OdometryViso2_8h_source.html create mode 100644 preview/pr-1773/api/latest/Odometry_8h_source.html create mode 100644 preview/pr-1773/api/latest/OptimizerCVSBA_8h_source.html create mode 100644 preview/pr-1773/api/latest/OptimizerCeres_8h_source.html create mode 100644 preview/pr-1773/api/latest/OptimizerG2O_8h_source.html create mode 100644 preview/pr-1773/api/latest/OptimizerGTSAM_8h_source.html create mode 100644 preview/pr-1773/api/latest/OptimizerTORO_8h_source.html create mode 100644 preview/pr-1773/api/latest/Optimizer_8h_source.html create mode 100644 preview/pr-1773/api/latest/PDALWriter_8h_source.html create mode 100644 preview/pr-1773/api/latest/ParamEvent_8h_source.html create mode 100644 preview/pr-1773/api/latest/Parameters_8h_source.html create mode 100644 preview/pr-1773/api/latest/ParticleFilter_8h_source.html create mode 100644 preview/pr-1773/api/latest/Posix_2UThreadC_8h_source.html create mode 100644 preview/pr-1773/api/latest/ProgressState_8h_source.html create mode 100644 preview/pr-1773/api/latest/PythonInterface_8h_source.html create mode 100644 preview/pr-1773/api/latest/Recovery_8h_source.html create mode 100644 preview/pr-1773/api/latest/RegistrationIcp_8h_source.html create mode 100644 preview/pr-1773/api/latest/RegistrationInfo_8h_source.html create mode 100644 preview/pr-1773/api/latest/RegistrationVis_8h_source.html create mode 100644 preview/pr-1773/api/latest/Registration_8h_source.html create mode 100644 preview/pr-1773/api/latest/RtabmapEvent_8h_source.html create mode 100644 preview/pr-1773/api/latest/RtabmapThread_8h_source.html create mode 100644 preview/pr-1773/api/latest/Rtabmap_8h_source.html create mode 100644 preview/pr-1773/api/latest/SensorCaptureInfo_8h_source.html create mode 100644 preview/pr-1773/api/latest/SensorCaptureThread_8h_source.html create mode 100644 preview/pr-1773/api/latest/SensorCapture_8h_source.html create mode 100644 preview/pr-1773/api/latest/SensorData_8h_source.html create mode 100644 preview/pr-1773/api/latest/SensorEvent_8h_source.html create mode 100644 preview/pr-1773/api/latest/Signature_8h_source.html create mode 100644 preview/pr-1773/api/latest/Statistics_8h_source.html create mode 100644 preview/pr-1773/api/latest/StereoBM_8h_source.html create mode 100644 preview/pr-1773/api/latest/StereoCameraModel_8h_source.html create mode 100644 preview/pr-1773/api/latest/StereoDense_8h_source.html create mode 100644 preview/pr-1773/api/latest/StereoSGBM_8h_source.html create mode 100644 preview/pr-1773/api/latest/Stereo_8h_source.html create mode 100644 preview/pr-1773/api/latest/Transform_8h_source.html create mode 100644 preview/pr-1773/api/latest/UConversion_8h.html create mode 100644 preview/pr-1773/api/latest/UConversion_8h.js create mode 100644 preview/pr-1773/api/latest/UConversion_8h__dep__incl.map create mode 100644 preview/pr-1773/api/latest/UConversion_8h__dep__incl.md5 create mode 100644 preview/pr-1773/api/latest/UConversion_8h__dep__incl.png create mode 100644 preview/pr-1773/api/latest/UConversion_8h__incl.map create mode 100644 preview/pr-1773/api/latest/UConversion_8h__incl.md5 create mode 100644 preview/pr-1773/api/latest/UConversion_8h__incl.png create mode 100644 preview/pr-1773/api/latest/UConversion_8h_source.html create mode 100644 preview/pr-1773/api/latest/UDestroyer_8h_source.html create mode 100644 preview/pr-1773/api/latest/UDirectory_8h_source.html create mode 100644 preview/pr-1773/api/latest/UEvent_8h_source.html create mode 100644 preview/pr-1773/api/latest/UEventsHandler_8h_source.html create mode 100644 preview/pr-1773/api/latest/UEventsManager_8h_source.html create mode 100644 preview/pr-1773/api/latest/UEventsSender_8h_source.html create mode 100644 preview/pr-1773/api/latest/UException_8h_source.html create mode 100644 preview/pr-1773/api/latest/UFile_8h_source.html create mode 100644 preview/pr-1773/api/latest/ULogger_8h.html create mode 100644 preview/pr-1773/api/latest/ULogger_8h.js create mode 100644 preview/pr-1773/api/latest/ULogger_8h__dep__incl.map create mode 100644 preview/pr-1773/api/latest/ULogger_8h__dep__incl.md5 create mode 100644 preview/pr-1773/api/latest/ULogger_8h__dep__incl.png create mode 100644 preview/pr-1773/api/latest/ULogger_8h__incl.map create mode 100644 preview/pr-1773/api/latest/ULogger_8h__incl.md5 create mode 100644 preview/pr-1773/api/latest/ULogger_8h__incl.png create mode 100644 preview/pr-1773/api/latest/ULogger_8h_source.html create mode 100644 preview/pr-1773/api/latest/UMath_8h.html create mode 100644 preview/pr-1773/api/latest/UMath_8h.js create mode 100644 preview/pr-1773/api/latest/UMath_8h__dep__incl.map create mode 100644 preview/pr-1773/api/latest/UMath_8h__dep__incl.md5 create mode 100644 preview/pr-1773/api/latest/UMath_8h__dep__incl.png create mode 100644 preview/pr-1773/api/latest/UMath_8h__incl.map create mode 100644 preview/pr-1773/api/latest/UMath_8h__incl.md5 create mode 100644 preview/pr-1773/api/latest/UMath_8h__incl.png create mode 100644 preview/pr-1773/api/latest/UMath_8h_source.html create mode 100644 preview/pr-1773/api/latest/UMutex_8h_source.html create mode 100644 preview/pr-1773/api/latest/UObjDeletionThread_8h_source.html create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h.html create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h.js create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.map create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.md5 create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.png create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h__incl.map create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h__incl.md5 create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h__incl.png create mode 100644 preview/pr-1773/api/latest/UProcessInfo_8h_source.html create mode 100644 preview/pr-1773/api/latest/USemaphore_8h_source.html create mode 100644 preview/pr-1773/api/latest/UStl_8h.html create mode 100644 preview/pr-1773/api/latest/UStl_8h.js create mode 100644 preview/pr-1773/api/latest/UStl_8h__dep__incl.map create mode 100644 preview/pr-1773/api/latest/UStl_8h__dep__incl.md5 create mode 100644 preview/pr-1773/api/latest/UStl_8h__dep__incl.png create mode 100644 preview/pr-1773/api/latest/UStl_8h__incl.map create mode 100644 preview/pr-1773/api/latest/UStl_8h__incl.md5 create mode 100644 preview/pr-1773/api/latest/UStl_8h__incl.png create mode 100644 preview/pr-1773/api/latest/UStl_8h_source.html create mode 100644 preview/pr-1773/api/latest/UThreadC_8h_source.html create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h.html create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h.js create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.map create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.md5 create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.png create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h__incl.map create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h__incl.md5 create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h__incl.png create mode 100644 preview/pr-1773/api/latest/UThreadNode_8h_source.html create mode 100644 preview/pr-1773/api/latest/UThread_8h_source.html create mode 100644 preview/pr-1773/api/latest/UTimer_8h_source.html create mode 100644 preview/pr-1773/api/latest/UVariant_8h.html create mode 100644 preview/pr-1773/api/latest/UVariant_8h.js create mode 100644 preview/pr-1773/api/latest/UVariant_8h__dep__incl.map create mode 100644 preview/pr-1773/api/latest/UVariant_8h__dep__incl.md5 create mode 100644 preview/pr-1773/api/latest/UVariant_8h__dep__incl.png create mode 100644 preview/pr-1773/api/latest/UVariant_8h__incl.map create mode 100644 preview/pr-1773/api/latest/UVariant_8h__incl.md5 create mode 100644 preview/pr-1773/api/latest/UVariant_8h__incl.png create mode 100644 preview/pr-1773/api/latest/UVariant_8h_source.html create mode 100644 preview/pr-1773/api/latest/UWin32_8h_source.html create mode 100644 preview/pr-1773/api/latest/UserDataEvent_8h_source.html create mode 100644 preview/pr-1773/api/latest/UtiLite_8h_source.html create mode 100644 preview/pr-1773/api/latest/VWDictionary_8h_source.html create mode 100644 preview/pr-1773/api/latest/Version_8h_source.html create mode 100644 preview/pr-1773/api/latest/VisualWord_8h_source.html create mode 100644 preview/pr-1773/api/latest/Win32_2UThreadC_8h_source.html create mode 100644 preview/pr-1773/api/latest/_formulas.tex create mode 100644 preview/pr-1773/api/latest/annotated.html create mode 100644 preview/pr-1773/api/latest/annotated_dup.js create mode 100644 preview/pr-1773/api/latest/bc_s.png create mode 100644 preview/pr-1773/api/latest/bc_sd.png create mode 100644 preview/pr-1773/api/latest/classUDestroyer-members.html create mode 100644 preview/pr-1773/api/latest/classUDestroyer.html create mode 100644 preview/pr-1773/api/latest/classUDestroyer.js create mode 100644 preview/pr-1773/api/latest/classUDirectory-members.html create mode 100644 preview/pr-1773/api/latest/classUDirectory.html create mode 100644 preview/pr-1773/api/latest/classUDirectory.js create mode 100644 preview/pr-1773/api/latest/classUEvent-members.html create mode 100644 preview/pr-1773/api/latest/classUEvent.html create mode 100644 preview/pr-1773/api/latest/classUEvent.js create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher-members.html create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher.html create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher.js create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUEventsHandler-members.html create mode 100644 preview/pr-1773/api/latest/classUEventsHandler.html create mode 100644 preview/pr-1773/api/latest/classUEventsHandler.js create mode 100644 preview/pr-1773/api/latest/classUEventsHandler__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classUEventsHandler__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEventsHandler__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUEventsManager-members.html create mode 100644 preview/pr-1773/api/latest/classUEventsManager.html create mode 100644 preview/pr-1773/api/latest/classUEventsManager.js create mode 100644 preview/pr-1773/api/latest/classUEventsManager__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classUEventsManager__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEventsManager__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classUEventsManager__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUEventsManager__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEventsManager__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUEventsSender-members.html create mode 100644 preview/pr-1773/api/latest/classUEventsSender.html create mode 100644 preview/pr-1773/api/latest/classUEventsSender.js create mode 100644 preview/pr-1773/api/latest/classUEventsSender__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUEventsSender__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUEventsSender__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUException-members.html create mode 100644 preview/pr-1773/api/latest/classUException.html create mode 100644 preview/pr-1773/api/latest/classUException__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classUException__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUException__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classUException__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUException__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUException__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUFile-members.html create mode 100644 preview/pr-1773/api/latest/classUFile.html create mode 100644 preview/pr-1773/api/latest/classUFile.js create mode 100644 preview/pr-1773/api/latest/classULogEvent-members.html create mode 100644 preview/pr-1773/api/latest/classULogEvent.html create mode 100644 preview/pr-1773/api/latest/classULogEvent.js create mode 100644 preview/pr-1773/api/latest/classULogEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classULogEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classULogEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classULogEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classULogEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classULogEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classULogger-members.html create mode 100644 preview/pr-1773/api/latest/classULogger.html create mode 100644 preview/pr-1773/api/latest/classULogger.js create mode 100644 preview/pr-1773/api/latest/classUMutex-members.html create mode 100644 preview/pr-1773/api/latest/classUMutex.html create mode 100644 preview/pr-1773/api/latest/classUMutex.js create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent-members.html create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent.html create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent.js create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread-members.html create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread.html create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread.js create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUProcessInfo-members.html create mode 100644 preview/pr-1773/api/latest/classUProcessInfo.html create mode 100644 preview/pr-1773/api/latest/classUProcessInfo.js create mode 100644 preview/pr-1773/api/latest/classUScopeMutex-members.html create mode 100644 preview/pr-1773/api/latest/classUScopeMutex.html create mode 100644 preview/pr-1773/api/latest/classUSemaphore-members.html create mode 100644 preview/pr-1773/api/latest/classUSemaphore.html create mode 100644 preview/pr-1773/api/latest/classUSemaphore.js create mode 100644 preview/pr-1773/api/latest/classUThread-members.html create mode 100644 preview/pr-1773/api/latest/classUThread.html create mode 100644 preview/pr-1773/api/latest/classUThread.js create mode 100644 preview/pr-1773/api/latest/classUThreadC-members.html create mode 100644 preview/pr-1773/api/latest/classUThreadC.html create mode 100644 preview/pr-1773/api/latest/classUThreadC_3_01void_01_4-members.html create mode 100644 preview/pr-1773/api/latest/classUThreadC_3_01void_01_4.html create mode 100644 preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUThread__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classUThread__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUThread__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classUThread__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classUThread__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classUThread__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classUTimer-members.html create mode 100644 preview/pr-1773/api/latest/classUTimer.html create mode 100644 preview/pr-1773/api/latest/classUTimer.js create mode 100644 preview/pr-1773/api/latest/classUVariant-members.html create mode 100644 preview/pr-1773/api/latest/classUVariant.html create mode 100644 preview/pr-1773/api/latest/classUVariant.js create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel-members.html create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.html create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.js create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum-members.html create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.html create mode 100644 preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.js create mode 100644 preview/pr-1773/api/latest/classclams_1_1FrameProjector-members.html create mode 100644 preview/pr-1773/api/latest/classclams_1_1FrameProjector.html create mode 100644 preview/pr-1773/api/latest/classclams_1_1FrameProjector.js create mode 100644 preview/pr-1773/api/latest/classclams_1_1ProjectivePoint-members.html create mode 100644 preview/pr-1773/api/latest/classclams_1_1ProjectivePoint.html create mode 100644 preview/pr-1773/api/latest/classes.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraModel-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Feature2D-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GPS-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GPS.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GPS.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMU-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMU.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMU.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Landmark-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Landmark.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Landmark.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LaserScan-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Link-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Link.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Link.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Memory-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Memory.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Memory.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Odometry-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Odometry.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Odometry.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Optimizer-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Parameters-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Parameters.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ProgressState-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1ProgressState.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Registration-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Registration.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Registration.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RvlCodec-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1RvlCodec.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorData-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorData.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorData.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Signature-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Signature.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Signature.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Statistics-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Statistics.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Statistics.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Stereo-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Stereo.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Stereo.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoDense-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Transform-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Transform.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1Transform.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.map create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.md5 create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.png create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.js create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1VisualWord-members.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.html create mode 100644 preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.js create mode 100644 preview/pr-1773/api/latest/closed.png create mode 100644 preview/pr-1773/api/latest/custom.css create mode 100644 preview/pr-1773/api/latest/deprecated.html create mode 100644 preview/pr-1773/api/latest/dir_000004_000023.html create mode 100644 preview/pr-1773/api/latest/dir_000010_000023.html create mode 100644 preview/pr-1773/api/latest/dir_000012_000023.html create mode 100644 preview/pr-1773/api/latest/dir_000019_000023.html create mode 100644 preview/pr-1773/api/latest/dir_04d49acea3c42cab2afcd35cb2f2a48f.html create mode 100644 preview/pr-1773/api/latest/dir_04d49acea3c42cab2afcd35cb2f2a48f.js create mode 100644 preview/pr-1773/api/latest/dir_04d49acea3c42cab2afcd35cb2f2a48f_dep.map create mode 100644 preview/pr-1773/api/latest/dir_04d49acea3c42cab2afcd35cb2f2a48f_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_04d49acea3c42cab2afcd35cb2f2a48f_dep.png create mode 100644 preview/pr-1773/api/latest/dir_0ba908baca6d808b21359711c92b5f16.html create mode 100644 preview/pr-1773/api/latest/dir_0ba908baca6d808b21359711c92b5f16.js create mode 100644 preview/pr-1773/api/latest/dir_0ba908baca6d808b21359711c92b5f16_dep.map create mode 100644 preview/pr-1773/api/latest/dir_0ba908baca6d808b21359711c92b5f16_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_0ba908baca6d808b21359711c92b5f16_dep.png create mode 100644 preview/pr-1773/api/latest/dir_21f2edb779785a2efd6396476d03a0e2.html create mode 100644 preview/pr-1773/api/latest/dir_21f2edb779785a2efd6396476d03a0e2.js create mode 100644 preview/pr-1773/api/latest/dir_21f2edb779785a2efd6396476d03a0e2_dep.map create mode 100644 preview/pr-1773/api/latest/dir_21f2edb779785a2efd6396476d03a0e2_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_21f2edb779785a2efd6396476d03a0e2_dep.png create mode 100644 preview/pr-1773/api/latest/dir_249903c078ca6be5fe8a43d73ba57f0e.html create mode 100644 preview/pr-1773/api/latest/dir_249903c078ca6be5fe8a43d73ba57f0e.js create mode 100644 preview/pr-1773/api/latest/dir_249903c078ca6be5fe8a43d73ba57f0e_dep.map create mode 100644 preview/pr-1773/api/latest/dir_249903c078ca6be5fe8a43d73ba57f0e_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_249903c078ca6be5fe8a43d73ba57f0e_dep.png create mode 100644 preview/pr-1773/api/latest/dir_3587399b7774227770d0fd39c2d22121.html create mode 100644 preview/pr-1773/api/latest/dir_3587399b7774227770d0fd39c2d22121.js create mode 100644 preview/pr-1773/api/latest/dir_3587399b7774227770d0fd39c2d22121_dep.map create mode 100644 preview/pr-1773/api/latest/dir_3587399b7774227770d0fd39c2d22121_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_3587399b7774227770d0fd39c2d22121_dep.png create mode 100644 preview/pr-1773/api/latest/dir_449b2e54cbad5b668a24993c3878cc51.html create mode 100644 preview/pr-1773/api/latest/dir_449b2e54cbad5b668a24993c3878cc51.js create mode 100644 preview/pr-1773/api/latest/dir_449b2e54cbad5b668a24993c3878cc51_dep.map create mode 100644 preview/pr-1773/api/latest/dir_449b2e54cbad5b668a24993c3878cc51_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_449b2e54cbad5b668a24993c3878cc51_dep.png create mode 100644 preview/pr-1773/api/latest/dir_4e8d938e9ddb5a617c200d5739d1f41a.html create mode 100644 preview/pr-1773/api/latest/dir_55226059184c2c5c345e42665cf98aec.html create mode 100644 preview/pr-1773/api/latest/dir_55226059184c2c5c345e42665cf98aec.js create mode 100644 preview/pr-1773/api/latest/dir_55226059184c2c5c345e42665cf98aec_dep.map create mode 100644 preview/pr-1773/api/latest/dir_55226059184c2c5c345e42665cf98aec_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_55226059184c2c5c345e42665cf98aec_dep.png create mode 100644 preview/pr-1773/api/latest/dir_5807fd1f37f21884b665e4f5337b2441.html create mode 100644 preview/pr-1773/api/latest/dir_5807fd1f37f21884b665e4f5337b2441.js create mode 100644 preview/pr-1773/api/latest/dir_5807fd1f37f21884b665e4f5337b2441_dep.map create mode 100644 preview/pr-1773/api/latest/dir_5807fd1f37f21884b665e4f5337b2441_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_5807fd1f37f21884b665e4f5337b2441_dep.png create mode 100644 preview/pr-1773/api/latest/dir_623bdbaac6fe9b3f6f5de21b17f93501.html create mode 100644 preview/pr-1773/api/latest/dir_623bdbaac6fe9b3f6f5de21b17f93501.js create mode 100644 preview/pr-1773/api/latest/dir_623bdbaac6fe9b3f6f5de21b17f93501_dep.map create mode 100644 preview/pr-1773/api/latest/dir_623bdbaac6fe9b3f6f5de21b17f93501_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_623bdbaac6fe9b3f6f5de21b17f93501_dep.png create mode 100644 preview/pr-1773/api/latest/dir_65d456be8cef94751a4d1b4df815a100.html create mode 100644 preview/pr-1773/api/latest/dir_65d456be8cef94751a4d1b4df815a100.js create mode 100644 preview/pr-1773/api/latest/dir_65d456be8cef94751a4d1b4df815a100_dep.map create mode 100644 preview/pr-1773/api/latest/dir_65d456be8cef94751a4d1b4df815a100_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_65d456be8cef94751a4d1b4df815a100_dep.png create mode 100644 preview/pr-1773/api/latest/dir_67ee77bab1d00e5527b3ba66cff8b822.html create mode 100644 preview/pr-1773/api/latest/dir_67ee77bab1d00e5527b3ba66cff8b822.js create mode 100644 preview/pr-1773/api/latest/dir_67ee77bab1d00e5527b3ba66cff8b822_dep.map create mode 100644 preview/pr-1773/api/latest/dir_67ee77bab1d00e5527b3ba66cff8b822_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_67ee77bab1d00e5527b3ba66cff8b822_dep.png create mode 100644 preview/pr-1773/api/latest/dir_6fc574af21c01044bbfc485d931ba1b6.html create mode 100644 preview/pr-1773/api/latest/dir_6fc574af21c01044bbfc485d931ba1b6.js create mode 100644 preview/pr-1773/api/latest/dir_6fc574af21c01044bbfc485d931ba1b6_dep.map create mode 100644 preview/pr-1773/api/latest/dir_6fc574af21c01044bbfc485d931ba1b6_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_6fc574af21c01044bbfc485d931ba1b6_dep.png create mode 100644 preview/pr-1773/api/latest/dir_7b07a0fe62d0fac6129c48e2cb6c7633.html create mode 100644 preview/pr-1773/api/latest/dir_7b07a0fe62d0fac6129c48e2cb6c7633.js create mode 100644 preview/pr-1773/api/latest/dir_7b07a0fe62d0fac6129c48e2cb6c7633_dep.map create mode 100644 preview/pr-1773/api/latest/dir_7b07a0fe62d0fac6129c48e2cb6c7633_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_7b07a0fe62d0fac6129c48e2cb6c7633_dep.png create mode 100644 preview/pr-1773/api/latest/dir_7c77c469ef71e5893c1567cf621a9d83.html create mode 100644 preview/pr-1773/api/latest/dir_7c77c469ef71e5893c1567cf621a9d83.js create mode 100644 preview/pr-1773/api/latest/dir_85e098119c0e838040cd00f42e29c3c2.html create mode 100644 preview/pr-1773/api/latest/dir_85e098119c0e838040cd00f42e29c3c2.js create mode 100644 preview/pr-1773/api/latest/dir_85e098119c0e838040cd00f42e29c3c2_dep.map create mode 100644 preview/pr-1773/api/latest/dir_85e098119c0e838040cd00f42e29c3c2_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_85e098119c0e838040cd00f42e29c3c2_dep.png create mode 100644 preview/pr-1773/api/latest/dir_884419f21456e80aa47bc1d0c2ab0140.html create mode 100644 preview/pr-1773/api/latest/dir_884419f21456e80aa47bc1d0c2ab0140.js create mode 100644 preview/pr-1773/api/latest/dir_884419f21456e80aa47bc1d0c2ab0140_dep.map create mode 100644 preview/pr-1773/api/latest/dir_884419f21456e80aa47bc1d0c2ab0140_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_884419f21456e80aa47bc1d0c2ab0140_dep.png create mode 100644 preview/pr-1773/api/latest/dir_8c6d2b7fb0f1009468191a56b06a1387.html create mode 100644 preview/pr-1773/api/latest/dir_8c6d2b7fb0f1009468191a56b06a1387.js create mode 100644 preview/pr-1773/api/latest/dir_b3c8af46e4c1aa88d96b6d1863f8ab51.html create mode 100644 preview/pr-1773/api/latest/dir_b3c8af46e4c1aa88d96b6d1863f8ab51.js create mode 100644 preview/pr-1773/api/latest/dir_b3c8af46e4c1aa88d96b6d1863f8ab51_dep.map create mode 100644 preview/pr-1773/api/latest/dir_b3c8af46e4c1aa88d96b6d1863f8ab51_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_b3c8af46e4c1aa88d96b6d1863f8ab51_dep.png create mode 100644 preview/pr-1773/api/latest/dir_ca74fa0ef74cdae9a74fcd374d99516a.html create mode 100644 preview/pr-1773/api/latest/dir_ca74fa0ef74cdae9a74fcd374d99516a.js create mode 100644 preview/pr-1773/api/latest/dir_ca74fa0ef74cdae9a74fcd374d99516a_dep.map create mode 100644 preview/pr-1773/api/latest/dir_ca74fa0ef74cdae9a74fcd374d99516a_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_ca74fa0ef74cdae9a74fcd374d99516a_dep.png create mode 100644 preview/pr-1773/api/latest/dir_d5b9494e18cb3ada3ef427a965bb34ab.html create mode 100644 preview/pr-1773/api/latest/dir_d5b9494e18cb3ada3ef427a965bb34ab.js create mode 100644 preview/pr-1773/api/latest/dir_d5b9494e18cb3ada3ef427a965bb34ab_dep.map create mode 100644 preview/pr-1773/api/latest/dir_d5b9494e18cb3ada3ef427a965bb34ab_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_d5b9494e18cb3ada3ef427a965bb34ab_dep.png create mode 100644 preview/pr-1773/api/latest/dir_e4607d1f674c8fc63d3b87c7bc0020e1.html create mode 100644 preview/pr-1773/api/latest/dir_e4607d1f674c8fc63d3b87c7bc0020e1_dep.map create mode 100644 preview/pr-1773/api/latest/dir_e4607d1f674c8fc63d3b87c7bc0020e1_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_e4607d1f674c8fc63d3b87c7bc0020e1_dep.png create mode 100644 preview/pr-1773/api/latest/dir_e996b11fd4b3a747423759b16a8ba4a6.html create mode 100644 preview/pr-1773/api/latest/dir_e996b11fd4b3a747423759b16a8ba4a6.js create mode 100644 preview/pr-1773/api/latest/dir_e996b11fd4b3a747423759b16a8ba4a6_dep.map create mode 100644 preview/pr-1773/api/latest/dir_e996b11fd4b3a747423759b16a8ba4a6_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_e996b11fd4b3a747423759b16a8ba4a6_dep.png create mode 100644 preview/pr-1773/api/latest/dir_ee30f6c257683889c7b4a28a79d90ef3.html create mode 100644 preview/pr-1773/api/latest/dir_ee30f6c257683889c7b4a28a79d90ef3.js create mode 100644 preview/pr-1773/api/latest/dir_ee30f6c257683889c7b4a28a79d90ef3_dep.map create mode 100644 preview/pr-1773/api/latest/dir_ee30f6c257683889c7b4a28a79d90ef3_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_ee30f6c257683889c7b4a28a79d90ef3_dep.png create mode 100644 preview/pr-1773/api/latest/dir_fbc3350978c71aef49f2eeb1c9d88691.html create mode 100644 preview/pr-1773/api/latest/dir_fbc3350978c71aef49f2eeb1c9d88691.js create mode 100644 preview/pr-1773/api/latest/dir_fbc3350978c71aef49f2eeb1c9d88691_dep.map create mode 100644 preview/pr-1773/api/latest/dir_fbc3350978c71aef49f2eeb1c9d88691_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_fbc3350978c71aef49f2eeb1c9d88691_dep.png create mode 100644 preview/pr-1773/api/latest/dir_ff01f7bc5399ccf9ff1cc91d1f45726a.html create mode 100644 preview/pr-1773/api/latest/dir_ff01f7bc5399ccf9ff1cc91d1f45726a.js create mode 100644 preview/pr-1773/api/latest/dir_ff01f7bc5399ccf9ff1cc91d1f45726a_dep.map create mode 100644 preview/pr-1773/api/latest/dir_ff01f7bc5399ccf9ff1cc91d1f45726a_dep.md5 create mode 100644 preview/pr-1773/api/latest/dir_ff01f7bc5399ccf9ff1cc91d1f45726a_dep.png create mode 100644 preview/pr-1773/api/latest/discrete__depth__distortion__model_8h_source.html create mode 100644 preview/pr-1773/api/latest/doc.svg create mode 100644 preview/pr-1773/api/latest/docd.svg create mode 100644 preview/pr-1773/api/latest/doxygen-awesome-darkmode-toggle.js create mode 100644 preview/pr-1773/api/latest/doxygen-awesome.css create mode 100644 preview/pr-1773/api/latest/doxygen.css create mode 100644 preview/pr-1773/api/latest/doxygen.svg create mode 100644 preview/pr-1773/api/latest/dynsections.js create mode 100644 preview/pr-1773/api/latest/files.html create mode 100644 preview/pr-1773/api/latest/files_dup.js create mode 100644 preview/pr-1773/api/latest/folderclosed.svg create mode 100644 preview/pr-1773/api/latest/folderclosedd.svg create mode 100644 preview/pr-1773/api/latest/folderopen.svg create mode 100644 preview/pr-1773/api/latest/folderopend.svg create mode 100644 preview/pr-1773/api/latest/frame__projector_8h_source.html create mode 100644 preview/pr-1773/api/latest/functions.html create mode 100644 preview/pr-1773/api/latest/functions_a.html create mode 100644 preview/pr-1773/api/latest/functions_b.html create mode 100644 preview/pr-1773/api/latest/functions_c.html create mode 100644 preview/pr-1773/api/latest/functions_d.html create mode 100644 preview/pr-1773/api/latest/functions_dup.js create mode 100644 preview/pr-1773/api/latest/functions_e.html create mode 100644 preview/pr-1773/api/latest/functions_enum.html create mode 100644 preview/pr-1773/api/latest/functions_eval.html create mode 100644 preview/pr-1773/api/latest/functions_f.html create mode 100644 preview/pr-1773/api/latest/functions_func.html create mode 100644 preview/pr-1773/api/latest/functions_func.js create mode 100644 preview/pr-1773/api/latest/functions_func_b.html create mode 100644 preview/pr-1773/api/latest/functions_func_c.html create mode 100644 preview/pr-1773/api/latest/functions_func_d.html create mode 100644 preview/pr-1773/api/latest/functions_func_e.html create mode 100644 preview/pr-1773/api/latest/functions_func_f.html create mode 100644 preview/pr-1773/api/latest/functions_func_g.html create mode 100644 preview/pr-1773/api/latest/functions_func_h.html create mode 100644 preview/pr-1773/api/latest/functions_func_i.html create mode 100644 preview/pr-1773/api/latest/functions_func_j.html create mode 100644 preview/pr-1773/api/latest/functions_func_k.html create mode 100644 preview/pr-1773/api/latest/functions_func_l.html create mode 100644 preview/pr-1773/api/latest/functions_func_m.html create mode 100644 preview/pr-1773/api/latest/functions_func_n.html create mode 100644 preview/pr-1773/api/latest/functions_func_o.html create mode 100644 preview/pr-1773/api/latest/functions_func_p.html create mode 100644 preview/pr-1773/api/latest/functions_func_r.html create mode 100644 preview/pr-1773/api/latest/functions_func_s.html create mode 100644 preview/pr-1773/api/latest/functions_func_t.html create mode 100644 preview/pr-1773/api/latest/functions_func_u.html create mode 100644 preview/pr-1773/api/latest/functions_func_v.html create mode 100644 preview/pr-1773/api/latest/functions_func_w.html create mode 100644 preview/pr-1773/api/latest/functions_func_x.html create mode 100644 preview/pr-1773/api/latest/functions_func_y.html create mode 100644 preview/pr-1773/api/latest/functions_func_z.html create mode 100644 preview/pr-1773/api/latest/functions_func_~.html create mode 100644 preview/pr-1773/api/latest/functions_g.html create mode 100644 preview/pr-1773/api/latest/functions_h.html create mode 100644 preview/pr-1773/api/latest/functions_i.html create mode 100644 preview/pr-1773/api/latest/functions_j.html create mode 100644 preview/pr-1773/api/latest/functions_k.html create mode 100644 preview/pr-1773/api/latest/functions_l.html create mode 100644 preview/pr-1773/api/latest/functions_m.html create mode 100644 preview/pr-1773/api/latest/functions_n.html create mode 100644 preview/pr-1773/api/latest/functions_o.html create mode 100644 preview/pr-1773/api/latest/functions_p.html create mode 100644 preview/pr-1773/api/latest/functions_r.html create mode 100644 preview/pr-1773/api/latest/functions_rela.html create mode 100644 preview/pr-1773/api/latest/functions_s.html create mode 100644 preview/pr-1773/api/latest/functions_t.html create mode 100644 preview/pr-1773/api/latest/functions_u.html create mode 100644 preview/pr-1773/api/latest/functions_v.html create mode 100644 preview/pr-1773/api/latest/functions_vars.html create mode 100644 preview/pr-1773/api/latest/functions_w.html create mode 100644 preview/pr-1773/api/latest/functions_x.html create mode 100644 preview/pr-1773/api/latest/functions_y.html create mode 100644 preview/pr-1773/api/latest/functions_z.html create mode 100644 preview/pr-1773/api/latest/functions_~.html create mode 100644 preview/pr-1773/api/latest/global__map_2OccupancyGrid_8h_source.html create mode 100644 preview/pr-1773/api/latest/global__map_2OctoMap_8h_source.html create mode 100644 preview/pr-1773/api/latest/globals.html create mode 100644 preview/pr-1773/api/latest/globals_defs.html create mode 100644 preview/pr-1773/api/latest/globals_enum.html create mode 100644 preview/pr-1773/api/latest/globals_func.html create mode 100644 preview/pr-1773/api/latest/globals_type.html create mode 100644 preview/pr-1773/api/latest/graph_legend.html create mode 100644 preview/pr-1773/api/latest/graph_legend.md5 create mode 100644 preview/pr-1773/api/latest/graph_legend.png create mode 100644 preview/pr-1773/api/latest/group__ComputeNormalsComplexity.html create mode 100644 preview/pr-1773/api/latest/group__ComputeNormalsComplexity.js create mode 100644 preview/pr-1773/api/latest/group__ComputeVarianceAndCorrespondences.html create mode 100644 preview/pr-1773/api/latest/group__ComputeVarianceAndCorrespondences.js create mode 100644 preview/pr-1773/api/latest/group__CropBox.html create mode 100644 preview/pr-1773/api/latest/group__CropBox.js create mode 100644 preview/pr-1773/api/latest/group__ExtractClusters.html create mode 100644 preview/pr-1773/api/latest/group__ExtractClusters.js create mode 100644 preview/pr-1773/api/latest/group__ExtractIndices.html create mode 100644 preview/pr-1773/api/latest/group__ExtractIndices.js create mode 100644 preview/pr-1773/api/latest/group__FrustumFiltering.html create mode 100644 preview/pr-1773/api/latest/group__FrustumFiltering.js create mode 100644 preview/pr-1773/api/latest/group__LaserScan2dFromPointCloud.html create mode 100644 preview/pr-1773/api/latest/group__LaserScan2dFromPointCloud.js create mode 100644 preview/pr-1773/api/latest/group__LaserScanFromPointCloud.html create mode 100644 preview/pr-1773/api/latest/group__LaserScanFromPointCloud.js create mode 100644 preview/pr-1773/api/latest/group__LaserScanToPointCloud.html create mode 100644 preview/pr-1773/api/latest/group__LaserScanToPointCloud.js create mode 100644 preview/pr-1773/api/latest/group__PassThrough.html create mode 100644 preview/pr-1773/api/latest/group__PassThrough.js create mode 100644 preview/pr-1773/api/latest/group__PointCloudDownSampling.html create mode 100644 preview/pr-1773/api/latest/group__PointCloudDownSampling.js create mode 100644 preview/pr-1773/api/latest/group__PointCloudRangeFiltering.html create mode 100644 preview/pr-1773/api/latest/group__PointCloudRangeFiltering.js create mode 100644 preview/pr-1773/api/latest/group__PointCloudSplitRangeFiltering.html create mode 100644 preview/pr-1773/api/latest/group__PointCloudSplitRangeFiltering.js create mode 100644 preview/pr-1773/api/latest/group__PointNormalFiltering.html create mode 100644 preview/pr-1773/api/latest/group__PointNormalFiltering.js create mode 100644 preview/pr-1773/api/latest/group__ProportionalRadiusFiltering.html create mode 100644 preview/pr-1773/api/latest/group__ProportionalRadiusFiltering.js create mode 100644 preview/pr-1773/api/latest/group__RadiusFiltering.html create mode 100644 preview/pr-1773/api/latest/group__RadiusFiltering.js create mode 100644 preview/pr-1773/api/latest/group__RandomSampling.html create mode 100644 preview/pr-1773/api/latest/group__RandomSampling.js create mode 100644 preview/pr-1773/api/latest/group__RemoveNaNFromPointCloud.html create mode 100644 preview/pr-1773/api/latest/group__RemoveNaNFromPointCloud.js create mode 100644 preview/pr-1773/api/latest/group__RemoveNaNNormalsFromPointCloud.html create mode 100644 preview/pr-1773/api/latest/group__RemoveNaNNormalsFromPointCloud.js create mode 100644 preview/pr-1773/api/latest/group__RoiComputation.html create mode 100644 preview/pr-1773/api/latest/group__RoiComputation.js create mode 100644 preview/pr-1773/api/latest/group__SubtractFiltering.html create mode 100644 preview/pr-1773/api/latest/group__SubtractFiltering.js create mode 100644 preview/pr-1773/api/latest/group__TransformPoint.html create mode 100644 preview/pr-1773/api/latest/group__TransformPoint.js create mode 100644 preview/pr-1773/api/latest/group__TransformPointcloud.html create mode 100644 preview/pr-1773/api/latest/group__TransformPointcloud.js create mode 100644 preview/pr-1773/api/latest/group__UtiLite.html create mode 100644 preview/pr-1773/api/latest/group__VoxelFiltering.html create mode 100644 preview/pr-1773/api/latest/group__VoxelFiltering.js create mode 100644 preview/pr-1773/api/latest/hierarchy.html create mode 100644 preview/pr-1773/api/latest/hierarchy.js create mode 100644 preview/pr-1773/api/latest/index.html create mode 100644 preview/pr-1773/api/latest/index.js create mode 100644 preview/pr-1773/api/latest/inherit_graph_0.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_0.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_0.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_1.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_1.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_1.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_10.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_10.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_10.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_11.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_11.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_11.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_12.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_12.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_12.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_13.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_13.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_13.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_14.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_14.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_14.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_15.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_15.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_15.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_16.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_16.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_16.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_17.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_17.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_17.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_18.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_18.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_18.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_19.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_19.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_19.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_2.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_2.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_2.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_20.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_20.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_20.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_21.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_21.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_21.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_22.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_22.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_22.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_23.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_23.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_23.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_24.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_24.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_24.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_25.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_25.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_25.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_26.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_26.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_26.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_27.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_27.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_27.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_28.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_28.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_28.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_29.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_29.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_29.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_3.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_3.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_3.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_30.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_30.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_30.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_31.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_31.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_31.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_32.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_32.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_32.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_33.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_33.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_33.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_34.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_34.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_34.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_35.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_35.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_35.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_36.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_36.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_36.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_37.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_37.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_37.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_38.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_38.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_38.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_39.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_39.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_39.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_4.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_4.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_4.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_40.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_40.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_40.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_41.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_41.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_41.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_42.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_42.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_42.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_43.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_43.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_43.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_44.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_44.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_44.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_45.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_45.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_45.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_46.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_46.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_46.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_47.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_47.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_47.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_48.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_48.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_48.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_49.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_49.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_49.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_5.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_5.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_5.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_50.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_50.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_50.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_51.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_51.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_51.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_52.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_52.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_52.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_53.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_53.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_53.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_54.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_54.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_54.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_55.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_55.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_55.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_56.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_56.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_56.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_57.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_57.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_57.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_58.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_58.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_58.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_59.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_59.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_59.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_6.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_6.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_6.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_60.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_60.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_60.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_61.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_61.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_61.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_62.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_62.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_62.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_63.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_63.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_63.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_64.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_64.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_64.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_65.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_65.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_65.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_66.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_66.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_66.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_67.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_67.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_67.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_68.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_68.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_68.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_69.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_69.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_69.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_7.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_7.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_7.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_70.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_70.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_70.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_71.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_71.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_71.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_72.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_72.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_72.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_8.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_8.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_8.png create mode 100644 preview/pr-1773/api/latest/inherit_graph_9.map create mode 100644 preview/pr-1773/api/latest/inherit_graph_9.md5 create mode 100644 preview/pr-1773/api/latest/inherit_graph_9.png create mode 100644 preview/pr-1773/api/latest/inherits.html create mode 100644 preview/pr-1773/api/latest/jquery.js create mode 100644 preview/pr-1773/api/latest/menu.js create mode 100644 preview/pr-1773/api/latest/menudata.js create mode 100644 preview/pr-1773/api/latest/minus.svg create mode 100644 preview/pr-1773/api/latest/minusd.svg create mode 100644 preview/pr-1773/api/latest/namespacemembers.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_b.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_c.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_d.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_dup.js create mode 100644 preview/pr-1773/api/latest/namespacemembers_e.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_f.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func.js create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_b.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_c.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_d.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_e.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_f.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_g.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_h.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_i.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_l.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_m.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_n.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_o.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_p.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_r.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_s.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_t.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_u.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_func_v.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_g.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_h.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_i.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_l.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_m.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_n.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_o.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_p.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_r.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_s.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_t.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_type.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_u.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_v.html create mode 100644 preview/pr-1773/api/latest/namespacemembers_vars.html create mode 100644 preview/pr-1773/api/latest/namespacertabmap.html create mode 100644 preview/pr-1773/api/latest/namespacertabmap.js create mode 100644 preview/pr-1773/api/latest/namespacertabmap_1_1graph.html create mode 100644 preview/pr-1773/api/latest/namespacertabmap_1_1graph.js create mode 100644 preview/pr-1773/api/latest/namespacertabmap_1_1util2d.html create mode 100644 preview/pr-1773/api/latest/namespacertabmap_1_1util3d.html create mode 100644 preview/pr-1773/api/latest/namespaces.html create mode 100644 preview/pr-1773/api/latest/namespaces_dup.js create mode 100644 preview/pr-1773/api/latest/nav_f.png create mode 100644 preview/pr-1773/api/latest/nav_fd.png create mode 100644 preview/pr-1773/api/latest/nav_g.png create mode 100644 preview/pr-1773/api/latest/nav_h.png create mode 100644 preview/pr-1773/api/latest/nav_hd.png create mode 100644 preview/pr-1773/api/latest/navtree.css create mode 100644 preview/pr-1773/api/latest/navtree.js create mode 100644 preview/pr-1773/api/latest/navtreedata.js create mode 100644 preview/pr-1773/api/latest/navtreeindex0.js create mode 100644 preview/pr-1773/api/latest/navtreeindex1.js create mode 100644 preview/pr-1773/api/latest/navtreeindex10.js create mode 100644 preview/pr-1773/api/latest/navtreeindex11.js create mode 100644 preview/pr-1773/api/latest/navtreeindex12.js create mode 100644 preview/pr-1773/api/latest/navtreeindex13.js create mode 100644 preview/pr-1773/api/latest/navtreeindex14.js create mode 100644 preview/pr-1773/api/latest/navtreeindex15.js create mode 100644 preview/pr-1773/api/latest/navtreeindex16.js create mode 100644 preview/pr-1773/api/latest/navtreeindex2.js create mode 100644 preview/pr-1773/api/latest/navtreeindex3.js create mode 100644 preview/pr-1773/api/latest/navtreeindex4.js create mode 100644 preview/pr-1773/api/latest/navtreeindex5.js create mode 100644 preview/pr-1773/api/latest/navtreeindex6.js create mode 100644 preview/pr-1773/api/latest/navtreeindex7.js create mode 100644 preview/pr-1773/api/latest/navtreeindex8.js create mode 100644 preview/pr-1773/api/latest/navtreeindex9.js create mode 100644 preview/pr-1773/api/latest/open.png create mode 100644 preview/pr-1773/api/latest/pages.html create mode 100644 preview/pr-1773/api/latest/parameters.html create mode 100644 preview/pr-1773/api/latest/plus.svg create mode 100644 preview/pr-1773/api/latest/plusd.svg create mode 100644 preview/pr-1773/api/latest/resize.js create mode 100644 preview/pr-1773/api/latest/rtabmap__core__export_8h_source.html create mode 100644 preview/pr-1773/api/latest/rvl__codec_8h_source.html create mode 100644 preview/pr-1773/api/latest/search/all_0.js create mode 100644 preview/pr-1773/api/latest/search/all_1.js create mode 100644 preview/pr-1773/api/latest/search/all_10.js create mode 100644 preview/pr-1773/api/latest/search/all_11.js create mode 100644 preview/pr-1773/api/latest/search/all_12.js create mode 100644 preview/pr-1773/api/latest/search/all_13.js create mode 100644 preview/pr-1773/api/latest/search/all_14.js create mode 100644 preview/pr-1773/api/latest/search/all_15.js create mode 100644 preview/pr-1773/api/latest/search/all_16.js create mode 100644 preview/pr-1773/api/latest/search/all_17.js create mode 100644 preview/pr-1773/api/latest/search/all_18.js create mode 100644 preview/pr-1773/api/latest/search/all_19.js create mode 100644 preview/pr-1773/api/latest/search/all_1a.js create mode 100644 preview/pr-1773/api/latest/search/all_1b.js create mode 100644 preview/pr-1773/api/latest/search/all_1c.js create mode 100644 preview/pr-1773/api/latest/search/all_2.js create mode 100644 preview/pr-1773/api/latest/search/all_3.js create mode 100644 preview/pr-1773/api/latest/search/all_4.js create mode 100644 preview/pr-1773/api/latest/search/all_5.js create mode 100644 preview/pr-1773/api/latest/search/all_6.js create mode 100644 preview/pr-1773/api/latest/search/all_7.js create mode 100644 preview/pr-1773/api/latest/search/all_8.js create mode 100644 preview/pr-1773/api/latest/search/all_9.js create mode 100644 preview/pr-1773/api/latest/search/all_a.js create mode 100644 preview/pr-1773/api/latest/search/all_b.js create mode 100644 preview/pr-1773/api/latest/search/all_c.js create mode 100644 preview/pr-1773/api/latest/search/all_d.js create mode 100644 preview/pr-1773/api/latest/search/all_e.js create mode 100644 preview/pr-1773/api/latest/search/all_f.js create mode 100644 preview/pr-1773/api/latest/search/classes_0.js create mode 100644 preview/pr-1773/api/latest/search/classes_1.js create mode 100644 preview/pr-1773/api/latest/search/classes_10.js create mode 100644 preview/pr-1773/api/latest/search/classes_2.js create mode 100644 preview/pr-1773/api/latest/search/classes_3.js create mode 100644 preview/pr-1773/api/latest/search/classes_4.js create mode 100644 preview/pr-1773/api/latest/search/classes_5.js create mode 100644 preview/pr-1773/api/latest/search/classes_6.js create mode 100644 preview/pr-1773/api/latest/search/classes_7.js create mode 100644 preview/pr-1773/api/latest/search/classes_8.js create mode 100644 preview/pr-1773/api/latest/search/classes_9.js create mode 100644 preview/pr-1773/api/latest/search/classes_a.js create mode 100644 preview/pr-1773/api/latest/search/classes_b.js create mode 100644 preview/pr-1773/api/latest/search/classes_c.js create mode 100644 preview/pr-1773/api/latest/search/classes_d.js create mode 100644 preview/pr-1773/api/latest/search/classes_e.js create mode 100644 preview/pr-1773/api/latest/search/classes_f.js create mode 100644 preview/pr-1773/api/latest/search/close.svg create mode 100644 preview/pr-1773/api/latest/search/defines_0.js create mode 100644 preview/pr-1773/api/latest/search/enums_0.js create mode 100644 preview/pr-1773/api/latest/search/enums_1.js create mode 100644 preview/pr-1773/api/latest/search/enums_2.js create mode 100644 preview/pr-1773/api/latest/search/enums_3.js create mode 100644 preview/pr-1773/api/latest/search/enums_4.js create mode 100644 preview/pr-1773/api/latest/search/enums_5.js create mode 100644 preview/pr-1773/api/latest/search/enums_6.js create mode 100644 preview/pr-1773/api/latest/search/enums_7.js create mode 100644 preview/pr-1773/api/latest/search/enums_8.js create mode 100644 preview/pr-1773/api/latest/search/enums_9.js create mode 100644 preview/pr-1773/api/latest/search/enumvalues_0.js create mode 100644 preview/pr-1773/api/latest/search/enumvalues_1.js create mode 100644 preview/pr-1773/api/latest/search/enumvalues_2.js create mode 100644 preview/pr-1773/api/latest/search/files_0.js create mode 100644 preview/pr-1773/api/latest/search/functions_0.js create mode 100644 preview/pr-1773/api/latest/search/functions_1.js create mode 100644 preview/pr-1773/api/latest/search/functions_10.js create mode 100644 preview/pr-1773/api/latest/search/functions_11.js create mode 100644 preview/pr-1773/api/latest/search/functions_12.js create mode 100644 preview/pr-1773/api/latest/search/functions_13.js create mode 100644 preview/pr-1773/api/latest/search/functions_14.js create mode 100644 preview/pr-1773/api/latest/search/functions_15.js create mode 100644 preview/pr-1773/api/latest/search/functions_16.js create mode 100644 preview/pr-1773/api/latest/search/functions_17.js create mode 100644 preview/pr-1773/api/latest/search/functions_18.js create mode 100644 preview/pr-1773/api/latest/search/functions_19.js create mode 100644 preview/pr-1773/api/latest/search/functions_2.js create mode 100644 preview/pr-1773/api/latest/search/functions_3.js create mode 100644 preview/pr-1773/api/latest/search/functions_4.js create mode 100644 preview/pr-1773/api/latest/search/functions_5.js create mode 100644 preview/pr-1773/api/latest/search/functions_6.js create mode 100644 preview/pr-1773/api/latest/search/functions_7.js create mode 100644 preview/pr-1773/api/latest/search/functions_8.js create mode 100644 preview/pr-1773/api/latest/search/functions_9.js create mode 100644 preview/pr-1773/api/latest/search/functions_a.js create mode 100644 preview/pr-1773/api/latest/search/functions_b.js create mode 100644 preview/pr-1773/api/latest/search/functions_c.js create mode 100644 preview/pr-1773/api/latest/search/functions_d.js create mode 100644 preview/pr-1773/api/latest/search/functions_e.js create mode 100644 preview/pr-1773/api/latest/search/functions_f.js create mode 100644 preview/pr-1773/api/latest/search/groups_0.js create mode 100644 preview/pr-1773/api/latest/search/groups_1.js create mode 100644 preview/pr-1773/api/latest/search/groups_10.js create mode 100644 preview/pr-1773/api/latest/search/groups_11.js create mode 100644 preview/pr-1773/api/latest/search/groups_12.js create mode 100644 preview/pr-1773/api/latest/search/groups_2.js create mode 100644 preview/pr-1773/api/latest/search/groups_3.js create mode 100644 preview/pr-1773/api/latest/search/groups_4.js create mode 100644 preview/pr-1773/api/latest/search/groups_5.js create mode 100644 preview/pr-1773/api/latest/search/groups_6.js create mode 100644 preview/pr-1773/api/latest/search/groups_7.js create mode 100644 preview/pr-1773/api/latest/search/groups_8.js create mode 100644 preview/pr-1773/api/latest/search/groups_9.js create mode 100644 preview/pr-1773/api/latest/search/groups_a.js create mode 100644 preview/pr-1773/api/latest/search/groups_b.js create mode 100644 preview/pr-1773/api/latest/search/groups_c.js create mode 100644 preview/pr-1773/api/latest/search/groups_d.js create mode 100644 preview/pr-1773/api/latest/search/groups_e.js create mode 100644 preview/pr-1773/api/latest/search/groups_f.js create mode 100644 preview/pr-1773/api/latest/search/mag.svg create mode 100644 preview/pr-1773/api/latest/search/mag_d.svg create mode 100644 preview/pr-1773/api/latest/search/mag_sel.svg create mode 100644 preview/pr-1773/api/latest/search/mag_seld.svg create mode 100644 preview/pr-1773/api/latest/search/namespaces_0.js create mode 100644 preview/pr-1773/api/latest/search/pages_0.js create mode 100644 preview/pr-1773/api/latest/search/pages_1.js create mode 100644 preview/pr-1773/api/latest/search/pages_2.js create mode 100644 preview/pr-1773/api/latest/search/pages_3.js create mode 100644 preview/pr-1773/api/latest/search/pages_4.js create mode 100644 preview/pr-1773/api/latest/search/pages_5.js create mode 100644 preview/pr-1773/api/latest/search/pages_6.js create mode 100644 preview/pr-1773/api/latest/search/pages_7.js create mode 100644 preview/pr-1773/api/latest/search/pages_8.js create mode 100644 preview/pr-1773/api/latest/search/related_0.js create mode 100644 preview/pr-1773/api/latest/search/search.css create mode 100644 preview/pr-1773/api/latest/search/search.js create mode 100644 preview/pr-1773/api/latest/search/searchdata.js create mode 100644 preview/pr-1773/api/latest/search/typedefs_0.js create mode 100644 preview/pr-1773/api/latest/search/typedefs_1.js create mode 100644 preview/pr-1773/api/latest/search/typedefs_2.js create mode 100644 preview/pr-1773/api/latest/search/typedefs_3.js create mode 100644 preview/pr-1773/api/latest/search/variables_0.js create mode 100644 preview/pr-1773/api/latest/search/variables_1.js create mode 100644 preview/pr-1773/api/latest/search/variables_10.js create mode 100644 preview/pr-1773/api/latest/search/variables_11.js create mode 100644 preview/pr-1773/api/latest/search/variables_12.js create mode 100644 preview/pr-1773/api/latest/search/variables_13.js create mode 100644 preview/pr-1773/api/latest/search/variables_14.js create mode 100644 preview/pr-1773/api/latest/search/variables_2.js create mode 100644 preview/pr-1773/api/latest/search/variables_3.js create mode 100644 preview/pr-1773/api/latest/search/variables_4.js create mode 100644 preview/pr-1773/api/latest/search/variables_5.js create mode 100644 preview/pr-1773/api/latest/search/variables_6.js create mode 100644 preview/pr-1773/api/latest/search/variables_7.js create mode 100644 preview/pr-1773/api/latest/search/variables_8.js create mode 100644 preview/pr-1773/api/latest/search/variables_9.js create mode 100644 preview/pr-1773/api/latest/search/variables_a.js create mode 100644 preview/pr-1773/api/latest/search/variables_b.js create mode 100644 preview/pr-1773/api/latest/search/variables_c.js create mode 100644 preview/pr-1773/api/latest/search/variables_d.js create mode 100644 preview/pr-1773/api/latest/search/variables_e.js create mode 100644 preview/pr-1773/api/latest/search/variables_f.js create mode 100644 preview/pr-1773/api/latest/slam__calibrator_8h_source.html create mode 100644 preview/pr-1773/api/latest/splitbar.png create mode 100644 preview/pr-1773/api/latest/splitbard.png create mode 100644 preview/pr-1773/api/latest/stereoRectifyFisheye_8h_source.html create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT-members.html create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT.html create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT-members.html create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT.html create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors-members.html create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.html create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.js create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.map create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.md5 create mode 100644 preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.png create mode 100644 preview/pr-1773/api/latest/sync_off.png create mode 100644 preview/pr-1773/api/latest/sync_on.png create mode 100644 preview/pr-1773/api/latest/tab_a.png create mode 100644 preview/pr-1773/api/latest/tab_ad.png create mode 100644 preview/pr-1773/api/latest/tab_b.png create mode 100644 preview/pr-1773/api/latest/tab_bd.png create mode 100644 preview/pr-1773/api/latest/tab_h.png create mode 100644 preview/pr-1773/api/latest/tab_hd.png create mode 100644 preview/pr-1773/api/latest/tab_s.png create mode 100644 preview/pr-1773/api/latest/tab_sd.png create mode 100644 preview/pr-1773/api/latest/tabs.css create mode 100644 preview/pr-1773/api/latest/tools.html create mode 100644 preview/pr-1773/api/latest/topics.html create mode 100644 preview/pr-1773/api/latest/topics.js create mode 100644 preview/pr-1773/api/latest/uResourceGeneratorPage.html create mode 100644 preview/pr-1773/api/latest/util2d_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d_8hpp_source.html create mode 100644 preview/pr-1773/api/latest/util3d__correspondences_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d__features_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d__filtering_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d__mapping_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d__mapping_8hpp_source.html create mode 100644 preview/pr-1773/api/latest/util3d__motion__estimation_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d__registration_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d__surface_8h_source.html create mode 100644 preview/pr-1773/api/latest/util3d__surface_8hpp_source.html create mode 100644 preview/pr-1773/api/latest/util3d__transforms_8h_source.html create mode 100644 preview/pr-1773/api/latest/version-switcher.js create mode 100644 preview/pr-1773/api/versions.js create mode 100644 preview/pr-1773/assets/css/style.css create mode 100644 preview/pr-1773/assets/images/bg_hr.png create mode 100644 preview/pr-1773/assets/images/blacktocat.png create mode 100644 preview/pr-1773/assets/images/icon_download.png create mode 100644 preview/pr-1773/assets/images/sprite_download.png create mode 100644 preview/pr-1773/index.html create mode 100644 preview/pr-1773/index.md create mode 100644 preview/pr-1773/oauth2_redirect.html create mode 100644 preview/pr-1773/stylesheets/github-light.css create mode 100644 preview/pr-1773/stylesheets/pygment_trac.css create mode 100644 preview/pr-1773/stylesheets/stylesheet.css diff --git a/preview/pr-1773/.nojekyll b/preview/pr-1773/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/preview/pr-1773/api/index.html b/preview/pr-1773/api/index.html new file mode 100644 index 00000000..d8e0f6a3 --- /dev/null +++ b/preview/pr-1773/api/index.html @@ -0,0 +1,6 @@ + + +RTAB-Map API documentation + + +

Redirecting to the latest API documentation.

diff --git a/preview/pr-1773/api/latest/BayesFilter_8h_source.html b/preview/pr-1773/api/latest/BayesFilter_8h_source.html new file mode 100644 index 00000000..e3d0435e --- /dev/null +++ b/preview/pr-1773/api/latest/BayesFilter_8h_source.html @@ -0,0 +1,249 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/BayesFilter.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BayesFilter.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef BAYESFILTER_H_
+
29#define BAYESFILTER_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <opencv2/core/core.hpp>
+
34#include <list>
+
35#include <map>
+
36#include <set>
+
37#include <utility>
+
38#include <vector>
+
39#include "rtabmap/utilite/UEventsHandler.h"
+
40#include "rtabmap/core/Parameters.h"
+
41
+
+
42namespace rtabmap {
+
43
+
44class Memory;
+
45class Signature;
+
46
+
47namespace bayes {
+
48class PredictionModel;
+
49class DensePrediction;
+
50class SparsePrediction;
+
51}
+
52
+
+
81class RTABMAP_CORE_EXPORT BayesFilter
+
82{
+
83public:
+
88 BayesFilter(const ParametersMap & parameters = ParametersMap());
+
89 virtual ~BayesFilter();
+
90
+
95 virtual void parseParameters(const ParametersMap & parameters);
+
96
+
111 bool computePosterior(const Memory * memory, const std::map<int, float> & likelihood);
+
112
+
116 void reset();
+
117
+
131 void setPredictionLC(const std::string & prediction);
+
132
+
138 const std::vector<int> & getPosteriorIds() const {return _posteriorIds;}
+
139
+
143 const std::vector<float> & getPosteriorValues() const {return _posteriorValues;}
+
144
+
149 float getVirtualPlacePrior() const;
+
150
+
157 bool isPredictionSparse() const;
+
158
+
163 const std::vector<double> & getPredictionLC() const;
+
164
+
169 std::string getPredictionLCStr() const;
+
170
+
186 cv::Mat generatePrediction(const Memory * memory, const std::vector<int> & ids);
+
187
+
192 unsigned long getMemoryUsed() const;
+
193
+
194private:
+
200 void updatePosterior(const Memory * memory, const std::map<int, float> & likelihood);
+
201
+
208 void updateKeepSparse();
+
209
+
210private:
+
211 std::vector<int> _posteriorIds;
+
212 std::vector<float> _posteriorValues;
+
213 std::vector<int> _likelihoodIds;
+
214 std::vector<float> _likelihoodValues;
+
215 std::vector<float> _priorValues;
+
216
+
217 bayes::PredictionModel * _model;
+
218 bayes::DensePrediction * _dense;
+
219 bayes::SparsePrediction * _sparse;
+
220 std::map<int, std::map<int, int> > _neighborsIndex;
+
221
+
222 bool _fullPredictionUpdate;
+
223 bool _sparsePrediction;
+
224 bool _keepSparse;
+
225 bool _predictionChanged;
+
226};
+
+
227
+
228} // namespace rtabmap
+
+
229
+
230#endif /* BAYESFILTER_H_ */
+
Recursive Bayesian filter for loop-closure hypothesis estimation in RTAB-Map.
Definition BayesFilter.h:82
+
std::string getPredictionLCStr() const
Returns the loop-closure prediction model as a space-separated string.
+
float getVirtualPlacePrior() const
Returns the virtual place prior threshold.
+
BayesFilter(const ParametersMap &parameters=ParametersMap())
Constructs a Bayes filter with default or custom parameters.
+
void setPredictionLC(const std::string &prediction)
Sets the loop-closure prediction model from a space-separated string.
+
cv::Mat generatePrediction(const Memory *memory, const std::vector< int > &ids)
Builds or updates the prediction (transition) matrix for the given signature ids.
+
const std::vector< int > & getPosteriorIds() const
The locations the posterior is over, ascending by id.
+
unsigned long getMemoryUsed() const
Estimates memory usage of this object and its internal containers.
+
virtual void parseParameters(const ParametersMap &parameters)
Updates internal settings from the parameter map.
+
bool isPredictionSparse() const
Whether the prediction is being kept in its sparse form rather than as a matrix.
+
bool computePosterior(const Memory *memory, const std::map< int, float > &likelihood)
Runs one Bayes filter iteration (prediction + update).
+
const std::vector< float > & getPosteriorValues() const
The probability of each location of getPosteriorIds(), in the same order.
+
const std::vector< double > & getPredictionLC() const
Returns the loop-closure prediction model as a vector of values.
+
void reset()
Clears posterior, prediction matrix and cached neighbor indices.
+
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Definition Memory.h:102
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraDepthAI_8h_source.html b/preview/pr-1773/api/latest/CameraDepthAI_8h_source.html new file mode 100644 index 00000000..61156882 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraDepthAI_8h_source.html @@ -0,0 +1,247 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraDepthAI.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraDepthAI.h
+
+
+
1/*
+
2Copyright (c) 2010-2021, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/StereoCameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34#ifdef RTABMAP_DEPTHAI
+
35#ifndef DEPTHAI_OPENCV_SUPPORT
+
36#define DEPTHAI_OPENCV_SUPPORT
+
37#endif
+
38#include <depthai/depthai.hpp>
+
39#endif
+
40
+
41namespace rtabmap
+
42{
+
43
+
+
44class RTABMAP_CORE_EXPORT CameraDepthAI :
+
45 public Camera
+
46{
+
47public:
+
48 static bool available();
+
49
+
50public:
+ +
52 const std::string & mxidOrName = "",
+
53 int imageWidth = 1280, // 640 or 1280
+
54 float imageRate = 0.0f,
+
55 const Transform & localTransform = Transform::getIdentity());
+
56 virtual ~CameraDepthAI();
+
57
+
58 void setOutputMode(int outputMode = 0);
+
59 void setDepthProfile(int confThreshold = 200, int lrcThreshold = 5);
+
60 void setExtendedDisparity(bool extendedDisparity = false, bool enableCompanding = false);
+
61 void setSubpixelMode(bool enabled = false, int fractionalBits = 3);
+
62 void setDisparityWidthAndFilter(int disparityWidth = 96, int medianFilter = 5);
+
63 void setRectification(bool useSpecTranslation = false, float alphaScaling = 0.0f, bool enabled = true);
+
64 void setIMU(bool imuPublished, bool publishInterIMU);
+
65 void setIrIntensity(float dotIntensity = 0.0f, float floodIntensity = 0.0f);
+
66 void setDetectFeatures(int detectFeatures = 0, const std::string & blobPath = "");
+
67 void setGFTTDetector(bool useHarrisDetector = false, float minDistance = 7.0f, int numTargetFeatures = 1000);
+
68 void setSuperPointDetector(float threshold = 0.01f, bool nms = true, int nmsRadius = 4);
+
69
+
70 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
71 virtual bool isCalibrated() const;
+
72 virtual std::string getSerial() const;
+
73
+
74protected:
+
75 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
76
+
77private:
+
78#ifdef RTABMAP_DEPTHAI
+
79 StereoCameraModel stereoModel_;
+
80 cv::Size targetSize_;
+
81 Transform imuLocalTransform_;
+
82 std::string mxidOrName_;
+
83 int outputMode_;
+
84 int confThreshold_;
+
85 int lrcThreshold_;
+
86 int imageWidth_;
+
87 bool extendedDisparity_;
+
88 bool enableCompanding_;
+
89 int subpixelFractionalBits_;
+
90 int disparityWidth_;
+
91 int medianFilter_;
+
92 bool useSpecTranslation_;
+
93 float alphaScaling_;
+
94 bool imagesRectified_;
+
95 bool imuPublished_;
+
96 bool publishInterIMU_;
+
97 float dotIntensity_;
+
98 float floodIntensity_;
+
99 int detectFeatures_;
+
100 bool useHarrisDetector_;
+
101 float minDistance_;
+
102 int numTargetFeatures_;
+
103 float threshold_;
+
104 bool nms_;
+
105 int nmsRadius_;
+
106 std::string blobPath_;
+
107 std::unique_ptr<dai::Device> device_;
+
108 std::shared_ptr<dai::DataOutputQueue> cameraQueue_;
+
109 std::map<double, cv::Vec3f> accBuffer_;
+
110 std::map<double, cv::Vec3f> gyroBuffer_;
+
111 UMutex imuMutex_;
+
112#endif
+
113};
+
+
114
+
115
+
116} // namespace rtabmap
+ + +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraEvent_8h_source.html b/preview/pr-1773/api/latest/CameraEvent_8h_source.html new file mode 100644 index 00000000..feee7745 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraEvent_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/CameraEvent.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraEvent.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/SensorEvent.h"
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraFreenect2_8h_source.html b/preview/pr-1773/api/latest/CameraFreenect2_8h_source.html new file mode 100644 index 00000000..e487c019 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraFreenect2_8h_source.html @@ -0,0 +1,231 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraFreenect2.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraFreenect2.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/StereoCameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34namespace libfreenect2
+
35{
+
36class Freenect2;
+
37class Freenect2Device;
+
38class SyncMultiFrameListener;
+
39class Registration;
+
40class PacketPipeline;
+
41}
+
42
+
43namespace rtabmap
+
44{
+
45
+
+
46class RTABMAP_CORE_EXPORT CameraFreenect2 :
+
47 public Camera
+
48{
+
49public:
+
50 static bool available();
+
51
+
52 enum Type{
+
53 kTypeColor2DepthSD,
+
54 kTypeDepth2ColorSD,
+
55 kTypeDepth2ColorHD,
+
56 kTypeDepth2ColorHD2,
+
57 kTypeIRDepth,
+
58 kTypeColorIR
+
59 };
+
60
+
61public:
+
62 // default local transform z in, x right, y down));
+
63 CameraFreenect2(int deviceId= 0,
+
64 Type type = kTypeDepth2ColorSD,
+
65 float imageRate=0.0f,
+
66 const Transform & localTransform = Transform::getIdentity(),
+
67 float minDepth = 0.3f,
+
68 float maxDepth = 12.0f,
+
69 bool bilateralFiltering = true,
+
70 bool edgeAwareFiltering = true,
+
71 bool noiseFiltering = true,
+
72 const std::string & pipelineName = "");
+
73 virtual ~CameraFreenect2();
+
74
+
75 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
76 virtual bool isCalibrated() const;
+
77 virtual std::string getSerial() const;
+
78
+
79protected:
+
80 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
81
+
82private:
+
83#ifdef RTABMAP_FREENECT2
+
84 int deviceId_;
+
85 Type type_;
+
86 StereoCameraModel stereoModel_;
+
87 libfreenect2::Freenect2 * freenect2_;
+
88 libfreenect2::Freenect2Device *dev_;
+
89 libfreenect2::SyncMultiFrameListener * listener_;
+
90 libfreenect2::Registration * reg_;
+
91 float minKinect2Depth_;
+
92 float maxKinect2Depth_;
+
93 bool bilateralFiltering_;
+
94 bool edgeAwareFiltering_;
+
95 bool noiseFiltering_;
+
96 std::string pipelineName_;
+
97#endif
+
98};
+
+
99
+
100
+
101} // namespace rtabmap
+ +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraFreenect_8h_source.html b/preview/pr-1773/api/latest/CameraFreenect_8h_source.html new file mode 100644 index 00000000..04a2cf3c --- /dev/null +++ b/preview/pr-1773/api/latest/CameraFreenect_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraFreenect.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraFreenect.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31
+
32#include "rtabmap/core/StereoCameraModel.h"
+
33#include "rtabmap/core/Camera.h"
+
34#include "rtabmap/core/Version.h"
+
35
+
36typedef struct _freenect_context freenect_context;
+
37typedef struct _freenect_device freenect_device;
+
38
+
39namespace rtabmap
+
40{
+
41
+
42class FreenectDevice;
+
43
+
+
44class RTABMAP_CORE_EXPORT CameraFreenect :
+
45 public Camera
+
46{
+
47public:
+
48 static bool available();
+
49 enum Type {kTypeColorDepth, kTypeIRDepth};
+
50
+
51public:
+
52 // default local transform z in, x right, y down));
+
53 CameraFreenect(int deviceId= 0,
+
54 Type type = kTypeColorDepth,
+
55 float imageRate=0.0f,
+
56 const Transform & localTransform = Transform::getIdentity());
+
57 virtual ~CameraFreenect();
+
58
+
59 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
60 virtual bool isCalibrated() const;
+
61 virtual std::string getSerial() const;
+
62
+
63protected:
+
64 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
65
+
66private:
+
67#ifdef RTABMAP_FREENECT
+
68 int deviceId_;
+
69 Type type_;
+
70 freenect_context * ctx_;
+
71 FreenectDevice * freenectDevice_;
+
72 StereoCameraModel stereoModel_;
+
73#endif
+
74};
+
+
75
+
76
+
77} // namespace rtabmap
+ +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraImages_8h_source.html b/preview/pr-1773/api/latest/CameraImages_8h_source.html new file mode 100644 index 00000000..e51f8107 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraImages_8h_source.html @@ -0,0 +1,364 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraImages.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraImages.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/Camera.h"
+
31#include "rtabmap/utilite/UTimer.h"
+
32#include <list>
+
33
+
34class UDirectory;
+
35
+
36namespace rtabmap
+
37{
+
38
+
+
39class RTABMAP_CORE_EXPORT CameraImages :
+
40 public Camera
+
41{
+
42public:
+ + +
45 const std::string & path,
+
46 float imageRate = 0,
+
47 const Transform & localTransform = Transform::getIdentity());
+
48 virtual ~CameraImages();
+
49
+
50 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
51 virtual bool isCalibrated() const;
+
52 virtual std::string getSerial() const;
+
53 virtual bool odomProvided() const { return odometry_.size() > 0; }
+
54 std::string getPath() const {return _path;}
+
55 unsigned int imagesCount() const;
+
56 std::vector<std::string> filenames() const;
+
57 bool isImagesRectified() const {return _rectifyImages;}
+
58 int getBayerMode() const {return _bayerMode;}
+
59 const CameraModel & cameraModel() const {return _model;}
+
60
+
61 void setPath(const std::string & dir) {_path=dir;}
+
62 virtual void setStartIndex(int index) {_startAt = index;} // negative means last
+
63 virtual void setMaxFrames(int value) {_maxFrames = value;}
+
64 void setDirRefreshed(bool enabled) {_refreshDir = enabled;}
+
65 void setImagesRectified(bool enabled) {_rectifyImages = enabled;}
+
66 void setBayerMode(int mode) {_bayerMode = mode;} // -1=disabled (default) 0=BayerBG, 1=BayerGB, 2=BayerRG, 3=BayerGR
+
67
+
68 void setTimestamps(bool fileNamesAreStamps, const std::string & filePath = "", bool syncImageRateWithStamps=true)
+
69 {
+
70 _filenamesAreTimestamps = fileNamesAreStamps;
+
71 _timestampsPath=filePath;
+
72 _syncImageRateWithStamps = syncImageRateWithStamps;
+
73 }
+
74
+
75 void setConfigForEachFrame(bool value)
+
76 {
+
77 _hasConfigForEachFrame = value;
+
78 }
+
79 bool isConfigForEachFrame() const {return _hasConfigForEachFrame;}
+
80
+
81 // Enable multi-camera mode. Each image in the folder is expected to be the
+
82 // horizontal concatenation of N sub-camera images of a rig, sharing the same
+
83 // base name (timestamp or node id), e.g. "1780687370.031791.jpg" or "1.jpg".
+
84 // One calibration file per sub-camera must exist in the calibrationFolder
+
85 // passed to init(), named "<prefix>_<index>.yaml" with index starting at 0
+
86 // (e.g. "1_0.yaml", "1_1.yaml", ...). The number of cameras is auto-detected.
+
87 // Each sub-image width is taken from the corresponding model's calibrated image
+
88 // size; if a model has no size, a uniform split (stackedWidth / N) is assumed.
+
89 // If setConfigForEachFrame() is enabled, one calibration set is loaded per frame
+
90 // using each image's base name as prefix. Otherwise a single calibration set is
+
91 // loaded and reused for all frames, using the cameraName passed to init() as
+
92 // prefix (it may differ from any image name), falling back to the first image's
+
93 // base name when cameraName is empty.
+
94 // Note that it is not recommended to use setConfigForEachFrame() if images have
+
95 // to be rectified, a rectification matrix would need to be re-initilaized for
+
96 // each frame.
+
97 void setMultiCameraCalibration(bool enabled)
+
98 {
+
99 _multiCameraCalib = enabled;
+
100 }
+
101
+
102 void setScanPath(
+
103 const std::string & dir,
+
104 int maxScanPts = 0,
+
105 const Transform & localTransform=Transform::getIdentity())
+
106 {
+
107 _scanPath = dir;
+
108 _scanLocalTransform = localTransform;
+
109 _scanMaxPts = maxScanPts;
+
110 }
+
111
+
112 void setDepthFromScan(bool enabled, int fillHoles = 1, bool fillHolesFromBorder = false)
+
113 {
+
114 _depthFromScan = enabled;
+
115 _depthFromScanFillHoles = fillHoles;
+
116 _depthFromScanFillHolesFromBorder = fillHolesFromBorder;
+
117 }
+
118
+
119 // 0=Raw, 1=RGBD-SLAM motion capture (10=without change of coordinate frame, 11=10+ID), 2=KITTI, 3=TORO, 4=g2o, 5=NewCollege(t,x,y), 6=Malaga Urban GPS, 7=St Lucia INS, 8=Karlsruhe, 9=EuRoC MAV, 12=rgbd_bonn
+
120 void setOdometryPath(const std::string & filePath, int format = 0)
+
121 {
+
122 _odometryPath = filePath;
+
123 _odometryFormat = format;
+
124 }
+
125
+
126 // 0=Raw, 1=RGBD-SLAM motion capture (10=without change of coordinate frame, 11=10+ID), 2=KITTI, 3=TORO, 4=g2o, 5=NewCollege(t,x,y), 6=Malaga Urban GPS, 7=St Lucia INS, 8=Karlsruhe, 9=EuRoC MAV, 12=rgbd_bonn
+
127 void setGroundTruthPath(const std::string & filePath, int format = 0, const Transform & localTransform = Transform::getIdentity())
+
128 {
+
129 _groundTruthPath = filePath;
+
130 _groundTruthFormat = format;
+
131 _groundTruthLocalTransform = localTransform;
+
132 }
+
133
+
134 void setMaxPoseTimeDiff(double diff) {_maxPoseTimeDiff = diff;}
+
135 double getMaxPoseTimeDiff() const {return _maxPoseTimeDiff;}
+
136
+
137 void setDepth(bool isDepth, float depthScaleFactor = 1.0f)
+
138 {
+
139 _isDepth = isDepth;
+
140 _depthScaleFactor=depthScaleFactor;
+
141 }
+
142
+
143protected:
+
144 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
145
+
146 // File name (with extension, no directory) of the image returned by the last
+
147 // captureImage() call. Used by subclasses (e.g. stereo) to key per-frame
+
148 // calibration loaded on demand. Empty if no image was read.
+
149 const std::string & lastImageFileName() const {return _lastImageFileName;}
+
150
+
151 // Calibration folder passed to init(), kept to load per-frame calibration on
+
152 // demand. Shared with subclasses (e.g. stereo) that load calibration themselves.
+
153 std::string _calibrationFolder;
+
154
+
155 // Multi-camera mode state, shared with subclasses (e.g. stereo) that layer their
+
156 // own multi-camera handling over the base reader. Such subclasses temporarily set
+
157 // _multiCameraCalib to false while delegating to base init()/captureImage() so the
+
158 // base returns the raw stacked image instead of doing its own split, then restore it.
+
159 bool _multiCameraCalib;
+
160 int _multiCameraCount; // number of sub-cameras detected in multi-camera mode
+
161
+
162private:
+
163 bool readPoses(
+
164 std::list<Transform> & outputPoses,
+
165 std::list<double> & stamps,
+
166 const std::string & filePath,
+
167 int format,
+
168 double maxTimeDiff) const;
+
169
+
170 // Load the sub-camera models of a multi-camera rig from calibration files named
+
171 // "<baseName>_<index>.yaml" (index 0.._multiCameraCount-1) in _calibrationFolder.
+
172 // Returns an empty vector (and logs an error) if any model is missing or invalid.
+
173 std::vector<CameraModel> loadMultiCameraModels(const std::string & baseName) const;
+
174
+
175 // Load the single-camera model for one frame from a per-frame config file (RTAB-Map
+
176 // calibration or 3DScannerApp format). Returns an invalid model (and logs an error)
+
177 // on failure.
+
178 CameraModel loadConfigModel(const std::string & filePath);
+
179
+
180private:
+
181 std::string _path;
+
182 int _startAt;
+
183 int _maxFrames;
+
184 // If the list of files in the directory is refreshed
+
185 // on each call of takeImage()
+
186 bool _refreshDir;
+
187 bool _rectifyImages;
+
188 int _bayerMode;
+
189 bool _isDepth;
+
190 float _depthScaleFactor;
+
191 int _count;
+
192 int _framesPublished;
+
193 UDirectory * _dir;
+
194 std::string _lastFileName;
+
195 std::string _lastImageFileName; // file name of the image returned by the last captureImage()
+
196
+
197 int _countScan;
+
198 UDirectory * _scanDir;
+
199 std::string _lastScanFileName;
+
200 std::string _scanPath;
+
201 Transform _scanLocalTransform;
+
202 int _scanMaxPts;
+
203
+
204 bool _depthFromScan;
+
205 int _depthFromScanFillHoles; // <0:horizontal 0:disabled >0:vertical
+
206 bool _depthFromScanFillHolesFromBorder;
+
207
+
208 bool _filenamesAreTimestamps;
+
209 bool _hasConfigForEachFrame;
+
210 std::string _timestampsPath;
+
211 bool _syncImageRateWithStamps;
+
212
+
213 std::string _odometryPath;
+
214 int _odometryFormat;
+
215 std::string _groundTruthPath;
+
216 int _groundTruthFormat;
+
217 Transform _groundTruthLocalTransform;
+
218 double _maxPoseTimeDiff;
+
219
+
220 std::list<double> _stamps;
+
221 std::list<Transform> odometry_;
+
222 std::list<cv::Mat> covariances_;
+
223 std::list<Transform> groundTruth_;
+
224 CameraModel _model;
+
225 std::list<std::string> _modelFileNames; // per-frame single-camera config file paths (config-for-each-frame)
+
226 bool _configLocalTransformWarned; // warn only once when a per-frame config has no local_transform
+
227 std::vector<CameraModel> _multiModels; // sub-camera models, shared by all frames (multi-camera mode); empty when loaded per-frame
+
228
+
229 UTimer _captureTimer;
+
230 double _captureDelay;
+
231};
+
+
232
+
233
+
234} // namespace rtabmap
+ + + +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
+ +
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraInfo_8h_source.html b/preview/pr-1773/api/latest/CameraInfo_8h_source.html new file mode 100644 index 00000000..c0a34158 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraInfo_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/CameraInfo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraInfo.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/SensorCaptureInfo.h"
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraK4A_8h_source.html b/preview/pr-1773/api/latest/CameraK4A_8h_source.html new file mode 100644 index 00000000..5fa63231 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraK4A_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraK4A.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraK4A.h
+
+
+
1/*
+
2Copyright (c) 2010-2019, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/CameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33#include "rtabmap/utilite/UTimer.h"
+
34
+
35#ifdef RTABMAP_K4A
+
36#include <k4a/k4atypes.h>
+
37#include <k4arecord/playback.h>
+
38#endif
+
39
+
40namespace rtabmap
+
41{
+
42
+
+
43class RTABMAP_CORE_EXPORT CameraK4A :
+
44 public Camera
+
45{
+
46public:
+
47 static bool available();
+
48
+
49public:
+
50 CameraK4A(int deviceId = 0,
+
51 float imageRate = 0.0f,
+
52 const Transform & localTransform = Transform::getIdentity());
+
53 CameraK4A(const std::string & fileName,
+
54 float imageRate = 0.0f,
+
55 const Transform & localTransform = Transform::getIdentity());
+
56 virtual ~CameraK4A();
+
57
+
58 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
59 virtual bool isCalibrated() const;
+
60 virtual std::string getSerial() const;
+
61
+
62 void setIRDepthFormat(bool enabled);
+
63 void setPreferences(int rgb_resolution, int framerate, int depth_resolution);
+
64
+
65protected:
+
66 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
67
+
68private:
+
69 void close();
+
70
+
71private:
+
72
+
73#ifdef RTABMAP_K4A
+
74 k4a_device_t deviceHandle_;
+
75 k4a_device_configuration_t config_;
+
76 k4a_calibration_t calibration_;
+
77 k4a_transformation_t transformationHandle_;
+
78 k4a_capture_t captureHandle_;
+
79 k4a_playback_t playbackHandle_;
+
80 std::string serial_number_;
+
81
+
82 CameraModel model_;
+
83 int deviceId_;
+
84 std::string fileName_;
+
85 int rgb_resolution_;
+
86 int framerate_;
+
87 int depth_resolution_;
+
88 bool ir_;
+
89 double previousStamp_;
+
90 double timestampOffset_;
+
91 UTimer timer_;
+
92 Transform imuLocalTransform_;
+
93#endif
+
94
+
95};
+
+
96
+
97
+
98} // namespace rtabmap
+ + +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraK4W2_8h_source.html b/preview/pr-1773/api/latest/CameraK4W2_8h_source.html new file mode 100644 index 00000000..757a2331 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraK4W2_8h_source.html @@ -0,0 +1,225 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraK4W2.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraK4W2.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/CameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34typedef struct IKinectSensor IKinectSensor;
+
35typedef struct ICoordinateMapper ICoordinateMapper;
+
36typedef struct _DepthSpacePoint DepthSpacePoint;
+
37typedef struct _ColorSpacePoint ColorSpacePoint;
+
38typedef struct tagRGBQUAD RGBQUAD;
+
39typedef struct IMultiSourceFrameReader IMultiSourceFrameReader;
+
40
+
41namespace rtabmap
+
42{
+
43
+
+
44class RTABMAP_CORE_EXPORT CameraK4W2 :
+
45 public Camera
+
46{
+
47public:
+
48 static bool available();
+
49
+
50 enum Type {
+
51 kTypeColor2DepthSD,
+
52 kTypeDepth2ColorSD,
+
53 kTypeDepth2ColorHD
+
54 };
+
55
+
56public:
+
57 static const int cDepthWidth = 512;
+
58 static const int cDepthHeight = 424;
+
59 static const int cColorWidth = 1920;
+
60 static const int cColorHeight = 1080;
+
61
+
62public:
+
63 // default local transform z in, x right, y down));
+
64 CameraK4W2(int deviceId = 0, // not used
+
65 Type type = kTypeDepth2ColorSD,
+
66 float imageRate = 0.0f,
+
67 const Transform & localTransform = Transform::getIdentity());
+
68 virtual ~CameraK4W2();
+
69
+
70 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
71 virtual bool isCalibrated() const;
+
72 virtual std::string getSerial() const;
+
73
+
74protected:
+
75 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
76
+
77private:
+
78 void close();
+
79
+
80private:
+
81#ifdef RTABMAP_K4W2
+
82 Type type_;
+
83 IKinectSensor* pKinectSensor_;
+
84 ICoordinateMapper* pCoordinateMapper_;
+
85 DepthSpacePoint* pDepthCoordinates_;
+
86 ColorSpacePoint* pColorCoordinates_;
+
87 IMultiSourceFrameReader* pMultiSourceFrameReader_;
+
88 RGBQUAD * pColorRGBX_;
+
89 INT_PTR hMSEvent;
+
90 CameraModel colorCameraModel_;
+
91#endif
+
92};
+
+
93
+
94
+
95} // namespace rtabmap
+ +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraModel_8h_source.html b/preview/pr-1773/api/latest/CameraModel_8h_source.html new file mode 100644 index 00000000..b7068b46 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraModel_8h_source.html @@ -0,0 +1,342 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/CameraModel.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraModel.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CAMERAMODEL_H_
+
29#define CAMERAMODEL_H_
+
30
+
31#include <opencv2/opencv.hpp>
+
32
+
33#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
34#include "rtabmap/core/Transform.h"
+
35
+
36namespace rtabmap {
+
37
+
+
52class RTABMAP_CORE_EXPORT CameraModel
+
53{
+
54public:
+
63 static Transform opticalRotation() {return Transform(0,0,1,0, -1,0,0,0, 0,-1,0,0);}
+
64
+
65public:
+
66
+ +
69
+ +
86 const std::string & name,
+
87 const cv::Size & imageSize,
+
88 const cv::Mat & K,
+
89 const cv::Mat & D,
+
90 const cv::Mat & R,
+
91 const cv::Mat & P,
+
92 const Transform & localTransform = opticalRotation());
+
93
+ +
106 double fx,
+
107 double fy,
+
108 double cx,
+
109 double cy,
+
110 const Transform & localTransform = opticalRotation(),
+
111 double Tx = 0.0f,
+
112 const cv::Size & imageSize = cv::Size(0,0));
+
113
+ +
118 const std::string & name,
+
119 double fx,
+
120 double fy,
+
121 double cx,
+
122 double cy,
+
123 const Transform & localTransform = opticalRotation(),
+
124 double Tx = 0.0f,
+
125 const cv::Size & imageSize = cv::Size(0,0));
+
126
+
128 virtual ~CameraModel() {}
+
129
+ +
154
+
159 bool isRectificationMapInitialized() const {return !mapX_.empty() && !mapY_.empty();}
+
160
+
164 bool isValidForProjection() const {return fx()>0.0 && fy()>0.0 && cx()>0.0 && cy()>0.0;}
+
168 bool isValidForReprojection() const {return fx()>0.0 && fy()>0.0 && cx()>0.0 && cy()>0.0 && imageWidth()>0 && imageHeight()>0;}
+
+ +
173 {
+
174 return imageSize_.width>0 &&
+
175 imageSize_.height>0 &&
+
176 !K_.empty() &&
+
177 !D_.empty() &&
+
178 !R_.empty() &&
+
179 !P_.empty();
+
180 }
+
+
181
+
183 void setName(const std::string & name) {name_=name;}
+
185 const std::string & name() const {return name_;}
+
186
+
188 double fx() const {return P_.empty()?K_.empty()?0.0:K_.at<double>(0,0):P_.at<double>(0,0);}
+
190 double fy() const {return P_.empty()?K_.empty()?0.0:K_.at<double>(1,1):P_.at<double>(1,1);}
+
192 double cx() const {return P_.empty()?K_.empty()?0.0:K_.at<double>(0,2):P_.at<double>(0,2);}
+
194 double cy() const {return P_.empty()?K_.empty()?0.0:K_.at<double>(1,2):P_.at<double>(1,2);}
+
196 double Tx() const {return P_.empty()?0.0:P_.at<double>(0,3);}
+
197
+
199 cv::Mat K_raw() const {return K_;}
+
201 cv::Mat D_raw() const {return D_;}
+
203 cv::Mat K() const {return !P_.empty()?P_.colRange(0,3):K_;}
+
205 cv::Mat D() const {return P_.empty()&&!D_.empty()?D_:cv::Mat::zeros(1,5,CV_64FC1);} // if P exists, return rectified version
+
207 cv::Mat R() const {return R_;}
+
209 cv::Mat P() const {return P_;}
+
210
+
212 void setLocalTransform(const Transform & transform) {localTransform_ = transform;}
+
214 const Transform & localTransform() const {return localTransform_;}
+
215
+
235 void setImageSize(const cv::Size & size);
+
236 const cv::Size & imageSize() const {return imageSize_;}
+
237 int imageWidth() const {return imageSize_.width;}
+
238 int imageHeight() const {return imageSize_.height;}
+
239
+
250 double fovX() const;
+
251
+
262 double fovY() const;
+
263
+
271 double horizontalFOV() const;
+
272
+
280 double verticalFOV() const;
+
281
+
283 bool isFisheye() const {return D_.cols == 6;}
+
284
+
315 bool load(const std::string & filePath, bool initRectificationMaps = true);
+
316
+
329 bool load(const std::string & directory, const std::string & cameraName, bool initRectificationMaps = true);
+
330
+
354 bool save(const std::string & directory) const;
+
355
+
377 std::vector<unsigned char> serialize() const;
+
389 unsigned int deserialize(const std::vector<unsigned char>& data);
+
390
+
410 unsigned int deserialize(const unsigned char * data, unsigned int dataSize);
+
411
+
426 CameraModel scaled(double scale) const;
+
427
+
442 CameraModel roi(const cv::Rect & roi) const;
+
443
+
463 cv::Mat rectifyImage(const cv::Mat & raw, int interpolation = cv::INTER_LINEAR) const;
+
464
+
488 cv::Mat rectifyDepth(const cv::Mat & raw) const;
+
489
+
507 void project(float u, float v, float depth, float & x, float & y, float & z) const;
+
508
+
525 void reproject(float x, float y, float z, float & u, float & v) const;
+
526
+
542 void reproject(float x, float y, float z, int & u, int & v) const;
+
543
+
553 bool inFrame(int u, int v) const;
+
554
+
555private:
+
556 std::string name_;
+
557 cv::Size imageSize_;
+
558 cv::Mat K_;
+
559 cv::Mat D_;
+
560 cv::Mat R_;
+
561 cv::Mat P_;
+
562 cv::Mat mapX_;
+
563 cv::Mat mapY_;
+
564 Transform localTransform_;
+
565};
+
+
566
+
590RTABMAP_CORE_EXPORT std::ostream& operator<<(std::ostream& os, const CameraModel& model);
+
591
+
592} /* namespace rtabmap */
+
593#endif /* CAMERAMODEL_H_ */
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+
void project(float u, float v, float depth, float &x, float &y, float &z) const
Projects a 2D pixel and depth value into a 3D point in the camera coordinate frame (/camera_link).
+
static Transform opticalRotation()
Returns the default optical rotation to convert image coordinates to robot coordinates.
Definition CameraModel.h:63
+
double horizontalFOV() const
Returns the horizontal field of view in degrees.
+
cv::Mat rectifyImage(const cv::Mat &raw, int interpolation=cv::INTER_LINEAR) const
Rectifies a raw image using the precomputed rectification maps.
+
unsigned int deserialize(const unsigned char *data, unsigned int dataSize)
Deserializes a camera model from a raw byte buffer.
+
cv::Mat rectifyDepth(const cv::Mat &raw) const
Rectifies a raw depth image using the precomputed rectification maps.
+
bool load(const std::string &filePath, bool initRectificationMaps=true)
Loads the camera model parameters from a YAML calibration file.
+
CameraModel roi(const cv::Rect &roi) const
Returns a new camera model adjusted for a given region of interest (ROI).
+
bool isFisheye() const
Checks if the distortion model is fisheye (6 coefficients: k1,k2,0,0,k3,k4).
+
void setName(const std::string &name)
Sets the camera name, used to set a camera name when saving to a file.
+
void setImageSize(const cv::Size &size)
Sets the image size of the camera model and updates the principal point if undefined.
+
bool isValidForRectification() const
Checks if the model has sufficient data for image rectification.
+
CameraModel(const std::string &name, const cv::Size &imageSize, const cv::Mat &K, const cv::Mat &D, const cv::Mat &R, const cv::Mat &P, const Transform &localTransform=opticalRotation())
Constructor using full camera parameters.
+
unsigned int deserialize(const std::vector< unsigned char > &data)
Deserializes a camera model from a byte vector.
+
cv::Mat D() const
Returns the rectified distortion coefficients (1x5 filled with zeros) if the projection matrix P exis...
+
bool initRectificationMap()
Initializes the rectification maps used to undistort and rectify images.
+
std::vector< unsigned char > serialize() const
Serializes the camera model to a binary format.
+
cv::Mat K() const
Returns the rectified camera intrinsic matrix if the projection matrix P exists, otherwise returns th...
+
void reproject(float x, float y, float z, float &u, float &v) const
Reprojects a 3D point in the camera frame (/camera_link) into 2D image coordinates (floating-point).
+
double Tx() const
Returns the x translation (usually fx * baseline in case of stereo, otherwise would be 0).
+
CameraModel(const std::string &name, double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))
Minimal constructor with name for saving.
+
bool isValidForProjection() const
Checks if the model is valid for 2D->3D projection.
+
bool isRectificationMapInitialized() const
Checks if the rectification map has been initialized.
+
cv::Mat D_raw() const
Returns the raw distortion coefficients (before rectification).
+
const Transform & localTransform() const
Returns the local transform (base frame to optical frame).
+
void reproject(float x, float y, float z, int &u, int &v) const
Reprojects a 3D point in the camera frame (/camera_link) into 2D image coordinates (rounded to int).
+
bool inFrame(int u, int v) const
Checks if a given pixel coordinate lies within the image bounds.
+
void setLocalTransform(const Transform &transform)
Sets the local transform of the camera (base frame to optical frame).
+
const std::string & name() const
Returns the camera name.
+
double cy() const
Returns principal point y.
+
CameraModel(double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))
Minimal constructor using intrinsic parameters. This assumes the images are already rectified.
+
bool save(const std::string &directory) const
Saves the camera model parameters to a YAML calibration file in ROS format.
+
bool isValidForReprojection() const
Checks if the model is valid for 3D->2D reprojection.
+
bool load(const std::string &directory, const std::string &cameraName, bool initRectificationMaps=true)
Loads the camera model by constructing a file path from a directory and camera name.
+
double fovX() const
Returns the horizontal field of view (FoV) in radians.
+
double fy() const
Returns focal length in y.
+
cv::Mat P() const
Returns the projection matrix.
+
double fx() const
Returns focal length in x.
+
cv::Mat R() const
Returns the rectification matrix.
+
cv::Mat K_raw() const
Returns the raw intrinsic matrix (before rectification).
+
CameraModel()
Default constructor.
+
CameraModel scaled(double scale) const
Returns a new camera model with all intrinsic parameters scaled by a given factor.
+
double fovY() const
Returns the vertical field of view (FoV) in radians.
+
double verticalFOV() const
Returns the vertical field of view in degrees.
+
virtual ~CameraModel()
Destructor.
+
double cx() const
Returns principal point x.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
RTABMAP_CORE_EXPORT std::ostream & operator<<(std::ostream &os, const CameraModel &model)
Stream operator for printing a camera model to an output stream.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraMyntEye_8h_source.html b/preview/pr-1773/api/latest/CameraMyntEye_8h_source.html new file mode 100644 index 00000000..096142ba --- /dev/null +++ b/preview/pr-1773/api/latest/CameraMyntEye_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraMyntEye.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraMyntEye.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/Camera.h"
+
31#include "rtabmap/core/Version.h"
+
32#include "rtabmap/utilite/USemaphore.h"
+
33#include <memory>
+
34
+
35namespace mynteye {
+
36class Device;
+
37class API;
+
38}
+
39
+
40namespace rtabmap
+
41{
+
42
+
+
47class RTABMAP_CORE_EXPORT CameraMyntEye : public Camera
+
48{
+
49public:
+
50 static bool available();
+
51
+
52public:
+
53 CameraMyntEye(const std::string & device = "", bool apiRectification = false, bool apiDepth = false, float imageRate = 0, const Transform & localTransform = Transform::getIdentity());
+
54 virtual ~CameraMyntEye();
+
55
+
56 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
57 virtual bool isCalibrated() const;
+
58 virtual std::string getSerial() const;
+
59 virtual bool odomProvided() const { return false; }
+
60
+
61 void publishInterIMU(bool enabled);
+
62 void setAutoExposure();
+
63 void setManualExposure(int gain=24, int brightness=120, int constrast=116);
+
64 void setIrControl(int value);
+
65
+
66protected:
+ +
71
+
72private:
+
73#ifdef RTABMAP_MYNTEYE
+
74 double hardTimeToSoftTime(std::uint64_t hardTime);
+
75 void getPoseAndIMU(const double & stamp, IMU & imu, int maxWaitTimeMs = 35) const;
+
76 double checkUpTimeStamp(std::uint64_t _hard_time, std::uint8_t stream);
+
77
+
78 std::shared_ptr<mynteye::Device> device_;
+
79 std::shared_ptr<mynteye::API> api_;
+
80 StereoCameraModel stereoModel_;
+
81 std::string deviceName_;
+
82 bool apiRectification_;
+
83 bool apiDepth_;
+
84 bool autoExposure_;
+
85 int gain_;
+
86 int brightness_;
+
87 int contrast_;
+
88 int irControl_;
+
89 USemaphore dataReady_;
+
90 UMutex dataMutex_;
+
91 cv::Mat leftFrameBuffer_;
+
92 cv::Mat rightFrameBuffer_;
+
93 std::pair<cv::Mat, cv::Mat> lastFrames_;
+
94 double lastFramesStamp_;
+
95 std::uint64_t stamp_;
+
96 bool publishInterIMU_;
+
97 Transform imuLocalTransform_;
+
98 std::map<double, std::pair<cv::Vec3f, cv::Vec3f> > imuBuffer_;
+
99 UMutex imuMutex_;
+
100
+
101 double softTimeBegin_;
+
102 std::uint64_t hardTimeBegin_;
+
103 std::uint64_t unitHardTime_;
+
104 std::vector<std::uint64_t> lastHardTimes_;
+
105 std::vector<std::uint64_t> acc_;
+
106#endif
+
107};
+
+
108
+
109
+
110} // namespace rtabmap
+ + + +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual SensorData captureImage(SensorCaptureInfo *info=0)
+ +
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraOpenNI2_8h_source.html b/preview/pr-1773/api/latest/CameraOpenNI2_8h_source.html new file mode 100644 index 00000000..5c1d29da --- /dev/null +++ b/preview/pr-1773/api/latest/CameraOpenNI2_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraOpenNI2.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraOpenNI2.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/StereoCameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34namespace openni
+
35{
+
36class Device;
+
37class VideoStream;
+
38}
+
39
+
40namespace rtabmap
+
41{
+
+
42class RTABMAP_CORE_EXPORT CameraOpenNI2 :
+
43 public Camera
+
44{
+
45
+
46public:
+
47 static bool available();
+
48 static bool exposureGainAvailable();
+
49 enum Type {kTypeColorDepth, kTypeIRDepth, kTypeIR};
+
50
+
51public:
+
52 CameraOpenNI2(const std::string & deviceId = "",
+
53 Type type = kTypeColorDepth,
+
54 float imageRate = 0,
+
55 const Transform & localTransform = Transform::getIdentity());
+
56 virtual ~CameraOpenNI2();
+
57
+
58 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
59 virtual bool isCalibrated() const;
+
60 virtual std::string getSerial() const;
+
61
+
62 bool setAutoWhiteBalance(bool enabled);
+
63 bool setAutoExposure(bool enabled);
+
64 bool setExposure(int value);
+
65 bool setGain(int value);
+
66 bool setMirroring(bool enabled);
+
67 void setOpenNI2StampsAndIDsUsed(bool used);
+
68 void setIRDepthShift(int horizontal, int vertical);
+
69 void setDepthDecimation(int decimation);
+
70
+
71protected:
+
72 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
73
+
74private:
+
75#ifdef RTABMAP_OPENNI2
+
76 Type _type;
+
77 openni::Device * _device;
+
78 openni::VideoStream * _color;
+
79 openni::VideoStream * _depth;
+
80 float _depthFx;
+
81 float _depthFy;
+
82 std::string _deviceId;
+
83 bool _openNI2StampsAndIDsUsed;
+
84 StereoCameraModel _stereoModel;
+
85 int _depthHShift;
+
86 int _depthVShift;
+
87 int _depthDecimation;
+
88#endif
+
89};
+
+
90
+
91
+
92
+
93} // namespace rtabmap
+ +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraOpenNICV_8h_source.html b/preview/pr-1773/api/latest/CameraOpenNICV_8h_source.html new file mode 100644 index 00000000..045a82e1 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraOpenNICV_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraOpenNICV.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraOpenNICV.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/Camera.h"
+
31#include "rtabmap/core/Version.h"
+
32
+
33namespace rtabmap
+
34{
+
35
+
+
36class RTABMAP_CORE_EXPORT CameraOpenNICV :
+
37 public Camera
+
38{
+
39
+
40public:
+
41 static bool available();
+
42
+
43public:
+
44 CameraOpenNICV(bool asus = false,
+
45 float imageRate = 0,
+
46 const Transform & localTransform = Transform::getIdentity());
+
47 virtual ~CameraOpenNICV();
+
48
+
49 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
50 virtual bool isCalibrated() const;
+
51 virtual std::string getSerial() const {return "";} // unknown with OpenCV
+
52
+
53protected:
+
54 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
55
+
56private:
+
57 bool _asus;
+
58 cv::VideoCapture _capture;
+
59 float _depthFocal;
+
60};
+
+
61
+
62} // namespace rtabmap
+ +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraOpenni_8h_source.html b/preview/pr-1773/api/latest/CameraOpenni_8h_source.html new file mode 100644 index 00000000..3f64a5b5 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraOpenni_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraOpenni.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraOpenni.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/utilite/UMutex.h"
+
31#include "rtabmap/utilite/USemaphore.h"
+
32#include "rtabmap/core/Camera.h"
+
33#include "rtabmap/core/Version.h"
+
34
+
35#include <pcl/pcl_config.h>
+
36
+
37#ifdef RTABMAP_OPENNI
+
38#if __linux__ && __i386__ && __cplusplus >= 201103L
+
39#warning "Openni driver is not available on i386 when building with c++11 support"
+
40#endif
+
41#include <pcl/io/openni_camera/openni_depth_image.h>
+
42#include <pcl/io/openni_camera/openni_image.h>
+
43#endif
+
44
+
45#include <boost/signals2/connection.hpp>
+
46
+
47namespace pcl
+
48{
+
49class Grabber;
+
50}
+
51
+
52namespace rtabmap
+
53{
+
+
57class RTABMAP_CORE_EXPORT CameraOpenni :
+
58 public Camera
+
59{
+
60public:
+
61 static bool available();
+
62
+
63public:
+
64 // default local transform z in, x right, y down));
+
65 CameraOpenni(const std::string & deviceId="",
+
66 float imageRate = 0,
+
67 const Transform & localTransform = Transform::getIdentity());
+
68 virtual ~CameraOpenni();
+
69#ifdef RTABMAP_OPENNI
+
70#if PCL_VERSION_COMPARE(>=, 1, 10, 0)
+
71 void image_cb (
+
72 const std::shared_ptr<openni_wrapper::Image>& rgb,
+
73 const std::shared_ptr<openni_wrapper::DepthImage>& depth,
+
74 float constant);
+
75#else
+
76 void image_cb (
+
77 const boost::shared_ptr<openni_wrapper::Image>& rgb,
+
78 const boost::shared_ptr<openni_wrapper::DepthImage>& depth,
+
79 float constant);
+
80#endif
+
81#endif
+
82
+
83 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
84 virtual bool isCalibrated() const;
+
85 virtual std::string getSerial() const;
+
86
+
87protected:
+
88 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
89
+
90private:
+
91 pcl::Grabber* interface_;
+
92 std::string deviceId_;
+
93 boost::signals2::connection connection_;
+
94 cv::Mat depth_;
+
95 cv::Mat rgb_;
+
96 float depthConstant_;
+
97 UMutex dataMutex_;
+
98 USemaphore dataReady_;
+
99};
+
+
100
+
101} // namespace rtabmap
+ + +
OpenNI driver for cameras like Kinect for Xbox 360.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraOrbbecSDK_8h_source.html b/preview/pr-1773/api/latest/CameraOrbbecSDK_8h_source.html new file mode 100644 index 00000000..a54218d6 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraOrbbecSDK_8h_source.html @@ -0,0 +1,236 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraOrbbecSDK.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraOrbbecSDK.h
+
+
+
1/*
+
2Copyright (c) 2010-2025, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/CameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34#ifdef RTABMAP_ORBBEC_SDK
+
35namespace ob
+
36{
+
37 class Pipeline;
+
38 class Align;
+
39}
+
40#endif
+
41
+
42namespace rtabmap
+
43{
+
44
+
+
45class RTABMAP_CORE_EXPORT CameraOrbbecSDK :
+
46 public Camera
+
47{
+
48public:
+
49 static bool available();
+
50
+
51public:
+
52 // deviceId can be either an index (e.g., "0"), an UID (e.g, "2-1-2" or "gmsl-1") or a serial ("AAA6454S")
+ +
54 std::string deviceId = "",
+
55 unsigned int colorWidth = 800,
+
56 unsigned int colorHeight = 600,
+
57 unsigned int depthWidth = 800,
+
58 unsigned int depthHeight = 600,
+
59 float imageRate = 0.0f,
+
60 const Transform & localTransform = Transform::getIdentity());
+
61 virtual ~CameraOrbbecSDK();
+
62
+
63 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
64 virtual bool isCalibrated() const;
+
65 virtual std::string getSerial() const;
+
66
+
67 void close();
+
68
+
69 // Should be set before initializing
+
70 void enableColorRectification(bool enabled);
+
71 void enableImu(bool enabled);
+
72
+
73 void enableDepthMM(bool enabled);
+
74
+
75protected:
+
76 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
77
+
78private:
+
79
+
80#ifdef RTABMAP_ORBBEC_SDK
+
81 std::string deviceId_;
+
82 unsigned int colorWidth_;
+
83 unsigned int colorHeight_;
+
84 unsigned int depthWidth_;
+
85 unsigned int depthHeight_;
+
86 ob::Pipeline * pipeline_;
+
87 ob::Pipeline * imuPipeline_;
+
88 ob::Align * alignFilter_;
+
89 CameraModel model_;
+
90 Transform imuLocalTransform_;
+
91 bool imuLocalTransformInitialized_;
+
92 uint64_t lastAccStamp_;
+
93 uint64_t lastImageStamp_;
+
94 bool globalTimestampAvailable_;
+
95 bool rectifyColor_;
+
96 bool convertDepthToMM_;
+
97 bool imuPublished_;
+
98 std::map<double, cv::Vec6f> imuBuffer_;
+
99 UMutex imuMutex_;
+
100#endif
+
101
+
102};
+
+
103
+
104
+
105} // namespace rtabmap
+ +
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+ +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraRGBDImages_8h_source.html b/preview/pr-1773/api/latest/CameraRGBDImages_8h_source.html new file mode 100644 index 00000000..296a511e --- /dev/null +++ b/preview/pr-1773/api/latest/CameraRGBDImages_8h_source.html @@ -0,0 +1,188 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraRGBDImages.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraRGBDImages.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <rtabmap/core/camera/CameraImages.h>
+
31
+
32namespace rtabmap
+
33{
+
34
+
+
35class RTABMAP_CORE_EXPORT CameraRGBDImages :
+
36 public CameraImages
+
37{
+
38public:
+
39 static bool available();
+
40
+
41public:
+ +
43 const std::string & pathRGBImages,
+
44 const std::string & pathDepthImages,
+
45 float depthScaleFactor = 1.0f,
+
46 float imageRate=0.0f,
+
47 const Transform & localTransform = Transform::getIdentity());
+
48 virtual ~CameraRGBDImages();
+
49
+
50 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
51
+
52 virtual void setStartIndex(int index) {CameraImages::setStartIndex(index);cameraDepth_.setStartIndex(index);} // negative means last
+
53 virtual void setMaxFrames(int value) {CameraImages::setMaxFrames(value);cameraDepth_.setMaxFrames(value);}
+
54
+
55protected:
+
56 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
57
+
58private:
+
59 CameraImages cameraDepth_;
+
60};
+
+
61
+
62} // namespace rtabmap
+ + +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraRGBD_8h_source.html b/preview/pr-1773/api/latest/CameraRGBD_8h_source.html new file mode 100644 index 00000000..40ebbcaa --- /dev/null +++ b/preview/pr-1773/api/latest/CameraRGBD_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/CameraRGBD.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraRGBD.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <rtabmap/core/camera/CameraFreenect.h>
+
31#include <rtabmap/core/camera/CameraFreenect2.h>
+
32#include <rtabmap/core/camera/CameraK4W2.h>
+
33#include <rtabmap/core/camera/CameraOpenni.h>
+
34#include <rtabmap/core/camera/CameraOpenNI2.h>
+
35#include <rtabmap/core/camera/CameraOpenNICV.h>
+
36#include <rtabmap/core/camera/CameraRealSense.h>
+
37#include <rtabmap/core/camera/CameraRealSense2.h>
+
38#include <rtabmap/core/camera/CameraRGBDImages.h>
+
39#include <rtabmap/core/camera/CameraK4A.h>
+
40#include <rtabmap/core/camera/CameraSeerSense.h>
+
41#include <rtabmap/core/camera/CameraOrbbecSDK.h>
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraRGB_8h_source.html b/preview/pr-1773/api/latest/CameraRGB_8h_source.html new file mode 100644 index 00000000..aa8d9848 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraRGB_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/CameraRGB.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraRGB.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <rtabmap/core/camera/CameraImages.h>
+
31#include <rtabmap/core/camera/CameraVideo.h>
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraRealSense2_8h_source.html b/preview/pr-1773/api/latest/CameraRealSense2_8h_source.html new file mode 100644 index 00000000..f26d949e --- /dev/null +++ b/preview/pr-1773/api/latest/CameraRealSense2_8h_source.html @@ -0,0 +1,288 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraRealSense2.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraRealSense2.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/CameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34#include <pcl/pcl_config.h>
+
35
+
36#ifdef RTABMAP_REALSENSE2
+
37#include <librealsense2/rs.hpp>
+
38#include <librealsense2/hpp/rs_frame.hpp>
+
39#endif
+
40
+
41
+
42namespace rs2
+
43{
+
44 class context;
+
45 class device;
+
46 class syncer;
+
47}
+
48struct rs2_intrinsics;
+
49struct rs2_extrinsics;
+
50
+
51namespace rtabmap
+
52{
+
53
+
+
54class RTABMAP_CORE_EXPORT CameraRealSense2 :
+
55 public Camera
+
56{
+
57public:
+
58 static bool available();
+
59
+
60public:
+ +
62 const std::string & deviceId = "",
+
63 float imageRate = 0,
+
64 const Transform & localTransform = Transform::getIdentity());
+
65 virtual ~CameraRealSense2();
+
66
+
67 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
68 virtual bool isCalibrated() const;
+
69 virtual std::string getSerial() const;
+
70 virtual bool odomProvided() const;
+
71 virtual bool getPose(double stamp, Transform & pose, cv::Mat & covariance, double maxWaitTime = 0.06);
+
72
+
73 // parameters are set during initialization
+
74 // D400 series
+
75 void setEmitterEnabled(bool enabled);
+
76 void setIRFormat(bool enabled, bool useDepthInsteadOfRightImage);
+
77 void setResolution(int width, int height, int fps = 30);
+
78 void setDepthResolution(int width, int height, int fps = 30);
+
79 void setGlobalTimeSync(bool enabled);
+
80
+
86 void setDualMode(bool enabled, const Transform & extrinsics);
+
87 void setJsonConfig(const std::string & json);
+
88 // T265 related parameters
+
89 void setImagesRectified(bool enabled);
+
90 void setOdomProvided(bool enabled, bool imageStreamsDisabled=false, bool onlyLeftStream = false);
+
91
+
92#ifdef RTABMAP_REALSENSE2
+
93private:
+
94 void close();
+
95 void imu_callback(rs2::frame frame);
+
96 void pose_callback(rs2::frame frame);
+
97 void frame_callback(rs2::frame frame);
+
98 void multiple_message_callback(rs2::frame frame);
+
99 void getPoseAndIMU(
+
100 const double & stamp,
+
101 Transform & pose,
+
102 unsigned int & poseConfidence,
+
103 IMU & imu,
+
104 int maxWaitTimeMs = 35);
+
105#endif
+
106
+
107protected:
+
108 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
109
+
110private:
+
111#ifdef RTABMAP_REALSENSE2
+
112 rs2::context ctx_;
+
113 std::vector<rs2::device> dev_;
+
114 std::string deviceId_;
+
115 rs2::syncer syncer_;
+
116 float depth_scale_meters_;
+
117 cv::Mat depthBuffer_;
+
118 cv::Mat rgbBuffer_;
+
119 CameraModel model_;
+
120 StereoCameraModel stereoModel_;
+
121 Transform imuLocalTransform_;
+
122 std::map<double, cv::Vec3f> accBuffer_;
+
123 std::map<double, cv::Vec3f> gyroBuffer_;
+
124 std::map<double, std::pair<Transform, unsigned int> > poseBuffer_; // <stamp, <Pose, confidence: 1=lost, 2=low, 3=high> >
+
125 UMutex poseMutex_;
+
126 UMutex imuMutex_;
+
127 double lastImuStamp_;
+
128 bool clockSyncWarningShown_;
+
129 bool imuGlobalSyncWarningShown_;
+
130
+
131 bool emitterEnabled_;
+
132 bool ir_;
+
133 bool irDepth_;
+
134 bool rectifyImages_;
+
135 bool odometryProvided_;
+
136 bool odometryImagesDisabled_;
+
137 bool odometryOnlyLeftStream_;
+
138 int cameraWidth_;
+
139 int cameraHeight_;
+
140 int cameraFps_;
+
141 int cameraDepthWidth_;
+
142 int cameraDepthHeight_;
+
143 int cameraDepthFps_;
+
144 bool globalTimeSync_;
+
145 bool dualMode_;
+
146 Transform dualExtrinsics_;
+
147 std::string jsonConfig_;
+
148 bool closing_;
+
149 bool playback_;
+
150
+
151 static Transform realsense2PoseRotation_;
+
152 static Transform realsense2PoseRotationInv_;
+
153#endif
+
154};
+
+
155
+
156
+
157} // namespace rtabmap
+ +
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+ +
virtual bool getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
Gets the sensor's pose estimate at a specific timestamp.
+
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
void setDualMode(bool enabled, const Transform &extrinsics)
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraRealSense_8h_source.html b/preview/pr-1773/api/latest/CameraRealSense_8h_source.html new file mode 100644 index 00000000..64ee2874 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraRealSense_8h_source.html @@ -0,0 +1,234 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraRealSense.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraRealSense.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/utilite/UMutex.h"
+
31#include "rtabmap/utilite/USemaphore.h"
+
32#include "rtabmap/core/CameraModel.h"
+
33#include "rtabmap/core/Camera.h"
+
34#include "rtabmap/core/Version.h"
+
35
+
36namespace rs
+
37{
+
38 class context;
+
39 class device;
+
40 namespace slam {
+
41 class slam;
+
42 }
+
43}
+
44
+
45namespace rtabmap
+
46{
+
47
+
48class slam_event_handler;
+
+
49class RTABMAP_CORE_EXPORT CameraRealSense :
+
50 public Camera
+
51{
+
52public:
+
53 static bool available();
+
54 enum RGBSource {kColor, kInfrared, kFishEye};
+
55
+
56public:
+
57 // default local transform z in, x right, y down));
+ +
59 int deviceId = 0,
+
60 int presetRGB = 0, // 0=best quality, 1=largest image, 2=highest framerate
+
61 int presetDepth = 0, // 0=best quality, 1=largest image, 2=highest framerate
+
62 bool computeOdometry = false,
+
63 float imageRate = 0,
+
64 const Transform & localTransform = Transform::getIdentity());
+
65 virtual ~CameraRealSense();
+
66
+
67 void setDepthScaledToRGBSize(bool enabled);
+
68 void setRGBSource(RGBSource source);
+
69 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
70 virtual bool isCalibrated() const;
+
71 virtual std::string getSerial() const;
+
72 virtual bool odomProvided() const;
+
73
+
74protected:
+
75 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
76
+
77private:
+
78#ifdef RTABMAP_REALSENSE
+
79 rs::context * ctx_;
+
80 rs::device * dev_;
+
81 int deviceId_;
+
82 int presetRGB_;
+
83 int presetDepth_;
+
84 bool computeOdometry_;
+
85 bool depthScaledToRGBSize_;
+
86 RGBSource rgbSource_;
+
87 CameraModel cameraModel_;
+
88 std::vector<int> rsRectificationTable_;
+
89
+
90 int motionSeq_[2];
+
91 rs::slam::slam * slam_;
+
92 UMutex slamLock_;
+
93
+
94 std::map<double, std::pair<cv::Mat, cv::Mat> > bufferedFrames_;
+
95 std::pair<cv::Mat, cv::Mat> lastSyncFrames_;
+
96 UMutex dataMutex_;
+
97 USemaphore dataReady_;
+
98#endif
+
99};
+
+
100
+
101} // namespace rtabmap
+ + +
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+ +
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraSeerSense_8h_source.html b/preview/pr-1773/api/latest/CameraSeerSense_8h_source.html new file mode 100644 index 00000000..76e19b6d --- /dev/null +++ b/preview/pr-1773/api/latest/CameraSeerSense_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraSeerSense.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraSeerSense.h
+
+
+
1#pragma once
+
2
+
3#include "rtabmap/core/Camera.h"
+
4#include "rtabmap/core/Version.h"
+
5#include "rtabmap/utilite/USemaphore.h"
+
6
+
7#ifdef RTABMAP_XVSDK
+
8#include <xv-sdk.h>
+
9#endif
+
10
+
11namespace rtabmap
+
12{
+
13
+
+
14class RTABMAP_CORE_EXPORT CameraSeerSense :
+
15 public Camera
+
16{
+
17public:
+
18 static bool available();
+
19
+
20public:
+ +
22 bool computeOdometry = false,
+
23 float imageRate = 0.0f,
+
24 const Transform & localTransform = Transform::getIdentity()
+
25 );
+
26 virtual ~CameraSeerSense();
+
27
+
28 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
29 virtual bool isCalibrated() const;
+
30 virtual std::string getSerial() const;
+
31 virtual bool odomProvided() const;
+
32 virtual bool getPose(double stamp, Transform & pose, cv::Mat & covariance, double maxWaitTime = 0.0);
+
33
+
34protected:
+
35 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
36
+
37private:
+
38#ifdef RTABMAP_XVSDK
+
39 CameraModel cameraModel_;
+
40 bool computeOdometry_;
+
41 int imuId_;
+
42 int tofId_;
+
43 std::shared_ptr<xv::Device> device_;
+
44 std::map<double, std::pair<cv::Vec3d, cv::Vec3d>> imuBuffer_;
+
45 std::pair<double, std::pair<cv::Mat, cv::Mat>> lastData_;
+
46 UMutex imuMutex_;
+
47 UMutex dataMutex_;
+
48 USemaphore dataReady_;
+
49#endif
+
50};
+
+
51
+
52} // namespace rtabmap
+ + +
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+ +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual bool getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.0)
Gets the sensor's pose estimate at a specific timestamp.
+
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereoDC1394_8h_source.html b/preview/pr-1773/api/latest/CameraStereoDC1394_8h_source.html new file mode 100644 index 00000000..6d55389e --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereoDC1394_8h_source.html @@ -0,0 +1,194 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraStereoDC1394.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereoDC1394.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/StereoCameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34namespace rtabmap
+
35{
+
36
+
37class DC1394Device;
+
38
+
+
39class RTABMAP_CORE_EXPORT CameraStereoDC1394 :
+
40 public Camera
+
41{
+
42public:
+
43 static bool available();
+
44
+
45public:
+
46 CameraStereoDC1394( float imageRate=0.0f, const Transform & localTransform = Transform::getIdentity());
+
47 virtual ~CameraStereoDC1394();
+
48
+
49 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
50 virtual bool isCalibrated() const;
+
51 virtual std::string getSerial() const;
+
52
+
53protected:
+
54 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
55
+
56private:
+
57#ifdef RTABMAP_DC1394
+
58 DC1394Device *device_;
+
59 StereoCameraModel stereoModel_;
+
60#endif
+
61};
+
+
62
+
63
+
64} // namespace rtabmap
+ +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereoFlyCapture2_8h_source.html b/preview/pr-1773/api/latest/CameraStereoFlyCapture2_8h_source.html new file mode 100644 index 00000000..81566e93 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereoFlyCapture2_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraStereoFlyCapture2.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereoFlyCapture2.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/Camera.h"
+
31#include "rtabmap/core/Version.h"
+
32
+
33namespace FlyCapture2
+
34{
+
35class Camera;
+
36}
+
37
+
38namespace rtabmap
+
39{
+
40
+
+
41class RTABMAP_CORE_EXPORT CameraStereoFlyCapture2 :
+
42 public Camera
+
43{
+
44public:
+
45 static bool available();
+
46
+
47public:
+
48 CameraStereoFlyCapture2( float imageRate=0.0f, const Transform & localTransform = Transform::getIdentity());
+ +
50
+
51 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
52 virtual bool isCalibrated() const;
+
53 virtual std::string getSerial() const;
+
54
+
55protected:
+
56 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
57
+
58private:
+
59#ifdef RTABMAP_FLYCAPTURE2
+
60 FlyCapture2::Camera * camera_;
+
61 void * triclopsCtx_; // TriclopsContext
+
62#endif
+
63};
+
+
64
+
65
+
66} // namespace rtabmap
+ +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereoImages_8h_source.html b/preview/pr-1773/api/latest/CameraStereoImages_8h_source.html new file mode 100644 index 00000000..38c8b490 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereoImages_8h_source.html @@ -0,0 +1,230 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraStereoImages.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereoImages.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <rtabmap/core/camera/CameraImages.h>
+
31
+
32#include "rtabmap/core/StereoCameraModel.h"
+
33#include "rtabmap/core/Version.h"
+
34
+
35namespace rtabmap
+
36{
+
37
+
38class CameraImages;
+
+
39class RTABMAP_CORE_EXPORT CameraStereoImages :
+
40 public CameraImages
+
41{
+
42public:
+
43 static bool available();
+
44
+
45public:
+ +
47 const std::string & pathLeftImages,
+
48 const std::string & pathRightImages,
+
49 bool rectifyImages = false,
+
50 float imageRate=0.0f,
+
51 const Transform & localTransform = Transform::getIdentity());
+ +
53 const std::string & pathLeftRightImages,
+
54 bool rectifyImages = false,
+
55 float imageRate=0.0f,
+
56 const Transform & localTransform = Transform::getIdentity());
+
57 virtual ~CameraStereoImages();
+
58
+
59 void setRightGrayScale(bool enabled = true) {rightGrayScale_ = enabled;}
+
60
+
61 // Enable multi-camera stereo mode. Each left/right image in the folders is
+
62 // expected to be the horizontal concatenation of N sub-camera images of a
+
63 // stereo rig, all sharing the same base name (timestamp or node id), e.g.
+
64 // "1779318290.502227.jpg". Two calibration files per sub-camera must exist in
+
65 // the calibrationFolder passed to init(), named "<prefix>_<index>_left.yaml"
+
66 // and "<prefix>_<index>_right.yaml" with index starting at 0. The number of
+
67 // cameras is auto-detected. Sub-images are split using a uniform width
+
68 // (stackedWidth / N).
+
69 // If setConfigForEachFrame() is enabled, one calibration set is loaded per frame
+
70 // using each image's base name as prefix. Otherwise a single calibration set is
+
71 // loaded and reused for all frames, using the cameraName passed to init() as
+
72 // prefix (it may differ from any image name), falling back to the first image's
+
73 // base name when cameraName is empty.
+
74 // Note that it is not recommended to use setConfigForEachFrame() if images have
+
75 // to be rectified, a rectification matrix would need to be re-initilaized for each
+
76 // frame.
+
77 void setMultiCameraCalibration(bool enabled) {CameraImages::setMultiCameraCalibration(enabled);}
+
78
+
79 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
80 virtual bool isCalibrated() const;
+
81 virtual std::string getSerial() const;
+
82
+
83 virtual void setStartIndex(int index) {CameraImages::setStartIndex(index);camera2_->setStartIndex(index);} // negative means last
+
84 virtual void setMaxFrames(int value) {CameraImages::setMaxFrames(value);camera2_->setMaxFrames(value);}
+
85
+
86protected:
+
87 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
88
+
89private:
+
90 // Load the sub-camera stereo models of a frame from calibration files named
+
91 // "<baseName>_<index>_{left,right}.yaml" (index 0.._multiCameraCount-1) in
+
92 // _calibrationFolder. Returns an empty vector (and logs an error) on failure.
+
93 std::vector<StereoCameraModel> loadStereoCameraModels(const std::string & baseName, bool rectify) const;
+
94
+
95private:
+
96 CameraImages * camera2_;
+
97 StereoCameraModel stereoModel_;
+
98 bool rightGrayScale_;
+
99 std::vector<StereoCameraModel> multiStereoModels_; // sub-camera stereo models shared by all frames (multi-camera mode); empty when loaded per-frame
+
100};
+
+
101
+
102
+
103} // namespace rtabmap
+ + +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereoTara_8h_source.html b/preview/pr-1773/api/latest/CameraStereoTara_8h_source.html new file mode 100644 index 00000000..f109f762 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereoTara_8h_source.html @@ -0,0 +1,198 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraStereoTara.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereoTara.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
33#pragma once
+
34
+
35#include "rtabmap/core/StereoCameraModel.h"
+
36#include "rtabmap/core/camera/CameraVideo.h"
+
37#include "rtabmap/core/Version.h"
+
38
+
39
+
40namespace rtabmap
+
41{
+
42
+
+
43class RTABMAP_CORE_EXPORT CameraStereoTara :
+
44public Camera
+
45{
+
46public:
+
47 static bool available();
+
48public:
+
49
+ +
51 int device,
+
52 bool rectifyImages = false,
+
53 float imageRate = 0.0f,
+
54 const Transform & localTransform = Transform::getIdentity());
+
55
+
56 virtual ~CameraStereoTara();
+
57
+
58 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
59 virtual bool isCalibrated() const;
+
60 virtual std::string getSerial() const;
+
61
+
62protected:
+
63 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
64
+
65private:
+
66 cv::VideoCapture capture_;
+
67 bool rectifyImages_;
+
68 StereoCameraModel stereoModel_;
+
69 std::string cameraName_;
+
70 int usbDevice_;
+
71};
+
+
72
+
73} // namespace rtabmap
+ +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereoVideo_8h_source.html b/preview/pr-1773/api/latest/CameraStereoVideo_8h_source.html new file mode 100644 index 00000000..629e0524 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereoVideo_8h_source.html @@ -0,0 +1,222 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraStereoVideo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereoVideo.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/StereoCameraModel.h"
+
31#include "rtabmap/core/camera/CameraVideo.h"
+
32
+
33namespace rtabmap
+
34{
+
35
+
+
36class RTABMAP_CORE_EXPORT CameraStereoVideo :
+
37 public Camera
+
38{
+
39public:
+
40 static bool available();
+
41
+
42public:
+ +
44 const std::string & pathSideBySide,
+
45 bool rectifyImages = false,
+
46 float imageRate=0.0f,
+
47 const Transform & localTransform = Transform::getIdentity());
+ +
49 const std::string & pathLeft,
+
50 const std::string & pathRight,
+
51 bool rectifyImages = false,
+
52 float imageRate=0.0f,
+
53 const Transform & localTransform = Transform::getIdentity());
+ +
55 int device,
+
56 bool rectifyImages = false,
+
57 float imageRate = 0.0f,
+
58 const Transform & localTransform = Transform::getIdentity());
+ +
60 int deviceLeft,
+
61 int deviceRight,
+
62 bool rectifyImages = false,
+
63 float imageRate = 0.0f,
+
64 const Transform & localTransform = Transform::getIdentity());
+
65 virtual ~CameraStereoVideo();
+
66
+
67 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
68 virtual bool isCalibrated() const;
+
69 virtual std::string getSerial() const;
+
70
+
71 void setResolution(int width, int height) {_width=width, _height=height;}
+
72 void setFOURCC(const std::string & fourcc) { _fourcc = fourcc; }
+
73 void setRightGrayScale(bool enabled = true) {rightGrayScale_ = enabled;}
+
74
+
75protected:
+
76 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
77
+
78private:
+
79 cv::VideoCapture capture_;
+
80 cv::VideoCapture capture2_;
+
81 std::string path_;
+
82 std::string path2_;
+
83 bool rectifyImages_;
+
84 StereoCameraModel stereoModel_;
+
85 std::string cameraName_;
+
86 CameraVideo::Source src_;
+
87 int usbDevice_;
+
88 int usbDevice2_;
+
89 int _width;
+
90 int _height;
+
91 std::string _fourcc;
+
92 bool rightGrayScale_;
+
93};
+
+
94
+
95} // namespace rtabmap
+ +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereoZedOC_8h_source.html b/preview/pr-1773/api/latest/CameraStereoZedOC_8h_source.html new file mode 100644 index 00000000..6f2d2a9a --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereoZedOC_8h_source.html @@ -0,0 +1,214 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraStereoZedOC.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereoZedOC.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/StereoCameraModel.h"
+
31#include "rtabmap/core/Camera.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34namespace sl_oc {
+
35namespace video {
+
36class VideoCapture;
+
37}
+
38namespace sensors {
+
39class SensorCapture;
+
40}
+
41}
+
42
+
43namespace rtabmap
+
44{
+
45class ZedOCThread;
+
46
+
+
47class RTABMAP_CORE_EXPORT CameraStereoZedOC :
+
48 public Camera
+
49{
+
50public:
+
51 static bool available();
+
52
+
53public:
+ +
55 int deviceId,
+
56 int resolution = 3, // 0=HD2K, 1=HD1080, 2=HD720, 3=VGA
+
57 float imageRate=0.0f,
+
58 const Transform & localTransform = Transform::getIdentity());
+
59 virtual ~CameraStereoZedOC();
+
60
+
61 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
62 virtual bool isCalibrated() const;
+
63 virtual std::string getSerial() const;
+
64
+
65 void setRightGrayScale(bool enabled = true);
+
66
+
67protected:
+
68 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
69
+
70private:
+
71#ifdef RTABMAP_ZEDOC
+
72 sl_oc::video::VideoCapture * zed_;
+
73 sl_oc::sensors::SensorCapture * sensors_;
+
74 ZedOCThread * imuThread_;
+
75 StereoCameraModel stereoModel_;
+
76 int usbDevice_;
+
77 int resolution_;
+
78 uint64_t lastStamp_;
+
79 bool rightGrayScale_;
+
80#endif
+
81};
+
+
82
+
83
+
84} // namespace rtabmap
+ +
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereoZed_8h_source.html b/preview/pr-1773/api/latest/CameraStereoZed_8h_source.html new file mode 100644 index 00000000..84475cde --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereoZed_8h_source.html @@ -0,0 +1,246 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraStereoZed.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereoZed.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/StereoCameraModel.h"
+
31#include "rtabmap/core/camera/CameraVideo.h"
+
32#include "rtabmap/core/Version.h"
+
33
+
34namespace sl
+
35{
+
36class Camera;
+
37}
+
38
+
39namespace rtabmap
+
40{
+
41class ZedIMUThread;
+
42
+
+
43class RTABMAP_CORE_EXPORT CameraStereoZed :
+
44 public Camera
+
45{
+
46public:
+
47 static bool available();
+
48 static int sdkVersion();
+
49public:
+ +
51 int deviceId,
+
52 int resolution = -1, // -1 = AUTO, 0=HD4K 1=QHDPLUS 2=HD2K 3=HD1536 4=HD1080 5=HD1200 6=HD720 7=SVGA 8=VGA 9=XVGA 10=TXVGA
+
53 int quality = 1, // 0=NONE, 1=PERFORMANCE, 2=QUALITY, 3=ULTRA, 4=NEURAL_LIGHT, 5=NEURAL, 6=NEURAL_ULTRA
+
54 int sensingMode = 0,// 0=STANDARD, 1=FILL
+
55 int confidenceThr = 100,
+
56 bool computeOdometry = false,
+
57 float imageRate=0.0f,
+
58 const Transform & localTransform = Transform::getIdentity(),
+
59 bool selfCalibration = true,
+
60 bool odomForce3DoF = false,
+
61 int texturenessConfidenceThr = 90); // introduced with ZED SDK 3
+ +
63 const std::string & svoFilePath,
+
64 int quality = 1, // 0=NONE, 1=PERFORMANCE, 2=QUALITY, 3=ULTRA, 4=NEURAL_LIGHT, 5=NEURAL, 6=NEURAL_ULTRA
+
65 int sensingMode = 0,// 0=STANDARD, 1=FILL
+
66 int confidenceThr = 100,
+
67 bool computeOdometry = false,
+
68 float imageRate=0.0f,
+
69 const Transform & localTransform = Transform::getIdentity(),
+
70 bool selfCalibration = true,
+
71 bool odomForce3DoF = false,
+
72 int texturenessConfidenceThr = 90); // introduced with ZED SDK 3
+
73 virtual ~CameraStereoZed();
+
74
+
75 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
76 virtual bool isCalibrated() const;
+
77 virtual std::string getSerial() const;
+
78 virtual bool odomProvided() const;
+
79 virtual bool getPose(double stamp, Transform & pose, cv::Mat & covariance, double maxWaitTime = 0.0);
+
80
+
81 void postInterIMUPublic(const IMU & imu, double stamp);
+
82 void setRightGrayScale(bool enabled = true);
+
83
+
91 static std::string getNeuralModelWarning(int quality);
+
92
+
93protected:
+
94 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
95
+
96private:
+
97#ifdef RTABMAP_ZED
+
98 sl::Camera * zed_;
+
99 StereoCameraModel stereoModel_;
+
100 Transform imuLocalTransform_;
+
101 CameraVideo::Source src_;
+
102 int usbDevice_;
+
103 std::string svoFilePath_;
+
104 int resolution_;
+
105 int quality_;
+
106 bool selfCalibration_;
+
107 int sensingMode_;
+
108 int confidenceThr_;
+
109 int texturenessConfidenceThr_; // introduced with ZED SDK 3
+
110 bool computeOdometry_;
+
111 bool lost_;
+
112 bool force3DoF_;
+
113 bool rightGrayScale_;
+
114 ZedIMUThread * imuPublishingThread_;
+
115#endif
+
116};
+
+
117
+
118
+
119} // namespace rtabmap
+ +
virtual bool getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.0)
Gets the sensor's pose estimate at a specific timestamp.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
static std::string getNeuralModelWarning(int quality)
+
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
+ +
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraStereo_8h_source.html b/preview/pr-1773/api/latest/CameraStereo_8h_source.html new file mode 100644 index 00000000..eac3362e --- /dev/null +++ b/preview/pr-1773/api/latest/CameraStereo_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/CameraStereo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraStereo.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <rtabmap/core/camera/CameraStereoDC1394.h>
+
31#include <rtabmap/core/camera/CameraStereoFlyCapture2.h>
+
32#include <rtabmap/core/camera/CameraStereoImages.h>
+
33#include <rtabmap/core/camera/CameraStereoVideo.h>
+
34#include <rtabmap/core/camera/CameraStereoZed.h>
+
35#include <rtabmap/core/camera/CameraStereoZedOC.h>
+
36#include <rtabmap/core/camera/CameraStereoTara.h>
+
37#include <rtabmap/core/camera/CameraMyntEye.h>
+
38#include <rtabmap/core/camera/CameraDepthAI.h>
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraThread_8h_source.html b/preview/pr-1773/api/latest/CameraThread_8h_source.html new file mode 100644 index 00000000..120afd91 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraThread_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/CameraThread.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraThread.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/SensorCaptureThread.h"
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/CameraVideo_8h_source.html b/preview/pr-1773/api/latest/CameraVideo_8h_source.html new file mode 100644 index 00000000..38bd3707 --- /dev/null +++ b/preview/pr-1773/api/latest/CameraVideo_8h_source.html @@ -0,0 +1,212 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/camera/CameraVideo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CameraVideo.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <opencv2/highgui/highgui.hpp>
+
31#include "rtabmap/core/Camera.h"
+
32
+
33namespace rtabmap
+
34{
+
35
+
+
36class RTABMAP_CORE_EXPORT CameraVideo :
+
37 public Camera
+
38{
+
39public:
+
40 enum Source{kVideoFile, kUsbDevice};
+
41
+
42public:
+
43 CameraVideo(int usbDevice = 0,
+
44 bool rectifyImages = false,
+
45 float imageRate = 0,
+
46 const Transform & localTransform = Transform::getIdentity());
+
47 CameraVideo(const std::string & filePath,
+
48 bool rectifyImages = false,
+
49 float imageRate = 0,
+
50 const Transform & localTransform = Transform::getIdentity());
+
51 virtual ~CameraVideo();
+
52
+
53 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
+
54 virtual bool isCalibrated() const;
+
55 virtual std::string getSerial() const;
+
56 int getUsbDevice() const {return _usbDevice;}
+
57 const std::string & getFilePath() const {return _filePath;}
+
58
+
64 void setResolution(int width, int height) {_width=width, _height=height;}
+
65 void setFOURCC(const std::string & fourcc) { _fourcc = fourcc; }
+
66
+
67protected:
+
68 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
69
+
70private:
+
71 // File type
+
72 std::string _filePath;
+
73 bool _rectifyImages;
+
74
+
75 cv::VideoCapture _capture;
+
76 Source _src;
+
77
+
78 // Usb camera
+
79 int _usbDevice;
+
80 std::string _guid;
+
81 int _width;
+
82 int _height;
+
83 std::string _fourcc;
+
84
+
85 CameraModel _model;
+
86};
+
+
87
+
88
+
89} // namespace rtabmap
+ +
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
void setResolution(int width, int height)
Definition CameraVideo.h:64
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+ +
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Camera_8h_source.html b/preview/pr-1773/api/latest/Camera_8h_source.html new file mode 100644 index 00000000..a755b2fd --- /dev/null +++ b/preview/pr-1773/api/latest/Camera_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Camera.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Camera.h
+
+
+
1/*
+
2Copyright (c) 2010-2022, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31#include <rtabmap/core/SensorCapture.h>
+
32#include <rtabmap/core/IMU.h>
+
33
+
34namespace rtabmap
+
35{
+
36
+
37class IMUFilter;
+
38
+
+
43class RTABMAP_CORE_EXPORT Camera : public SensorCapture
+
44{
+
45public:
+
46 virtual ~Camera();
+
47
+
48 SensorData takeImage(SensorCaptureInfo * info = 0) {return takeData(info);}
+
49 float getImageRate() const {return getFrameRate();}
+
50 void setImageRate(float imageRate) {setFrameRate(imageRate);}
+
51 void setInterIMUPublishing(bool enabled, IMUFilter * filter = 0, bool baseFrameConversion = false); // Take ownership of filter
+
52 bool isInterIMUPublishing() const {return publishInterIMU_;}
+
53
+
54 bool initFromFile(const std::string & calibrationPath);
+
55 virtual bool isCalibrated() const = 0;
+
56
+
57protected:
+
64 Camera(float imageRate = 0, const Transform & localTransform = Transform::getIdentity());
+
65
+
66 virtual SensorData captureImage(SensorCaptureInfo * info = 0) = 0;
+
67
+
68 void postInterIMU(const IMU & imu, double stamp);
+
69
+
70private:
+
71 virtual SensorData captureData(SensorCaptureInfo * info = 0) {return captureImage(info);}
+
72
+
73private:
+
74 IMUFilter * imuFilter_;
+
75 bool publishInterIMU_;
+
76 bool imuBaseFrameConversion_;
+
77};
+
+
78
+
79
+
80} // namespace rtabmap
+ +
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())
+
Fuses gyroscope and accelerometer samples into an orientation quaternion.
Definition IMUFilter.h:59
+
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
Metadata structure for sensor data capture and processing.
+
Abstract base class for sensor data capture (cameras, lidars, etc.)
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/CloudMap_8h_source.html b/preview/pr-1773/api/latest/CloudMap_8h_source.html new file mode 100644 index 00000000..8d80e272 --- /dev/null +++ b/preview/pr-1773/api/latest/CloudMap_8h_source.html @@ -0,0 +1,193 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/global_map/CloudMap.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CloudMap.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_SRC_CLOUDMAP_H_
+
29#define CORELIB_SRC_CLOUDMAP_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/GlobalMap.h>
+
34
+
35#include <pcl/point_cloud.h>
+
36#include <pcl/point_types.h>
+
37
+
38namespace rtabmap {
+
39
+
+
40class RTABMAP_CORE_EXPORT CloudMap : public GlobalMap
+
41{
+
42public:
+
43 CloudMap(const LocalGridCache * cache, const ParametersMap & parameters = ParametersMap());
+
44
+
45 virtual void clear();
+
46
+
47 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & getMapGround() const {return assembledGround_;}
+
48 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & getMapObstacles() const {return assembledObstacles_;}
+
49 const pcl::PointCloud<pcl::PointXYZ>::Ptr & getMapEmptyCells() const {return assembledEmptyCells_;}
+
50
+
51 unsigned long getMemoryUsed() const;
+
52
+
53protected:
+
54 virtual void assemble(const std::list<std::pair<int, Transform> > & newPoses);
+
55
+
56private:
+
57 pcl::PointCloud<pcl::PointXYZRGB>::Ptr assembledGround_;
+
58 pcl::PointCloud<pcl::PointXYZRGB>::Ptr assembledObstacles_;
+
59 pcl::PointCloud<pcl::PointXYZ>::Ptr assembledEmptyCells_;
+
60};
+
+
61
+
62}
+
63
+
64#endif /* CORELIB_SRC_CLOUDMAP_H_ */
+ +
unsigned long getMemoryUsed() const
Approximate memory used by assembled-node bookkeeping (bytes).
+
virtual void clear()
Clears assembled nodes and grid bounds; does not clear LocalGridCache.
+
virtual void assemble(const std::list< std::pair< int, Transform > > &newPoses)
Subclass hook: merge newPoses into the global map; call addAssembledNode().
+
Abstract base for assembling per-node LocalGrid data into a global map.
Definition GlobalMap.h:56
+
Cache of LocalGrid entries keyed by map node id.
Definition LocalGrid.h:98
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Compression_8h_source.html b/preview/pr-1773/api/latest/Compression_8h_source.html new file mode 100644 index 00000000..c58a4d10 --- /dev/null +++ b/preview/pr-1773/api/latest/Compression_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Compression.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Compression.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef COMPRESSION_H_
+
29#define COMPRESSION_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/rvl_codec.h>
+
34#include <rtabmap/utilite/UThread.h>
+
35#include <opencv2/opencv.hpp>
+
36
+
37namespace rtabmap {
+
38
+
+
67class RTABMAP_CORE_EXPORT CompressionThread : public UThread
+
68{
+
69public:
+
75 CompressionThread(const cv::Mat & mat, const std::string & format = "");
+
81 CompressionThread(const cv::Mat & bytes, bool isImage);
+
83 const cv::Mat & getCompressedData() const {return compressedData_;}
+
85 cv::Mat & getUncompressedData() {return uncompressedData_;}
+
86protected:
+
87 virtual void mainLoop();
+
88private:
+
89 cv::Mat compressedData_;
+
90 cv::Mat uncompressedData_;
+
91 std::string format_;
+
92 bool image_;
+
93 bool compressMode_;
+
94};
+
+
95
+
97std::vector<unsigned char> RTABMAP_CORE_EXPORT compressImage(const cv::Mat & image, const std::string & format = ".png");
+
99cv::Mat RTABMAP_CORE_EXPORT compressImage2(const cv::Mat & image, const std::string & format = ".png");
+
100
+
102cv::Mat RTABMAP_CORE_EXPORT uncompressImage(const cv::Mat & bytes);
+
104cv::Mat RTABMAP_CORE_EXPORT uncompressImage(const std::vector<unsigned char> & bytes);
+
105
+
107std::vector<unsigned char> RTABMAP_CORE_EXPORT compressData(const cv::Mat & data);
+
109cv::Mat RTABMAP_CORE_EXPORT compressData2(const cv::Mat & data);
+
110
+
112cv::Mat RTABMAP_CORE_EXPORT uncompressData(const cv::Mat & bytes);
+
114cv::Mat RTABMAP_CORE_EXPORT uncompressData(const std::vector<unsigned char> & bytes);
+
116cv::Mat RTABMAP_CORE_EXPORT uncompressData(const unsigned char * bytes, unsigned long size);
+
117
+
119cv::Mat RTABMAP_CORE_EXPORT compressString(const std::string & str);
+
121std::string RTABMAP_CORE_EXPORT uncompressString(const cv::Mat & bytes);
+
122
+
127std::string RTABMAP_CORE_EXPORT compressedDepthFormat(const cv::Mat & bytes);
+
129std::string RTABMAP_CORE_EXPORT compressedDepthFormat(const std::vector<unsigned char> & bytes);
+
131std::string RTABMAP_CORE_EXPORT compressedDepthFormat(const unsigned char * bytes, size_t size);
+
132
+
133} /* namespace rtabmap */
+
134#endif /* COMPRESSION_H_ */
+ +
Background thread to compress or uncompress images and generic matrices.
Definition Compression.h:68
+ +
const cv::Mat & getCompressedData() const
Definition Compression.h:83
+
CompressionThread(const cv::Mat &mat, const std::string &format="")
Constructs a thread in compress mode.
+
CompressionThread(const cv::Mat &bytes, bool isImage)
Constructs a thread in uncompress mode.
+
cv::Mat & getUncompressedData()
Definition Compression.h:85
+ +
cv::Mat RTABMAP_CORE_EXPORT uncompressImage(const cv::Mat &bytes)
Decodes compressed image bytes to a @cv::Mat.
+
cv::Mat RTABMAP_CORE_EXPORT compressString(const std::string &str)
Compresses a null-terminated string using compressData2().
+
std::vector< unsigned char > RTABMAP_CORE_EXPORT compressImage(const cv::Mat &image, const std::string &format=".png")
Encodes image to a byte buffer (OpenCV imencode or RVL for depth).
+
std::string RTABMAP_CORE_EXPORT compressedDepthFormat(const cv::Mat &bytes)
Detects the compression format of depth image bytes.
+
cv::Mat RTABMAP_CORE_EXPORT uncompressData(const cv::Mat &bytes)
Restores a matrix compressed with compressData() or compressData2().
+
std::vector< unsigned char > RTABMAP_CORE_EXPORT compressData(const cv::Mat &data)
Compresses a matrix with zlib; appends rows, cols and type at the end.
+
std::string RTABMAP_CORE_EXPORT uncompressString(const cv::Mat &bytes)
Decompresses a string produced by compressString().
+
cv::Mat RTABMAP_CORE_EXPORT compressImage2(const cv::Mat &image, const std::string &format=".png")
Same as compressImage() but returns a CV_8UC1 row matrix.
+
cv::Mat RTABMAP_CORE_EXPORT compressData2(const cv::Mat &data)
Same as compressData() but returns a CV_8UC1 row matrix.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/DBDriverSqlite3_8h_source.html b/preview/pr-1773/api/latest/DBDriverSqlite3_8h_source.html new file mode 100644 index 00000000..4cad602b --- /dev/null +++ b/preview/pr-1773/api/latest/DBDriverSqlite3_8h_source.html @@ -0,0 +1,369 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/DBDriverSqlite3.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DBDriverSqlite3.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef DBDRIVERSQLITE3_H_
+
29#define DBDRIVERSQLITE3_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32#include "rtabmap/core/DBDriver.h"
+
33#if CV_MAJOR_VERSION < 5
+
34#include <opencv2/features2d/features2d.hpp>
+
35#else
+
36#include <opencv2/features.hpp>
+
37#endif
+
38
+
39typedef struct sqlite3_stmt sqlite3_stmt;
+
40typedef struct sqlite3 sqlite3;
+
41
+
42namespace rtabmap {
+
43
+
+
70class RTABMAP_CORE_EXPORT DBDriverSqlite3: public DBDriver {
+
71public:
+ +
77 virtual ~DBDriverSqlite3();
+
78
+
80 virtual void parseParameters(const ParametersMap & parameters);
+
85 virtual bool isInMemory() const {return getUrl().empty() || _dbInMemory;}
+
90 void setDbInMemory(bool dbInMemory);
+
110 void setJournalMode(int journalMode);
+
111
+
123 void setCacheSize(unsigned int cacheSize);
+
124
+
140 void setSynchronous(int synchronous);
+
141
+
156 void setTempStore(int tempStore);
+
157
+
158protected:
+
159 virtual bool connectDatabaseQuery(const std::string & url, bool overwritten = false, bool readOnly = false);
+
160 virtual void disconnectDatabaseQuery(bool save = true, const std::string & outputUrl = "");
+
161 virtual bool isConnectedQuery() const;
+
162 virtual unsigned long getMemoryUsedQuery() const; // In bytes
+
163 virtual bool getDatabaseVersionQuery(std::string & version) const;
+
164 virtual long getNodesMemoryUsedQuery() const;
+
165 virtual long getLinksMemoryUsedQuery() const;
+
166 virtual long getImagesMemoryUsedQuery() const;
+
167 virtual long getDepthImagesMemoryUsedQuery() const;
+
168 virtual long getCalibrationsMemoryUsedQuery() const;
+
169 virtual long getGridsMemoryUsedQuery() const;
+
170 virtual long getLaserScansMemoryUsedQuery() const;
+
171 virtual long getUserDataMemoryUsedQuery() const;
+
172 virtual long getWordsMemoryUsedQuery() const;
+
173 virtual long getFeaturesMemoryUsedQuery() const;
+
174 virtual long getStatisticsMemoryUsedQuery() const;
+
175 virtual int getLastNodesSizeQuery() const;
+
176 virtual int getLastDictionarySizeQuery() const;
+
177 virtual int getTotalNodesSizeQuery() const;
+
178 virtual int getTotalDictionarySizeQuery() const;
+
179 virtual ParametersMap getLastParametersQuery() const;
+
180 virtual std::map<std::string, float> getStatisticsQuery(int nodeId, double & stamp, std::vector<int> * wmState) const;
+
181 virtual std::map<int, std::pair<std::map<std::string, float>, double> > getAllStatisticsQuery() const;
+
182 virtual std::map<int, std::vector<int> > getAllStatisticsWmStatesQuery() const;
+
183
+
184 virtual void executeNoResultQuery(const std::string & sql) const;
+
185
+
186 virtual void getWeightQuery(int signatureId, int & weight) const;
+
187
+
188 virtual void saveQuery(const std::list<Signature *> & signatures);
+
189 virtual void saveQuery(const std::list<VisualWord *> & words) const;
+
190 virtual void updateQuery(const std::list<Signature *> & signatures, bool updateTimestamp) const;
+
191 virtual void updateQuery(const std::list<VisualWord *> & words, bool updateTimestamp) const;
+
192
+
193 virtual void addLinkQuery(const Link & link) const;
+
194 virtual void updateLinkQuery(const Link & link) const;
+
195
+
196 virtual void updateOccupancyGridQuery(
+
197 int nodeId,
+
198 const cv::Mat & ground,
+
199 const cv::Mat & obstacles,
+
200 const cv::Mat & empty,
+
201 float cellSize,
+
202 const cv::Point3f & viewpoint) const;
+
203
+
204 virtual void updateCalibrationQuery(
+
205 int nodeId,
+
206 const std::vector<CameraModel> & models,
+
207 const std::vector<StereoCameraModel> & stereoModels) const;
+
208
+
209 virtual void updateDepthImageQuery(
+
210 int nodeId,
+
211 const cv::Mat & image,
+
212 const std::string & format) const;
+
213
+
214 void updateLaserScanQuery(
+
215 int nodeId,
+
216 const LaserScan & scan) const;
+
217
+
218 virtual void addStatisticsQuery(const Statistics & statistics, bool saveWmState) const;
+
219 virtual void savePreviewImageQuery(const cv::Mat & image) const;
+
220 virtual cv::Mat loadPreviewImageQuery() const;
+
221 virtual void saveOptimizedPosesQuery(const std::map<int, Transform> & optimizedPoses, const Transform & lastlocalizationPose) const;
+
222 virtual std::map<int, Transform> loadOptimizedPosesQuery(Transform * lastlocalizationPose = 0) const;
+
223 virtual void save2DMapQuery(const cv::Mat & map, float xMin, float yMin, float cellSize) const;
+
224 virtual cv::Mat load2DMapQuery(float & xMin, float & yMin, float & cellSize) const;
+
225 virtual void saveOptimizedMeshQuery(
+
226 const cv::Mat & cloud,
+
227 const std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > & polygons,
+
228#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
229 const std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > & texCoords,
+
230#else
+
231 const std::vector<std::vector<Eigen::Vector2f> > & texCoords,
+
232#endif
+
233 const cv::Mat & textures) const;
+
234 virtual cv::Mat loadOptimizedMeshQuery(
+
235 std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > * polygons,
+
236#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
237 std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > * texCoords,
+
238#else
+
239 std::vector<std::vector<Eigen::Vector2f> > * texCoords,
+
240#endif
+
241 cv::Mat * textures) const;
+
242
+
243 virtual void saveFlannIndexQuery(const std::vector<unsigned char> & indexData) const;
+
244
+
245 // Load objects
+
246 virtual void loadQuery(VWDictionary & dictionary, bool lastStateOnly = true, bool idsOnly = false) const;
+
247 virtual void loadLastNodesQuery(std::list<Signature *> & signatures, bool loadWordIdsOnly) const;
+
248 virtual void loadSignaturesQuery(const std::list<int> & ids, std::list<Signature *> & signatures, bool loadWordIdsOnly) const;
+
249 virtual void loadWordsQuery(const std::set<int> & wordIds, std::list<VisualWord *> & vws) const;
+
250 virtual void loadLinksQuery(int signatureId, std::multimap<int, Link> & links, Link::Type type = Link::kUndef) const;
+
251
+
252 virtual void loadNodeDataQuery(std::list<Signature *> & signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const;
+
253 virtual bool getCalibrationQuery(int signatureId, std::vector<CameraModel> & models, std::vector<StereoCameraModel> & stereoModels) const;
+
254 virtual bool getLaserScanInfoQuery(int signatureId, LaserScan & info) const;
+
255 virtual bool getNodeInfoQuery(int signatureId, Transform & pose, int & mapId, int & weight, std::string & label, double & stamp, Transform & groundTruthPose, std::vector<float> & velocity, GPS & gps, EnvSensors & sensors) const;
+
256 virtual void getLocalFeaturesQuery(int signatureId, std::multimap<int, int> & words, std::vector<cv::KeyPoint> & keypoints, std::vector<cv::Point3f> & points, cv::Mat & descriptors) const;
+
257 virtual void getLastNodeIdsQuery(std::set<int> & ids) const;
+
258 virtual void getAllNodeIdsQuery(std::set<int> & ids, bool ignoreChildren, bool ignoreBadSignatures, bool ignoreIntermediateNodes) const;
+
259 virtual void getAllOdomPosesQuery(std::map<int, Transform> & poses, bool ignoreChildren, bool ignoreIntermediateNodes) const;
+
260 virtual void getAllLinksQuery(std::multimap<int, Link> & links, bool ignoreNullLinks, bool withLandmarks) const;
+
261 virtual void getLastIdQuery(const std::string & tableName, int & id, const std::string & fieldName="id") const;
+
262 virtual void getInvertedIndexNiQuery(int signatureId, int & ni) const;
+
263 virtual void getNodesObservingLandmarkQuery(int landmarkId, std::map<int, Link> & nodes) const;
+
264 virtual void getNodeIdByLabelQuery(const std::string & label, int & id) const;
+
265 virtual void getAllLabelsQuery(std::map<int, std::string> & labels) const;
+
266
+
267private:
+
268 std::string queryStepNode() const;
+
269 std::string queryStepImage() const;
+
270 std::string queryStepDepth() const;
+
271 std::string queryStepCalibrationUpdate() const;
+
272 std::string queryStepDepthUpdate() const;
+
273 std::string queryStepScanUpdate() const;
+
274 std::string queryStepSensorData() const;
+
275 std::string queryStepLinkUpdate() const;
+
276 std::string queryStepLink() const;
+
277 std::string queryStepWordsChanged() const;
+
278 std::string queryStepKeypoint() const;
+
279 std::string queryStepGlobalDescriptor() const;
+
280 std::string queryStepOccupancyGridUpdate() const;
+
281 void stepNode(sqlite3_stmt * ppStmt, const Signature * s) const;
+
282 void stepImage(sqlite3_stmt * ppStmt, int id, const cv::Mat & imageBytes) const;
+
283 void stepDepth(sqlite3_stmt * ppStmt, const SensorData & sensorData) const;
+
284 void stepCalibrationUpdate(sqlite3_stmt * ppStmt, int nodeId, const std::vector<CameraModel> & models, const std::vector<StereoCameraModel> & stereoModels) const;
+
285 void stepDepthUpdate(sqlite3_stmt * ppStmt, int nodeId, const cv::Mat & image, const std::string & format) const;
+
286 void stepScanUpdate(sqlite3_stmt * ppStmt, int nodeId, const LaserScan & image) const;
+
287 void stepSensorData(sqlite3_stmt * ppStmt, const SensorData & sensorData) const;
+
288 void stepLink(sqlite3_stmt * ppStmt, const Link & link) const;
+
289 void stepWordsChanged(sqlite3_stmt * ppStmt, int signatureId, int oldWordId, int newWordId) const;
+
290 void stepKeypoint(sqlite3_stmt * ppStmt, int nodeID, int wordId, const cv::KeyPoint & kp, const cv::Point3f & pt, const cv::Mat & descriptor) const;
+
291 void stepGlobalDescriptor(sqlite3_stmt * ppStmt, int nodeId, const GlobalDescriptor & descriptor) const;
+
292 void stepOccupancyGridUpdate(sqlite3_stmt * ppStmt,
+
293 int nodeId,
+
294 const cv::Mat & ground,
+
295 const cv::Mat & obstacles,
+
296 const cv::Mat & empty,
+
297 float cellSize,
+
298 const cv::Point3f & viewpoint) const;
+
299
+
300private:
+
301 void loadWordsQuery(std::list<Signature *> & signatures) const;
+
302 void loadWordIdsQuery(std::list<Signature *> & signatures) const;
+
303 void loadLinksQuery(std::list<Signature *> & signatures) const;
+
304 int loadOrSaveDb(sqlite3 *pInMemory, const std::string & fileName, int isSave) const;
+
305
+
306protected:
+
307 sqlite3 * _ppDb;
+
308 std::string _version;
+
309
+
310private:
+
311 unsigned long _memoryUsedEstimate;
+
312 bool _dbInMemory;
+
313 unsigned int _cacheSize;
+
314 int _journalMode;
+
315 int _synchronous;
+
316 int _tempStore;
+
317};
+
+
318
+
319}
+
320
+
321#endif /* DBDRIVERSQLITE3_H_ */
+
SQLite3 implementation of DBDriver for RTAB-Map map databases.
+
void setDbInMemory(bool dbInMemory)
Enable or disable in-memory mode. If connected, the connection is closed and reopened with the new mo...
+
sqlite3 * _ppDb
Open SQLite connection (null when disconnected)
+
std::string _version
Schema version read from the database.
+
void setSynchronous(int synchronous)
Set how aggressively SQLite syncs the database file to disk (PRAGMA synchronous).
+
DBDriverSqlite3(const ParametersMap &parameters=ParametersMap())
Construct driver with optional SQLite-specific parameters.
+
void setTempStore(int tempStore)
Set where SQLite stores temporary tables and indices (PRAGMA temp_store).
+
virtual void parseParameters(const ParametersMap &parameters)
Apply SQLite parameters from the map; forwards to DBDriver::parseParameters().
+
void setJournalMode(int journalMode)
Set SQLite rollback journal mode (PRAGMA journal_mode).
+
virtual bool isInMemory() const
True when the database runs in RAM instead of on disk.
+
void setCacheSize(unsigned int cacheSize)
Set the number of database pages kept in SQLite's page cache (PRAGMA cache_size).
+
Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).
Definition DBDriver.h:72
+
WGS84 GPS fix attached to a sensor sample or graph node.
Definition GPS.h:47
+ +
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
+ + +
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
Manages a dictionary of visual words for visual place recognition and loop closure detection.
+ +
std::map< EnvSensor::Type, EnvSensor > EnvSensors
Map of environmental readings keyed by EnvSensor::Type (at most one per type).
Definition EnvSensor.h:114
+
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/DBDriver_8h_source.html b/preview/pr-1773/api/latest/DBDriver_8h_source.html new file mode 100644 index 00000000..a5736641 --- /dev/null +++ b/preview/pr-1773/api/latest/DBDriver_8h_source.html @@ -0,0 +1,483 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/DBDriver.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DBDriver.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef DBDRIVER_H_
+
29#define DBDRIVER_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <string>
+
34#include <list>
+
35#include <map>
+
36#include <set>
+
37#include <opencv2/core/core.hpp>
+
38#include "rtabmap/utilite/UMutex.h"
+ +
40#include "rtabmap/core/Parameters.h"
+
41#include "rtabmap/core/SensorData.h"
+
42#include <rtabmap/core/Statistics.h>
+
43
+
44#include <rtabmap/core/Transform.h>
+
45#include <rtabmap/core/Link.h>
+
46
+
47namespace rtabmap {
+
48
+
49class Signature;
+
50class VWDictionary;
+
51class VisualWord;
+
52
+
+
71class RTABMAP_CORE_EXPORT DBDriver : public UThreadNode
+
72{
+
73public:
+
79 static DBDriver * create(const ParametersMap & parameters = ParametersMap());
+
80
+
81public:
+
82 virtual ~DBDriver();
+
83
+
85 virtual void parseParameters(const ParametersMap & parameters);
+
90 virtual bool isInMemory() const {return _url.empty();}
+
92 const std::string & getUrl() const {return _url;}
+
94 const std::string & getTargetVersion() const {return _targetVersion;}
+
95
+ + +
115 void emptyTrashes(bool async = false);
+
116 double getEmptyTrashesTime() const {return _emptyTrashesTime;}
+
117 void setTimestampUpdateEnabled(bool enabled) {_timestampUpdate = enabled;} // used on Update Signature and Word queries
+
118
+ +
127 const std::string & fileName,
+
128 const std::set<int> & ids = std::set<int>(),
+
129 const std::map<int, Signature *> & otherSignatures = std::map<int, Signature *>());
+
130
+
137 void addLink(const Link & link);
+
139 void removeLink(int from, int to);
+
141 void updateLink(const Link & link);
+ +
150 int nodeId,
+
151 const cv::Mat & ground,
+
152 const cv::Mat & obstacles,
+
153 const cv::Mat & empty,
+
154 float cellSize,
+
155 const cv::Point3f & viewpoint);
+ +
158 int nodeId,
+
159 const std::vector<CameraModel> & models,
+
160 const std::vector<StereoCameraModel> & stereoModels);
+
167 void updateDepthImage(int nodeId, const cv::Mat & image, const std::string & format);
+
173 void updateLaserScan(int nodeId, const LaserScan & scan);
+
176public:
+
181 void addInfoAfterRun(int stMemSize, int lastSignAdded, int processMemUsed, int databaseMemUsed, int dictionarySize, const ParametersMap & parameters) const;
+
187 void addStatistics(const Statistics & statistics, bool saveWmState) const;
+
193 void savePreviewImage(const cv::Mat & image) const;
+
195 cv::Mat loadPreviewImage() const;
+
197 void saveOptimizedPoses(const std::map<int, Transform> & optimizedPoses, const Transform & lastlocalizationPose) const;
+
199 std::map<int, Transform> loadOptimizedPoses(Transform * lastlocalizationPose = 0) const;
+
201 void save2DMap(const cv::Mat & map, float xMin, float yMin, float cellSize) const;
+
203 cv::Mat load2DMap(float & xMin, float & yMin, float & cellSize) const;
+ +
212 const cv::Mat & cloud,
+
213 const std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > & polygons = std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > >(), // Textures -> polygons -> vertices
+
214#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
215 const std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > & texCoords = std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > >(), // Textures -> uv coords for each vertex of the polygons
+
216#else
+
217 const std::vector<std::vector<Eigen::Vector2f> > & texCoords = std::vector<std::vector<Eigen::Vector2f> >(), // Textures -> uv coords for each vertex of the polygons
+
218#endif
+
219 const cv::Mat & textures = cv::Mat()) const; // concatenated textures (assuming square textures with all same size);
+
220 cv::Mat loadOptimizedMesh(
+
221 std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > * polygons = 0,
+
222#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
223 std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > * texCoords = 0,
+
224#else
+
225 std::vector<std::vector<Eigen::Vector2f> > * texCoords = 0,
+
226#endif
+
227 cv::Mat * textures = 0) const;
+
233 void saveFlannIndex(const std::vector<unsigned char> & indexData) const;
+
236public:
+
242 bool openConnection(const std::string & url, bool overwritten = false, bool readOnly = false);
+
244 void closeConnection(bool save = true, const std::string & outputUrl = "");
+
246 bool isConnected() const;
+
247 unsigned long getMemoryUsed() const; // In bytes
+
249 std::string getDatabaseVersion() const;
+
250 long getNodesMemoryUsed() const;
+
251 long getLinksMemoryUsed() const;
+
252 long getImagesMemoryUsed() const;
+
253 long getDepthImagesMemoryUsed() const;
+
254 long getCalibrationsMemoryUsed() const;
+
255 long getGridsMemoryUsed() const;
+
256 long getLaserScansMemoryUsed() const;
+
257 long getUserDataMemoryUsed() const;
+
258 long getWordsMemoryUsed() const;
+
259 long getFeaturesMemoryUsed() const;
+
260 long getStatisticsMemoryUsed() const;
+
261 int getLastNodesSize() const; // working memory
+
262 int getLastDictionarySize() const; // working memory
+
263 int getTotalNodesSize() const;
+
264 int getTotalDictionarySize() const;
+
265 ParametersMap getLastParameters() const;
+
266 std::map<std::string, float> getStatistics(int nodeId, double & stamp, std::vector<int> * wmState=0) const;
+
267 std::map<int, std::pair<std::map<std::string, float>, double> > getAllStatistics() const;
+
268 std::map<int, std::vector<int> > getAllStatisticsWmStates() const;
+
269
+
286 void executeNoResult(const std::string & sql) const;
+
287
+
293 // Load objects
+
294 void load(VWDictionary & dictionary, bool lastStateOnly = true, bool idsOnly = false) const;
+
295 void loadLastNodes(std::list<Signature *> & signatures, bool loadWordIdsOnly = false) const; // returned signatures must be freed after usage
+
297 Signature * loadSignature(int id, bool * loadedFromTrash = 0); // returned signature must be freed after usage, call loadSignatures() instead if more than one signature should be loaded
+
298 void loadSignatures(const std::list<int> & ids, std::list<Signature *> & signatures, std::set<int> * loadedFromTrash = 0, bool loadWordIdsOnly = false); // returned signatures must be freed after usage
+
299 void loadWords(const std::set<int> & wordIds, std::list<VisualWord *> & vws); // returned words must be freed after usage
+
300
+
301 // Specific queries...
+
302 void loadNodeData(Signature & signature, bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true) const;
+
303 void loadNodeData(std::list<Signature *> & signatures, bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true) const;
+
304 void getNodeData(int signatureId, SensorData & data, bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true) const;
+
305 bool getCalibration(int signatureId, std::vector<CameraModel> & models, std::vector<StereoCameraModel> & stereoModels) const;
+
306 bool getLaserScanInfo(int signatureId, LaserScan & info) const;
+
307 bool getNodeInfo(int signatureId, Transform & pose, int & mapId, int & weight, std::string & label, double & stamp, Transform & groundTruthPose, std::vector<float> & velocity, GPS & gps, EnvSensors & sensors) const;
+
308 void getLocalFeatures(int signatureId, std::multimap<int, int> & words, std::vector<cv::KeyPoint> & keypoints, std::vector<cv::Point3f> & points, cv::Mat & descriptors) const;
+
310 void loadLinks(int signatureId, std::multimap<int, Link> & links, Link::Type type = Link::kUndef) const;
+
311 void getWeight(int signatureId, int & weight) const;
+
312 void getLastNodeIds(std::set<int> & ids) const;
+
313 void getAllNodeIds(std::set<int> & ids, bool ignoreChildren = false, bool ignoreBadSignatures = false, bool ignoreIntermediateNodes = false) const;
+
314 void getAllOdomPoses(std::map<int, Transform> & poses, bool ignoreChildren = false, bool ignoreIntermediateNodes = false) const;
+
315 void getAllLinks(std::multimap<int, Link> & links, bool ignoreNullLinks = true, bool withLandmarks = false) const;
+
316 void getLastNodeId(int & id) const;
+
317 void getLastMapId(int & mapId) const;
+
318 void getLastWordId(int & id) const;
+
319 void getInvertedIndexNi(int signatureId, int & ni) const;
+
320 void getNodesObservingLandmark(int landmarkId, std::map<int, Link> & nodes) const;
+
321 void getNodeIdByLabel(const std::string & label, int & id) const;
+
322 void getAllLabels(std::map<int, std::string> & labels) const;
+
325protected:
+
329 DBDriver(const ParametersMap & parameters = ParametersMap());
+
330
+
335 virtual bool connectDatabaseQuery(const std::string & url, bool overwritten = false, bool readOnly = false) = 0;
+
336 virtual void disconnectDatabaseQuery(bool save = true, const std::string & outputUrl = "") = 0;
+
337 virtual bool isConnectedQuery() const = 0;
+
338 virtual unsigned long getMemoryUsedQuery() const = 0; // In bytes
+
339 virtual bool getDatabaseVersionQuery(std::string & version) const = 0;
+
340 virtual long getNodesMemoryUsedQuery() const = 0;
+
341 virtual long getLinksMemoryUsedQuery() const = 0;
+
342 virtual long getImagesMemoryUsedQuery() const = 0;
+
343 virtual long getDepthImagesMemoryUsedQuery() const = 0;
+
344 virtual long getCalibrationsMemoryUsedQuery() const = 0;
+
345 virtual long getGridsMemoryUsedQuery() const = 0;
+
346 virtual long getLaserScansMemoryUsedQuery() const = 0;
+
347 virtual long getUserDataMemoryUsedQuery() const = 0;
+
348 virtual long getWordsMemoryUsedQuery() const = 0;
+
349 virtual long getFeaturesMemoryUsedQuery() const = 0;
+
350 virtual long getStatisticsMemoryUsedQuery() const = 0;
+
351 virtual int getLastNodesSizeQuery() const = 0;
+
352 virtual int getLastDictionarySizeQuery() const = 0;
+
353 virtual int getTotalNodesSizeQuery() const = 0;
+
354 virtual int getTotalDictionarySizeQuery() const = 0;
+
355 virtual ParametersMap getLastParametersQuery() const = 0;
+
356 virtual std::map<std::string, float> getStatisticsQuery(int nodeId, double & stamp, std::vector<int> * wmState) const = 0;
+
357 virtual std::map<int, std::pair<std::map<std::string, float>, double> > getAllStatisticsQuery() const = 0;
+
358 virtual std::map<int, std::vector<int> > getAllStatisticsWmStatesQuery() const = 0;
+
359
+
360 virtual void executeNoResultQuery(const std::string & sql) const = 0;
+
361
+
362 virtual void getWeightQuery(int signatureId, int & weight) const = 0;
+
363
+
364 virtual void saveQuery(const std::list<Signature *> & signatures) = 0;
+
365 virtual void saveQuery(const std::list<VisualWord *> & words) const = 0;
+
366 virtual void updateQuery(const std::list<Signature *> & signatures, bool updateTimestamp) const = 0;
+
367 virtual void updateQuery(const std::list<VisualWord *> & words, bool updateTimestamp) const = 0;
+
368
+
369 virtual void addLinkQuery(const Link & link) const = 0;
+
370 virtual void updateLinkQuery(const Link & link) const = 0;
+
371
+
372 virtual void updateOccupancyGridQuery(
+
373 int nodeId,
+
374 const cv::Mat & ground,
+
375 const cv::Mat & obstacles,
+
376 const cv::Mat & empty,
+
377 float cellSize,
+
378 const cv::Point3f & viewpoint) const = 0;
+
379
+
380 virtual void updateCalibrationQuery(
+
381 int nodeId,
+
382 const std::vector<CameraModel> & models,
+
383 const std::vector<StereoCameraModel> & stereoModels) const = 0;
+
384
+
385 virtual void updateDepthImageQuery(
+
386 int nodeId,
+
387 const cv::Mat & image,
+
388 const std::string & format) const = 0;
+
389
+
390 virtual void updateLaserScanQuery(
+
391 int nodeId,
+
392 const LaserScan & scan) const = 0;
+
393
+
394 virtual void addStatisticsQuery(const Statistics & statistics, bool saveWmState) const = 0;
+
395 virtual void savePreviewImageQuery(const cv::Mat & image) const = 0;
+
396 virtual cv::Mat loadPreviewImageQuery() const = 0;
+
397 virtual void saveOptimizedPosesQuery(const std::map<int, Transform> & optimizedPoses, const Transform & lastlocalizationPose) const = 0;
+
398 virtual std::map<int, Transform> loadOptimizedPosesQuery(Transform * lastlocalizationPose = 0) const = 0;
+
399 virtual void save2DMapQuery(const cv::Mat & map, float xMin, float yMin, float cellSize) const = 0;
+
400 virtual cv::Mat load2DMapQuery(float & xMin, float & yMin, float & cellSize) const = 0;
+
401 virtual void saveOptimizedMeshQuery(
+
402 const cv::Mat & cloud,
+
403 const std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > & polygons,
+
404#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
405 const std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > & texCoords,
+
406#else
+
407 const std::vector<std::vector<Eigen::Vector2f> > & texCoords,
+
408#endif
+
409 const cv::Mat & textures) const = 0;
+
410 virtual cv::Mat loadOptimizedMeshQuery(
+
411 std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > * polygons,
+
412#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
413 std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > * texCoords,
+
414#else
+
415 std::vector<std::vector<Eigen::Vector2f> > * texCoords,
+
416#endif
+
417 cv::Mat * textures) const = 0;
+
418 virtual void saveFlannIndexQuery(const std::vector<unsigned char> & indexData) const = 0;
+
419
+
420 // Load objects
+
421 virtual void loadQuery(VWDictionary & dictionary, bool lastStateOnly = true, bool idsOnly = false) const = 0;
+
422 virtual void loadLastNodesQuery(std::list<Signature *> & signatures, bool loadWordIdsOnly) const = 0;
+
423 virtual void loadSignaturesQuery(const std::list<int> & ids, std::list<Signature *> & signatures, bool loadWordIdsOnly) const = 0;
+
424 virtual void loadWordsQuery(const std::set<int> & wordIds, std::list<VisualWord *> & vws) const = 0;
+
425 virtual void loadLinksQuery(int signatureId, std::multimap<int, Link> & links, Link::Type type = Link::kUndef) const = 0;
+
426
+
427 virtual void loadNodeDataQuery(std::list<Signature *> & signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const = 0;
+
428 virtual bool getCalibrationQuery(int signatureId, std::vector<CameraModel> & models, std::vector<StereoCameraModel> & stereoModels) const = 0;
+
429 virtual bool getLaserScanInfoQuery(int signatureId, LaserScan & info) const = 0;
+
430 virtual bool getNodeInfoQuery(int signatureId, Transform & pose, int & mapId, int & weight, std::string & label, double & stamp, Transform & groundTruthPose, std::vector<float> & velocity, GPS & gps, EnvSensors & sensors) const = 0;
+
431 virtual void getLocalFeaturesQuery(int signatureId, std::multimap<int, int> & words, std::vector<cv::KeyPoint> & keypoints, std::vector<cv::Point3f> & points, cv::Mat & descriptors) const = 0;
+
432 virtual void getLastNodeIdsQuery(std::set<int> & ids) const = 0;
+
433 virtual void getAllNodeIdsQuery(std::set<int> & ids, bool ignoreChildren, bool ignoreBadSignatures, bool ignoreIntermediateNodes) const = 0;
+
434 virtual void getAllOdomPosesQuery(std::map<int, Transform> & poses, bool ignoreChildren, bool ignoreIntermediateNodes) const = 0;
+
435 virtual void getAllLinksQuery(std::multimap<int, Link> & links, bool ignoreNullLinks, bool withLandmarks) const = 0;
+
436 virtual void getLastIdQuery(const std::string & tableName, int & id, const std::string & fieldName="id") const = 0;
+
437 virtual void getInvertedIndexNiQuery(int signatureId, int & ni) const = 0;
+
438 virtual void getNodesObservingLandmarkQuery(int landmarkId, std::map<int, Link> & nodes) const = 0;
+
439 virtual void getNodeIdByLabelQuery(const std::string & label, int & id) const = 0;
+
440 virtual void getAllLabelsQuery(std::map<int, std::string> & labels) const = 0;
+
443private:
+
445 void beginTransaction() const;
+
447 void commit() const;
+
448
+
449 //non-abstract methods
+
450 void saveOrUpdate(const std::vector<Signature *> & signatures);
+
451 void saveOrUpdate(const std::vector<VisualWord *> & words) const;
+
452
+
453 //thread stuff
+
454 virtual void mainLoop();
+
455
+
456private:
+
457 UMutex _transactionMutex;
+
458 std::map<int, Signature *> _trashSignatures;//<id, Signature*>
+
459 std::map<int, VisualWord *> _trashVisualWords; //<id, VisualWord*>
+
460 UMutex _trashesMutex;
+
461 UMutex _dbSafeAccessMutex;
+
462 USemaphore _addSem;
+
463 double _emptyTrashesTime;
+
464 std::string _url;
+
465 std::string _targetVersion;
+
466 bool _timestampUpdate;
+
467};
+
+
468
+
469}
+
470
+
471#endif /* DBDRIVER_H_ */
+
Backward-compatible alias header for UThread.
+ + + +
Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).
Definition DBDriver.h:72
+
Signature * loadSignature(int id, bool *loadedFromTrash=0)
Load one signature by id; caller must delete the returned pointer.
+
virtual bool isInMemory() const
True when no database file URL was set at open time.
Definition DBDriver.h:90
+
static DBDriver * create(const ParametersMap &parameters=ParametersMap())
Factory: returns a SQLite database driver (DBDriverSqlite3).
+
void saveOptimizedMesh(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) const
Persist the global optimized 3D mesh to the database.
+
void updateOccupancyGrid(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint)
Update occupancy grid cells for a node.
+
void saveFlannIndex(const std::vector< unsigned char > &indexData) const
Persist the visual word dictionary FLANN index (serialized blob).
+
void updateDepthImage(int nodeId, const cv::Mat &image, const std::string &format)
Update the depth image stored for a node.
+
virtual void parseParameters(const ParametersMap &parameters)
Parse driver parameters from the map (e.g. target schema version).
+
const std::string & getTargetVersion() const
Definition DBDriver.h:94
+
void addStatistics(const Statistics &statistics, bool saveWmState) const
Append a Statistics record for a processed node.
+
void save2DMap(const cv::Mat &map, float xMin, float yMin, float cellSize) const
Save the assembled 2D occupancy grid and its origin metadata.
+
DBDriver(const ParametersMap &parameters=ParametersMap())
Protected constructor for subclasses.
+
void updateCalibration(int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels)
Update camera calibration stored for a node.
+
std::map< int, Transform > loadOptimizedPoses(Transform *lastlocalizationPose=0) const
Load optimized poses; optional last localization pose output.
+
const std::string & getUrl() const
Definition DBDriver.h:92
+
bool isConnected() const
+
void removeLink(int from, int to)
Remove a link between two nodes.
+
void updateLaserScan(int nodeId, const LaserScan &scan)
Update the laser scan stored for a node.
+
void savePreviewImage(const cv::Mat &image) const
Save the map preview thumbnail in the Admin table.
+
void executeNoResult(const std::string &sql) const
Run a SQL statement that does not return result rows.
+
void asyncSave(VisualWord *vw)
Queue a visual word for deferred save; ownership is transferred.
+
void updateLink(const Link &link)
Update an existing link in the database.
+
std::string getDatabaseVersion() const
+
cv::Mat loadPreviewImage() const
Load and uncompress the map preview thumbnail from the Admin table.
+
cv::Mat load2DMap(float &xMin, float &yMin, float &cellSize) const
Load the 2D map and fill origin/cell size outputs.
+
void loadLinks(int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) const
Load outgoing links from signatureId, optionally filtered by type.
+
void emptyTrashes(bool async=false)
Flush queued signatures and visual words to the database.
+
void saveOptimizedPoses(const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const
Persist graph-optimized poses and last localization pose.
+
void closeConnection(bool save=true, const std::string &outputUrl="")
Close the connection; optionally flush trashes and save in-memory DB to outputUrl.
+
void generateGraph(const std::string &fileName, const std::set< int > &ids=std::set< int >(), const std::map< int, Signature * > &otherSignatures=std::map< int, Signature * >())
Export the pose graph to a Graphviz DOT file for visualization.
+
bool openConnection(const std::string &url, bool overwritten=false, bool readOnly=false)
Open or create the database at url (empty url uses an in-memory database).
+
void addLink(const Link &link)
Insert or replace a link in the database.
+
void asyncSave(Signature *s)
Queue a signature for deferred save; ownership is transferred.
+
WGS84 GPS fix attached to a sensor sample or graph node.
Definition GPS.h:47
+
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
+ + +
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
Manages a dictionary of visual words for visual place recognition and loop closure detection.
+
Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model.
Definition VisualWord.h:50
+ +
std::map< EnvSensor::Type, EnvSensor > EnvSensors
Map of environmental readings keyed by EnvSensor::Type (at most one per type).
Definition EnvSensor.h:114
+
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/DBReader_8h_source.html b/preview/pr-1773/api/latest/DBReader_8h_source.html new file mode 100644 index 00000000..1a15e256 --- /dev/null +++ b/preview/pr-1773/api/latest/DBReader_8h_source.html @@ -0,0 +1,265 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/DBReader.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DBReader.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef DBREADER_H_
+
29#define DBREADER_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/utilite/UTimer.h>
+
34#include <rtabmap/core/Transform.h>
+
35#include <rtabmap/core/Camera.h>
+
36
+
37#include <opencv2/core/core.hpp>
+
38
+
39#include <set>
+
40#include <list>
+
41
+
42namespace rtabmap {
+
43
+
44class DBDriver;
+
45
+
+
46class RTABMAP_CORE_EXPORT DBReader : public Camera {
+
47public:
+
48 DBReader(const std::string & databasePath,
+
49 float frameRate = 0.0f, // -1 = use Database stamps, 0 = inf
+
50 bool odometryIgnored = false,
+
51 bool ignoreGoalDelay = false,
+
52 bool goalsIgnored = false,
+
53 int startId = 0,
+
54 const std::vector<unsigned int> & cameraIndices = std::vector<unsigned int>(),
+
55 int stopId = 0,
+
56 bool intermediateNodesIgnored = false,
+
57 bool landmarksIgnored = false,
+
58 bool featuresIgnored = false,
+
59 int startMapId = 0,
+
60 int stopMapId = -1,
+
61 bool priorsIgnored = false,
+
62 bool imuIgnored = false,
+
63 bool intermediateNodesAreNormalNodes = false,
+
64 const std::vector<Transform> & cameraLocalTransformOverrides = std::vector<Transform>());
+
65 DBReader(const std::list<std::string> & databasePaths,
+
66 float frameRate = 0.0f, // -1 = use Database stamps, 0 = inf
+
67 bool odometryIgnored = false,
+
68 bool ignoreGoalDelay = false,
+
69 bool goalsIgnored = false,
+
70 int startId = 0,
+
71 const std::vector<unsigned int> & cameraIndices = std::vector<unsigned int>(),
+
72 int stopId = 0,
+
73 bool intermediateNodesIgnored = false,
+
74 bool landmarksIgnored = false,
+
75 bool featuresIgnored = false,
+
76 int startMapId = 0,
+
77 int stopMapId = -1,
+
78 bool priorsIgnored = false,
+
79 bool imuIgnored = false,
+
80 bool intermediateNodesAreNormalNodes = false,
+
81 const std::vector<Transform> & cameraLocalTransformOverrides = std::vector<Transform>());
+
82 virtual ~DBReader();
+
83
+
84 virtual bool init(
+
85 const std::string & calibrationFolder = ".",
+
86 const std::string & cameraName = "");
+
87
+
88 virtual bool isCalibrated() const;
+
89 virtual std::string getSerial() const;
+
90 virtual bool odomProvided() const {return !_odometryIgnored;}
+
91 virtual bool getPose(double stamp, Transform & pose, cv::Mat & covariance, double maxWaitTime = 0.06);
+
92
+
93 const DBDriver * driver() const {return _dbDriver;}
+
94
+
95protected:
+
96 virtual SensorData captureImage(SensorCaptureInfo * info = 0);
+
97
+
98private:
+
99 SensorData getNextData(SensorCaptureInfo * info = 0);
+
100 void checkArguments();
+
101
+
102private:
+
103 std::list<std::string> _paths;
+
104 bool _odometryIgnored;
+
105 bool _ignoreGoalDelay;
+
106 bool _goalsIgnored;
+
107 int _startId;
+
108 int _stopId;
+
109 std::vector<unsigned int> _cameraIndices;
+
110 bool _intermediateNodesIgnored;
+
111 bool _intermediateNodesAreNormalNodes;
+
112 bool _landmarksIgnored;
+
113 bool _featuresIgnored;
+
114 bool _priorsIgnored;
+
115 bool _imuIgnored;
+
116 int _startMapId;
+
117 int _stopMapId;
+
118 std::vector<Transform> _cameraLocalTransformOverrides;
+
119
+
120 DBDriver * _dbDriver;
+
121 UTimer _timer;
+
122 std::set<int> _ids;
+
123 std::set<int>::iterator _currentId;
+
124 int _previousMapId;
+
125 cv::Mat _previousInfMatrix;
+
126 double _previousStamp;
+
127 int _previousMapID;
+
128 bool _calibrated;
+
129};
+
+
130
+
131} /* namespace rtabmap */
+
132#endif /* DBREADER_H_ */
+ + +
Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).
Definition DBDriver.h:72
+ +
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
Definition DBReader.h:90
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")
Initializes the sensor.
+
virtual bool getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
Gets the sensor's pose estimate at a specific timestamp.
+
virtual std::string getSerial() const
Returns the sensor's serial number or unique identifier.
+
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/EnvSensor_8h_source.html b/preview/pr-1773/api/latest/EnvSensor_8h_source.html new file mode 100644 index 00000000..cb6866ba --- /dev/null +++ b/preview/pr-1773/api/latest/EnvSensor_8h_source.html @@ -0,0 +1,237 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/EnvSensor.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EnvSensor.h
+
+
+
1/*
+
2Copyright (c) 2010-2018, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_ENVSENSOR_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_ENVSENSOR_H_
+
30
+
31#include <map>
+
32
+
33namespace rtabmap {
+
34
+
+ +
51{
+
52public:
+ +
77
+
78public:
+
+ +
81 type_(kUndefined),
+
82 value_(0.0),
+
83 stamp_(0.0)
+
84 {}
+
+
85
+
+
92 EnvSensor(const Type & type, const double & value,const double & stamp = 0) :
+
93 type_(type),
+
94 value_(value),
+
95 stamp_(stamp)
+
96 {}
+
+
97
+
98 virtual ~EnvSensor() {}
+
99
+
101 const Type & type() const {return type_;}
+
103 const double & value() const {return value_;}
+
105 const double & stamp() const {return stamp_;}
+
106
+
107private:
+
108 Type type_;
+
109 double value_;
+
110 double stamp_;
+
111};
+
+
112
+
114typedef std::map<EnvSensor::Type, EnvSensor> EnvSensors;
+
115
+
116}
+
117
+
118#endif /* CORELIB_INCLUDE_RTABMAP_CORE_ENVSENSOR_H_ */
+
Single environmental measurement (type, value, timestamp).
Definition EnvSensor.h:51
+
const double & stamp() const
Definition EnvSensor.h:105
+
Type
Environmental sensor channel identifier.
Definition EnvSensor.h:59
+
@ kWifiSignalStrength
Wi‑Fi signal strength (dBm).
Definition EnvSensor.h:61
+
@ kCustomSensor8
User-defined sensor slot 8.
Definition EnvSensor.h:74
+
@ kAmbientAirPressure
Ambient air pressure (hPa).
Definition EnvSensor.h:63
+
@ kCustomSensor4
User-defined sensor slot 4.
Definition EnvSensor.h:70
+
@ kCustomSensor9
User-defined sensor slot 9.
Definition EnvSensor.h:75
+
@ kCustomSensor3
User-defined sensor slot 3.
Definition EnvSensor.h:69
+
@ kAmbientRelativeHumidity
Relative humidity (%).
Definition EnvSensor.h:65
+
@ kCustomSensor1
User-defined sensor slot 1.
Definition EnvSensor.h:67
+
@ kAmbientLight
Ambient illuminance (lx).
Definition EnvSensor.h:64
+
@ kCustomSensor2
User-defined sensor slot 2.
Definition EnvSensor.h:68
+
@ kAmbientTemperature
Ambient temperature (°C).
Definition EnvSensor.h:62
+
@ kUndefined
Uninitialized / unknown channel.
Definition EnvSensor.h:60
+
@ kCustomSensor7
User-defined sensor slot 7.
Definition EnvSensor.h:73
+
@ kCustomSensor6
User-defined sensor slot 6.
Definition EnvSensor.h:72
+
@ kCustomSensor5
User-defined sensor slot 5.
Definition EnvSensor.h:71
+
const double & value() const
Definition EnvSensor.h:103
+
EnvSensor()
Default constructor: kUndefined type, zero value and stamp.
Definition EnvSensor.h:80
+
EnvSensor(const Type &type, const double &value, const double &stamp=0)
Constructs a reading with the given type, value, and optional stamp.
Definition EnvSensor.h:92
+
const Type & type() const
Definition EnvSensor.h:101
+ +
std::map< EnvSensor::Type, EnvSensor > EnvSensors
Map of environmental readings keyed by EnvSensor::Type (at most one per type).
Definition EnvSensor.h:114
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/EpipolarGeometry_8h_source.html b/preview/pr-1773/api/latest/EpipolarGeometry_8h_source.html new file mode 100644 index 00000000..87272ba3 --- /dev/null +++ b/preview/pr-1773/api/latest/EpipolarGeometry_8h_source.html @@ -0,0 +1,377 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/EpipolarGeometry.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EpipolarGeometry.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31#include "rtabmap/core/Parameters.h"
+ +
33#include <opencv2/core/core.hpp>
+
34#if CV_MAJOR_VERSION < 5
+
35#include <opencv2/features2d/features2d.hpp>
+
36#else
+
37#include <opencv2/features.hpp>
+
38#endif
+
39#include <pcl/point_cloud.h>
+
40#include <pcl/point_types.h>
+
41#include <list>
+
42#include <vector>
+
43
+
44namespace rtabmap
+
45{
+
46
+
47class Signature;
+
48
+
+
49class RTABMAP_CORE_EXPORT EpipolarGeometry
+
50{
+
51public:
+
52 EpipolarGeometry(const ParametersMap & parameters = ParametersMap());
+
53 virtual ~EpipolarGeometry();
+
54 bool check(const Signature * ssA, const Signature * ssB);
+
55 void parseParameters(const ParametersMap & parameters);
+
56
+
57 int getMatchCountMinAccepted() const {return _matchCountMinAccepted;}
+
58 double getRansacParam1() const {return _ransacParam1;}
+
59 double getRansacParam2() const {return _ransacParam2;}
+
60
+
61 void setMatchCountMinAccepted(int matchCountMinAccepted) {_matchCountMinAccepted = matchCountMinAccepted;}
+
62 void setRansacParam1(double ransacParam1) {_ransacParam1 = ransacParam1;}
+
63 void setRansacParam2(double ransacParam2) {_ransacParam2 = ransacParam2;}
+
64
+
65
+
66 // STATIC STUFF
+
67 //epipolar geometry
+
68 static void findEpipolesFromF(
+
69 const cv::Mat & fundamentalMatrix,
+
70 cv::Vec3d & e1,
+
71 cv::Vec3d & e2);
+
72
+
73 static cv::Mat findPFromE(
+
74 const cv::Mat & E,
+
75 const cv::Mat & x,
+
76 const cv::Mat & xp);
+
77
+
78 // return fundamental matrix
+
79 // status -> inliers = 1, outliers = 0
+
80 static cv::Mat findFFromWords(
+
81 const std::list<std::pair<int, std::pair<cv::KeyPoint, cv::KeyPoint> > > & pairs, // id, kpt1, kpt2
+
82 std::vector<uchar> & status,
+
83 double ransacReprojThreshold = 3.0,
+
84 double ransacConfidence = 0.99);
+
85
+
86 // assume a canonical camera (without K)
+
87 static void findRTFromP(
+
88 const cv::Mat & p,
+
89 cv::Mat & r,
+
90 cv::Mat & t);
+
91
+
92 static cv::Mat findFFromCalibratedStereoCameras(double fx, double fy, double cx, double cy, double Tx, double Ty);
+
93
+
94
+
99 template<typename T>
+
+
100 static int findPairs(
+
101 const std::map<int, T> & wordsA,
+
102 const std::map<int, T> & wordsB,
+
103 std::list<std::pair<int, std::pair<T, T> > > & pairs,
+
104 bool ignoreNegativeIds = true)
+
105 {
+
106 int realPairsCount = 0;
+
107 pairs.clear();
+
108 for(typename std::map<int, T>::const_iterator i=wordsA.begin(); i!=wordsA.end(); ++i)
+
109 {
+
110 if(!ignoreNegativeIds || (ignoreNegativeIds && i->first>=0))
+
111 {
+
112 std::map<int, cv::KeyPoint>::const_iterator ptB = wordsB.find(i->first);
+
113 if(ptB != wordsB.end())
+
114 {
+
115 pairs.push_back(std::pair<int, std::pair<T, T> >(i->first, std::make_pair(i->second, ptB->second)));
+
116 ++realPairsCount;
+
117 }
+
118 }
+
119 }
+
120 return realPairsCount;
+
121 }
+
+
122
+
127 template<typename T>
+
+
128 static int findPairs(
+
129 const std::multimap<int, T> & wordsA,
+
130 const std::multimap<int, T> & wordsB,
+
131 std::list<std::pair<int, std::pair<T, T> > > & pairs,
+
132 bool ignoreNegativeIds = true)
+
133 {
+
134 const std::list<int> & ids = uUniqueKeys(wordsA);
+
135 typename std::multimap<int, T>::const_iterator iterA;
+
136 typename std::multimap<int, T>::const_iterator iterB;
+
137 pairs.clear();
+
138 int realPairsCount = 0;
+
139 for(std::list<int>::const_iterator i=ids.begin(); i!=ids.end(); ++i)
+
140 {
+
141 if(!ignoreNegativeIds || (ignoreNegativeIds && *i >= 0))
+
142 {
+
143 iterA = wordsA.find(*i);
+
144 iterB = wordsB.find(*i);
+
145 while(iterA != wordsA.end() && iterB != wordsB.end() && (*iterA).first == (*iterB).first && (*iterA).first == *i)
+
146 {
+
147 pairs.push_back(std::pair<int, std::pair<T, T> >(*i, std::make_pair((*iterA).second, (*iterB).second)));
+
148 ++iterA;
+
149 ++iterB;
+
150 ++realPairsCount;
+
151 }
+
152 }
+
153 }
+
154 return realPairsCount;
+
155 }
+
+
156
+
161 template<typename T>
+
+
162 static int findPairsUnique(
+
163 const std::multimap<int, T> & wordsA,
+
164 const std::multimap<int, T> & wordsB,
+
165 std::list<std::pair<int, std::pair<T, T> > > & pairs,
+
166 bool ignoreNegativeIds = true)
+
167 {
+
168 const std::list<int> & ids = uUniqueKeys(wordsA);
+
169 int realPairsCount = 0;
+
170 pairs.clear();
+
171 for(std::list<int>::const_iterator i=ids.begin(); i!=ids.end(); ++i)
+
172 {
+
173 if(!ignoreNegativeIds || (ignoreNegativeIds && *i>=0))
+
174 {
+
175 std::list<T> ptsA = uValues(wordsA, *i);
+
176 std::list<T> ptsB = uValues(wordsB, *i);
+
177 if(ptsA.size() == 1 && ptsB.size() == 1)
+
178 {
+
179 pairs.push_back(std::pair<int, std::pair<T, T> >(*i, std::pair<T, T>(ptsA.front(), ptsB.front())));
+
180 ++realPairsCount;
+
181 }
+
182 else if(ptsA.size()>1 && ptsB.size()>1)
+
183 {
+
184 // just update the count
+
185 realPairsCount += ptsA.size() > ptsB.size() ? ptsB.size() : ptsA.size();
+
186 }
+
187 }
+
188 }
+
189 return realPairsCount;
+
190 }
+
+
191
+
196 template<typename T>
+
+
197 static int findPairsAll(
+
198 const std::multimap<int, T> & wordsA,
+
199 const std::multimap<int, T> & wordsB,
+
200 std::list<std::pair<int, std::pair<T, T> > > & pairs,
+
201 bool ignoreNegativeIds = true)
+
202 {
+
203 const std::list<int> & ids = uUniqueKeys(wordsA);
+
204 pairs.clear();
+
205 int realPairsCount = 0;;
+
206 for(std::list<int>::const_iterator iter=ids.begin(); iter!=ids.end(); ++iter)
+
207 {
+
208 if(!ignoreNegativeIds || (ignoreNegativeIds && *iter>=0))
+
209 {
+
210 std::list<T> ptsA = uValues(wordsA, *iter);
+
211 std::list<T> ptsB = uValues(wordsB, *iter);
+
212
+
213 realPairsCount += ptsA.size() > ptsB.size() ? ptsB.size() : ptsA.size();
+
214
+
215 for(typename std::list<T>::iterator jter=ptsA.begin(); jter!=ptsA.end(); ++jter)
+
216 {
+
217 for(typename std::list<T>::iterator kter=ptsB.begin(); kter!=ptsB.end(); ++kter)
+
218 {
+
219 pairs.push_back(std::pair<int, std::pair<T, T> >(*iter, std::pair<T, T>(*jter, *kter)));
+
220 }
+
221 }
+
222 }
+
223 }
+
224 return realPairsCount;
+
225 }
+
+
226
+
227 static cv::Mat linearLSTriangulation(
+
228 cv::Point3d u, //homogenous image point (u,v,1)
+
229 cv::Matx34d P, //camera 1 matrix 3x4 double
+
230 cv::Point3d u1, //homogenous image point in 2nd camera
+
231 cv::Matx34d P1); //camera 2 matrix 3x4 double
+
232
+
233 static cv::Mat iterativeLinearLSTriangulation(
+
234 cv::Point3d u, //homogenous image point (u,v,1)
+
235 const cv::Matx34d & P, //camera 1 matrix 3x4 double
+
236 cv::Point3d u1, //homogenous image point in 2nd camera
+
237 const cv::Matx34d & P1); //camera 2 matrix 3x4 double
+
238
+
239 static double triangulatePoints(
+
240 const cv::Mat& pt_set1, //2xN double
+
241 const cv::Mat& pt_set2, //2xN double
+
242 const cv::Mat& P, // 3x4 double
+
243 const cv::Mat& P1, // 3x4 double
+
244 pcl::PointCloud<pcl::PointXYZ>::Ptr & pointcloud,
+
245 std::vector<double> & reproj_errors);
+
246
+
247private:
+
248 int _matchCountMinAccepted;
+
249 double _ransacParam1;
+
250 double _ransacParam2;
+
251};
+
+
252
+
253} // namespace rtabmap
+
Wrappers of STL for convenient functions.
+
std::list< K > uUniqueKeys(const std::multimap< K, V > &mm)
Definition UStl.h:46
+
std::vector< V > uValues(const std::multimap< K, V > &mm)
Definition UStl.h:100
+ +
static int findPairsUnique(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
+
static int findPairs(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
+
static int findPairs(const std::map< int, T > &wordsA, const std::map< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
+
static int findPairsAll(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Features2d_8h_source.html b/preview/pr-1773/api/latest/Features2d_8h_source.html new file mode 100644 index 00000000..c22801c0 --- /dev/null +++ b/preview/pr-1773/api/latest/Features2d_8h_source.html @@ -0,0 +1,922 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Features2d.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Features2d.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef FEATURES2D_H_
+
29#define FEATURES2D_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <opencv2/highgui/highgui.hpp>
+
34#include <opencv2/core/core.hpp>
+
35#if CV_MAJOR_VERSION < 5
+
36#include <opencv2/features2d/features2d.hpp>
+
37#else
+
38#include <opencv2/features.hpp>
+
39#endif
+
40#include <list>
+
41#include <numeric>
+
42#include "rtabmap/core/Parameters.h"
+
43#include "rtabmap/core/SensorData.h"
+
44
+
45#if CV_MAJOR_VERSION < 3
+
46namespace cv{
+
47class SURF;
+
48class SIFT;
+
49namespace gpu {
+
50 class SURF_GPU;
+
51 class ORB_GPU;
+
52 class FAST_GPU;
+
53 class GoodFeaturesToTrackDetector_GPU;
+
54}
+
55}
+
56typedef cv::SIFT CV_SIFT;
+
57typedef cv::SURF CV_SURF;
+
58typedef cv::FastFeatureDetector CV_FAST;
+
59typedef cv::FREAK CV_FREAK;
+
60typedef cv::GFTTDetector CV_GFTT;
+
61typedef cv::BriefDescriptorExtractor CV_BRIEF;
+
62typedef cv::BRISK CV_BRISK;
+
63typedef cv::gpu::SURF_GPU CV_SURF_GPU;
+
64typedef cv::gpu::ORB_GPU CV_ORB_GPU;
+
65typedef cv::gpu::FAST_GPU CV_FAST_GPU;
+
66typedef cv::gpu::GoodFeaturesToTrackDetector_GPU CV_GFTT_GPU;
+
67#else
+
68namespace cv{
+
69namespace xfeatures2d {
+
70class FREAK;
+
71class DAISY;
+
72class BriefDescriptorExtractor;
+
73#if (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION <= 3) || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION < 4 || (CV_MINOR_VERSION==4 && CV_SUBMINOR_VERSION<11)))
+
74class SIFT;
+
75#endif
+
76class SURF;
+
77#if (CV_MAJOR_VERSION == 5)
+
78class BRISK;
+
79class KAZE;
+
80#endif
+
81}
+
82namespace cuda {
+
83class FastFeatureDetector;
+
84class ORB;
+
85class SURF_CUDA;
+
86class CornersDetector;
+
87}
+
88}
+
89#if (CV_MAJOR_VERSION == 4 && CV_MINOR_VERSION <= 3) || (CV_MAJOR_VERSION == 3 && (CV_MINOR_VERSION < 4 || (CV_MINOR_VERSION==4 && CV_SUBMINOR_VERSION<11)))
+
90typedef cv::xfeatures2d::SIFT CV_SIFT;
+
91#else
+
92typedef cv::SIFT CV_SIFT; // SIFT is back in features2d since 4.4.0 / 3.4.11
+
93#endif
+
94typedef cv::xfeatures2d::SURF CV_SURF;
+
95typedef cv::FastFeatureDetector CV_FAST;
+
96typedef cv::xfeatures2d::FREAK CV_FREAK;
+
97typedef cv::xfeatures2d::DAISY CV_DAISY;
+
98typedef cv::GFTTDetector CV_GFTT;
+
99typedef cv::xfeatures2d::BriefDescriptorExtractor CV_BRIEF;
+
100#if (CV_MAJOR_VERSION < 5)
+
101typedef cv::BRISK CV_BRISK;
+
102typedef cv::KAZE CV_KAZE;
+
103#else
+
104typedef cv::xfeatures2d::BRISK CV_BRISK;
+
105typedef cv::xfeatures2d::KAZE CV_KAZE;
+
106#endif
+
107typedef cv::ORB CV_ORB;
+
108typedef cv::cuda::SURF_CUDA CV_SURF_GPU;
+
109typedef cv::cuda::ORB CV_ORB_GPU;
+
110typedef cv::cuda::FastFeatureDetector CV_FAST_GPU;
+
111typedef cv::cuda::CornersDetector CV_GFTT_GPU;
+
112#endif
+
113
+
114// CudaSift fork: https://github.com/matlabbe/CudaSift
+
115class SiftData;
+
116
+
117namespace rtabmap {
+
118
+
119class ORBextractor;
+
120class SPDetector;
+
121class SPDetectorRpautrat;
+
122
+
123class Stereo;
+
124#if CV_MAJOR_VERSION < 3
+
125class CV_ORB;
+
126#endif
+
127
+
+
145class RTABMAP_CORE_EXPORT Feature2D {
+
146public:
+
+
148 enum Type {kFeatureUndef=-1,
+
149 kFeatureSurf=0,
+
150 kFeatureSift=1,
+
151 kFeatureOrb=2,
+
152 kFeatureFastFreak=3,
+
153 kFeatureFastBrief=4,
+
154 kFeatureGfttFreak=5,
+
155 kFeatureGfttBrief=6,
+
156 kFeatureBrisk=7,
+
157 kFeatureGfttOrb=8, //new 0.10.11
+
158 kFeatureKaze=9, //new 0.13.2
+
159 kFeatureOrbOctree=10, //new 0.19.2
+
160 kFeatureSuperPointTorch=11, //new 0.19.7
+
161 kFeatureSurfFreak=12, //new 0.20.4
+
162 kFeatureGfttDaisy=13, //new 0.20.6
+
163 kFeatureSurfDaisy=14, //new 0.20.6
+
164 kFeaturePyDetector=15, //new 0.20.8
+
165 kFeatureSuperPointRpautrat=16, // new 0.23.3
+
166 kFeatureEnd}; // Sentinel: always keep last. Used to iterate through types.
+
+
167
+
+
169 static std::string typeName(Type type)
+
170 {
+
171 switch(type){
+
172 case kFeatureSurf:
+
173 return "SURF";
+
174 case kFeatureSift:
+
175 return "SIFT";
+
176 case kFeatureOrb:
+
177 return "ORB";
+
178 case kFeatureFastFreak:
+
179 return "FAST+FREAK";
+
180 case kFeatureFastBrief:
+
181 return "FAST+BRIEF";
+
182 case kFeatureGfttFreak:
+
183 return "GFTT+Freak";
+
184 case kFeatureGfttBrief:
+
185 return "GFTT+Brief";
+
186 case kFeatureBrisk:
+
187 return "BRISK";
+
188 case kFeatureGfttOrb:
+
189 return "GFTT+ORB";
+
190 case kFeatureKaze:
+
191 return "KAZE";
+
192 case kFeatureOrbOctree:
+
193 return "ORB-OCTREE";
+
194 case kFeatureSuperPointTorch:
+
195 return "SUPERPOINT";
+
196 case kFeatureSurfFreak:
+
197 return "SURF+Freak";
+
198 case kFeatureGfttDaisy:
+
199 return "GFTT+Daisy";
+
200 case kFeatureSurfDaisy:
+
201 return "SURF+Daisy";
+
202 case kFeaturePyDetector:
+
203 return "PyDetector";
+
204 case kFeatureSuperPointRpautrat:
+
205 return "SUPERPOINT-RPAUTRAT";
+
206 default:
+
207 return "Unknown";
+
208 }
+
209 }
+
+
210
+
212 static Feature2D * create(const ParametersMap & parameters = ParametersMap());
+
214 static Feature2D * create(Feature2D::Type type, const ParametersMap & parameters = ParametersMap());
+
215
+
217 static bool isAvailable(Feature2D::Type type);
+
218
+ +
221 std::vector<cv::KeyPoint> & keypoints,
+
222 const cv::Mat & depth,
+
223 float minDepth,
+
224 float maxDepth);
+
225 static void filterKeypointsByDepth(
+
226 std::vector<cv::KeyPoint> & keypoints,
+
227 cv::Mat & descriptors,
+
228 const cv::Mat & depth,
+
229 float minDepth,
+
230 float maxDepth);
+
231 static void filterKeypointsByDepth(
+
232 std::vector<cv::KeyPoint> & keypoints,
+
233 cv::Mat & descriptors,
+
234 std::vector<cv::Point3f> & keypoints3D,
+
235 float minDepth,
+
236 float maxDepth);
+
237
+ +
240 std::vector<cv::KeyPoint> & keypoints,
+
241 const cv::Mat & disparity,
+
242 float minDisparity);
+
243 static void filterKeypointsByDisparity(
+
244 std::vector<cv::KeyPoint> & keypoints,
+
245 cv::Mat & descriptors,
+
246 const cv::Mat & disparity,
+
247 float minDisparity);
+
248
+
250 static void limitKeypoints(std::vector<cv::KeyPoint> & keypoints, int maxKeypoints, const cv::Size & imageSize = cv::Size(), bool ssc = false);
+
251 static void limitKeypoints(std::vector<cv::KeyPoint> & keypoints, cv::Mat & descriptors, int maxKeypoints, const cv::Size & imageSize = cv::Size(), bool ssc = false);
+
252 static void limitKeypoints(std::vector<cv::KeyPoint> & keypoints, std::vector<cv::Point3f> & keypoints3D, cv::Mat & descriptors, int maxKeypoints, const cv::Size & imageSize = cv::Size(), bool ssc = false);
+
253 static void limitKeypoints(const std::vector<cv::KeyPoint> & keypoints, std::vector<bool> & inliers, int maxKeypoints, const cv::Size & imageSize = cv::Size(), bool ssc = false);
+
254 static void limitKeypoints(const std::vector<cv::KeyPoint> & keypoints, std::vector<bool> & inliers, int maxKeypoints, const cv::Size & imageSize, int gridRows, int gridCols, bool ssc = false);
+
255
+
257 static cv::Rect computeRoi(const cv::Mat & image, const std::string & roiRatios);
+
258 static cv::Rect computeRoi(const cv::Mat & image, const std::vector<float> & roiRatios);
+
259
+
260 int getMaxFeatures() const {return maxFeatures_;}
+
261 bool getSSC() const {return SSC_;}
+
262 float getMinDepth() const {return _minDepth;}
+
263 float getMaxDepth() const {return _maxDepth;}
+
264 int getGridRows() const {return gridRows_;}
+
265 int getGridCols() const {return gridCols_;}
+
266
+
267public:
+
268 virtual ~Feature2D();
+
269
+
271 std::vector<cv::KeyPoint> generateKeypoints(
+
272 const cv::Mat & image,
+
273 const cv::Mat & mask = cv::Mat());
+ +
276 const cv::Mat & image,
+
277 std::vector<cv::KeyPoint> & keypoints) const;
+
279 std::vector<cv::Point3f> generateKeypoints3D(
+
280 const SensorData & data,
+
281 const std::vector<cv::KeyPoint> & keypoints) const;
+
282
+
283 virtual void parseParameters(const ParametersMap & parameters);
+
284 virtual const ParametersMap & getParameters() const {return parameters_;}
+
285 virtual Feature2D::Type getType() const = 0;
+
286
+
294 virtual bool isGpuAvailable() const {return false;}
+
295
+
296protected:
+
297 Feature2D(const ParametersMap & parameters = ParametersMap());
+
298
+
299private:
+
300 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) = 0;
+
301 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const = 0;
+
302
+
303private:
+
304 ParametersMap parameters_;
+
305 int maxFeatures_;
+
306 bool SSC_;
+
307 float _maxDepth; // 0=inf
+
308 float _minDepth;
+
309 std::vector<float> _roiRatios; // size 4
+
310 int _subPixWinSize;
+
311 int _subPixIterations;
+
312 double _subPixEps;
+
313 int gridRows_;
+
314 int gridCols_;
+
315 // Stereo stuff
+
316 Stereo * _stereo;
+
317};
+
+
318
+
+
320class RTABMAP_CORE_EXPORT SURF : public Feature2D
+
321{
+
322public:
+
323 SURF(const ParametersMap & parameters = ParametersMap());
+
324 virtual ~SURF();
+
325
+
326 virtual void parseParameters(const ParametersMap & parameters) override;
+
327 virtual Feature2D::Type getType() const override {return kFeatureSurf;}
+
328 virtual bool isGpuAvailable() const override;
+
329
+
330private:
+
331 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
332 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
333
+
334private:
+
335 double hessianThreshold_;
+
336 int nOctaves_;
+
337 int nOctaveLayers_;
+
338 bool extended_;
+
339 bool upright_;
+
340 float gpuKeypointsRatio_;
+
341 bool gpuVersion_;
+
342
+
343 cv::Ptr<CV_SURF> _surf;
+
344 cv::Ptr<CV_SURF_GPU> _gpuSurf;
+
345};
+
+
346
+
+
348class RTABMAP_CORE_EXPORT SIFT : public Feature2D
+
349{
+
350public:
+
351 SIFT(const ParametersMap & parameters = ParametersMap());
+
352 virtual ~SIFT();
+
353
+
354 virtual void parseParameters(const ParametersMap & parameters) override;
+
355 virtual Feature2D::Type getType() const override {return kFeatureSift;}
+
356 virtual bool isGpuAvailable() const override;
+
357
+
358private:
+
359 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
360 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
361
+
362private:
+
363 int nOctaveLayers_;
+
364 double contrastThreshold_;
+
365 double edgeThreshold_;
+
366 double sigma_;
+
367 bool preciseUpscale_;
+
368 bool rootSIFT_;
+
369 bool gpu_;
+
370 float gaussianThreshold_;
+
371 float maxGaussianThreshold_;
+
372 bool upscale_;
+
373
+
374 cv::Ptr<CV_SIFT> sift_;
+
375 SiftData * cudaSiftData_;
+
376 float * cudaSiftMemory_;
+
377 cv::Size cudaSiftMemorySize_;
+
378 cv::Mat cudaSiftDescriptors_;
+
379 bool cudaSiftUpscaling_;
+
380};
+
+
381
+
+
383class RTABMAP_CORE_EXPORT ORB : public Feature2D
+
384{
+
385public:
+
386 ORB(const ParametersMap & parameters = ParametersMap());
+
387 virtual ~ORB();
+
388
+
389 virtual void parseParameters(const ParametersMap & parameters) override;
+
390 virtual Feature2D::Type getType() const override {return kFeatureOrb;}
+
391 virtual bool isGpuAvailable() const override;
+
392
+
393private:
+
394 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
395 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
396
+
397private:
+
398 float scaleFactor_;
+
399 int nLevels_;
+
400 int edgeThreshold_;
+
401 int firstLevel_;
+
402 int WTA_K_;
+
403 int scoreType_;
+
404 int patchSize_;
+
405 bool gpu_;
+
406
+
407 int fastThreshold_;
+
408 bool nonmaxSuppresion_;
+
409
+
410 cv::Ptr<CV_ORB> _orb;
+
411 cv::Ptr<CV_ORB_GPU> _gpuOrb;
+
412};
+
+
413
+
+
415class RTABMAP_CORE_EXPORT FAST : public Feature2D
+
416{
+
417public:
+
418 FAST(const ParametersMap & parameters = ParametersMap());
+
419 virtual ~FAST();
+
420
+
421 virtual void parseParameters(const ParametersMap & parameters) override;
+
422 virtual Feature2D::Type getType() const override {return kFeatureUndef;}
+
423 virtual bool isGpuAvailable() const override;
+
424
+
425private:
+
426 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
427 virtual cv::Mat generateDescriptorsImpl(const cv::Mat &, std::vector<cv::KeyPoint> &) const override {return cv::Mat();}
+
428
+
429private:
+
430 int threshold_;
+
431 bool nonmaxSuppression_;
+
432 bool gpu_;
+
433 double gpuKeypointsRatio_;
+
434 int minThreshold_;
+
435 int maxThreshold_;
+
436 int gridRows_;
+
437 int gridCols_;
+
438 int fastCV_;
+
439
+
440 bool fastCVinit_;
+
441 int fastCVMaxFeatures_;
+
442 int fastCVLastImageHeight_;
+
443 uint32_t* fastCVCorners_= NULL;
+
444 uint32_t* fastCVCornerScores_ = NULL;
+
445 void* fastCVTempBuf_ = NULL;
+
446
+
447 cv::Ptr<cv::FeatureDetector> _fast;
+
448 cv::Ptr<CV_FAST_GPU> _gpuFast;
+
449};
+
+
450
+
+
452class RTABMAP_CORE_EXPORT FAST_BRIEF : public FAST
+
453{
+
454public:
+
455 FAST_BRIEF(const ParametersMap & parameters = ParametersMap());
+
456 virtual ~FAST_BRIEF();
+
457
+
458 virtual void parseParameters(const ParametersMap & parameters) override;
+
459 virtual Feature2D::Type getType() const override {return kFeatureFastBrief;}
+
460
+
461private:
+
462 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
463
+
464private:
+
465 int bytes_;
+
466
+
467 cv::Ptr<CV_BRIEF> _brief;
+
468};
+
+
469
+
+
471class RTABMAP_CORE_EXPORT FAST_FREAK : public FAST
+
472{
+
473public:
+
474 FAST_FREAK(const ParametersMap & parameters = ParametersMap());
+
475 virtual ~FAST_FREAK();
+
476
+
477 virtual void parseParameters(const ParametersMap & parameters) override;
+
478 virtual Feature2D::Type getType() const override {return kFeatureFastFreak;}
+
479
+
480private:
+
481 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
482
+
483private:
+
484 bool orientationNormalized_;
+
485 bool scaleNormalized_;
+
486 float patternScale_;
+
487 int nOctaves_;
+
488
+
489 cv::Ptr<CV_FREAK> _freak;
+
490};
+
+
491
+
+
493class RTABMAP_CORE_EXPORT GFTT : public Feature2D
+
494{
+
495public:
+
496 GFTT(const ParametersMap & parameters = ParametersMap());
+
497 virtual ~GFTT();
+
498
+
499 virtual void parseParameters(const ParametersMap & parameters) override;
+
500 virtual bool isGpuAvailable() const override;
+
501
+
502private:
+
503 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
504
+
505private:
+
506 double _qualityLevel;
+
507 double _minDistance;
+
508 int _blockSize;
+
509 bool _useHarrisDetector;
+
510 double _k;
+
511 bool _gpu;
+
512
+
513 cv::Ptr<CV_GFTT> _gftt;
+
514 cv::Ptr<CV_GFTT_GPU> _gpuGftt;
+
515};
+
+
516
+
+
518class RTABMAP_CORE_EXPORT GFTT_BRIEF : public GFTT
+
519{
+
520public:
+
521 GFTT_BRIEF(const ParametersMap & parameters = ParametersMap());
+
522 virtual ~GFTT_BRIEF();
+
523
+
524 virtual void parseParameters(const ParametersMap & parameters) override;
+
525 virtual Feature2D::Type getType() const override {return kFeatureGfttBrief;}
+
526
+
527private:
+
528 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
529
+
530private:
+
531 int bytes_;
+
532
+
533 cv::Ptr<CV_BRIEF> _brief;
+
534};
+
+
535
+
+
537class RTABMAP_CORE_EXPORT GFTT_FREAK : public GFTT
+
538{
+
539public:
+
540 GFTT_FREAK(const ParametersMap & parameters = ParametersMap());
+
541 virtual ~GFTT_FREAK();
+
542
+
543 virtual void parseParameters(const ParametersMap & parameters) override;
+
544 virtual Feature2D::Type getType() const override {return kFeatureGfttFreak;}
+
545
+
546private:
+
547 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
548
+
549private:
+
550 bool orientationNormalized_;
+
551 bool scaleNormalized_;
+
552 float patternScale_;
+
553 int nOctaves_;
+
554
+
555 cv::Ptr<CV_FREAK> _freak;
+
556};
+
+
557
+
+
559class RTABMAP_CORE_EXPORT SURF_FREAK : public SURF
+
560{
+
561public:
+
562 SURF_FREAK(const ParametersMap & parameters = ParametersMap());
+
563 virtual ~SURF_FREAK();
+
564
+
565 virtual void parseParameters(const ParametersMap & parameters) override;
+
566 virtual Feature2D::Type getType() const override {return kFeatureSurfFreak;}
+
567
+
568private:
+
569 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
570
+
571private:
+
572 bool orientationNormalized_;
+
573 bool scaleNormalized_;
+
574 float patternScale_;
+
575 int nOctaves_;
+
576
+
577 cv::Ptr<CV_FREAK> _freak;
+
578};
+
+
579
+
+
581class RTABMAP_CORE_EXPORT GFTT_ORB : public GFTT
+
582{
+
583public:
+
584 GFTT_ORB(const ParametersMap & parameters = ParametersMap());
+
585 virtual ~GFTT_ORB();
+
586
+
587 virtual void parseParameters(const ParametersMap & parameters) override;
+
588 virtual Feature2D::Type getType() const override {return kFeatureGfttOrb;}
+
589
+
590private:
+
591 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
592
+
593private:
+
594 ORB _orb;
+
595};
+
+
596
+
+
598class RTABMAP_CORE_EXPORT BRISK : public Feature2D
+
599{
+
600public:
+
601 BRISK(const ParametersMap & parameters = ParametersMap());
+
602 virtual ~BRISK();
+
603
+
604 virtual void parseParameters(const ParametersMap & parameters) override;
+
605 virtual Feature2D::Type getType() const override {return kFeatureBrisk;}
+
606
+
607private:
+
608 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
609 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
610
+
611private:
+
612 int thresh_;
+
613 int octaves_;
+
614 float patternScale_;
+
615
+
616 cv::Ptr<CV_BRISK> brisk_;
+
617};
+
+
618
+
+
620class RTABMAP_CORE_EXPORT KAZE : public Feature2D
+
621{
+
622public:
+
623 KAZE(const ParametersMap & parameters = ParametersMap());
+
624 virtual ~KAZE();
+
625
+
626 virtual void parseParameters(const ParametersMap & parameters) override;
+
627 virtual Feature2D::Type getType() const override { return kFeatureKaze; }
+
628
+
629private:
+
630 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
631 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
632
+
633private:
+
634 bool extended_;
+
635 bool upright_;
+
636 float threshold_;
+
637 int nOctaves_;
+
638 int nOctaveLayers_;
+
639 int diffusivity_;
+
640
+
641#if CV_MAJOR_VERSION > 2
+
642 cv::Ptr<CV_KAZE> kaze_;
+
643#endif
+
644};
+
+
645
+
+
647class RTABMAP_CORE_EXPORT ORBOctree : public Feature2D
+
648{
+
649public:
+
650 ORBOctree(const ParametersMap & parameters = ParametersMap());
+
651 virtual ~ORBOctree();
+
652
+
653 virtual void parseParameters(const ParametersMap & parameters) override;
+
654 virtual Feature2D::Type getType() const override {return kFeatureOrbOctree;}
+
655
+
656private:
+
657 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
658 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
659
+
660private:
+
661 float scaleFactor_;
+
662 int nLevels_;
+
663 int patchSize_;
+
664 int edgeThreshold_;
+
665 int fastThreshold_;
+
666 int fastMinThreshold_;
+
667
+
668 cv::Ptr<ORBextractor> _orb;
+
669 cv::Mat descriptors_;
+
670};
+
+
671
+
+
673class RTABMAP_CORE_EXPORT SuperPointTorch : public Feature2D
+
674{
+
675public:
+
676 SuperPointTorch(const ParametersMap & parameters = ParametersMap());
+
677 virtual ~SuperPointTorch();
+
678
+
679 virtual void parseParameters(const ParametersMap & parameters) override;
+
680 virtual Feature2D::Type getType() const override { return kFeatureSuperPointTorch; }
+
681 virtual bool isGpuAvailable() const override;
+
682
+
683private:
+
684 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
685 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
686
+
687 cv::Ptr<SPDetector> superPoint_;
+
688
+
689 std::string path_;
+
690 float threshold_;
+
691 bool nms_;
+
692 int minDistance_;
+
693 bool cuda_;
+
694};
+
+
695
+
+
697class RTABMAP_CORE_EXPORT SuperPointRpautrat : public Feature2D
+
698{
+
699public:
+
700 SuperPointRpautrat(const ParametersMap & parameters = ParametersMap());
+
701 virtual ~SuperPointRpautrat();
+
702
+
703 virtual void parseParameters(const ParametersMap & parameters) override;
+
704 virtual Feature2D::Type getType() const override { return kFeatureSuperPointRpautrat; }
+
705 virtual bool isGpuAvailable() const override;
+
706
+
707private:
+
708 virtual std::vector<cv::KeyPoint> generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()) override;
+
709 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
710
+
711 cv::Ptr<SPDetectorRpautrat> superPoint_;
+
712
+
713 std::string superpointWeightsPath_;
+
714 std::string superpointModelPath_;
+
715 std::string outputDir_;
+
716 float threshold_;
+
717 bool nms_;
+
718 int minDistance_;
+
719 bool cuda_;
+
720};
+
+
721
+
+
723class RTABMAP_CORE_EXPORT GFTT_DAISY : public GFTT
+
724{
+
725public:
+
726 GFTT_DAISY(const ParametersMap & parameters = ParametersMap());
+
727 virtual ~GFTT_DAISY();
+
728
+
729 virtual void parseParameters(const ParametersMap & parameters) override;
+
730 virtual Feature2D::Type getType() const override {return kFeatureGfttDaisy;}
+
731
+
732private:
+
733 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
734
+
735private:
+
736 bool orientationNormalized_;
+
737 bool scaleNormalized_;
+
738 float patternScale_;
+
739 int nOctaves_;
+
740
+
741#if CV_MAJOR_VERSION > 2
+
742 cv::Ptr<CV_DAISY> _daisy;
+
743#endif
+
744};
+
+
745
+
+
747class RTABMAP_CORE_EXPORT SURF_DAISY : public SURF
+
748{
+
749public:
+
750 SURF_DAISY(const ParametersMap & parameters = ParametersMap());
+
751 virtual ~SURF_DAISY();
+
752
+
753 virtual void parseParameters(const ParametersMap & parameters) override;
+
754 virtual Feature2D::Type getType() const override {return kFeatureSurfDaisy;}
+
755
+
756private:
+
757 virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector<cv::KeyPoint> & keypoints) const override;
+
758
+
759private:
+
760 bool orientationNormalized_;
+
761 bool scaleNormalized_;
+
762 float patternScale_;
+
763 int nOctaves_;
+
764
+
765#if CV_MAJOR_VERSION > 2
+
766 cv::Ptr<CV_DAISY> _daisy;
+
767#endif
+
768};
+
+
769
+
770}
+
771
+
772#endif /* FEATURES2D_H_ */
+
BRISK detector and descriptor.
Definition Features2d.h:599
+
FAST corners + BRIEF descriptors.
Definition Features2d.h:453
+
FAST corners + FREAK descriptors.
Definition Features2d.h:472
+
FAST corner detector only (no descriptor).
Definition Features2d.h:416
+
virtual bool isGpuAvailable() const override
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
+
Abstract 2D feature detector and descriptor extractor for visual SLAM.
Definition Features2d.h:145
+
static void filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
Keeps keypoints with stereo disparity ≥ minDisparity.
+
static Feature2D * create(const ParametersMap &parameters=ParametersMap())
Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
+
static bool isAvailable(Feature2D::Type type)
Returns true if type is available (RTAB-Map is built with it).
+
Type
Built-in detector/descriptor strategy (Kp/DetectorStrategy).
Definition Features2d.h:148
+
std::vector< cv::KeyPoint > generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())
Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
+
static cv::Rect computeRoi(const cv::Mat &image, const std::string &roiRatios)
ROI from Kp/RoiRatios string ("left top right bottom" fractions).
+
virtual bool isGpuAvailable() const
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
Definition Features2d.h:294
+
static std::string typeName(Type type)
Definition Features2d.h:169
+
static void limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
Reduces keypoint count (by response or SSC spatial distribution).
+
static void filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
+
static Feature2D * create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
Creates a detector of the given type. Caller owns the pointer.
+
cv::Mat generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
Computes descriptors for keypoints (may shrink the list in some detectors).
+
std::vector< cv::Point3f > generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
Back-projects keypoints to 3D using depth or stereo in data.
+
GFTT corners + BRIEF descriptors.
Definition Features2d.h:519
+
GFTT corners + DAISY descriptors (OpenCV 3+ xfeatures2d).
Definition Features2d.h:724
+
GFTT corners + FREAK descriptors.
Definition Features2d.h:538
+
GFTT corners + ORB descriptors (common default when SURF is unavailable).
Definition Features2d.h:582
+
Good-features-to-track detector (Shi–Tomasi / Harris).
Definition Features2d.h:494
+
virtual bool isGpuAvailable() const override
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
+
KAZE detector and descriptor (OpenCV 3+).
Definition Features2d.h:621
+
ORB with octree spatial distribution (RTAB-Map must be built with OCTREE enabled).
Definition Features2d.h:648
+
ORB detector and descriptor (optional GPU).
Definition Features2d.h:384
+
virtual bool isGpuAvailable() const override
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
+
SIFT detector and descriptor (optional GPU / CudaSift).
Definition Features2d.h:349
+
virtual bool isGpuAvailable() const override
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
+
SURF detector + DAISY descriptors (OpenCV 3+ xfeatures2d).
Definition Features2d.h:748
+
SURF detector + FREAK descriptors.
Definition Features2d.h:560
+
SURF detector and descriptor (non-free / xfeatures2d depending on OpenCV build).
Definition Features2d.h:321
+
virtual bool isGpuAvailable() const override
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Sparse stereo matching using block matching.
Definition Stereo.h:55
+
SuperPoint (rpautrat) via Torch + Python (RTAB-Map must be built with libtorch and Python support).
Definition Features2d.h:698
+
virtual bool isGpuAvailable() const override
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
+
SuperPoint via LibTorch (RTAB-Map must be built with libtorch support).
Definition Features2d.h:674
+
virtual bool isGpuAvailable() const override
Returns true when a GPU/CUDA code path could be used by this detector on this host: i....
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/FlannIndex_8h_source.html b/preview/pr-1773/api/latest/FlannIndex_8h_source.html new file mode 100644 index 00000000..51f2e93d --- /dev/null +++ b/preview/pr-1773/api/latest/FlannIndex_8h_source.html @@ -0,0 +1,272 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/FlannIndex.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FlannIndex.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_SRC_FLANNINDEX_H_
+
29#define CORELIB_SRC_FLANNINDEX_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32#include <list>
+
33#include <opencv2/opencv.hpp>
+
34
+
35namespace rtabmap {
+
36
+
37class NanoFlannIndex;
+
38
+
+
55class RTABMAP_CORE_EXPORT FlannIndex
+
56{
+
57public:
+
+ +
76 {
+
77 FLANN_INDEX_LINEAR = 0,
+
78 FLANN_INDEX_KDTREE = 1,
+
79 FLANN_INDEX_KDTREE_SINGLE = 4,
+
80 FLANN_INDEX_LSH = 6,
+
81
+
86 NANOFLANN_INDEX_KDTREE_SINGLE = 100,
+
87 };
+
+
88
+
89 FlannIndex();
+
90 virtual ~FlannIndex();
+
91
+
93 void release();
+
94
+
106 std::vector<unsigned char> serializeIndex(bool computeChecksum = true) const;
+
107
+
109 size_t indexedFeatures() const;
+
110
+
115 size_t memoryUsed() const;
+
116
+ +
129 flann_algorithm_t algorithm,
+
130 const cv::Mat & features,
+
131 bool useDistanceL1 = false,
+
132 float rebalancingFactor = 2.0f);
+
133
+ +
149 const std::vector<unsigned char> & indexData,
+
150 flann_algorithm_t algorithm,
+
151 const cv::Mat & features,
+
152 bool useDistanceL1 = false,
+
153 float rebalancingFactor = 2.0f,
+
154 std::string * errorMsg = NULL);
+ +
157 const unsigned char * indexData,
+
158 size_t indexDataSize,
+
159 flann_algorithm_t algorithm,
+
160 const cv::Mat & features,
+
161 bool useDistanceL1 = false,
+
162 float rebalancingFactor = 2.0f,
+
163 std::string * errorMsg = NULL);
+
164
+
166 bool isBuilt();
+
167
+
169 int featuresType() const {return featuresType_;}
+
171 int featuresDim() const {return featuresDim_;}
+
172
+
180 std::vector<unsigned int> addPoints(const cv::Mat & features);
+
181
+
189 void removePoint(unsigned int index);
+
190
+ +
207 const cv::Mat & query,
+
208 cv::Mat & indices,
+
209 cv::Mat & dists,
+
210 int knn,
+
211 int checks = 32,
+
212 float eps = 0.0,
+
213 bool sorted = true,
+
214 int cores = 1) const;
+ +
232 const cv::Mat & query,
+
233 std::vector<std::vector<size_t> > & indices,
+
234 std::vector<std::vector<float> > & dists,
+
235 float radius,
+
236 int maxNeighbors = 0,
+
237 int checks = 32,
+
238 float eps = 0.0,
+
239 bool sorted = true,
+
240 int cores = 1) const;
+
241
+
242private:
+
243 void * index_; // rtflann backend
+
244 NanoFlannIndex * nanoIndex_; // nanoflann backend, only one of the two is set
+
245 unsigned int nextIndex_;
+
246 int featuresType_;
+
247 int featuresDim_;
+
248 bool useDistanceL1_; // true=EUCLEDIAN_L2 false=MANHATTAN_L1
+
249 float rebalancingFactor_;
+
250 flann_algorithm_t algorithm_;
+
251
+
252 // keep feature in memory until the tree is rebuilt
+
253 // (in case the word is deleted when removed from the VWDictionary)
+
254 std::map<int, cv::Mat> addedDescriptors_;
+
255 std::list<int> removedIndexes_;
+
256};
+
+
257
+
258} /* namespace rtabmap */
+
259
+
260#endif /* CORELIB_SRC_FLANNINDEX_H_ */
+
Nearest neighbor index over a set of features.
Definition FlannIndex.h:56
+
bool loadIndex(const unsigned char *indexData, size_t indexDataSize, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)
Load an index from a raw buffer, see the overload above.
+
std::vector< unsigned char > serializeIndex(bool computeChecksum=true) const
Serialize the index, to be given back to loadIndex()
+
void radiusSearch(const cv::Mat &query, std::vector< std::vector< size_t > > &indices, std::vector< std::vector< float > > &dists, float radius, int maxNeighbors=0, int checks=32, float eps=0.0, bool sorted=true, int cores=1) const
Search the neighbors of each query within a radius.
+ +
size_t memoryUsed() const
+
void release()
Drop the index and everything it holds, back to the state of a new one.
+
size_t indexedFeatures() const
+
void removePoint(unsigned int index)
Remove an indexed feature, by the index addPoints() gave for it.
+
int featuresDim() const
Definition FlannIndex.h:171
+
bool loadIndex(const std::vector< unsigned char > &indexData, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)
Load an index serialized by serializeIndex(), releasing any previous one.
+
flann_algorithm_t
The index structure built by buildIndex()
Definition FlannIndex.h:76
+
std::vector< unsigned int > addPoints(const cv::Mat &features)
Add features to the index.
+
void buildIndex(flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f)
Build the index over the given features, releasing any previous one.
+
int featuresType() const
Definition FlannIndex.h:169
+
void knnSearch(const cv::Mat &query, cv::Mat &indices, cv::Mat &dists, int knn, int checks=32, float eps=0.0, bool sorted=true, int cores=1) const
Search the k nearest neighbors of each query.
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/GPS_8h_source.html b/preview/pr-1773/api/latest/GPS_8h_source.html new file mode 100644 index 00000000..75aeea8e --- /dev/null +++ b/preview/pr-1773/api/latest/GPS_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/GPS.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GPS.h
+
+
+
1/*
+
2Copyright (c) 2010-2018, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_GPS_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_GPS_H_
+
30
+
31#include <rtabmap/core/GeodeticCoords.h>
+
32
+
33namespace rtabmap {
+
34
+
+
46class GPS
+
47{
+
48public:
+
+
50 GPS():
+
51 stamp_(0.0),
+
52 longitude_(0.0),
+
53 latitude_(0.0),
+
54 altitude_(0.0),
+
55 error_(0.0),
+
56 bearing_(0.0)
+
57 {}
+
+
+
67 GPS(const double & stamp,
+
68 const double & longitude,
+
69 const double & latitude,
+
70 const double & altitude,
+
71 const double & error,
+
72 const double & bearing):
+
73 stamp_(stamp),
+
74 longitude_(longitude),
+
75 latitude_(latitude),
+
76 altitude_(altitude),
+
77 error_(error),
+
78 bearing_(bearing)
+
79 {}
+
+
81 const double & stamp() const {return stamp_;}
+
83 const double & longitude() const {return longitude_;}
+
85 const double & latitude() const {return latitude_;}
+
87 const double & altitude() const {return altitude_;}
+
89 const double & error() const {return error_;}
+
91 const double & bearing() const {return bearing_;}
+
92
+
96 GeodeticCoords toGeodeticCoords() const {return GeodeticCoords(latitude_, longitude_, altitude_);}
+
97private:
+
98 double stamp_; // in sec
+
99 double longitude_; // DD
+
100 double latitude_; // DD
+
101 double altitude_; // m
+
102 double error_; // m
+
103 double bearing_; // deg (North 0->360 clockwise)
+
104};
+
+
105
+
106}
+
107
+
108#endif /* CORELIB_INCLUDE_RTABMAP_CORE_GPS_H_ */
+
WGS84 GPS fix attached to a sensor sample or graph node.
Definition GPS.h:47
+
GeodeticCoords toGeodeticCoords() const
Definition GPS.h:96
+
GPS(const double &stamp, const double &longitude, const double &latitude, const double &altitude, const double &error, const double &bearing)
Constructs a GPS fix.
Definition GPS.h:67
+
GPS()
Default-constructs a fix at the origin with zero stamp and error.
Definition GPS.h:50
+
const double & altitude() const
Definition GPS.h:87
+
const double & stamp() const
Definition GPS.h:81
+
const double & bearing() const
Definition GPS.h:91
+
const double & latitude() const
Definition GPS.h:85
+
const double & longitude() const
Definition GPS.h:83
+
const double & error() const
Definition GPS.h:89
+
WGS84 geodetic latitude, longitude and altitude with coordinate conversions.
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/GainCompensator_8h_source.html b/preview/pr-1773/api/latest/GainCompensator_8h_source.html new file mode 100644 index 00000000..a9c6ada3 --- /dev/null +++ b/preview/pr-1773/api/latest/GainCompensator_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/GainCompensator.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GainCompensator.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_SRC_GAINCOMPENSATOR_H_
+
29#define CORELIB_SRC_GAINCOMPENSATOR_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <pcl/point_cloud.h>
+
34#include <pcl/point_types.h>
+
35#include <pcl/pcl_base.h>
+
36#include <opencv2/opencv.hpp>
+
37#include <rtabmap/core/Link.h>
+
38
+
39namespace rtabmap {
+
40
+
+
44class RTABMAP_CORE_EXPORT GainCompensator {
+
45public:
+
46 GainCompensator(double maxCorrespondenceDistance = 0.02, double minOverlap = 0.0, double alpha = 0.01, double beta = 10);
+
47 virtual ~GainCompensator();
+
48
+
49 void feed(
+
50 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloudA, // should not contain NaNs
+
51 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloudB, // should not contain NaNs
+
52 const Transform & transformB);
+
53 void feed(
+
54 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloudA,
+
55 const pcl::IndicesPtr & indicesA,
+
56 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloudB,
+
57 const pcl::IndicesPtr & indicesB,
+
58 const Transform & transformB);
+
59 void feed(
+
60 const std::map<int, pcl::PointCloud<pcl::PointXYZRGB>::Ptr> & clouds, // should not contain NaNs
+
61 const std::multimap<int, Link> & links);
+
62 void feed(
+
63 const std::map<int, pcl::PointCloud<pcl::PointXYZRGB>::Ptr> & clouds,
+
64 const std::map<int, pcl::IndicesPtr> & indices,
+
65 const std::multimap<int, Link> & links);
+
66 void feed(
+
67 const std::map<int, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr> & clouds,
+
68 const std::map<int, pcl::IndicesPtr> & indices,
+
69 const std::multimap<int, Link> & links);
+
70 void feed(
+
71 const std::map<int, std::pair<pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr, pcl::IndicesPtr> > & clouds,
+
72 const std::multimap<int, Link> & links);
+
73
+
74 void apply(
+
75 int id,
+
76 pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
+
77 bool rgb = true) const;
+
78 void apply(
+
79 int id,
+
80 pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
+
81 const pcl::IndicesPtr & indices,
+
82 bool rgb = true) const;
+
83 void apply(
+
84 int id,
+
85 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
+
86 const pcl::IndicesPtr & indices,
+
87 bool rgb = true) const;
+
88 void apply(
+
89 int id,
+
90 cv::Mat & image,
+
91 bool rgb = true) const;
+
92
+
93 double getGain(int id, double * r=0, double * g=0, double * b=0) const;
+
94 int getIndex(int id) const;
+
95
+
96private:
+
97 cv::Mat_<double> gains_;
+
98 std::map<int, int> idToIndex_;
+
99 double maxCorrespondenceDistance_;
+
100 double minOverlap_;
+
101 double alpha_;
+
102 double beta_;
+
103
+
104};
+
+
105
+
106} /* namespace rtabmap */
+
107
+
108#endif /* CORELIB_SRC_GAINCOMPENSATOR_H_ */
+ +
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/GeodeticCoords_8h_source.html b/preview/pr-1773/api/latest/GeodeticCoords_8h_source.html new file mode 100644 index 00000000..849dfe20 --- /dev/null +++ b/preview/pr-1773/api/latest/GeodeticCoords_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/GeodeticCoords.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GeodeticCoords.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28/*
+
29 * The methods in this file were modified from the originals of the MRPT toolkit (see notice below):
+
30 * https://github.com/MRPT/mrpt/blob/master/libs/topography/src/conversions.cpp
+
31 */
+
32
+
33/* +---------------------------------------------------------------------------+
+
34 | Mobile Robot Programming Toolkit (MRPT) |
+
35 | http://www.mrpt.org/ |
+
36 | |
+
37 | Copyright (c) 2005-2016, Individual contributors, see AUTHORS file |
+
38 | See: http://www.mrpt.org/Authors - All rights reserved. |
+
39 | Released under BSD License. See details in http://www.mrpt.org/License |
+
40 +---------------------------------------------------------------------------+ */
+
41
+
42
+
43#ifndef GEODETICCOORDS_H_
+
44#define GEODETICCOORDS_H_
+
45
+
46#include <rtabmap/core/rtabmap_core_export.h>
+
47
+
48#include <opencv2/core/core.hpp>
+
49
+
50namespace rtabmap {
+
51
+
+
61class RTABMAP_CORE_EXPORT GeodeticCoords
+
62{
+
63public:
+ +
72 GeodeticCoords(double latitude, double longitude, double altitude);
+
73
+
75 const double & latitude() const {return latitude_;}
+
77 const double & longitude() const {return longitude_;}
+
79 const double & altitude() const {return altitude_;}
+
80
+
82 void setLatitude(const double & value) {latitude_ = value;}
+
84 void setLongitude(const double & value) {longitude_ = value;}
+
86 void setAltitude(const double & value) {altitude_ = value;}
+
87
+
89 cv::Point3d toGeocentric_WGS84() const;
+
94 cv::Point3d toENU_WGS84(const GeodeticCoords & origin) const; // East=X, North=Y
+
95
+
97 void fromGeocentric_WGS84(const cv::Point3d& geocentric);
+
99 void fromENU_WGS84(const cv::Point3d & enu, const GeodeticCoords & origin);
+
100
+
102 static cv::Point3d ENU_WGS84ToGeocentric_WGS84(const cv::Point3d & enu, const GeodeticCoords & origin);
+
107 static cv::Point3d Geocentric_WGS84ToENU_WGS84(
+
108 const cv::Point3d & geocentric_WGS84,
+
109 const cv::Point3d & origin_geocentric_WGS84,
+
110 const GeodeticCoords & origin);
+
111
+
112private:
+
113 double latitude_; // deg
+
114 double longitude_; // deg
+
115 double altitude_; // m
+
116};
+
+
117
+
118}
+
119
+
120#endif /* GEODETICCOORDS_H_ */
+
WGS84 geodetic latitude, longitude and altitude with coordinate conversions.
+
GeodeticCoords(double latitude, double longitude, double altitude)
Constructs geodetic coordinates.
+
const double & altitude() const
+
GeodeticCoords()
Default-constructs coordinates at (0°, 0°, 0 m).
+
const double & longitude() const
+
static cv::Point3d Geocentric_WGS84ToENU_WGS84(const cv::Point3d &geocentric_WGS84, const cv::Point3d &origin_geocentric_WGS84, const GeodeticCoords &origin)
+
static cv::Point3d ENU_WGS84ToGeocentric_WGS84(const cv::Point3d &enu, const GeodeticCoords &origin)
+
void setLatitude(const double &value)
Sets latitude in decimal degrees.
+
void setLongitude(const double &value)
Sets longitude in decimal degrees.
+
void fromENU_WGS84(const cv::Point3d &enu, const GeodeticCoords &origin)
Sets this point from an ENU offset relative to origin.
+
const double & latitude() const
+
void fromGeocentric_WGS84(const cv::Point3d &geocentric)
Sets this point from ECEF geocentric geocentric coordinates.
+
cv::Point3d toGeocentric_WGS84() const
+
cv::Point3d toENU_WGS84(const GeodeticCoords &origin) const
+
void setAltitude(const double &value)
Sets altitude in meters.
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/GlobalDescriptorExtractor_8h_source.html b/preview/pr-1773/api/latest/GlobalDescriptorExtractor_8h_source.html new file mode 100644 index 00000000..8c087f3a --- /dev/null +++ b/preview/pr-1773/api/latest/GlobalDescriptorExtractor_8h_source.html @@ -0,0 +1,199 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/GlobalDescriptorExtractor.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlobalDescriptorExtractor.h
+
+
+
1/*
+
2Copyright (c) 2010-2024, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef GLOBAL_DESCRIPTOR_EXTRACTOR_H_
+
29#define GLOBAL_DESCRIPTOR_EXTRACTOR_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include "rtabmap/core/Parameters.h"
+
34#include "rtabmap/core/SensorData.h"
+
35
+
36
+
37namespace rtabmap {
+
38
+
39// Feature2D
+
+
40class RTABMAP_CORE_EXPORT GlobalDescriptorExtractor {
+
41public:
+
42 enum Type {
+
43 kUndef=0,
+
44 kPyDescriptor=1};
+
45
+
46 static std::string typeName(Type type)
+
47 {
+
48 switch(type){
+
49 case kPyDescriptor:
+
50 return "PyDescriptor";
+
51 default:
+
52 return "Unknown";
+
53 }
+
54 }
+
55
+
56 static GlobalDescriptorExtractor * create(const ParametersMap & parameters = ParametersMap());
+
57 static GlobalDescriptorExtractor * create(GlobalDescriptorExtractor::Type type, const ParametersMap & parameters = ParametersMap()); // for convenience
+
58
+
59public:
+ +
61
+
62 virtual GlobalDescriptor extract(const SensorData & data) const = 0;
+
63
+
64 virtual void parseParameters(const ParametersMap & parameters) {}
+
65 virtual GlobalDescriptorExtractor::Type getType() const = 0;
+
66
+
67protected:
+ +
69};
+
+
70
+
71}
+
72
+
73#endif /* GLOBAL_DESCRIPTOR_EXTRACTOR_H_ */
+ + +
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/GlobalDescriptor_8h_source.html b/preview/pr-1773/api/latest/GlobalDescriptor_8h_source.html new file mode 100644 index 00000000..aa6b08b4 --- /dev/null +++ b/preview/pr-1773/api/latest/GlobalDescriptor_8h_source.html @@ -0,0 +1,182 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/GlobalDescriptor.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlobalDescriptor.h
+
+
+
1/*
+
2Copyright (c) 2010-2024, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <opencv2/core/core.hpp>
+
31
+
32namespace rtabmap
+
33{
+
34
+
+ +
36{
+
37
+
38public:
+
39 GlobalDescriptor(int type, const cv::Mat & data, const cv::Mat & info = cv::Mat()) :
+
40 type_(type),
+
41 info_(info),
+
42 data_(data)
+
43 {}
+ +
45 type_(-1) // Not set
+
46 {}
+
47 virtual ~GlobalDescriptor() {}
+
48
+
49 int type() const {return type_;}
+
50 const cv::Mat info() const {return info_;}
+
51 const cv::Mat data() const {return data_;}
+
52
+
53private:
+
54 int type_;
+
55 cv::Mat info_;
+
56 cv::Mat data_;
+
57};
+
+
58
+
59} // namespace rtabmap
+ + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/GlobalMap_8h_source.html b/preview/pr-1773/api/latest/GlobalMap_8h_source.html new file mode 100644 index 00000000..24885c01 --- /dev/null +++ b/preview/pr-1773/api/latest/GlobalMap_8h_source.html @@ -0,0 +1,253 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/GlobalMap.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GlobalMap.h
+
+
+
1/*
+
2Copyright (c) 2010-2023, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef SRC_MAP_H_
+
29#define SRC_MAP_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/LocalGrid.h>
+
34#include <rtabmap/core/Parameters.h>
+
35#include <rtabmap/core/Transform.h>
+
36#include <list>
+
37
+
38namespace rtabmap {
+
39
+
+
55class RTABMAP_CORE_EXPORT GlobalMap
+
56{
+
57public:
+
+
59 inline static float logodds(double probability)
+
60 {
+
61 return (float) log(probability/(1-probability));
+
62 }
+
+
63
+
+
65 inline static double probability(double logodds)
+
66 {
+
67 return 1. - ( 1. / (1. + exp(logodds)));
+
68 }
+
+
69
+
70public:
+
71 virtual ~GlobalMap();
+
72
+
83 bool fullUpdateNeeded(const std::map<int, Transform> & poses) const;
+
84
+
90 bool update(const std::map<int, Transform> & poses);
+
91
+
93 virtual void clear();
+
94
+
96 float getCellSize() const {return cellSize_;}
+
98 float getUpdateError() const {return updateError_;}
+
100 const std::map<int, Transform> & addedNodes() const {return addedNodes_;}
+
101
+
103 void getGridMin(double & x, double & y) const {x=minValues_[0];y=minValues_[1];}
+
105 void getGridMax(double & x, double & y) const {x=maxValues_[0];y=maxValues_[1];}
+
107 void getGridMin(double & x, double & y, double & z) const {x=minValues_[0];y=minValues_[1];z=minValues_[2];}
+
109 void getGridMax(double & x, double & y, double & z) const {x=maxValues_[0];y=maxValues_[1];z=maxValues_[2];}
+
110
+
112 virtual unsigned long getMemoryUsed() const;
+
113
+
114protected:
+
120 GlobalMap(const LocalGridCache * cache, const ParametersMap & parameters = ParametersMap());
+
121
+
123 virtual void assemble(const std::list<std::pair<int, Transform> > & newPoses) = 0;
+
124
+
126 const std::map<int, LocalGrid> & cache() const {return cache_->localGrids();}
+
127
+
129 const std::map<int, Transform> & assembledNodes() const {return addedNodes_;}
+
131 bool isNodeAssembled(int id) {return addedNodes_.find(id) != addedNodes_.end();}
+
133 void addAssembledNode(int id, const Transform & pose);
+
134
+
135protected:
+
136 float cellSize_;
+
137 float updateError_;
+
138
+
139 float occupancyThr_;
+
140 float logOddsHit_;
+
141 float logOddsMiss_;
+
142 float logOddsClampingMin_;
+
143 float logOddsClampingMax_;
+
144
+
145 double minValues_[3];
+
146 double maxValues_[3];
+
147
+
148private:
+
149 const LocalGridCache * cache_;
+
150 std::map<int, Transform> addedNodes_;
+
151};
+
+
152
+
153} /* namespace rtabmap */
+
154
+
155#endif /* SRC_MAP_H_ */
+
Abstract base for assembling per-node LocalGrid data into a global map.
Definition GlobalMap.h:56
+
GlobalMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
Constructs the base map; subclasses call from their constructor.
+
void getGridMax(double &x, double &y, double &z) const
3D grid maximum (x, y, z) in meters.
Definition GlobalMap.h:109
+
void addAssembledNode(int id, const Transform &pose)
Records a successfully assembled node (ids <= 0 are ignored).
+
bool fullUpdateNeeded(const std::map< int, Transform > &poses) const
True if the map should be rebuilt from cache (loop closure or disjoint graph).
+
virtual unsigned long getMemoryUsed() const
Approximate memory used by assembled-node bookkeeping (bytes).
+
void getGridMin(double &x, double &y, double &z) const
3D grid minimum (x, y, z) in meters.
Definition GlobalMap.h:107
+
float getCellSize() const
Definition GlobalMap.h:96
+
static double probability(double logodds)
Converts log-odds back to probability in (0, 1).
Definition GlobalMap.h:65
+
const std::map< int, LocalGrid > & cache() const
Definition GlobalMap.h:126
+
const std::map< int, Transform > & assembledNodes() const
Definition GlobalMap.h:129
+
const std::map< int, Transform > & addedNodes() const
Definition GlobalMap.h:100
+
float getUpdateError() const
Definition GlobalMap.h:98
+
bool isNodeAssembled(int id)
Definition GlobalMap.h:131
+
bool update(const std::map< int, Transform > &poses)
Incrementally assemble new nodes from poses.
+
virtual void clear()
Clears assembled nodes and grid bounds; does not clear LocalGridCache.
+
void getGridMax(double &x, double &y) const
2D grid maximum (x, y) in meters.
Definition GlobalMap.h:105
+
void getGridMin(double &x, double &y) const
2D grid minimum (x, y) in meters.
Definition GlobalMap.h:103
+
virtual void assemble(const std::list< std::pair< int, Transform > > &newPoses)=0
Subclass hook: merge newPoses into the global map; call addAssembledNode().
+
static float logodds(double probability)
Converts probability in (0, 1) to log-odds.
Definition GlobalMap.h:59
+
Cache of LocalGrid entries keyed by map node id.
Definition LocalGrid.h:98
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Graph_8h_source.html b/preview/pr-1773/api/latest/Graph_8h_source.html new file mode 100644 index 00000000..3600e676 --- /dev/null +++ b/preview/pr-1773/api/latest/Graph_8h_source.html @@ -0,0 +1,431 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Graph.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef GRAPH_H_
+
29#define GRAPH_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <map>
+
34#include <list>
+
35#include <rtabmap/core/Parameters.h>
+
36#include <rtabmap/core/Link.h>
+
37#include <rtabmap/core/GPS.h>
+
38#include <rtabmap/core/CameraModel.h>
+
39
+
40namespace rtabmap {
+
41class Memory;
+
42
+
61namespace graph {
+
62
+
80bool RTABMAP_CORE_EXPORT exportPoses(
+
81 const std::string & filePath,
+
82 int format,
+
83 const std::map<int, Transform> & poses,
+
84 const std::multimap<int, Link> & constraints = std::multimap<int, Link>(),
+
85 const std::map<int, double> & stamps = std::map<int, double>(),
+
86 const ParametersMap & parameters = ParametersMap());
+
87
+
110bool RTABMAP_CORE_EXPORT importPoses(
+
111 const std::string & filePath,
+
112 int format,
+
113 std::map<int, Transform> & poses,
+
114 std::multimap<int, Link> * constraints = 0,
+
115 std::map<int, double> * stamps = 0);
+
116
+
123bool RTABMAP_CORE_EXPORT exportGPS(
+
124 const std::string & filePath,
+
125 const std::map<int, GPS> & gpsValues,
+
126 unsigned int rgba = 0xFFFFFFFF);
+
127
+
144void RTABMAP_CORE_EXPORT calcKittiSequenceErrors(
+
145 const std::vector<Transform> &poses_gt,
+
146 const std::vector<Transform> &poses_result,
+
147 float & t_err,
+
148 float & r_err);
+
149
+
167void RTABMAP_CORE_EXPORT calcRelativeErrors (
+
168 const std::vector<Transform> &poses_gt,
+
169 const std::vector<Transform> &poses_result,
+
170 float & t_err,
+
171 float & r_err);
+
172
+
208Transform RTABMAP_CORE_EXPORT calcRMSE(
+
209 const std::map<int, Transform> &groundTruth,
+
210 const std::map<int, Transform> &poses,
+
211 float & translational_rmse,
+
212 float & translational_mean,
+
213 float & translational_median,
+
214 float & translational_std,
+
215 float & translational_min,
+
216 float & translational_max,
+
217 float & rotational_rmse,
+
218 float & rotational_mean,
+
219 float & rotational_median,
+
220 float & rotational_std,
+
221 float & rotational_min,
+
222 float & rotational_max,
+
223 bool align2D = false);
+
224
+
+ +
232{
+
233 float linear=-1.0f;
+
234 float angular=-1.0f;
+
235 float linearRatio=-1.0f;
+
236 float angularRatio=-1.0f;
+ + +
239};
+
+
240
+ +
266 const std::map<int, Transform> & poses,
+
267 const std::multimap<int, Link> & links,
+
268 bool for3DoF = false);
+
269
+
280std::vector<double> RTABMAP_CORE_EXPORT getMaxOdomInf(const std::multimap<int, Link> & links);
+
281
+
296std::multimap<int, Link>::iterator RTABMAP_CORE_EXPORT findLink(
+
297 std::multimap<int, Link> & links,
+
298 int from,
+
299 int to,
+
300 bool checkBothWays = true,
+
301 Link::Type type = Link::kUndef);
+
304std::multimap<int, std::pair<int, Link::Type> >::iterator RTABMAP_CORE_EXPORT findLink(
+
305 std::multimap<int, std::pair<int, Link::Type> > & links,
+
306 int from,
+
307 int to,
+
308 bool checkBothWays = true,
+
309 Link::Type type = Link::kUndef);
+
312std::multimap<int, int>::iterator RTABMAP_CORE_EXPORT findLink(
+
313 std::multimap<int, int> & links,
+
314 int from,
+
315 int to,
+
316 bool checkBothWays = true);
+
319std::multimap<int, Link>::const_iterator RTABMAP_CORE_EXPORT findLink(
+
320 const std::multimap<int, Link> & links,
+
321 int from,
+
322 int to,
+
323 bool checkBothWays = true,
+
324 Link::Type type = Link::kUndef);
+
327std::multimap<int, std::pair<int, Link::Type> >::const_iterator RTABMAP_CORE_EXPORT findLink(
+
328 const std::multimap<int, std::pair<int, Link::Type> > & links,
+
329 int from,
+
330 int to,
+
331 bool checkBothWays = true,
+
332 Link::Type type = Link::kUndef);
+
335std::multimap<int, int>::const_iterator RTABMAP_CORE_EXPORT findLink(
+
336 const std::multimap<int, int> & links,
+
337 int from,
+
338 int to,
+
339 bool checkBothWays = true);
+
340
+
352std::list<Link> RTABMAP_CORE_EXPORT findLinks(
+
353 const std::multimap<int, Link> & links,
+
354 int from);
+
355
+
365std::multimap<int, Link> RTABMAP_CORE_EXPORT filterDuplicateLinks(
+
366 const std::multimap<int, Link> & links);
+
367
+
380std::multimap<int, Link> RTABMAP_CORE_EXPORT filterLinks(
+
381 const std::multimap<int, Link> & links,
+
382 Link::Type filteredType,
+
383 bool inverted = false);
+
386std::map<int, Link> RTABMAP_CORE_EXPORT filterLinks(
+
387 const std::map<int, Link> & links,
+
388 Link::Type filteredType,
+
389 bool inverted = false);
+
390
+
406std::map<int, Transform> RTABMAP_CORE_EXPORT frustumPosesFiltering(
+
407 const std::map<int, Transform> & poses,
+
408 const Transform & cameraPose,
+
409 float horizontalFOV = 45.0f,
+
410 float verticalFOV = 45.0f,
+
411 float nearClipPlaneDistance = 0.1f,
+
412 float farClipPlaneDistance = 100.0f,
+
413 bool negative = false);
+
414
+
429std::map<int, Transform> RTABMAP_CORE_EXPORT radiusPosesFiltering(
+
430 const std::map<int, Transform> & poses,
+
431 float radius,
+
432 float angle,
+
433 bool keepLatest = true);
+
434
+
446std::multimap<int, int> RTABMAP_CORE_EXPORT radiusPosesClustering(
+
447 const std::map<int, Transform> & poses,
+
448 float radius,
+
449 float angle);
+
450
+ +
468 const std::map<int, Transform> & poses,
+
469 const std::multimap<int, Link> & links,
+
470 std::multimap<int, int> & hyperNodes,
+
471 std::multimap<int, Link> & hyperLinks);
+
472
+
486std::list<std::pair<int, Transform> > RTABMAP_CORE_EXPORT computePath(
+
487 const std::map<int, rtabmap::Transform> & poses,
+
488 const std::multimap<int, int> & links,
+
489 int from,
+
490 int to,
+
491 bool updateNewCosts = false);
+
492
+
511std::map<int, int> RTABMAP_CORE_EXPORT computePathDepths(
+
512 const std::multimap<int, int> & links,
+
513 int from,
+
514 int maxDepth = 0);
+
515
+
529std::list<int> RTABMAP_CORE_EXPORT computePath(
+
530 const std::multimap<int, Link> & links,
+
531 int from,
+
532 int to,
+
533 bool updateNewCosts = false,
+
534 bool useSameCostForAllLinks = false);
+
535
+
568std::list<std::pair<int, Transform> > RTABMAP_CORE_EXPORT computePath(
+
569 int fromId,
+
570 int toId,
+
571 const Memory * memory,
+
572 bool lookInDatabase = true,
+
573 bool updateNewCosts = false,
+
574 float linearVelocity = 0.0f,
+
575 float angularVelocity = 0.0f,
+
576 bool ignoreDirectLinks = false);
+
577
+
588int RTABMAP_CORE_EXPORT findNearestNode(
+
589 const std::map<int, rtabmap::Transform> & poses,
+
590 const rtabmap::Transform & targetPose,
+
591 float * distance = 0);
+
592
+
607std::map<int, float> RTABMAP_CORE_EXPORT findNearestNodes(
+
608 int nodeId,
+
609 const std::map<int, Transform> & poses,
+
610 float radius,
+
611 float angle = 0.0f,
+
612 int k=0);
+
622std::map<int, float> RTABMAP_CORE_EXPORT findNearestNodes(
+
623 const Transform & targetPose,
+
624 const std::map<int, Transform> & poses,
+
625 float radius,
+
626 float angle = 0.0f,
+
627 int k=0);
+
632std::map<int, Transform> RTABMAP_CORE_EXPORT findNearestPoses(
+
633 int nodeId,
+
634 const std::map<int, Transform> & poses,
+
635 float radius,
+
636 float angle = 0.0f,
+
637 int k=0);
+
640std::map<int, Transform> RTABMAP_CORE_EXPORT findNearestPoses(
+
641 const Transform & targetPose,
+
642 const std::map<int, Transform> & poses,
+
643 float radius,
+
644 float angle = 0.0f,
+
645 int k=0);
+
646
+
648RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT findNearestNodes(const std::map<int, rtabmap::Transform> & nodes, const rtabmap::Transform & targetPose, int k);
+
650RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT getNodesInRadius(int nodeId, const std::map<int, Transform> & nodes, float radius);
+
652RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT getNodesInRadius(const Transform & targetPose, const std::map<int, Transform> & nodes, float radius);
+
654RTABMAP_DEPRECATED std::map<int, Transform> RTABMAP_CORE_EXPORT getPosesInRadius(int nodeId, const std::map<int, Transform> & nodes, float radius, float angle = 0.0f);
+
656RTABMAP_DEPRECATED std::map<int, Transform> RTABMAP_CORE_EXPORT getPosesInRadius(const Transform & targetPose, const std::map<int, Transform> & nodes, float radius, float angle = 0.0f);
+
657
+
666float RTABMAP_CORE_EXPORT computePathLength(
+
667 const std::vector<std::pair<int, Transform> > & path);
+
668
+
678float RTABMAP_CORE_EXPORT computePathLength(
+
679 const std::map<int, Transform> & path);
+
680
+
693std::list<std::map<int, Transform> > RTABMAP_CORE_EXPORT getPaths(
+
694 std::map<int, Transform> poses,
+
695 const std::multimap<int, Link> & links);
+
696
+
704void RTABMAP_CORE_EXPORT computeMinMax(const std::map<int, Transform> & poses,
+
705 cv::Vec3f & min,
+
706 cv::Vec3f & max);
+
707
+
708} /* namespace graph */
+
709
+
710} /* namespace rtabmap */
+
711#endif /* GRAPH_H_ */
+ + + +
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Definition Memory.h:102
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
std::list< std::map< int, Transform > > RTABMAP_CORE_EXPORT getPaths(std::map< int, Transform > poses, const std::multimap< int, Link > &links)
Splits poses into chains connected only by neighbor links.
+
std::map< int, Transform > RTABMAP_CORE_EXPORT radiusPosesFiltering(const std::map< int, Transform > &poses, float radius, float angle, bool keepLatest=true)
Subsamples poses that are spatially (and optionally angularly) redundant.
+
std::list< Link > RTABMAP_CORE_EXPORT findLinks(const std::multimap< int, Link > &links, int from)
Lists all links incident on node from.
+
void RTABMAP_CORE_EXPORT computeMinMax(const std::map< int, Transform > &poses, cv::Vec3f &min, cv::Vec3f &max)
Axis-aligned bounding box of pose positions.
+
void RTABMAP_CORE_EXPORT calcKittiSequenceErrors(const std::vector< Transform > &poses_gt, const std::vector< Transform > &poses_result, float &t_err, float &r_err)
KITTI odometry benchmark error over fixed trajectory segments.
+
float RTABMAP_CORE_EXPORT computePathLength(const std::vector< std::pair< int, Transform > > &path)
Path length along an ordered list of poses.
+
int RTABMAP_CORE_EXPORT findNearestNode(const std::map< int, rtabmap::Transform > &poses, const rtabmap::Transform &targetPose, float *distance=0)
Id of the nearest pose to targetPose.
+
MaxGraphErrors RTABMAP_CORE_EXPORT computeMaxGraphErrors(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, bool for3DoF=false)
Finds the worst pose-graph constraint residuals after optimization.
+
std::multimap< int, Link > RTABMAP_CORE_EXPORT filterLinks(const std::multimap< int, Link > &links, Link::Type filteredType, bool inverted=false)
Filters links by type or self-reference.
+
bool RTABMAP_CORE_EXPORT importPoses(const std::string &filePath, int format, std::map< int, Transform > &poses, std::multimap< int, Link > *constraints=0, std::map< int, double > *stamps=0)
Loads poses (and optional constraints) from disk.
+
Transform RTABMAP_CORE_EXPORT calcRMSE(const std::map< int, Transform > &groundTruth, const std::map< int, Transform > &poses, float &translational_rmse, float &translational_mean, float &translational_median, float &translational_std, float &translational_min, float &translational_max, float &rotational_rmse, float &rotational_mean, float &rotational_median, float &rotational_std, float &rotational_min, float &rotational_max, bool align2D=false)
Absolute trajectory error (ATE) with Sim(3)-style alignment (TUM RGB-D tool).
+
std::multimap< int, Link > RTABMAP_CORE_EXPORT filterDuplicateLinks(const std::multimap< int, Link > &links)
Removes duplicate undirected links.
+
std::list< std::pair< int, Transform > > RTABMAP_CORE_EXPORT computePath(const std::map< int, rtabmap::Transform > &poses, const std::multimap< int, int > &links, int from, int to, bool updateNewCosts=false)
A* shortest path on a pose graph with Euclidean edge costs.
+
std::vector< double > RTABMAP_CORE_EXPORT getMaxOdomInf(const std::multimap< int, Link > &links)
Maximum information-matrix diagonal over odometry neighbor links.
+
std::map< int, Transform > RTABMAP_CORE_EXPORT frustumPosesFiltering(const std::map< int, Transform > &poses, const Transform &cameraPose, float horizontalFOV=45.0f, float verticalFOV=45.0f, float nearClipPlaneDistance=0.1f, float farClipPlaneDistance=100.0f, bool negative=false)
Keeps poses inside (or outside) a camera frustum.
+
void RTABMAP_CORE_EXPORT calcRelativeErrors(const std::vector< Transform > &poses_gt, const std::vector< Transform > &poses_result, float &t_err, float &r_err)
Mean frame-to-frame relative pose error (RPE-style, one step).
+
std::map< int, int > RTABMAP_CORE_EXPORT computePathDepths(const std::multimap< int, int > &links, int from, int maxDepth=0)
Single-source graph depth via BFS.
+
std::map< int, Transform > RTABMAP_CORE_EXPORT findNearestPoses(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
Like findNearestNodes(int,const std::map<int,Transform>&,float,float,int) but returns full Transform ...
+
std::map< int, float > RTABMAP_CORE_EXPORT findNearestNodes(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
Spatial neighbors of a node (KD-tree radius or k-NN search).
+
bool RTABMAP_CORE_EXPORT exportGPS(const std::string &filePath, const std::map< int, GPS > &gpsValues, unsigned int rgba=0xFFFFFFFF)
Exports GPS samples to a PLY point cloud.
+
std::multimap< int, Link >::iterator RTABMAP_CORE_EXPORT findLink(std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)
Finds the first link from from to to in a multimap keyed by source id.
+
void reduceGraph(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, std::multimap< int, int > &hyperNodes, std::multimap< int, Link > &hyperLinks)
Reduces a pose graph into hyper-nodes and hyper-links.
+
std::multimap< int, int > RTABMAP_CORE_EXPORT radiusPosesClustering(const std::map< int, Transform > &poses, float radius, float angle)
Radius-neighbor clustering of poses.
+
RTABMAP_DEPRECATED std::map< int, Transform > RTABMAP_CORE_EXPORT getPosesInRadius(int nodeId, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)
+
bool RTABMAP_CORE_EXPORT exportPoses(const std::string &filePath, int format, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints=std::multimap< int, Link >(), const std::map< int, double > &stamps=std::map< int, double >(), const ParametersMap &parameters=ParametersMap())
Writes poses (and optional constraints) to disk.
+
RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT getNodesInRadius(int nodeId, const std::map< int, Transform > &nodes, float radius)
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
Largest pose-graph constraint violations after optimization.
Definition Graph.h:232
+
float angular
Absolute angular error (rad) of the worst link.
Definition Graph.h:234
+
float linearRatio
linear / sqrt(trans variance) of the worst link.
Definition Graph.h:235
+
float linear
Absolute linear error (m) of the worst link.
Definition Graph.h:233
+
Link angularLink
Link with largest angularRatio.
Definition Graph.h:238
+
float angularRatio
angular / sqrt(rot variance) of the worst link.
Definition Graph.h:236
+
Link linearLink
Link with largest linearRatio.
Definition Graph.h:237
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/GridMap_8h_source.html b/preview/pr-1773/api/latest/GridMap_8h_source.html new file mode 100644 index 00000000..8817565a --- /dev/null +++ b/preview/pr-1773/api/latest/GridMap_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/global_map/GridMap.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GridMap.h
+
+
+
1/*
+
2Copyright (c) 2010-2023, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_SRC_GRIDMAP_H_
+
29#define CORELIB_SRC_GRIDMAP_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/GlobalMap.h>
+
34#include <pcl/point_cloud.h>
+
35#include <pcl/point_types.h>
+
36#include <pcl/PolygonMesh.h>
+
37
+
38namespace grid_map {
+
39 class GridMap;
+
40}
+
41
+
42namespace rtabmap {
+
43
+
+
44class RTABMAP_CORE_EXPORT GridMap : public GlobalMap
+
45{
+
46public:
+
47 GridMap(const LocalGridCache * cache, const ParametersMap & parameters = ParametersMap());
+
48
+
49 virtual ~GridMap();
+
50 virtual void clear();
+
51
+
52 const grid_map::GridMap * gridMap() const {return gridMap_;}
+
53
+
54 cv::Mat createHeightMap(float & xMin, float & yMin, float & cellSize) const;
+
55 cv::Mat createColorMap(float & xMin, float & yMin, float & cellSize) const;
+
56 pcl::PointCloud<pcl::PointXYZRGB>::Ptr createTerrainCloud() const;
+
57 pcl::PolygonMesh::Ptr createTerrainMesh() const;
+
58
+
59protected:
+
60 virtual void assemble(const std::list<std::pair<int, Transform> > & newPoses);
+
61
+
62private:
+
63 cv::Mat toImage(const std::string & layer, float & xMin, float & yMin, float & cellSize) const;
+
64
+
65private:
+
66 grid_map::GridMap * gridMap_;
+
67 float minMapSize_;
+
68};
+
+
69
+
70}
+
71
+
72#endif /* CORELIB_SRC_OCCUPANCYGRID_H_ */
+
Abstract base for assembling per-node LocalGrid data into a global map.
Definition GlobalMap.h:56
+ +
virtual void clear()
Clears assembled nodes and grid bounds; does not clear LocalGridCache.
+
virtual void assemble(const std::list< std::pair< int, Transform > > &newPoses)
Subclass hook: merge newPoses into the global map; call addAssembledNode().
+
Cache of LocalGrid entries keyed by map node id.
Definition LocalGrid.h:98
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/IMUFilter_8h_source.html b/preview/pr-1773/api/latest/IMUFilter_8h_source.html new file mode 100644 index 00000000..7a49273d --- /dev/null +++ b/preview/pr-1773/api/latest/IMUFilter_8h_source.html @@ -0,0 +1,212 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/IMUFilter.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IMUFilter.h
+
+
+
1/*
+
2Copyright (c) 2010-2019, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_IMUFILTER_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_IMUFILTER_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32#include <rtabmap/core/Parameters.h>
+
33#include <Eigen/Geometry>
+
34
+
35namespace rtabmap {
+
36
+
+
58class RTABMAP_CORE_EXPORT IMUFilter
+
59{
+
60public:
+
+
64 enum Type {
+
65 kMadgwick = 0,
+
66 kComplementaryFilter = 1
+
67 };
+
+
68
+
74 static IMUFilter * create(const ParametersMap & parameters = ParametersMap());
+
75
+
83 static IMUFilter * create(IMUFilter::Type type, const ParametersMap & parameters = ParametersMap());
+
84
+
85 virtual ~IMUFilter() {}
+
86
+
91 virtual void parseParameters(const ParametersMap & parameters) {}
+
92
+
103 void update(
+
104 double gx, double gy, double gz,
+
105 double ax, double ay, double az,
+
106 double stamp);
+
107
+
109 virtual IMUFilter::Type type() const = 0;
+
110
+
118 virtual void getOrientation(double & qx, double & qy, double & qz, double & qw) const = 0;
+
119
+
127 virtual void reset(double qx = 0.0, double qy = 0.0, double qz = 0.0, double qw = 1.0) = 0;
+
128
+
129protected:
+
130 IMUFilter(const ParametersMap & parameters = ParametersMap()) : previousStamp_(0) {}
+
131
+
132private:
+
133 virtual void updateImpl(
+
134 double gx, double gy, double gz,
+
135 double ax, double ay, double az,
+
136 double dt) = 0;
+
137
+
138 double previousStamp_;
+
139};
+
+
140
+
141} // namespace rtabmap
+
142
+
143#endif /* CORELIB_INCLUDE_RTABMAP_CORE_IMUFILTER_H_ */
+
Fuses gyroscope and accelerometer samples into an orientation quaternion.
Definition IMUFilter.h:59
+
Type
Orientation fusion algorithm.
Definition IMUFilter.h:64
+
static IMUFilter * create(const ParametersMap &parameters=ParametersMap())
Creates a filter using type parsed from parameters.
+
virtual void parseParameters(const ParametersMap &parameters)
Re-reads filter parameters from parameters.
Definition IMUFilter.h:91
+
virtual void reset(double qx=0.0, double qy=0.0, double qz=0.0, double qw=1.0)=0
Resets internal state to the given orientation.
+
static IMUFilter * create(IMUFilter::Type type, const ParametersMap &parameters=ParametersMap())
Creates a filter of the given type.
+
void update(double gx, double gy, double gz, double ax, double ay, double az, double stamp)
Integrates one IMU sample and updates the internal orientation estimate.
+
virtual IMUFilter::Type type() const =0
+
virtual void getOrientation(double &qx, double &qy, double &qz, double &qw) const =0
Current orientation estimate.
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/IMUThread_8h_source.html b/preview/pr-1773/api/latest/IMUThread_8h_source.html new file mode 100644 index 00000000..09708867 --- /dev/null +++ b/preview/pr-1773/api/latest/IMUThread_8h_source.html @@ -0,0 +1,209 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/IMUThread.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IMUThread.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31
+
32#include <rtabmap/core/Transform.h>
+
33#include <rtabmap/core/Parameters.h>
+
34#include <rtabmap/utilite/UThread.h>
+
35#include <rtabmap/utilite/UEventsSender.h>
+
36#include <rtabmap/utilite/UTimer.h>
+
37
+
38#include <fstream>
+
39
+
40namespace rtabmap {
+
41
+
42class IMUFilter;
+
43
+
+
65class RTABMAP_CORE_EXPORT IMUThread :
+
66 public UThread,
+
67 public UEventsSender
+
68{
+
69public:
+
75 IMUThread(int rate, const Transform & localTransform);
+
76 virtual ~IMUThread();
+
77
+
83 bool init(const std::string & path);
+
84
+
86 void setRate(int rate);
+
87
+
94 void enableIMUFiltering(int filteringStrategy = 1, const ParametersMap & parameters = ParametersMap(), bool baseFrameConversion = false);
+
95
+ +
98
+
99private:
+
100 virtual void mainLoopBegin();
+
101 virtual void mainLoop();
+
102
+
103private:
+
104 int rate_;
+
105 Transform localTransform_;
+
106 std::ifstream imuFile_;
+
107 UTimer frameRateTimer_;
+
108 double captureDelay_;
+
109 double previousStamp_;
+
110 IMUFilter * _imuFilter;
+
111 bool _imuBaseFrameConversion;
+
112};
+
+
113
+
114} // namespace rtabmap
+ + + +
Fuses gyroscope and accelerometer samples into an orientation quaternion.
Definition IMUFilter.h:59
+
Background thread that replays IMU measurements from a CSV file.
Definition IMUThread.h:68
+
void setRate(int rate)
Sets the target playback rate in Hz.
+
void disableIMUFiltering()
Disables fusion and deletes the internal IMUFilter.
+
IMUThread(int rate, const Transform &localTransform)
Constructs the replay thread.
+
void enableIMUFiltering(int filteringStrategy=1, const ParametersMap &parameters=ParametersMap(), bool baseFrameConversion=false)
Enables orientation fusion on replayed samples.
+
bool init(const std::string &path)
Opens and validates an IMU CSV file.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/IMU_8h_source.html b/preview/pr-1773/api/latest/IMU_8h_source.html new file mode 100644 index 00000000..8ba5137a --- /dev/null +++ b/preview/pr-1773/api/latest/IMU_8h_source.html @@ -0,0 +1,281 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/IMU.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IMU.h
+
+
+
1/*
+
2Copyright (c) 2010-2026, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef IMU_H_
+
29#define IMU_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32#include <opencv2/core/core.hpp>
+
33#include <rtabmap/utilite/UEvent.h>
+
34#include <rtabmap/core/Transform.h>
+
35
+
36namespace rtabmap {
+
37
+
+
56class RTABMAP_CORE_EXPORT IMU
+
57{
+
58public:
+
60 IMU() {}
+
61
+
+
72 IMU(const cv::Vec4d & orientation, // qx qy qz qw
+
73 const cv::Mat & orientationCovariance,
+
74 const cv::Vec3d & angularVelocity,
+
75 const cv::Mat & angularVelocityCovariance,
+
76 const cv::Vec3d & linearAcceleration,
+
77 const cv::Mat & linearAccelerationCovariance,
+
78 const Transform & localTransform = Transform::getIdentity()) :
+
79 orientation_(orientation),
+
80 orientationCovariance_(orientationCovariance),
+
81 angularVelocity_(angularVelocity),
+
82 angularVelocityCovariance_(angularVelocityCovariance),
+
83 linearAcceleration_(linearAcceleration),
+
84 linearAccelerationCovariance_(linearAccelerationCovariance),
+
85 localTransform_(localTransform)
+
86 {
+
87 }
+
+
88
+
+
97 IMU(const cv::Vec3d & angularVelocity,
+
98 const cv::Mat & angularVelocityCovariance,
+
99 const cv::Vec3d & linearAcceleration,
+
100 const cv::Mat & linearAccelerationCovariance,
+
101 const Transform & localTransform = Transform::getIdentity()) :
+
102 angularVelocity_(angularVelocity),
+
103 angularVelocityCovariance_(angularVelocityCovariance),
+
104 linearAcceleration_(linearAcceleration),
+
105 linearAccelerationCovariance_(linearAccelerationCovariance),
+
106 localTransform_(localTransform)
+
107 {
+
108 }
+
+
109
+
111 const cv::Vec4d & orientation() const {return orientation_;}
+
113 const cv::Mat & orientationCovariance() const {return orientationCovariance_;}
+
114
+
116 const cv::Vec3d & angularVelocity() const {return angularVelocity_;}
+
118 const cv::Mat & angularVelocityCovariance() const {return angularVelocityCovariance_;}
+
119
+
121 const cv::Vec3d & linearAcceleration() const {return linearAcceleration_;}
+
123 const cv::Mat & linearAccelerationCovariance() const {return linearAccelerationCovariance_;}
+
124
+
126 const Transform & localTransform() const {return localTransform_;}
+
127
+ +
137
+
+
141 bool empty() const
+
142 {
+
143 return localTransform_.isNull();
+
144 }
+
+
145
+
146private:
+
147 cv::Vec4d orientation_;
+
148 cv::Mat orientationCovariance_;
+
149
+
150 cv::Vec3d angularVelocity_;
+
151 cv::Mat angularVelocityCovariance_;
+
152
+
153 cv::Vec3d linearAcceleration_;
+
154 cv::Mat linearAccelerationCovariance_;
+
155
+
156 Transform localTransform_;
+
157};
+
+
158
+
+
163class IMUEvent : public UEvent
+
164{
+
165public:
+
+ +
168 stamp_(0.0)
+
169 {}
+
+
+
175 IMUEvent(const IMU & data, double stamp) :
+
176 data_(data),
+
177 stamp_(stamp)
+
178 {
+
179 }
+
+
181 virtual std::string getClassName() const {return "IMUEvent";}
+
183 const IMU & getData() const {return data_;}
+
185 double getStamp() const {return stamp_;}
+
186
+
187private:
+
188 IMU data_;
+
189 double stamp_;
+
190};
+
+
191
+
192}
+
193
+
194#endif /* IMU_H_ */
+ +
UEvent carrying an IMU sample and timestamp.
Definition IMU.h:164
+
IMUEvent()
Default-constructs an event with zero stamp.
Definition IMU.h:167
+
const IMU & getData() const
Definition IMU.h:183
+
double getStamp() const
Definition IMU.h:185
+
virtual std::string getClassName() const
Definition IMU.h:181
+
IMUEvent(const IMU &data, double stamp)
Constructs an event with IMU data and stamp.
Definition IMU.h:175
+
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
const Transform & localTransform() const
Definition IMU.h:126
+
void convertToBaseFrame()
Rotate motion (and optionally orientation) into the base frame.
+
const cv::Vec4d & orientation() const
Definition IMU.h:111
+
const cv::Mat & linearAccelerationCovariance() const
Definition IMU.h:123
+
IMU(const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())
Constructs a sample without orientation (e.g. no magnetometer / no attitude).
Definition IMU.h:97
+
const cv::Mat & angularVelocityCovariance() const
Definition IMU.h:118
+
IMU()
Default-constructs an empty sample (null localTransform()).
Definition IMU.h:60
+
IMU(const cv::Vec4d &orientation, const cv::Mat &orientationCovariance, const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())
Constructs a sample with orientation and motion data.
Definition IMU.h:72
+
const cv::Vec3d & linearAcceleration() const
Definition IMU.h:121
+
const cv::Mat & orientationCovariance() const
Definition IMU.h:113
+
bool empty() const
True when localTransform() is null (placeholder / unset sample).
Definition IMU.h:141
+
const cv::Vec3d & angularVelocity() const
Definition IMU.h:116
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Image_8h_source.html b/preview/pr-1773/api/latest/Image_8h_source.html new file mode 100644 index 00000000..bdd7c062 --- /dev/null +++ b/preview/pr-1773/api/latest/Image_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Image.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Image.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef IMAGE_H_
+
29#define IMAGE_H_
+
30
+
31#include <rtabmap/core/SensorData.h>
+
32
+
33namespace rtabmap {
+
34RTABMAP_DEPRECATED(typedef SensorData Image, "rtabmap::Image class is renamed to rtabmap::SensorData, use the last one instead.");
+
35}
+
36
+
37
+
38#endif /* IMAGE_H_ */
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/LASWriter_8h_source.html b/preview/pr-1773/api/latest/LASWriter_8h_source.html new file mode 100644 index 00000000..1455df0d --- /dev/null +++ b/preview/pr-1773/api/latest/LASWriter_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/LASWriter.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LASWriter.h
+
+
+
1/*
+
2Copyright (c) 2010-2024, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_LASWRITER_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_LASWRITER_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32#include <pcl/point_cloud.h>
+
33#include <pcl/point_types.h>
+
34#include <string>
+
35#include <vector>
+
36
+
37namespace rtabmap {
+
38
+
51int RTABMAP_CORE_EXPORT saveLASFile(
+
52 const std::string & filePath,
+
53 const pcl::PointCloud<pcl::PointXYZ> & cloud,
+
54 const std::vector<int> & cameraIds = std::vector<int>());
+
55
+
64int RTABMAP_CORE_EXPORT saveLASFile(
+
65 const std::string & filePath,
+
66 const pcl::PointCloud<pcl::PointXYZRGB> & cloud,
+
67 const std::vector<int> & cameraIds = std::vector<int>(),
+
68 const std::vector<float> & intensities = std::vector<float>());
+
69
+
77int RTABMAP_CORE_EXPORT saveLASFile(
+
78 const std::string & filePath,
+
79 const pcl::PointCloud<pcl::PointXYZI> & cloud,
+
80 const std::vector<int> & cameraIds = std::vector<int>());
+
81
+
82} // namespace rtabmap
+
83
+
84#endif /* CORELIB_INCLUDE_RTABMAP_CORE_LASWRITER_H_ */
+ +
int RTABMAP_CORE_EXPORT saveLASFile(const std::string &filePath, const pcl::PointCloud< pcl::PointXYZ > &cloud, const std::vector< int > &cameraIds=std::vector< int >())
Writes a PCL point cloud to a LAS/LAZ file (requires RTAB-Map built with libLAS).
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Landmark_8h_source.html b/preview/pr-1773/api/latest/Landmark_8h_source.html new file mode 100644 index 00000000..95e1c08f --- /dev/null +++ b/preview/pr-1773/api/latest/Landmark_8h_source.html @@ -0,0 +1,245 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Landmark.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Landmark.h
+
+
+
1/*
+
2Copyright (c) 2010-2018, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_LANDMARK_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_LANDMARK_H_
+
30
+
31#include <rtabmap/core/rtabmap_core_export.h>
+
32#include <rtabmap/core/Transform.h>
+ + + +
36
+
37namespace rtabmap {
+
38
+
+
56class RTABMAP_CORE_EXPORT Landmark
+
57{
+
58public:
+
+ +
61 id_(0),
+
62 size_(0.0f)
+
63 {}
+
+
64
+
+
72 Landmark(const int & id, const float & size, const Transform & pose, const cv::Mat & covariance) :
+
73 id_(id),
+
74 size_(size),
+
75 pose_(pose),
+
76 covariance_(covariance)
+
77 {
+
78 UASSERT(id_>0);
+
79 UASSERT(!pose_.isNull());
+
80 UASSERT(covariance_.cols == 6 && covariance_.rows == 6 && covariance_.type() == CV_64FC1);
+
81 UASSERT_MSG(uIsFinite(covariance_.at<double>(0,0)) && covariance_.at<double>(0,0)>0, uFormat("Linear covariance should not be null! Value=%f.", covariance_.at<double>(0,0)).c_str());
+
82 UASSERT_MSG(uIsFinite(covariance_.at<double>(1,1)) && covariance_.at<double>(1,1)>0, uFormat("Linear covariance should not be null! Value=%f.", covariance_.at<double>(1,1)).c_str());
+
83 UASSERT_MSG(uIsFinite(covariance_.at<double>(2,2)) && covariance_.at<double>(2,2)>0, uFormat("Linear covariance should not be null! Value=%f.", covariance_.at<double>(2,2)).c_str());
+
84 UASSERT_MSG(uIsFinite(covariance_.at<double>(3,3)) && covariance_.at<double>(3,3)>0, uFormat("Angular covariance should not be null! Value=%f (set to 9999 if unknown).", covariance_.at<double>(3,3)).c_str());
+
85 UASSERT_MSG(uIsFinite(covariance_.at<double>(4,4)) && covariance_.at<double>(4,4)>0, uFormat("Angular covariance should not be null! Value=%f (set to 9999 if unknown).", covariance_.at<double>(4,4)).c_str());
+
86 UASSERT_MSG(uIsFinite(covariance_.at<double>(5,5)) && covariance_.at<double>(5,5)>0, uFormat("Angular covariance should not be null! Value=%f (set to 9999 if unknown).", covariance_.at<double>(5,5)).c_str());
+
87 }
+
+
88
+
92 RTABMAP_DEPRECATED Landmark(const int & id, const Transform & pose, const cv::Mat & covariance);
+
93
+
94 virtual ~Landmark() {}
+
95
+
97 const int & id() const {return id_;}
+
99 const float & size() const {return size_;}
+
101 const Transform & pose() const {return pose_;}
+
103 const cv::Mat & covariance() const {return covariance_;}
+
104
+
105private:
+
106 int id_;
+
107 float size_;
+
108 Transform pose_;
+
109 cv::Mat covariance_;
+
110};
+
+
111
+
113typedef std::map<int, Landmark> Landmarks;
+
114
+
+
115inline Landmark::Landmark(const int & id, const Transform & pose, const cv::Mat & covariance) :
+
116 id_(id),
+
117 size_(0.0f),
+
118 pose_(pose),
+
119 covariance_(covariance)
+
120{
+
121 UASSERT(id_>0);
+
122 UASSERT(!pose_.isNull());
+
123 UASSERT(covariance_.cols == 6 && covariance_.rows == 6 && covariance_.type() == CV_64FC1);
+
124 UASSERT_MSG(uIsFinite(covariance_.at<double>(0,0)) && covariance_.at<double>(0,0)>0, uFormat("Linear covariance should not be null! Value=%f.", covariance_.at<double>(0,0)).c_str());
+
125 UASSERT_MSG(uIsFinite(covariance_.at<double>(1,1)) && covariance_.at<double>(1,1)>0, uFormat("Linear covariance should not be null! Value=%f.", covariance_.at<double>(1,1)).c_str());
+
126 UASSERT_MSG(uIsFinite(covariance_.at<double>(2,2)) && covariance_.at<double>(2,2)>0, uFormat("Linear covariance should not be null! Value=%f.", covariance_.at<double>(2,2)).c_str());
+
127 UASSERT_MSG(uIsFinite(covariance_.at<double>(3,3)) && covariance_.at<double>(3,3)>0, uFormat("Angular covariance should not be null! Value=%f (set to 9999 if unknown).", covariance_.at<double>(3,3)).c_str());
+
128 UASSERT_MSG(uIsFinite(covariance_.at<double>(4,4)) && covariance_.at<double>(4,4)>0, uFormat("Angular covariance should not be null! Value=%f (set to 9999 if unknown).", covariance_.at<double>(4,4)).c_str());
+
129 UASSERT_MSG(uIsFinite(covariance_.at<double>(5,5)) && covariance_.at<double>(5,5)>0, uFormat("Angular covariance should not be null! Value=%f (set to 9999 if unknown).", covariance_.at<double>(5,5)).c_str());
+
130}
+
+
131
+
132} // namespace rtabmap
+
133
+
134#endif /* CORELIB_INCLUDE_RTABMAP_CORE_LANDMARK_H_ */
+
Some conversion functions.
+
std::string UTILITE_EXPORT uFormat(const char *fmt,...)
+
ULogger class and convenient macros.
+
#define UASSERT(condition)
Definition ULogger.h:66
+
Basic mathematics functions.
+
bool uIsFinite(const T &value)
Definition UMath.h:53
+
Optimized pose of a visual landmark (e.g. ArUco/AprilTag) in the map.
Definition Landmark.h:57
+
const cv::Mat & covariance() const
Definition Landmark.h:103
+
Landmark(const int &id, const float &size, const Transform &pose, const cv::Mat &covariance)
Constructs a landmark with size, pose, and covariance.
Definition Landmark.h:72
+
const int & id() const
Definition Landmark.h:97
+
Landmark()
Default-constructs an invalid landmark (id == 0).
Definition Landmark.h:60
+
const Transform & pose() const
Definition Landmark.h:101
+
const float & size() const
Definition Landmark.h:99
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
bool isNull() const
Checks whether the transform is null (all zeros).
+ +
std::map< int, Landmark > Landmarks
Map of landmark id → Landmark (typically positive keys).
Definition Landmark.h:113
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/LaserScan_8h_source.html b/preview/pr-1773/api/latest/LaserScan_8h_source.html new file mode 100644 index 00000000..43506936 --- /dev/null +++ b/preview/pr-1773/api/latest/LaserScan_8h_source.html @@ -0,0 +1,327 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/LaserScan.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LaserScan.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_LASERSCAN_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_LASERSCAN_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Transform.h>
+
34
+
35namespace rtabmap {
+
36
+
+
45class RTABMAP_CORE_EXPORT LaserScan
+
46{
+
47public:
+
+
55 enum Format{
+
56 kUnknown=0,
+
57 kXY=1,
+
58 kXYI=2,
+
59 kXYNormal=3,
+
60 kXYINormal=4,
+
61 kXYZ=5,
+
62 kXYZI=6,
+
63 kXYZRGB=7,
+
64 kXYZNormal=8,
+
65 kXYZINormal=9,
+
66 kXYZRGBNormal=10,
+
67 kXYZIT=11,
+
68 kXYZIRT=12
+
69 };
+
+
70
+
73 static std::string formatName(const Format & format);
+
74 static int channels(const Format & format);
+
75 static bool isScan2d(const Format & format);
+
76 static bool isScanHasNormals(const Format & format);
+
77 static bool isScanHasRGB(const Format & format);
+
78 static bool isScanHasIntensity(const Format & format);
+
79 static bool isScanHasTime(const Format & format);
+
80 static bool isScanHasRing(const Format & format);
+
81 static float packRGB(unsigned char r, unsigned char g, unsigned char b);
+
82 static void unpackRGB(float rgb, unsigned char & r, unsigned char & g, unsigned char & b);
+
83
+ +
88 const cv::Mat & oldScanFormat,
+
89 int maxPoints = 0,
+
90 int maxRange = 0,
+
91 const Transform & localTransform = Transform::getIdentity());
+
92
+ +
97 const cv::Mat & oldScanFormat,
+
98 float minRange,
+
99 float maxRange,
+
100 float angleMin,
+
101 float angleMax,
+
102 float angleInc,
+
103 const Transform & localTransform = Transform::getIdentity());
+
105
+
106public:
+
107
+
110 LaserScan();
+
111 LaserScan(const LaserScan & data,
+
112 int maxPoints,
+
113 float maxRange,
+
114 const Transform & localTransform = Transform::getIdentity());
+
115
+
117 RTABMAP_DEPRECATED LaserScan(const LaserScan & data,
+
118 int maxPoints,
+
119 float maxRange,
+
120 Format format,
+
121 const Transform & localTransform = Transform::getIdentity());
+
122 LaserScan(const cv::Mat & data,
+
123 int maxPoints,
+
124 float maxRange,
+
125 Format format,
+
126 const Transform & localTransform = Transform::getIdentity());
+
127
+
129 RTABMAP_DEPRECATED LaserScan(const LaserScan & data,
+
130 Format format,
+
131 float minRange,
+
132 float maxRange,
+
133 float angleMin,
+
134 float angleMax,
+
135 float angleIncrement,
+
136 const Transform & localTransform = Transform::getIdentity());
+
137 LaserScan(const LaserScan & data,
+
138 float minRange,
+
139 float maxRange,
+
140 float angleMin,
+
141 float angleMax,
+
142 float angleIncrement,
+
143 const Transform & localTransform = Transform::getIdentity());
+
144 LaserScan(const cv::Mat & data,
+
145 Format format,
+
146 float minRange,
+
147 float maxRange,
+
148 float angleMin,
+
149 float angleMax,
+
150 float angleIncrement,
+
151 const Transform & localTransform = Transform::getIdentity());
+
153
+
156 const cv::Mat & data() const {return data_;}
+
157 Format format() const {return format_;}
+
158 std::string formatName() const {return formatName(format_);}
+
159 int channels() const {return data_.channels();}
+
160 int maxPoints() const {return maxPoints_;}
+
161 float rangeMin() const {return rangeMin_;}
+
162 float rangeMax() const {return rangeMax_;}
+
163 float angleMin() const {return angleMin_;}
+
164 float angleMax() const {return angleMax_;}
+
165 float angleIncrement() const {return angleIncrement_;}
+
166 void setLocalTransform(const Transform & t) {localTransform_ = t;}
+
167 Transform localTransform() const {return localTransform_;}
+
169
+
172 bool empty() const {return data_.empty();}
+
173 bool isEmpty() const {return data_.empty();}
+
174 int size() const {return static_cast<int>(data_.total());}
+
175 int dataType() const {return data_.type();}
+
176 bool is2d() const {return isScan2d(format_);}
+
177 bool hasNormals() const {return isScanHasNormals(format_);}
+
178 bool hasRGB() const {return isScanHasRGB(format_);}
+
179 bool hasIntensity() const {return isScanHasIntensity(format_);}
+
180 bool hasTime() const {return isScanHasTime(format_);}
+
181 bool hasRing() const {return isScanHasRing(format_);}
+
183 bool isCompressed() const {return !data_.empty() && data_.type()==CV_8UC1;}
+
184 bool isOrganized() const {return data_.rows > 1;}
+
185 LaserScan clone() const;
+
186 LaserScan densify() const;
+
188
+
191 int getIntensityOffset() const {return hasIntensity()?(is2d()?2:3):-1;}
+
192 int getRGBOffset() const {return hasRGB()?(is2d()?2:3):-1;}
+
193 int getNormalsOffset() const {return hasNormals()?(2 + (is2d()?0:1) + ((hasRGB() || hasIntensity())?1:0)):-1;}
+
194 int getRingOffset() const {return format_==kXYZIRT?4:-1;}
+
195 int getTimeOffset() const {return format_==kXYZIT?4:(format_==kXYZIRT?5:-1);}
+
196
+
204 float & field(unsigned int pointIndex, unsigned int channelOffset);
+
205
+
209 void clear() {data_ = cv::Mat();}
+
210
+ + +
220
+
221private:
+
222 void init(const cv::Mat & data,
+
223 Format format,
+
224 float minRange,
+
225 float maxRange,
+
226 float angleMin,
+
227 float angleMax,
+
228 float angleIncrement,
+
229 int maxPoints,
+
230 const Transform & localTransform = Transform::getIdentity());
+
231
+
232private:
+
233 cv::Mat data_;
+
234 Format format_;
+
235 int maxPoints_;
+
236 float rangeMin_;
+
237 float rangeMax_;
+
238 float angleMin_;
+
239 float angleMax_;
+
240 float angleIncrement_;
+
241 Transform localTransform_;
+
242};
+
+
243
+
244} // namespace rtabmap
+
245
+
246#endif /* CORELIB_INCLUDE_RTABMAP_CORE_LASERSCAN_H_ */
+
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
+
RTABMAP_DEPRECATED LaserScan(const LaserScan &data, int maxPoints, float maxRange, Format format, const Transform &localTransform=Transform::getIdentity())
+
bool isCompressed() const
True if the scan is stored compressed (single-row CV_8UC1 blob) instead of raw points.
Definition LaserScan.h:183
+
Format
Enumeration of possible formats for laser scan data.
Definition LaserScan.h:55
+
float & field(unsigned int pointIndex, unsigned int channelOffset)
Access a specific field value of a point.
+
static LaserScan backwardCompatibility(const cv::Mat &oldScanFormat, float minRange, float maxRange, float angleMin, float angleMax, float angleInc, const Transform &localTransform=Transform::getIdentity())
Converts legacy scan format with additional metadata to a LaserScan.
+
RTABMAP_DEPRECATED LaserScan(const LaserScan &data, Format format, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity())
+
static LaserScan backwardCompatibility(const cv::Mat &oldScanFormat, int maxPoints=0, int maxRange=0, const Transform &localTransform=Transform::getIdentity())
Converts legacy scan format to a LaserScan object.
+
LaserScan operator+(const LaserScan &)
Concatenate scan's data (localTransform is ignored).
+
void clear()
Clear the scan data.
Definition LaserScan.h:209
+
LaserScan & operator+=(const LaserScan &)
Concatenate scan's data (localTransform is ignored).
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/LidarVLP16_8h_source.html b/preview/pr-1773/api/latest/LidarVLP16_8h_source.html new file mode 100644 index 00000000..3118937f --- /dev/null +++ b/preview/pr-1773/api/latest/LidarVLP16_8h_source.html @@ -0,0 +1,276 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/lidar/LidarVLP16.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LidarVLP16.h
+
+
+
1/*
+
2Copyright (c) 2010-2022, Mathieu Labbe
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the names of its contributors may be used to endorse or promote products
+
13 derived from this software without specific prior written permission.
+
14
+
15THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
16ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
17WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
18DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
19DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
20(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
21LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
22ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
23(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
24SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
25*/
+
26#ifndef CORELIB_INCLUDE_RTABMAP_CORE_LIDAR_LIDARVLP16_H_
+
27#define CORELIB_INCLUDE_RTABMAP_CORE_LIDAR_LIDARVLP16_H_
+
28
+
29// Should be first on windows to avoid "WinSock.h has already been included" error
+
30#include <pcl/io/vlp_grabber.h>
+
31#include <boost/version.hpp>
+
32#include <boost/asio.hpp>
+
33
+
34#include <rtabmap/core/Lidar.h>
+
35#include <rtabmap/utilite/USemaphore.h>
+
36
+
37#include <thread>
+
38#include <atomic>
+
39
+
40// On Apple, closing pcl::HDLGrabber's UDP socket while its read thread is blocked
+
41// in receive_from returns EBADF, which pcl::HDLGrabber::readPacketsFromSocket()
+
42// rethrows uncaught in its own thread, aborting the process on shutdown. There we
+
43// run our own single-threaded UDP receive loop and own the socket lifecycle.
+
44// Other platforms use the base pcl::VLPGrabber path (which also avoids needing
+
45// boost::asio::io_context, absent from the Boost 1.65 on e.g. Ubuntu Bionic).
+
46// Comment this out to force the base path everywhere (e.g. A/B testing on macOS).
+
47#if defined(__APPLE__)
+
48#define RTABMAP_VLP16_USE_CUSTOM_SOCKET
+
49#endif
+
50
+
51namespace rtabmap {
+
52
+
+
53struct PointXYZIT {
+
54 float x;
+
55 float y;
+
56 float z;
+
57 float i;
+
58 float t;
+
59};
+
+
60
+
+
61class RTABMAP_CORE_EXPORT LidarVLP16 :public Lidar, public pcl::VLPGrabber {
+
62public:
+ +
64 const std::string& pcapFile,
+
65 bool organized = false,
+
66 bool stampLast = true,
+
67 float frameRate = 0.0f,
+
68 Transform localTransform = Transform::getIdentity());
+ +
70 const boost::asio::ip::address& ipAddress,
+
71 const std::uint16_t port = 2368,
+
72 bool organized = false,
+
73 bool useHostTime = true,
+
74 bool stampLast = true,
+
75 float frameRate = 0.0f,
+
76 Transform localTransform = Transform::getIdentity());
+
77 virtual ~LidarVLP16();
+
78
+
79 SensorData takeScan(SensorCaptureInfo * info = 0) {return takeData(info);}
+
80
+
81 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "") override;
+
82 virtual std::string getSerial() const override {return getName();}
+
83
+
84 void setOrganized(bool enable);
+
85
+
86#ifdef RTABMAP_VLP16_USE_CUSTOM_SOCKET
+
87 // Overridden only on Apple: in network mode we run our own UDP receive loop
+
88 // instead of pcl::HDLGrabber's, because on macOS/BSD closing the grabber's
+
89 // socket while its read thread is blocked in receive_from returns EBADF, a
+
90 // code that pcl::HDLGrabber::readPacketsFromSocket() rethrows uncaught (in
+
91 // its own thread), aborting the process on shutdown. Owning the socket lets
+
92 // us tear it down with the non-throwing receive_from overload. Like
+
93 // pcl::HDLGrabber, we bind to the given LOCAL interface address (to scope
+
94 // reception on a multi-homed host) and fall back to all interfaces (0.0.0.0)
+
95 // when it is unspecified or not a local address. In PCAP mode we delegate to
+
96 // the base grabber. On other platforms we inherit pcl::VLPGrabber directly.
+
97 virtual void start() override;
+
98 virtual void stop() override;
+
99 virtual bool isRunning() const override;
+
100#endif
+
101
+
102private:
+
103 void buildTimings(bool dualMode);
+
104 virtual void toPointClouds (HDLDataPacket *dataPacket) override;
+
105#ifdef RTABMAP_VLP16_USE_CUSTOM_SOCKET
+
106 void readPackets();
+
107#endif
+
108
+
109protected:
+
110 virtual SensorData captureData(SensorCaptureInfo * info = 0) override;
+
111
+
112private:
+
113 // timing offset lookup table
+
114 std::vector< std::vector<float> > timingOffsets_;
+
115 bool timingOffsetsDualMode_;
+
116 double startSweepTime_;
+
117 double startSweepTimeHost_;
+
118 bool organized_;
+
119 bool useHostTime_;
+
120 bool stampLast_;
+
121 SensorData lastScan_;
+
122 std::vector<std::vector<PointXYZIT> > accumulatedScans_;
+
123 USemaphore scanReady_;
+
124 UMutex lastScanMutex_;
+
125
+
126 // Own UDP receive path (network mode only).
+
127 bool networkMode_;
+
128 boost::asio::ip::address ipAddress_;
+
129 std::uint16_t port_;
+
130 bool receivedScan_; // set once the first scan is received
+
131#ifdef RTABMAP_VLP16_USE_CUSTOM_SOCKET
+
132 boost::asio::io_context ioContext_;
+
133 boost::asio::ip::udp::socket * socket_;
+
134 std::thread * readThread_;
+
135 std::atomic<bool> terminate_;
+
136#endif
+
137};
+
+
138
+
139} /* namespace rtabmap */
+
140
+
141#endif /* CORELIB_INCLUDE_RTABMAP_CORE_LIDAR_LIDARVLP16_H_ */
+ + + +
virtual SensorData captureData(SensorCaptureInfo *info=0) override
Pure virtual method to capture sensor data.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="") override
Initializes the sensor.
+
virtual std::string getSerial() const override
Returns the sensor's serial number or unique identifier.
Definition LidarVLP16.h:82
+ +
Metadata structure for sensor data capture and processing.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Lidar_8h_source.html b/preview/pr-1773/api/latest/Lidar_8h_source.html new file mode 100644 index 00000000..e3a059e0 --- /dev/null +++ b/preview/pr-1773/api/latest/Lidar_8h_source.html @@ -0,0 +1,175 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Lidar.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Lidar.h
+
+
+
1/*
+
2Copyright (c) 2010-2022, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31#include <rtabmap/core/SensorCapture.h>
+
32
+
33namespace rtabmap
+
34{
+
35
+
+
40class RTABMAP_CORE_EXPORT Lidar : public SensorCapture
+
41{
+
42public:
+
43 virtual ~Lidar() {}
+
44
+
45protected:
+
+
52 Lidar(float lidarRate = 0, const Transform & localTransform = Transform::getIdentity()) :
+
53 SensorCapture(lidarRate, localTransform) {}
+
+
54};
+
+
55
+
56
+
57} // namespace rtabmap
+ +
Lidar(float lidarRate=0, const Transform &localTransform=Transform::getIdentity())
Definition Lidar.h:52
+
Abstract base class for sensor data capture (cameras, lidars, etc.)
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Link_8h_source.html b/preview/pr-1773/api/latest/Link_8h_source.html new file mode 100644 index 00000000..66d2a146 --- /dev/null +++ b/preview/pr-1773/api/latest/Link_8h_source.html @@ -0,0 +1,265 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Link.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Link.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef LINK_H_
+
29#define LINK_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Transform.h>
+
34#include <opencv2/core/core.hpp>
+
35
+
36namespace rtabmap {
+
37
+
+
54class RTABMAP_CORE_EXPORT Link
+
55{
+
56public:
+
+
64 enum Type {
+ + + + + + + + + + + +
76 kSelfRefLink = 97,
+
77 kAllWithLandmarks = 98,
+
78 kAllWithoutLandmarks = 99,
+
79 kUndef = 99
+
80 };
+
+
81
+
83 static std::string typeName(Type type);
+
84
+ +
96 Link(int from,
+
97 int to,
+
98 Type type,
+
99 const Transform & transform,
+
100 const cv::Mat & infMatrix = cv::Mat::eye(6,6,CV_64FC1),
+
101 const cv::Mat & userData = cv::Mat());
+
102
+
104 bool isValid() const {return from_ != 0 && to_ != 0 && !transform_.isNull() && type_!=kUndef;}
+
105
+
107 int from() const {return from_;}
+
109 int to() const {return to_;}
+
111 const Transform & transform() const {return transform_;}
+
113 Type type() const {return type_;}
+
114 std::string typeName() const {return typeName(type_);}
+
115 const cv::Mat & infMatrix() const {return infMatrix_;}
+
116
+
122 double rotVariance(bool minimum = true) const;
+
127 double transVariance(bool minimum = true) const;
+
128
+
129 void setFrom(int from) {from_ = from;}
+
130 void setTo(int to) {to_ = to;}
+
131 void setTransform(const Transform & transform) {transform_ = transform;}
+
132 void setType(Type type) {type_ = type;}
+
134 void setInfMatrix(const cv::Mat & infMatrix);
+
135
+
137 const cv::Mat & userDataRaw() const {return _userDataRaw;}
+
139 const cv::Mat & userDataCompressed() const {return _userDataCompressed;}
+ +
143 cv::Mat uncompressUserDataConst() const;
+
144
+
157 Link merge(const Link & link, Type outputType) const;
+
159 Link inverse() const;
+
160
+
161private:
+
162 int from_;
+
163 int to_;
+
164 Transform transform_;
+
165 Type type_;
+
166 cv::Mat infMatrix_; // Information matrix = covariance matrix ^ -1
+
167
+
168 // user data
+
169 cv::Mat _userDataCompressed; // compressed data
+
170 cv::Mat _userDataRaw;
+
171};
+
+
172
+
173}
+
174
+
175
+
176#endif /* LINK_H_ */
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/LocalGridMaker_8h_source.html b/preview/pr-1773/api/latest/LocalGridMaker_8h_source.html new file mode 100644 index 00000000..c2b626fd --- /dev/null +++ b/preview/pr-1773/api/latest/LocalGridMaker_8h_source.html @@ -0,0 +1,259 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/LocalGridMaker.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LocalGridMaker.h
+
+
+
1/*
+
2Copyright (c) 2010-2023, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef SRC_LOCAL_MAP_H_
+
29#define SRC_LOCAL_MAP_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <pcl/pcl_base.h>
+
34#include <pcl/point_types.h>
+
35
+
36#include <rtabmap/core/Transform.h>
+
37#include <rtabmap/core/Parameters.h>
+
38#include <rtabmap/core/Signature.h>
+
39
+
40namespace rtabmap {
+
41
+
+
64class RTABMAP_CORE_EXPORT LocalGridMaker
+
65{
+
66public:
+ +
69 virtual ~LocalGridMaker();
+
70
+
72 virtual void parseParameters(const ParametersMap & parameters);
+
73
+
75 float getCellSize() const {return cellSize_;}
+
77 bool isGridFromDepth() const {return occupancySensor_;}
+
79 bool isMapFrameProjection() const {return projMapFrame_;}
+
80
+
97 template<typename PointT>
+
98 typename pcl::PointCloud<PointT>::Ptr segmentCloud(
+
99 const typename pcl::PointCloud<PointT>::Ptr & cloud,
+
100 const pcl::IndicesPtr & indices,
+
101 const Transform & pose,
+
102 const cv::Point3f & viewPoint,
+
103 pcl::IndicesPtr & groundIndices, // output cloud indices
+
104 pcl::IndicesPtr & obstaclesIndices, // output cloud indices
+
105 pcl::IndicesPtr * flatObstacles = 0) const; // output cloud indices
+
106
+ +
124 const Signature & node,
+
125 cv::Mat & groundCells,
+
126 cv::Mat & obstacleCells,
+
127 cv::Mat & emptyCells,
+
128 cv::Point3f & viewPoint);
+
129
+ +
144 const LaserScan & cloud,
+
145 const Transform & pose,
+
146 cv::Mat & groundCells,
+
147 cv::Mat & obstacleCells,
+
148 cv::Mat & emptyCells,
+
149 cv::Point3f & viewPointInOut) const;
+
150
+
151private:
+
163 template<typename PointT>
+
164 static pcl::IndicesPtr noiseFilteringWithMaxRange(
+
165 const typename pcl::PointCloud<PointT>::Ptr & cloud,
+
166 const pcl::IndicesPtr & indices,
+
167 float maxRange,
+
168 float radiusSearch,
+
169 int minNeighborsInRadius);
+
170
+
171protected:
+
172 ParametersMap parameters_;
+
173
+
174 unsigned int cloudDecimation_;
+
175 float rangeMax_;
+
176 float rangeMin_;
+
177 std::vector<float> roiRatios_;
+
178 float footprintLength_;
+
179 float footprintWidth_;
+
180 float footprintHeight_;
+
181 int scanDecimation_;
+
182 float cellSize_;
+
183 bool preVoxelFiltering_;
+
184 int occupancySensor_;
+
185 bool projMapFrame_;
+
186 float maxObstacleHeight_;
+
187 int normalKSearch_;
+
188 float groundNormalsUp_;
+
189 float maxGroundAngle_;
+
190 float clusterRadius_;
+
191 int minClusterSize_;
+
192 bool flatObstaclesDetected_;
+
193 float minGroundHeight_;
+
194 float maxGroundHeight_;
+
195 bool normalsSegmentation_;
+
196 bool grid3D_;
+
197 bool groundIsObstacle_;
+
198 float noiseFilteringRadius_;
+
199 int noiseFilteringMinNeighbors_;
+
200 bool scan2dUnknownSpaceFilled_;
+
201 bool rayTracing_;
+
202};
+
+
203
+
204} /* namespace rtabmap */
+
205
+
206#include <rtabmap/core/impl/LocalMapMaker.hpp>
+
207
+
208#endif /* SRC_LOCAL_MAP_H_ */
+
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
+
Builds per-node local occupancy grids from laser scans or depth clouds.
+ +
void createLocalMap(const LaserScan &cloud, const Transform &pose, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPointInOut) const
Creates a local grid from a 3D (or organized) LaserScan.
+ +
virtual void parseParameters(const ParametersMap &parameters)
Updates grid settings from Grid/ entries in parameters.
+
LocalGridMaker(const ParametersMap &parameters=ParametersMap())
Constructs with parseParameters() on parameters (or defaults).
+
void createLocalMap(const Signature &node, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPoint)
Creates a local grid from a Signature's laser scan or depth data.
+
bool isMapFrameProjection() const
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/LocalGrid_8h_source.html b/preview/pr-1773/api/latest/LocalGrid_8h_source.html new file mode 100644 index 00000000..9e85a623 --- /dev/null +++ b/preview/pr-1773/api/latest/LocalGrid_8h_source.html @@ -0,0 +1,230 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/LocalGrid.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LocalGrid.h
+
+
+
1/*
+
2Copyright (c) 2010-2023, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef SRC_LOCALGRID_H_
+
29#define SRC_LOCALGRID_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <opencv2/core.hpp>
+
34#include <map>
+
35
+
36namespace rtabmap {
+
37
+
+
61class RTABMAP_CORE_EXPORT LocalGrid
+
62{
+
63public:
+
72 LocalGrid(const cv::Mat & ground,
+
73 const cv::Mat & obstacles,
+
74 const cv::Mat & empty,
+
75 float cellSize,
+
76 const cv::Point3f & viewPoint = cv::Point3f(0,0,0));
+
77 virtual ~LocalGrid() {}
+
78
+
80 bool is3D() const;
+
81
+
82 cv::Mat groundCells;
+
83 cv::Mat obstacleCells;
+
84 cv::Mat emptyCells;
+
85 float cellSize;
+
86 cv::Point3f viewPoint;
+
87};
+
+
88
+
+
97class RTABMAP_CORE_EXPORT LocalGridCache
+
98{
+
99public:
+
100 LocalGridCache() {}
+
101 virtual ~LocalGridCache() {}
+
102
+
104 void add(int nodeId,
+
105 const cv::Mat & ground,
+
106 const cv::Mat & obstacles,
+
107 const cv::Mat & empty,
+
108 float cellSize,
+
109 const cv::Point3f & viewPoint = cv::Point3f(0,0,0));
+
110
+
112 void add(int nodeId, const LocalGrid & localGrid);
+
113
+
118 bool shareTo(int nodeId, LocalGridCache & anotherCache) const;
+
119
+
121 unsigned long getMemoryUsed() const;
+
122
+
127 void clear(bool temporaryOnly = false);
+
128
+
129 size_t size() const {return localGrids_.size();}
+
130 bool empty() const {return localGrids_.empty();}
+
131 const std::map<int, LocalGrid> & localGrids() const {return localGrids_;}
+
132
+
133 std::map<int, LocalGrid>::const_iterator find(int nodeId) const {return localGrids_.find(nodeId);}
+
134 std::map<int, LocalGrid>::const_iterator begin() const {return localGrids_.begin();}
+
135 std::map<int, LocalGrid>::const_iterator end() const {return localGrids_.end();}
+
136
+
137private:
+
138 std::map<int, LocalGrid> localGrids_;
+
139};
+
+
140
+
141} /* namespace rtabmap */
+
142
+
143#endif /* SRC_LOCALGRID_H_ */
+
Cache of LocalGrid entries keyed by map node id.
Definition LocalGrid.h:98
+
void add(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))
Inserts or replaces the grid for nodeId (from separate cell mats).
+
void clear(bool temporaryOnly=false)
Removes cached grids.
+
bool shareTo(int nodeId, LocalGridCache &anotherCache) const
Copies a grid to anotherCache if present here and absent there.
+
void add(int nodeId, const LocalGrid &localGrid)
Inserts or replaces the grid for nodeId.
+
unsigned long getMemoryUsed() const
Approximate memory used by cached grids (bytes).
+
Local occupancy grid cells for one map node (ground, obstacles, empty).
Definition LocalGrid.h:62
+
float cellSize
Cell size in meters.
Definition LocalGrid.h:85
+
cv::Mat groundCells
Ground cells (1×N, CV_32FC2–CV_32FC7, see class doc).
Definition LocalGrid.h:82
+
LocalGrid(const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))
Builds a local grid from cell matrices.
+
cv::Mat emptyCells
Empty/free cells (same layout as groundCells).
Definition LocalGrid.h:84
+
cv::Point3f viewPoint
View point used to build the grid.
Definition LocalGrid.h:86
+
cv::Mat obstacleCells
Obstacle cells (same layout as groundCells).
Definition LocalGrid.h:83
+
bool is3D() const
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/LocalMapMaker_8hpp_source.html b/preview/pr-1773/api/latest/LocalMapMaker_8hpp_source.html new file mode 100644 index 00000000..a59a98e6 --- /dev/null +++ b/preview/pr-1773/api/latest/LocalMapMaker_8hpp_source.html @@ -0,0 +1,390 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/impl/LocalMapMaker.hpp Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LocalMapMaker.hpp
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_IMPL_LOCALMAP_HPP_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_IMPL_LOCALMAP_HPP_
+
30
+
31#include <rtabmap/core/util3d_mapping.h>
+
32#include <rtabmap/core/util3d_filtering.h>
+
33#include <rtabmap/core/util3d_transforms.h>
+ +
35
+
36namespace rtabmap {
+
37
+
38template<typename PointT>
+
39pcl::IndicesPtr LocalGridMaker::noiseFilteringWithMaxRange(
+
40 const typename pcl::PointCloud<PointT>::Ptr & cloud,
+
41 const pcl::IndicesPtr & indices,
+
42 float maxRange,
+
43 float radiusSearch,
+
44 int minNeighborsInRadius)
+
45{
+
46 // util3d::radiusFiltering() would filter the whole cloud if the indices are empty
+
47 UASSERT(indices.get() && !indices->empty());
+
48 pcl::IndicesPtr closeIndices = indices;
+
49 pcl::IndicesPtr farIndices;
+
50 if(maxRange != 0.0f)
+
51 {
+
52 // Don't filter points farther than maximum range, in case we want to ray trace empty space
+
53 util3d::rangeSplitFiltering(cloud, indices, maxRange, closeIndices, farIndices);
+
54 }
+
55 if(closeIndices->size())
+
56 {
+
57 // Note: radiusFiltering() would filter the whole cloud if indices are empty
+
58 closeIndices = util3d::radiusFiltering(cloud, closeIndices, radiusSearch, minNeighborsInRadius);
+
59 }
+
60 if(farIndices.get())
+
61 {
+
62 closeIndices = util3d::concatenate(closeIndices, farIndices);
+
63 }
+
64 return closeIndices;
+
65}
+
66
+
67template<typename PointT>
+
+
68typename pcl::PointCloud<PointT>::Ptr LocalGridMaker::segmentCloud(
+
69 const typename pcl::PointCloud<PointT>::Ptr & cloudIn,
+
70 const pcl::IndicesPtr & indicesIn,
+
71 const Transform & pose,
+
72 const cv::Point3f & viewPoint,
+
73 pcl::IndicesPtr & groundIndices,
+
74 pcl::IndicesPtr & obstaclesIndices,
+
75 pcl::IndicesPtr * flatObstacles) const
+
76{
+
77 groundIndices.reset(new std::vector<int>);
+
78 obstaclesIndices.reset(new std::vector<int>);
+
79 if(flatObstacles)
+
80 {
+
81 flatObstacles->reset(new std::vector<int>);
+
82 }
+
83
+
84 UASSERT(cloudIn.get());
+
85 UASSERT(indicesIn.get());
+
86 if(cloudIn->empty())
+
87 {
+
88 return cloudIn;
+
89 }
+
90
+
91 typename pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);
+
92 pcl::IndicesPtr indices(new std::vector<int>);
+
93
+
94 if(preVoxelFiltering_)
+
95 {
+
96 // voxelize to grid cell size
+
97 cloud = util3d::voxelize(cloudIn, indicesIn, cellSize_);
+
98
+
99 indices->resize(cloud->size());
+
100 for(unsigned int i=0; i<indices->size(); ++i)
+
101 {
+
102 indices->at(i) = i;
+
103 }
+
104 }
+
105 else
+
106 {
+
107 cloud = cloudIn;
+
108 if(indicesIn->empty() && cloud->is_dense)
+
109 {
+
110 indices->resize(cloud->size());
+
111 for(unsigned int i=0; i<indices->size(); ++i)
+
112 {
+
113 indices->at(i) = i;
+
114 }
+
115 }
+
116 else
+
117 {
+
118 indices = indicesIn;
+
119 }
+
120 }
+
121
+
122 if(cloud->empty())
+
123 {
+
124 return cloud;
+
125 }
+
126
+
127 // add pose rotation without yaw
+
128 float roll, pitch, yaw;
+
129 pose.getEulerAngles(roll, pitch, yaw);
+
130 UDEBUG("node.getPose()=%s projMapFrame_=%d", pose.prettyPrint().c_str(), projMapFrame_?1:0);
+
131 cloud = util3d::transformPointCloud(cloud, Transform(0,0, projMapFrame_?pose.z():0, roll, pitch, 0));
+
132
+
133 // filter footprint
+
134 if(footprintLength_ > 0.0f || footprintWidth_ > 0.0f || footprintHeight_ > 0.0f)
+
135 {
+
136 indices = util3d::cropBox(
+
137 cloud,
+
138 indices,
+
139 Eigen::Vector4f(
+
140 footprintLength_>0.0f?-footprintLength_/2.0f:std::numeric_limits<int>::min(),
+
141 footprintWidth_>0.0f&&footprintLength_>0.0f?-footprintWidth_/2.0f:std::numeric_limits<int>::min(),
+
142 0,
+
143 1),
+
144 Eigen::Vector4f(
+
145 footprintLength_>0.0f?footprintLength_/2.0f:std::numeric_limits<int>::max(),
+
146 footprintWidth_>0.0f&&footprintLength_>0.0f?footprintWidth_/2.0f:std::numeric_limits<int>::max(),
+
147 footprintHeight_>0.0f&&footprintLength_>0.0f&&footprintWidth_>0.0f?footprintHeight_:std::numeric_limits<int>::max(),
+
148 1),
+ +
150 true);
+
151 }
+
152
+
153 // filter ground/obstacles zone
+
154 if(minGroundHeight_ != 0.0f || maxObstacleHeight_ != 0.0f)
+
155 {
+
156 indices = util3d::passThrough(cloud, indices, "z",
+
157 minGroundHeight_!=0.0f?minGroundHeight_:std::numeric_limits<int>::min(),
+
158 maxObstacleHeight_>0.0f?maxObstacleHeight_:std::numeric_limits<int>::max());
+
159 UDEBUG("indices after max obstacles height filtering = %d", (int)indices->size());
+
160 }
+
161
+
162 if(indices->size())
+
163 {
+
164 if(normalsSegmentation_ && !groundIsObstacle_)
+
165 {
+
166 UDEBUG("normalKSearch=%d", normalKSearch_);
+
167 UDEBUG("maxGroundAngle=%f", maxGroundAngle_);
+
168 UDEBUG("Cluster radius=%f", clusterRadius_);
+
169 UDEBUG("flatObstaclesDetected=%d", flatObstaclesDetected_?1:0);
+
170 UDEBUG("maxGroundHeight=%f", maxGroundHeight_);
+
171 UDEBUG("groundNormalsUp=%f", groundNormalsUp_);
+
172 util3d::segmentObstaclesFromGround<PointT>(
+
173 cloud,
+
174 indices,
+
175 groundIndices,
+
176 obstaclesIndices,
+
177 normalKSearch_,
+
178 maxGroundAngle_,
+
179 clusterRadius_,
+
180 minClusterSize_,
+
181 flatObstaclesDetected_,
+
182 maxGroundHeight_,
+
183 flatObstacles,
+
184 Eigen::Vector4f(viewPoint.x, viewPoint.y, viewPoint.z+(projMapFrame_?pose.z():0), 1),
+
185 groundNormalsUp_);
+
186 UDEBUG("viewPoint=%f,%f,%f", viewPoint.x, viewPoint.y, viewPoint.z+(projMapFrame_?pose.z():0));
+
187 //UWARN("Saving ground.pcd and obstacles.pcd");
+
188 //pcl::io::savePCDFile("ground.pcd", *cloud, *groundIndices);
+
189 //pcl::io::savePCDFile("obstacles.pcd", *cloud, *obstaclesIndices);
+
190 }
+
191 else
+
192 {
+
193 UDEBUG("");
+
194 // passthrough filter
+
195 groundIndices = rtabmap::util3d::passThrough(cloud, indices, "z",
+
196 minGroundHeight_!=0.0f?minGroundHeight_:std::numeric_limits<int>::min(),
+
197 maxGroundHeight_!=0.0f?maxGroundHeight_:std::numeric_limits<int>::max());
+
198
+
199 pcl::IndicesPtr notObstacles = groundIndices;
+
200 if(indices->size())
+
201 {
+
202 notObstacles = util3d::extractIndices(cloud, indices, true);
+
203 notObstacles = util3d::concatenate(notObstacles, groundIndices);
+
204 }
+
205 obstaclesIndices = rtabmap::util3d::extractIndices(cloud, notObstacles, true);
+
206 }
+
207
+
208 UDEBUG("groundIndices=%d obstaclesIndices=%d", (int)groundIndices->size(), (int)obstaclesIndices->size());
+
209
+
210 // Do radius filtering after voxel filtering ( a lot faster)
+
211 if(noiseFilteringRadius_ > 0.0 && noiseFilteringMinNeighbors_ > 0)
+
212 {
+
213 UDEBUG("Radius filtering (%ld ground %ld obstacles, radius=%f k=%d)",
+
214 groundIndices->size(),
+
215 obstaclesIndices->size()+(flatObstacles?(*flatObstacles)->size():0),
+
216 noiseFilteringRadius_,
+
217 noiseFilteringMinNeighbors_);
+
218 if(groundIndices->size())
+
219 {
+
220 groundIndices = noiseFilteringWithMaxRange<PointT>(cloud, groundIndices, rangeMax_, noiseFilteringRadius_, noiseFilteringMinNeighbors_);
+
221 }
+
222 if(obstaclesIndices->size())
+
223 {
+
224 obstaclesIndices = noiseFilteringWithMaxRange<PointT>(cloud, obstaclesIndices, rangeMax_, noiseFilteringRadius_, noiseFilteringMinNeighbors_);
+
225 }
+
226 if(flatObstacles && (*flatObstacles)->size())
+
227 {
+
228 *flatObstacles = noiseFilteringWithMaxRange<PointT>(cloud, *flatObstacles, rangeMax_, noiseFilteringRadius_, noiseFilteringMinNeighbors_);
+
229 }
+
230 UDEBUG("Radius filtering end (%ld ground %ld obstacles)",
+
231 groundIndices->size(),
+
232 obstaclesIndices->size()+(flatObstacles?(*flatObstacles)->size():0));
+
233
+
234 if(groundIndices->empty() && obstaclesIndices->empty())
+
235 {
+
236 UWARN("Cloud (with %d points) is empty after noise "
+
237 "filtering. Occupancy grid cannot be "
+
238 "created.",
+
239 (int)cloud->size());
+
240
+
241 }
+
242 }
+
243 }
+
244 return cloud;
+
245}
+
+
246
+
247}
+
248
+
249
+
250#endif /* CORELIB_INCLUDE_RTABMAP_CORE_IMPL_LOCALMAP_HPP_ */
+
ULogger class and convenient macros.
+
#define UDEBUG(...)
Definition ULogger.h:59
+
#define UASSERT(condition)
Definition ULogger.h:66
+
#define UWARN(...)
Definition ULogger.h:61
+
pcl::PointCloud< PointT >::Ptr segmentCloud(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &pose, const cv::Point3f &viewPoint, pcl::IndicesPtr &groundIndices, pcl::IndicesPtr &obstaclesIndices, pcl::IndicesPtr *flatObstacles=0) const
Segments a point cloud into ground and obstacle indices.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
std::string prettyPrint() const
Returns a string representation of the transform.
+
static Transform getIdentity()
Returns identity transform.
+
void getEulerAngles(float &roll, float &pitch, float &yaw) const
Extracts Euler angles (roll, pitch, yaw).
+
float & z()
Translation z.
Definition Transform.h:151
+
pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(const pcl::PCLPointCloud2::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
Performs crop box filtering on a point cloud of type pcl::PCLPointCloud2 and returns filtered indices...
+
pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
Extract indices from point cloud of type pcl::PointXYZ.
+
pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
Performs pass-through filtering on a point cloud of type pcl::PointXYZ and returns filtered indices.
+
void RTABMAP_CORE_EXPORT rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)
Splits a point cloud of type pcl::PointXYZ.
+
pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
Radius filtering for point cloud of type pcl::PointXYZ.
+
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT transformPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &transform)
Transforms pcl::PointXYZ point cloud type.
+
pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.
+
pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate(const std::vector< pcl::IndicesPtr > &indices)
Concatenates multiple sets of indices into a single index vector.
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/MarkerDetector_8h_source.html b/preview/pr-1773/api/latest/MarkerDetector_8h_source.html new file mode 100644 index 00000000..3fde4568 --- /dev/null +++ b/preview/pr-1773/api/latest/MarkerDetector_8h_source.html @@ -0,0 +1,234 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/MarkerDetector.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MarkerDetector.h
+
+
+
1/*
+
2Copyright (c) 2010-2019, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_MARKERDETECTOR_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_MARKERDETECTOR_H_
+
30
+
31#include <rtabmap/core/Parameters.h>
+
32#include <rtabmap/core/CameraModel.h>
+
33#include <opencv2/opencv_modules.hpp>
+
34
+
35#if (CV_MAJOR_VERSION > 4 || (CV_MAJOR_VERSION==4 && CV_MINOR_VERSION >=7)) && defined(HAVE_OPENCV_OBJDETECT)
+
36#include <opencv2/objdetect.hpp>
+
37#elif defined(HAVE_OPENCV_ARUCO)
+
38#include <opencv2/aruco.hpp>
+
39#endif
+
40
+
41namespace rtabmap {
+
42
+
+ +
44public:
+
45 MarkerInfo(int id, float length, Transform pose) :
+
46 id_(id),
+
47 length_(length),
+
48 pose_(pose)
+
49 {}
+
50 int id() const {return id_;}
+
51 float length() const {return length_;}
+
52 const Transform & pose() const {return pose_;}
+
53private:
+
54 int id_;
+
55 float length_;
+
56 Transform pose_;
+
57};
+
+
58
+
+
59class RTABMAP_CORE_EXPORT MarkerDetector {
+
60
+
61public:
+
62 enum Strategy {
+
63 kStrategyOpencv,
+
64 kStrategyApriltag
+
65 };
+
66
+
67public:
+
68 MarkerDetector(const ParametersMap & parameters = ParametersMap());
+
69 virtual ~MarkerDetector();
+
70 void parseParameters(const ParametersMap & parameters);
+
71
+
72 std::map<int, MarkerInfo> detect(const cv::Mat & image,
+
73 const std::vector<CameraModel> & models,
+
74 const cv::Mat & depth = cv::Mat(),
+
75 const std::map<int, float> & markerLengths = std::map<int, float>(),
+
76 cv::Mat * imageWithDetections = 0);
+
77
+
78 std::map<int, MarkerInfo> detect(const cv::Mat & image,
+
79 const CameraModel & model,
+
80 const cv::Mat & depth = cv::Mat(),
+
81 const std::map<int, float> & markerLengths = std::map<int, float>(),
+
82 cv::Mat * imageWithDetections = 0);
+
83
+
84private:
+
85 Strategy strategy_;
+
86 float markerLength_;
+
87 std::map<int, float> markerLengths_;
+
88 float maxDepthError_;
+
89 float maxRange_;
+
90 float minRange_;
+
91 int dictionaryId_;
+
92#if ((CV_MAJOR_VERSION > 4 || (CV_MAJOR_VERSION==4 && CV_MINOR_VERSION >=7)) && defined(HAVE_OPENCV_OBJDETECT)) || defined(HAVE_OPENCV_ARUCO)
+
93#if CV_MAJOR_VERSION > 4 || (CV_MAJOR_VERSION==4 && CV_MINOR_VERSION >=7)
+
94 cv::Ptr<cv::aruco::ArucoDetector> arucoDetector_;
+
95#endif
+
96 cv::Ptr<cv::aruco::DetectorParameters> detectorParams_;
+
97 cv::Ptr<cv::aruco::Dictionary> dictionary_;
+
98#endif
+
99 void * apriltagLibDetector_;
+
100 void * apriltagLibFamily_;
+
101};
+
+
102
+
103} /* namespace rtabmap */
+
104
+
105#endif /* CORELIB_INCLUDE_RTABMAP_CORE_MARKERDETECTOR_H_ */
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+ + +
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Memory_8h_source.html b/preview/pr-1773/api/latest/Memory_8h_source.html new file mode 100644 index 00000000..4e27ef28 --- /dev/null +++ b/preview/pr-1773/api/latest/Memory_8h_source.html @@ -0,0 +1,647 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Memory.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Memory.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef MEMORY_H_
+
29#define MEMORY_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include "rtabmap/utilite/UEventsHandler.h"
+
34#include "rtabmap/core/Parameters.h"
+
35#include "rtabmap/core/SensorData.h"
+
36#include "rtabmap/core/Link.h"
+
37#include "rtabmap/core/Features2d.h"
+
38#include <typeinfo>
+
39#include <list>
+
40#include <map>
+
41#include <set>
+ +
43#include <opencv2/core/core.hpp>
+
44#if CV_MAJOR_VERSION < 5
+
45#include <opencv2/features2d/features2d.hpp>
+
46#else
+
47#include <opencv2/features.hpp>
+
48#endif
+
49#include <pcl/pcl_config.h>
+
50
+
51namespace rtabmap {
+
52
+
53class Signature;
+
54class DBDriver;
+
55class VWDictionary;
+
56class VisualWord;
+
57class Feature2D;
+
58class Statistics;
+
59class Registration;
+
60class RegistrationInfo;
+
61class RegistrationIcp;
+
62class RegistrationVis;
+
63class Stereo;
+
64class LocalGridMaker;
+
65class MarkerDetector;
+
66class GlobalDescriptorExtractor;
+
67
+
+
101class RTABMAP_CORE_EXPORT Memory
+
102{
+
103public:
+
105 static const int kIdStart;
+
107 static const int kIdVirtual;
+
109 static const int kIdInvalid;
+
110
+
111public:
+
119 Memory(const ParametersMap & parameters = ParametersMap());
+
120 virtual ~Memory();
+
121
+
128 virtual void parseParameters(const ParametersMap & parameters);
+
130 virtual const ParametersMap & getParameters() const {return parameters_;}
+
141 bool update(const SensorData & data,
+
142 Statistics * stats = 0);
+
157 bool update(const SensorData & data,
+
158 const Transform & pose,
+
159 const cv::Mat & covariance,
+
160 const std::vector<float> & velocity = std::vector<float>(), // vx,vy,vz,vroll,vpitch,vyaw
+
161 Statistics * stats = 0);
+
172 bool init(const std::string & dbUrl,
+
173 bool dbOverwritten = false,
+
174 const ParametersMap & parameters = ParametersMap(),
+
175 bool postInitClosingEvents = false);
+
186 void close(bool databaseSaved = true, bool postInitClosingEvents = false, const std::string & ouputDatabasePath = "");
+
197 std::map<int, float> computeLikelihood(const Signature * signature,
+
198 const std::list<int> & ids);
+
206 int incrementMapId(std::map<int, int> * reducedIds = 0);
+
213 void updateAge(int signatureId);
+
214
+
238 std::list<int> forget(const std::set<int> & ignoredIds = std::set<int>());
+
247 std::set<int> reactivateSignatures(const std::list<int> & ids, unsigned int maxLoaded, double & timeDbAccess);
+
248
+
253 int cleanup();
+
255 void saveStatistics(const Statistics & statistics, bool saveWMState);
+
257 void savePreviewImage(const cv::Mat & image) const;
+
259 cv::Mat loadPreviewImage() const;
+
261 void saveOptimizedPoses(const std::map<int, Transform> & optimizedPoses, const Transform & lastlocalizationPose) const;
+
263 std::map<int, Transform> loadOptimizedPoses(Transform * lastlocalizationPose) const;
+
265 void save2DMap(const cv::Mat & map, float xMin, float yMin, float cellSize) const;
+
267 cv::Mat load2DMap(float & xMin, float & yMin, float & cellSize) const;
+ +
276 const cv::Mat & cloud,
+
277 const std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > & polygons = std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > >(), // Textures -> polygons -> vertices
+
278#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
279 const std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > & texCoords = std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > >(), // Textures -> uv coords for each vertex of the polygons
+
280#else
+
281 const std::vector<std::vector<Eigen::Vector2f> > & texCoords = std::vector<std::vector<Eigen::Vector2f> >(), // Textures -> uv coords for each vertex of the polygons
+
282#endif
+
283 const cv::Mat & textures = cv::Mat()) const; // concatenated textures (assuming square textures with all same size)
+ +
286 std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > * polygons = 0,
+
287#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
+
288 std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > * texCoords = 0,
+
289#else
+
290 std::vector<std::vector<Eigen::Vector2f> > * texCoords = 0,
+
291#endif
+
292 cv::Mat * textures = 0) const;
+ + +
303 bool addLink(const Link & link, bool addInDatabase = false);
+
305 void updateLink(const Link & link, bool updateInDatabase = false);
+ +
309 void removeVirtualLinks(int signatureId);
+
326 std::map<int, int> getNeighborsId(
+
327 int signatureId,
+
328 int maxGraphDepth,
+
329 int maxCheckedInDatabase = -1,
+
330 bool incrementMarginOnLoop = false,
+
331 bool ignoreLoopIds = false,
+
332 bool ignoreIntermediateNodes = false,
+
333 bool ignoreLocalSpaceLoopIds = false,
+
334 const std::set<int> & nodesSet = std::set<int>(),
+
335 double * dbAccessTime = 0) const;
+
344 std::map<int, float> getNeighborsIdRadius(
+
345 int signatureId,
+
346 float radius,
+
347 const std::map<int, Transform> & optimizedPoses,
+
348 int maxGraphDepth) const;
+
350 void convertToIntermediate(int locationId);
+
365 void deleteLocation(int locationId, std::list<int> * deletedWords = 0, bool keepLinkedInDb = false);
+
367 void saveLocationData(int locationId);
+
369 void removeLink(int idA, int idB);
+
371 void removeRawData(int id, bool image = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
+
388 int reduceNode(int id, float maxDistance = 0.0f, bool keepLinkedInDb = false, int direction = 0);
+
397 void setDummyDictionary(bool enabled);
+
398
+
400 const std::map<int, double> & getWorkingMem() const {return _workingMem;}
+
405 size_t getWorkingMemSize(bool ignoreIntermediateNodes = false) const;
+
407 int getWorkingMemIntermediateNodesCount() const {return _workingMemIntermediateNodesCount;}
+
409 int getStMemIntermediateNodesCount() const {return _stMemIntermediateNodesCount;}
+
411 const std::set<int> & getStMem() const {return _stMem;}
+
413 int getMaxStMemSize() const {return _maxStMemSize;}
+
415 std::multimap<int, Link> getNeighborLinks(int signatureId,
+
416 bool lookInDatabase = false) const;
+
418 std::multimap<int, Link> getLoopClosureLinks(int signatureId,
+
419 bool lookInDatabase = false) const;
+
426 std::multimap<int, Link> getLinks(int signatureId,
+
427 bool lookInDatabase = false,
+
428 bool withLandmarks = false) const;
+
430 std::multimap<int, Link> getAllLinks(bool lookInDatabase, bool ignoreNullLinks = true, bool withLandmarks = false) const;
+
432 bool isBinDataKept() const {return _binDataKept;}
+
434 float getSimilarityThreshold() const {return _similarityThreshold;}
+
436 std::map<int, int> getWeights() const;
+ +
443 const Signature * getLastWorkingSignature(bool ignoreIntermediateNodes) const;
+
445 std::map<int, Link> getNodesObservingLandmark(int landmarkId, bool lookInDatabase) const;
+
447 int getSignatureIdByLabel(const std::string & label, bool lookInDatabase = true) const;
+
454 bool labelSignature(int id, const std::string & label);
+
456 const std::map<int, std::string> & getAllLabels() const {return _labels;}
+
458 const std::map<int, std::set<int> > & getLandmarksIndex() const {return _landmarksIndex;}
+
460 bool allNodesInWM() const {return _allNodesInWM;}
+
461
+
477 bool setUserData(int id, const cv::Mat & data);
+ +
481 std::string getDatabaseVersion() const;
+
483 std::string getDatabaseUrl() const;
+
485 double getDbSavingTime() const;
+
487 int getMapId(int id, bool lookInDatabase = false) const;
+
489 Transform getOdomPose(int signatureId, bool lookInDatabase = false) const;
+
491 Transform getGroundTruthPose(int signatureId, bool lookInDatabase = false) const;
+
493 const std::map<int, Transform> & getGroundTruths() const {return _groundTruths;}
+
519 void getGPS(int id, GPS & gps, Transform & offsetENU, bool lookInDatabase, int maxGraphDepth = 0) const;
+
536 bool getNodeInfo(int signatureId,
+
537 Transform & odomPose,
+
538 int & mapId,
+
539 int & weight,
+
540 std::string & label,
+
541 double & stamp,
+
542 Transform & groundTruth,
+
543 std::vector<float> & velocity,
+
544 GPS & gps,
+
545 EnvSensors & sensors,
+
546 bool lookInDatabase = false) const;
+
548 cv::Mat getImageCompressed(int signatureId) const;
+
556 SensorData getNodeData(int locationId, bool images, bool scan, bool userData, bool occupancyGrid) const;
+ +
559 std::multimap<int, int> & words,
+
560 std::vector<cv::KeyPoint> & wordsKpts,
+
561 std::vector<cv::Point3f> & words3,
+
562 cv::Mat & wordsDescriptors,
+
563 std::vector<GlobalDescriptor> & globalDescriptors) const;
+
565 void getNodeCalibration(int nodeId,
+
566 std::vector<CameraModel> & models,
+
567 std::vector<StereoCameraModel> & stereoModels) const;
+
572 std::set<int> getAllSignatureIds(bool ignoreChildren = true) const;
+
602 bool memoryChanged() const {return _memoryChanged;}
+
607 bool isIncremental() const {return _incrementalMemory;}
+
614 bool isReadOnly() const {return !_incrementalMemory && _localizationReadOnly;}
+
619 bool isLocalizationDataSaved() const {return _localizationDataSaved;}
+
621 const Signature * getSignature(int id) const;
+
623 bool isInSTM(int signatureId) const {return _stMem.find(signatureId) != _stMem.end();}
+
625 bool isInWM(int signatureId) const {return _workingMem.find(signatureId) != _workingMem.end();}
+
627 bool isInLTM(int signatureId) const {return !this->isInSTM(signatureId) && !this->isInWM(signatureId);}
+
629 bool isIDsGenerated() const {return _generateIds;}
+
631 int getLastGlobalLoopClosureId() const {return _lastGlobalLoopClosureId;}
+
633 const Feature2D * getFeature2D() const {return _feature2D;}
+
635 bool isGraphReduced() const {return _reduceGraph;}
+
653 const std::vector<double> & getOdomMaxInf() const {return _odomMaxInf;}
+
669 bool isOdomGravityUsed() const {return _useOdometryGravity;}
+
670
+
672 void dumpMemoryTree(const char * fileNameTree) const;
+
674 virtual void dumpMemory(std::string directory) const;
+
676 virtual void dumpSignatures(const char * fileNameSign, bool words3D) const;
+
678 void dumpDictionary(const char * fileNameRef, const char * fileNameDesc) const;
+
680 unsigned long getMemoryUsed() const; //Bytes
+
681
+
687 void generateGraph(const std::string & fileName, const std::set<int> & ids = std::set<int>());
+ +
725 const std::map<int, Transform> & poses,
+
726 const cv::Mat & map,
+
727 float xMin,
+
728 float yMin,
+
729 float cellSize,
+
730 int cropRadius = 1,
+
731 bool filterScans = false);
+
732
+ +
735
+ +
748 const std::set<int> & ids,
+
749 std::map<int, Transform> & poses,
+
750 std::multimap<int, Link> & links,
+
751 bool lookInDatabase = false,
+
752 bool landmarksAdded = false);
+
753
+
763 Transform computeTransform(Signature & fromS, Signature & toS, Transform guess, RegistrationInfo * info = 0, bool useKnownCorrespondencesIfPossible = false) const;
+
765 Transform computeTransform(int fromId, int toId, Transform guess, RegistrationInfo * info = 0, bool useKnownCorrespondencesIfPossible = false);
+
770 Transform computeIcpTransform(const Signature & fromS, const Signature & toS, Transform guess, RegistrationInfo * info = 0) const;
+ +
780 int newId,
+
781 int oldId,
+
782 const std::map<int, Transform> & poses,
+
783 RegistrationInfo * info = 0);
+
784
+
785private:
+
786 void preUpdate();
+
787 void addSignatureToStm(Signature * signature, const cv::Mat & covariance);
+
788 void clear();
+
789 void loadDataFromDb(bool postInitClosingEvents);
+
790 void saveFlannIndex(bool postInitClosingEvents);
+
791 void moveToTrash(Signature * s, bool keepLinkedToGraph = true, std::list<int> * deletedWords = 0);
+
792
+
793 void moveSignatureToWMFromSTM(int id, int * reducedTo = 0);
+
794 void addSignatureToWmFromLTM(Signature * signature);
+
795 Signature * _getSignature(int id) const;
+
796 std::list<Signature *> getRemovableSignatures(int count,
+
797 const std::set<int> & ignoredIds = std::set<int>());
+
798 int getNextId();
+
799 void rehearsal(Signature * signature, Statistics * stats = 0);
+
800 bool rehearsalMerge(int oldId, int newId);
+
801 bool canBeReduced(const Link & link, float maxDistance, int direction);
+
802
+
803 const std::map<int, Signature*> & getSignatures() const {return _signatures;}
+
804
+
805 void copyData(const Signature * from, Signature * to);
+
806 Signature * createSignature(
+
807 const SensorData & data,
+
808 const Transform & pose,
+
809 Statistics * stats = 0);
+
810
+
811 //keypoint stuff
+
812 void disableWordsRef(int signatureId);
+
813 void enableWordsRef(const std::list<int> & signatureIds);
+
814 void cleanUnusedWords();
+
815 int getNi(int signatureId) const;
+
816
+
817protected:
+ +
820
+
821private:
+
822 // parameters
+
823 ParametersMap parameters_;
+
824 float _similarityThreshold;
+
825 bool _binDataKept;
+
826 bool _rawDescriptorsKept;
+
827 bool _loadVisualLocalFeaturesOnInit;
+
828 bool _saveDepth16Format;
+
829 bool _notLinkedNodesKeptInDb;
+
830 bool _saveIntermediateNodeData;
+
831 std::string _rgbCompressionFormat;
+
832 std::string _depthCompressionFormat;
+
833 bool _incrementalMemory;
+
834 bool _localizationReadOnly;
+
835 bool _localizationDataSaved;
+
836 bool _flannIndexSaved;
+
837 bool _reduceGraph;
+
838 int _maxStMemSize;
+
839 float _recentWmRatio;
+
840 bool _transferSortingByWeightId;
+
841 bool _idUpdatedToNewOneRehearsal;
+
842 bool _generateIds;
+
843 bool _badSignaturesIgnored;
+
844 bool _mapLabelsAdded;
+
845 bool _depthAsMask;
+
846 float _maskFloorThreshold;
+
847 bool _stereoFromMotion;
+
848 unsigned int _imagePreDecimation;
+
849 unsigned int _imagePostDecimation;
+
850 bool _legacyDecimatedOctave;
+
851 bool _compressionParallelized;
+
852 float _laserScanDownsampleStepSize;
+
853 float _laserScanVoxelSize;
+
854 int _laserScanNormalK;
+
855 float _laserScanNormalRadius;
+
856 float _laserScanGroundNormalsUp;
+
857 bool _reextractLoopClosureFeatures;
+
858 bool _localBundleOnLoopClosure;
+
859 bool _invertedReg;
+
860 float _rehearsalMaxDistance;
+
861 float _rehearsalMaxAngle;
+
862 bool _rehearsalWeightIgnoredWhileMoving;
+
863 bool _useOdometryFeatures;
+
864 bool _useOdometryGravity;
+
865 bool _rotateImagesUpsideUp;
+
866 bool _createOccupancyGrid;
+
867 int _visMaxFeatures;
+
868 bool _visSSC;
+
869 bool _imagesAlreadyRectified;
+
870 bool _rectifyOnlyFeatures;
+
871 bool _covOffDiagonalIgnored;
+
872 bool _detectMarkers;
+
873 float _markerLinVariance;
+
874 float _markerAngVariance;
+
875 bool _markerOrientationIgnored;
+
876
+
877 int _idCount;
+
878 int _idMapCount;
+
879 Signature * _lastSignature;
+
880 int _lastGlobalLoopClosureId;
+
881 bool _memoryChanged; // False by default, become true only when Memory::update() is called.
+
882 bool _linksChanged; // False by default, become true when links are modified.
+
883 int _signaturesAdded;
+
884 int _workingMemIntermediateNodesCount; // number of nodes with weight==-1 currently in _workingMem
+
885 int _stMemIntermediateNodesCount; // number of nodes with weight==-1 currently in _stMem
+
886 bool _allNodesInWM;
+
887 bool _receivingOdometryFeatures;
+
888 GPS _gpsOrigin;
+
889 std::vector<CameraModel> _rectCameraModels;
+
890 std::vector<StereoCameraModel> _rectStereoCameraModels;
+
891 std::vector<double> _odomMaxInf;
+
892
+
893 std::map<int, Signature *> _signatures; // TODO : check if a signature is already added? although it is not supposed to occur...
+
894 std::set<int> _stMem; // id
+
895 std::map<int, double> _workingMem; // id,age
+
896 std::map<int, Transform> _groundTruths;
+
897 std::map<int, std::string> _labels;
+
898 std::map<int, std::set<int> > _landmarksIndex; // < -landmarkId, nodeIds >
+
899 std::map<int, float> _landmarksSize; // +landmarkId
+
900
+
901 //Keypoint stuff
+
902 VWDictionary * _vwd;
+
903 Feature2D * _feature2D;
+
904 float _badSignRatio;
+
905 bool _tfIdfLikelihoodUsed;
+
906 bool _parallelized;
+
907
+
908 Registration * _registrationPipeline;
+
909 RegistrationIcp * _registrationIcpMulti;
+
910 RegistrationVis * _registrationVis;
+
911
+
912 LocalGridMaker * _localMapMaker;
+
913
+
914 MarkerDetector * _markerDetector;
+
915
+
916 GlobalDescriptorExtractor * _globalDescriptorExtractor;
+
917
+
918 bool _dummyDictionary;
+
919};
+
+
920
+
921} // namespace rtabmap
+
922
+
923#endif /* MEMORY_H_ */
+
Wrappers of STL for convenient functions.
+
Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).
Definition DBDriver.h:72
+
Abstract 2D feature detector and descriptor extractor for visual SLAM.
Definition Features2d.h:145
+
WGS84 GPS fix attached to a sensor sample or graph node.
Definition GPS.h:47
+ + +
Builds per-node local occupancy grids from laser scans or depth clouds.
+ +
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Definition Memory.h:102
+
const std::set< int > & getStMem() const
Definition Memory.h:411
+
const std::map< int, std::string > & getAllLabels() const
Definition Memory.h:456
+
void emptyTrash()
Forces the database driver to flush any queued signature/word saves.
+
cv::Mat loadOptimizedMesh(std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons=0, std::vector< std::vector< Eigen::Vector2f > > *texCoords=0, cv::Mat *textures=0) const
Loads the optimized mesh previously written by saveOptimizedMesh().
+
std::map< int, float > getNeighborsIdRadius(int signatureId, float radius, const std::map< int, Transform > &optimizedPoses, int maxGraphDepth) const
Returns neighbor ids within a Euclidean radius using optimized poses.
+
static const int kIdStart
First valid signature id assigned to a new signature (positive integer).
Definition Memory.h:105
+
const Signature * getSignature(int id) const
+
std::multimap< int, Link > getNeighborLinks(int signatureId, bool lookInDatabase=false) const
Returns neighbor (sequential) links of signatureId; lookInDatabase also checks LTM.
+
bool isBinDataKept() const
Definition Memory.h:432
+
bool isInSTM(int signatureId) const
Definition Memory.h:623
+
virtual void dumpSignatures(const char *fileNameSign, bool words3D) const
Dumps signatures' word ids (and 3D positions if words3D) to fileNameSign.
+
bool allNodesInWM() const
Definition Memory.h:460
+
SensorData getNodeData(int locationId, bool images, bool scan, bool userData, bool occupancyGrid) const
Loads sensor data of locationId from WM or LTM.
+
int getMapId(int id, bool lookInDatabase=false) const
+
bool isInLTM(int signatureId) const
Definition Memory.h:627
+
Memory(const ParametersMap &parameters=ParametersMap())
Constructs a Memory instance with the given parameters.
+
Transform computeTransform(int fromId, int toId, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false)
Convenience overload: loads signatures by id and forwards to the Signature variant.
+
void deleteLocation(int locationId, std::list< int > *deletedWords=0, bool keepLinkedInDb=false)
Removes locationId from WM/STM and the database.
+
void joinTrashThread()
Blocks until the asynchronous database write thread has finished pending work.
+
bool isLocalizationDataSaved() const
Definition Memory.h:619
+
Transform computeIcpTransformMulti(int newId, int oldId, const std::map< int, Transform > &poses, RegistrationInfo *info=0)
ICP registration of one node against an assembled cloud from multiple neighbors.
+
bool update(const SensorData &data, Statistics *stats=0)
Adds a sensor observation to the map (overload without odometry pose).
+
int getStMemIntermediateNodesCount() const
Definition Memory.h:409
+
void removeLink(int idA, int idB)
Removes any link between idA and idB (both directions).
+
double getDbSavingTime() const
+
bool addLink(const Link &link, bool addInDatabase=false)
Adds a graph link between two signatures.
+
int getMaxStMemSize() const
Definition Memory.h:413
+
bool isIncremental() const
Definition Memory.h:607
+
void close(bool databaseSaved=true, bool postInitClosingEvents=false, const std::string &ouputDatabasePath="")
Flushes pending data and closes the database connection.
+
int getSignatureIdByLabel(const std::string &label, bool lookInDatabase=true) const
+
Transform computeTransform(Signature &fromS, Signature &toS, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false) const
Computes the relative transform from fromS to toS using the registration pipeline.
+
void dumpMemoryTree(const char *fileNameTree) const
Writes a human-readable dump of WM/STM, links and weights to fileNameTree.
+
Transform getOdomPose(int signatureId, bool lookInDatabase=false) const
+
void getNodeWordsAndGlobalDescriptors(int nodeId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &wordsKpts, std::vector< cv::Point3f > &words3, cv::Mat &wordsDescriptors, std::vector< GlobalDescriptor > &globalDescriptors) const
Loads the visual words, 3D points and global descriptors stored with nodeId.
+
std::set< int > getAllSignatureIds(bool ignoreChildren=true) const
Returns all signature ids in WM, STM and LTM.
+
std::map< int, int > getWeights() const
+
bool isInWM(int signatureId) const
Definition Memory.h:625
+
std::list< int > forget(const std::set< int > &ignoredIds=std::set< int >())
Transfers oldest signatures from WM to LTM to respect memory and/or time limits.
+
std::map< int, int > getNeighborsId(int signatureId, int maxGraphDepth, int maxCheckedInDatabase=-1, bool incrementMarginOnLoop=false, bool ignoreLoopIds=false, bool ignoreIntermediateNodes=false, bool ignoreLocalSpaceLoopIds=false, const std::set< int > &nodesSet=std::set< int >(), double *dbAccessTime=0) const
Breadth-first walk of the pose graph from signatureId.
+
static const int kIdVirtual
Reserved id for the "virtual place" used by the Bayes filter (negative).
Definition Memory.h:107
+
size_t getWorkingMemSize(bool ignoreIntermediateNodes=false) const
Returns the number of signatures in working memory, excluding the virtual place.
+
DBDriver * _dbDriver
Database driver owning the persistent storage (created by init()).
Definition Memory.h:819
+
const VWDictionary * getVWDictionary() const
+
virtual void dumpMemory(std::string directory) const
Dumps every internal map (signatures, words, dictionary) to text files in directory.
+
int getLastSignatureId() const
+
void setDummyDictionary(bool enabled)
Enables a dummy visual word dictionary (no descriptors kept, word ids only).
+
bool isIDsGenerated() const
Definition Memory.h:629
+
int cleanupLocalGrids(const std::map< int, Transform > &poses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)
Removes spurious obstacle points from each node's local grid using a reference 2D map.
+
void updateAge(int signatureId)
Refreshes the age of signatureId in working memory, marking it as recent.
+
bool isGraphReduced() const
Definition Memory.h:635
+
void updateLink(const Link &link, bool updateInDatabase=false)
Replaces an existing link with link (same endpoints and type).
+
std::multimap< int, Link > getLinks(int signatureId, bool lookInDatabase=false, bool withLandmarks=false) const
Returns all links of signatureId (neighbor, loop, prior, gravity, ...).
+
void saveOptimizedMesh(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) const
Persists an optimized textured/colored mesh to the database.
+
void removeAllVirtualLinks()
Removes every virtual link in WM.
+
int getDatabaseMemoryUsed() const
+
bool memoryChanged() const
Reports whether the in-memory map has been modified since the database was last loaded or reset....
Definition Memory.h:602
+
std::multimap< int, Link > getLoopClosureLinks(int signatureId, bool lookInDatabase=false) const
Returns loop-closure links of signatureId; lookInDatabase also checks LTM.
+
Transform getGroundTruthPose(int signatureId, bool lookInDatabase=false) const
+
void saveLocationData(int locationId)
Forces locationId to be flushed to the database.
+
std::map< int, float > computeLikelihood(const Signature *signature, const std::list< int > &ids)
Computes loop-closure likelihood of signature against a set of WM ids.
+
cv::Mat load2DMap(float &xMin, float &yMin, float &cellSize) const
Loads the 2D occupancy grid previously written by save2DMap().
+
std::map< int, Transform > loadOptimizedPoses(Transform *lastlocalizationPose) const
Loads optimized poses previously written by saveOptimizedPoses().
+
std::set< int > reactivateSignatures(const std::list< int > &ids, unsigned int maxLoaded, double &timeDbAccess)
Reloads signatures from LTM into WM.
+
void removeVirtualLinks(int signatureId)
Removes virtual links attached to signatureId.
+
bool update(const SensorData &data, const Transform &pose, const cv::Mat &covariance, const std::vector< float > &velocity=std::vector< float >(), Statistics *stats=0)
Adds a sensor observation with odometry pose and velocity to the map.
+
const Feature2D * getFeature2D() const
Definition Memory.h:633
+
bool isOdomGravityUsed() const
Definition Memory.h:669
+
std::string getDatabaseUrl() const
+
void getMetricConstraints(const std::set< int > &ids, std::map< int, Transform > &poses, std::multimap< int, Link > &links, bool lookInDatabase=false, bool landmarksAdded=false)
Extracts a sub-graph (poses + links) for a set of node ids.
+
const std::map< int, double > & getWorkingMem() const
Definition Memory.h:400
+
void saveOptimizedPoses(const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const
Persists an optimized pose graph and the last localization pose for next session.
+
bool labelSignature(int id, const std::string &label)
Assigns or removes a label on id.
+
virtual void parseParameters(const ParametersMap &parameters)
Re-parses parameters and propagates them to owned sub-objects.
+
cv::Mat getImageCompressed(int signatureId) const
+
cv::Mat loadPreviewImage() const
Loads the preview image previously written by savePreviewImage().
+
const std::map< int, Transform > & getGroundTruths() const
Definition Memory.h:493
+
static const int kIdInvalid
Sentinel value indicating an invalid signature id (zero).
Definition Memory.h:109
+
void save2DMap(const cv::Mat &map, float xMin, float yMin, float cellSize) const
Persists a 2D occupancy grid (origin xMin, yMin and resolution cellSize).
+
int reduceNode(int id, float maxDistance=0.0f, bool keepLinkedInDb=false, int direction=0)
Merges id with a close neighbor (graph reduction).
+
void getGPS(int id, GPS &gps, Transform &offsetENU, bool lookInDatabase, int maxGraphDepth=0) const
Returns a GPS fix for id, falling back to the nearest GPS-tagged neighbor.
+
Transform computeIcpTransform(const Signature &fromS, const Signature &toS, Transform guess, RegistrationInfo *info=0) const
Refines a transform using ICP alignment of laser scans only.
+
void removeRawData(int id, bool image=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
Strips raw images, scan, user data and/or occupancy grid from id to save memory (RAM)....
+
std::multimap< int, Link > getAllLinks(bool lookInDatabase, bool ignoreNullLinks=true, bool withLandmarks=false) const
Returns links of every signature; ignoreNullLinks drops empty placeholders.
+
const std::map< int, std::set< int > > & getLandmarksIndex() const
Definition Memory.h:458
+
const Signature * getLastWorkingSignature(bool ignoreIntermediateNodes) const
Returns the most recent WM signature.
+
unsigned long getMemoryUsed() const
+
bool isReadOnly() const
Definition Memory.h:614
+
int getLastGlobalLoopClosureId() const
Definition Memory.h:631
+
int getWorkingMemIntermediateNodesCount() const
Definition Memory.h:407
+
float getSimilarityThreshold() const
Definition Memory.h:434
+
const std::vector< double > & getOdomMaxInf() const
Definition Memory.h:653
+
bool getNodeInfo(int signatureId, Transform &odomPose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruth, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors, bool lookInDatabase=false) const
Reads metadata of signatureId (no images/scan/words).
+
void convertToIntermediate(int locationId)
Marks locationId as intermediate (weight = -1); excludes it from loop closure.
+
std::string getDatabaseVersion() const
+
void generateGraph(const std::string &fileName, const std::set< int > &ids=std::set< int >())
Writes a Graphviz DOT file of the pose graph.
+
bool init(const std::string &dbUrl, bool dbOverwritten=false, const ParametersMap &parameters=ParametersMap(), bool postInitClosingEvents=false)
Opens or creates a database and loads existing state into WM.
+
void getNodeCalibration(int nodeId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const
Loads mono and/or stereo camera calibration stored with nodeId.
+
virtual const ParametersMap & getParameters() const
Definition Memory.h:130
+
int cleanup()
Drops the last signature if flagged as bad, or any signature in localization mode.
+
void saveStatistics(const Statistics &statistics, bool saveWMState)
Persists statistics to the database; saveWMState records the WM id list.
+
void dumpDictionary(const char *fileNameRef, const char *fileNameDesc) const
Dumps the visual word dictionary: references to fileNameRef, descriptors to fileNameDesc.
+
int incrementMapId(std::map< int, int > *reducedIds=0)
Starts a new map id, breaking session continuity (e.g. after localization loss).
+
std::map< int, Link > getNodesObservingLandmark(int landmarkId, bool lookInDatabase) const
Returns all nodes observing landmark landmarkId, mapped to the observation link.
+
bool setUserData(int id, const cv::Mat &data)
Attaches user data to signature id, compressing it on the fly if needed.
+
void savePreviewImage(const cv::Mat &image) const
Stores a preview image (typically a thumbnail of the last frame) in the database.
+ +
Statistics and diagnostics returned by Registration.
+
Visual registration between two signatures using features and geometry.
+
Abstract base for registering two observations (visual, ICP, or both).
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
Manages a dictionary of visual words for visual place recognition and loop closure detection.
+ +
std::map< EnvSensor::Type, EnvSensor > EnvSensors
Map of environmental readings keyed by EnvSensor::Type (at most one per type).
Definition EnvSensor.h:114
+
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OccupancyGrid_8h_source.html b/preview/pr-1773/api/latest/OccupancyGrid_8h_source.html new file mode 100644 index 00000000..5e5f72c4 --- /dev/null +++ b/preview/pr-1773/api/latest/OccupancyGrid_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/OccupancyGrid.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OccupancyGrid.h
+
+
+
1/*
+
2Copyright (c) 2010-2023, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_OCCUPANCYGRID_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_OCCUPANCYGRID_H_
+
30
+
31/*
+
32 * Deprecated header, use the one below directly!
+
33 */
+
34
+
35#include <rtabmap/core/global_map/OccupancyGrid.h>
+
36
+
37
+
38#endif /* CORELIB_INCLUDE_RTABMAP_CORE_OCCUPANCYGRID_H_ */
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OctoMap_8h_source.html b/preview/pr-1773/api/latest/OctoMap_8h_source.html new file mode 100644 index 00000000..7a4c480e --- /dev/null +++ b/preview/pr-1773/api/latest/OctoMap_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/OctoMap.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OctoMap.h
+
+
+
1/*
+
2Copyright (c) 2010-2023, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_OCTOMAP_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_OCTOMAP_H_
+
30
+
31/*
+
32 * Deprecated header, use the one below directly!
+
33 */
+
34
+
35#include <rtabmap/core/global_map/OctoMap.h>
+
36
+
37
+
38#endif /* CORELIB_INCLUDE_RTABMAP_CORE_OCTOMAP_H_ */
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryCuVSLAM_8h_source.html b/preview/pr-1773/api/latest/OdometryCuVSLAM_8h_source.html new file mode 100644 index 00000000..0661f5f0 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryCuVSLAM_8h_source.html @@ -0,0 +1,232 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryCuVSLAM.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryCuVSLAM.h
+
+
+
1/*
+
2Copyright (c) 2025 Felix Toft
+
3Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
4All rights reserved.
+
5
+
6Redistribution and use in source and binary forms, with or without
+
7modification, are permitted provided that the following conditions are met:
+
8 * Redistributions of source code must retain the above copyright
+
9 notice, this list of conditions and the following disclaimer.
+
10 * Redistributions in binary form must reproduce the above copyright
+
11 notice, this list of conditions and the following disclaimer in the
+
12 documentation and/or other materials provided with the distribution.
+
13 * Neither the name of the Universite de Sherbrooke nor the
+
14 names of its contributors may be used to endorse or promote products
+
15 derived from this software without specific prior written permission.
+
16
+
17THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
18ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
19WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
20DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
21DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
22(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
23LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
24ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
25(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
26SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
27*/
+
28
+
29#ifndef ODOMETRYCUVSLAM_H_
+
30#define ODOMETRYCUVSLAM_H_
+
31
+
32#include <rtabmap/core/Odometry.h>
+
33#include <memory>
+
34#include <deque>
+
35#include <array>
+
36
+
37#ifdef RTABMAP_CUVSLAM
+
38#include <cuvslam.h>
+
39#include <ground_constraint.h>
+
40#include <cuda_runtime.h>
+
41#endif
+
42
+
43namespace rtabmap {
+
44
+
+
45class RTABMAP_CORE_EXPORT OdometryCuVSLAM : public Odometry
+
46{
+
47public:
+ +
49 virtual ~OdometryCuVSLAM();
+
50
+
51 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
52 virtual Odometry::Type getType() {return Odometry::kTypeCuVSLAM;}
+
53
+
54private:
+
55 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
56 virtual void cleanupCuVSLAMResources();
+
57
+
58private:
+
59#ifdef RTABMAP_CUVSLAM
+
60 CUVSLAM_TrackerHandle cuvslam_handle_;
+
61 CUVSLAM_GroundConstraintHandle ground_constraint_handle_;
+
62
+
63 std::vector<CUVSLAM_Camera> cuvslam_cameras_;
+
64 std::vector<std::array<float, 12>> intrinsics_;
+
65
+
66 // State tracking
+
67 bool initialized_;
+
68 bool lost_;
+
69 bool tracking_;
+
70 bool planar_constraints_;
+
71 int multicam_mode_;
+
72 Transform previous_pose_;
+
73 double last_timestamp_;
+
74
+
75 // Configuration Thresholds
+
76 double velocity_ratio_threshold_high_ = 1.5; // The maximum velocity ratio of guess / estimated velocity needed to detect lost state.
+
77 double velocity_ratio_threshold_low_ = 0.5; // The minimum velocity ratio of guess / estimated velocity needed to detect lost state.
+
78 double velocity_difference_threshold_ = 0.1; // The maximum velocity difference between the guess and the estimated velocity needed to detect lost state.
+
79 double zero_estimated_velocity_threshold_ = 0.00001; // The minimum cuVSLAM estimated velocity needed to detect lost state.
+
80 double min_landmarks_threshold_ = 30; // The minimum number of landmarks needed to start tracking after an initialization.
+
81
+
82 // Forward cuVLSAM covariance directly to RTAB-Map.
+
83 // When true this disables covariance based lost detection.
+
84 bool use_raw_covariance_ = false;
+
85
+
86 //visualization
+
87 std::vector<CUVSLAM_Observation> observations_;
+
88 std::vector<CUVSLAM_Landmark> landmarks_;
+
89
+
90 // GPU memory management
+
91 std::vector<uint8_t *> gpu_left_image_data_; // pointers to all gpu images
+
92 std::vector<uint8_t *> gpu_right_image_data_;
+
93 std::vector<size_t> gpu_left_image_sizes_; // size of one image
+
94 std::vector<size_t> gpu_right_image_sizes_;
+
95 cudaStream_t cuda_stream_;
+
96#endif
+
97};
+
+
98
+
99}
+
100
+
101#endif /* ODOMETRYCUVSLAM_H_ */
+ +
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
What one Odometry iteration produced, beyond the pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryDVO_8h_source.html b/preview/pr-1773/api/latest/OdometryDVO_8h_source.html new file mode 100644 index 00000000..d5b77db8 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryDVO_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryDVO.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryDVO.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYDVO_H_
+
29#define ODOMETRYDVO_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33namespace dvo {
+
34class DenseTracker;
+
35namespace core {
+
36class RgbdImagePyramid;
+
37class RgbdCameraPyramid;
+
38}
+
39}
+
40
+
41namespace rtabmap {
+
42
+
+
43class RTABMAP_CORE_EXPORT OdometryDVO : public Odometry
+
44{
+
45public:
+ +
47 virtual ~OdometryDVO();
+
48
+
49 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
50 virtual Odometry::Type getType() {return Odometry::kTypeDVO;}
+
51
+
52private:
+
53 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
54
+
55private:
+
56#ifdef RTABMAP_DVO
+
57 dvo::DenseTracker * dvo_;
+
58 dvo::core::RgbdImagePyramid * reference_;
+
59 dvo::core::RgbdCameraPyramid * camera_;
+
60 bool lost_;
+
61#endif
+
62 Transform motionFromKeyFrame_;
+
63 Transform previousLocalTransform_;
+
64
+
65};
+
+
66
+
67}
+
68
+
69#endif /* ODOMETRYDVO_H_ */
+ +
virtual Odometry::Type getType()
Definition OdometryDVO.h:50
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
What one Odometry iteration produced, beyond the pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryEvent_8h_source.html b/preview/pr-1773/api/latest/OdometryEvent_8h_source.html new file mode 100644 index 00000000..2fa2caa5 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryEvent_8h_source.html @@ -0,0 +1,269 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/OdometryEvent.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryEvent.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYEVENT_H_
+
29#define ODOMETRYEVENT_H_
+
30
+
31#include "rtabmap/utilite/UEvent.h"
+ + +
34#include "rtabmap/core/SensorData.h"
+
35#include "rtabmap/core/OdometryInfo.h"
+
36
+
37namespace rtabmap {
+
38
+
+
56class OdometryEvent : public UEvent
+
57{
+
58public:
+
+ +
61 {
+
62 _info.reg.covariance = cv::Mat::eye(6,6,CV_64FC1);
+
63 }
+
+
+ +
74 const SensorData & data,
+
75 const Transform & pose,
+
76 const OdometryInfo & info = OdometryInfo()) :
+
77 _data(data),
+
78 _pose(pose),
+
79 _info(info)
+
80 {
+
81 if(_info.reg.covariance.empty())
+
82 {
+
83 _info.reg.covariance = cv::Mat::eye(6,6,CV_64FC1);
+
84 }
+
85 UASSERT(_info.reg.covariance.cols == 6 && _info.reg.covariance.rows == 6 && _info.reg.covariance.type() == CV_64FC1);
+
86 UASSERT_MSG(uIsFinite(_info.reg.covariance.at<double>(0,0)) && _info.reg.covariance.at<double>(0,0)>0, "Transitional variance should not be null! (set to 1 if unknown)");
+
87 UASSERT_MSG(uIsFinite(_info.reg.covariance.at<double>(1,1)) && _info.reg.covariance.at<double>(1,1)>0, "Transitional variance should not be null! (set to 1 if unknown)");
+
88 UASSERT_MSG(uIsFinite(_info.reg.covariance.at<double>(2,2)) && _info.reg.covariance.at<double>(2,2)>0, "Transitional variance should not be null! (set to 1 if unknown)");
+
89 UASSERT_MSG(uIsFinite(_info.reg.covariance.at<double>(3,3)) && _info.reg.covariance.at<double>(3,3)>0, "Rotational variance should not be null! (set to 1 if unknown)");
+
90 UASSERT_MSG(uIsFinite(_info.reg.covariance.at<double>(4,4)) && _info.reg.covariance.at<double>(4,4)>0, "Rotational variance should not be null! (set to 1 if unknown)");
+
91 UASSERT_MSG(uIsFinite(_info.reg.covariance.at<double>(5,5)) && _info.reg.covariance.at<double>(5,5)>0, "Rotational variance should not be null! (set to 1 if unknown)");
+
92 }
+
+
93 virtual ~OdometryEvent() {}
+
94 virtual std::string getClassName() const {return "OdometryEvent";}
+
95
+
97 SensorData & data() {return _data;}
+
99 const SensorData & data() const {return _data;}
+
101 const Transform & pose() const {return _pose;}
+
103 const cv::Mat & covariance() const {return _info.reg.covariance;}
+
+
109 std::vector<float> velocity() const {
+
110 if(_info.interval>0.0)
+
111 {
+
112 std::vector<float> velocity(6,0);
+
113 float x,y,z,roll,pitch,yaw;
+
114 _info.transform.getTranslationAndEulerAngles(x,y,z,roll,pitch,yaw);
+
115 velocity[0] = x/_info.interval;
+
116 velocity[1] = y/_info.interval;
+
117 velocity[2] = z/_info.interval;
+
118 velocity[3] = roll/_info.interval;
+
119 velocity[4] = pitch/_info.interval;
+
120 velocity[5] = yaw/_info.interval;
+
121 return velocity;
+
122 }
+
123 return std::vector<float>();
+
124 }
+
+
126 const OdometryInfo & info() const {return _info;}
+
127
+
128private:
+
129 SensorData _data;
+
130 Transform _pose;
+
131 OdometryInfo _info;
+
132};
+
+
133
+
+ +
145{
+
146public:
+
148 OdometryResetEvent(const Transform & pose = Transform::getIdentity()){_pose = pose;}
+
149 virtual ~OdometryResetEvent() {}
+
150 virtual std::string getClassName() const {return "OdometryResetEvent";}
+
152 const Transform & getPose() const {return _pose;}
+
153private:
+
154 Transform _pose;
+
155};
+
+
156
+
157}
+
158
+
159
+
160#endif /* ODOMETRYEVENT_H_ */
+
ULogger class and convenient macros.
+
#define UASSERT(condition)
Definition ULogger.h:66
+
Basic mathematics functions.
+
bool uIsFinite(const T &value)
Definition UMath.h:53
+ +
One processed frame with the pose the odometry integrated for it.
+
OdometryEvent(const SensorData &data, const Transform &pose, const OdometryInfo &info=OdometryInfo())
Constructor.
+
const cv::Mat & covariance() const
+ +
virtual std::string getClassName() const
+
const OdometryInfo & info() const
+
OdometryEvent()
Creates an empty event, with an identity covariance.
+
const SensorData & data() const
+
const Transform & pose() const
+
std::vector< float > velocity() const
Linear and angular velocity, from the motion and the frame interval.
+
What one Odometry iteration produced, beyond the pose.
+
RegistrationInfo reg
Registration result: matches, inliers, covariance, ICP indicators and timings.
+
double interval
Time since the previous processed frame (s); the divisor for velocities.
+
Transform transform
Motion since the previous frame, null when lost.
+
Asks OdometryThread to restart the odometry from a given pose.
+
OdometryResetEvent(const Transform &pose=Transform::getIdentity())
+
virtual std::string getClassName() const
+
const Transform & getPose() const
+ +
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
static Transform getIdentity()
Returns identity transform.
+
void getTranslationAndEulerAngles(float &x, float &y, float &z, float &roll, float &pitch, float &yaw) const
Extracts translation and Euler angles (radians).
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryF2F_8h_source.html b/preview/pr-1773/api/latest/OdometryF2F_8h_source.html new file mode 100644 index 00000000..553dada2 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryF2F_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryF2F.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryF2F.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYF2F_H_
+
29#define ODOMETRYF2F_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32#include <rtabmap/core/Signature.h>
+
33
+
34namespace rtabmap {
+
35
+
36class Registration;
+
37
+
+
38class RTABMAP_CORE_EXPORT OdometryF2F : public Odometry
+
39{
+
40public:
+ +
42 virtual ~OdometryF2F();
+
43
+
44 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
45
+
46 const Signature & getRefFrame() const {return refFrame_;}
+
47
+
48 virtual Odometry::Type getType() {return Odometry::kTypeF2F;}
+
49
+
50private:
+
51 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
52
+
53private:
+
54 //Parameters:
+
55 float keyFrameThr_;
+
56 int visKeyFrameThr_;
+
57 float scanKeyFrameThr_;
+
58
+
59 Registration * registrationPipeline_;
+
60 Signature refFrame_;
+
61 Transform lastKeyFramePose_;
+
62 ParametersMap parameters_;
+
63};
+
+
64
+
65}
+
66
+
67#endif /* ODOMETRYF2F_H_ */
+ +
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
Definition OdometryF2F.h:48
+
What one Odometry iteration produced, beyond the pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Abstract base for registering two observations (visual, ICP, or both).
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryF2M_8h_source.html b/preview/pr-1773/api/latest/OdometryF2M_8h_source.html new file mode 100644 index 00000000..76ff0888 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryF2M_8h_source.html @@ -0,0 +1,234 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryF2M.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryF2M.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYF2M_H_
+
29#define ODOMETRYF2M_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32#include <rtabmap/core/Optimizer.h>
+
33#include <pcl/point_cloud.h>
+
34#include <pcl/point_types.h>
+
35#include <pcl/pcl_base.h>
+
36#include <rtabmap/core/Link.h>
+
37
+
38namespace rtabmap {
+
39
+
40class Signature;
+
41class Registration;
+
42class Optimizer;
+
43
+
+
44class RTABMAP_CORE_EXPORT OdometryF2M : public Odometry
+
45{
+
46public:
+ +
48 virtual ~OdometryF2M();
+
49
+
50 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
51 const Signature & getMap() const {return *map_;}
+
52 const Signature & getLastFrame() const {return *lastFrame_;}
+
53
+
54 virtual Odometry::Type getType() {return Odometry::kTypeF2M;}
+
55
+
56private:
+
57 virtual Transform computeTransform(SensorData & data, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
58
+
59private:
+
60 //Parameters
+
61 int maximumMapSize_;
+
62 float keyFrameThr_;
+
63 int visKeyFrameThr_;
+
64 int maxNewFeatures_;
+
65 float initDepthFactor_;
+
66 float floorThreshold_;
+
67 float scanKeyFrameThr_;
+
68 int scanMaximumMapSize_;
+
69 float scanSubtractRadius_;
+
70 float scanSubtractAngle_;
+
71 float scanMapMaxRange_;
+
72 int bundleAdjustment_;
+
73 int bundleMaxFrames_;
+
74 float bundleMinMotion_;
+
75 int bundleMaxKeyFramesPerFeature_;
+
76 bool bundleUpdateFeatureMapOnAllFrames_;
+
77 float validDepthRatio_;
+
78 int pointToPlaneK_;
+
79 float pointToPlaneRadius_;
+
80
+
81 Registration * regPipeline_;
+
82 Signature * map_;
+
83 Signature * lastFrame_;
+
84 int lastFrameOldestNewId_;
+
85 std::vector<std::pair<pcl::PointCloud<pcl::PointXYZINormal>::Ptr, pcl::IndicesPtr> > scansBuffer_;
+
86
+
87 std::map<int, std::map<int, FeatureBA> > bundleWordReferences_; //<WordId, <FrameId, pt2D+depth>>
+
88 std::map<int, Transform> bundlePoses_;
+
89 std::multimap<int, Link> bundleLinks_;
+
90 std::multimap<int, Link> bundleIMUOrientations_;
+
91 std::map<int, std::vector<CameraModel> > bundleModels_;
+
92 std::map<int, int> bundlePoseReferences_;
+
93 int bundleSeq_;
+
94 Optimizer * sba_;
+
95 ParametersMap parameters_;
+
96};
+
+
97
+
98}
+
99
+
100#endif /* ODOMETRYF2M_H_ */
+ +
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
Definition OdometryF2M.h:54
+
What one Odometry iteration produced, beyond the pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+
Abstract base for registering two observations (visual, ICP, or both).
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryFLOAM_8h_source.html b/preview/pr-1773/api/latest/OdometryFLOAM_8h_source.html new file mode 100644 index 00000000..351ca0ec --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryFLOAM_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryFLOAM.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryFLOAM.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYFLOAM_H_
+
29#define ODOMETRYFLOAM_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33class LaserProcessingClass;
+
34class OdomEstimationClass;
+
35
+
36namespace rtabmap {
+
37
+
+
38class RTABMAP_CORE_EXPORT OdometryFLOAM : public Odometry
+
39{
+
40public:
+ +
42 virtual ~OdometryFLOAM();
+
43
+
44 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
45 virtual Odometry::Type getType() {return Odometry::kTypeFLOAM;}
+
46
+
47private:
+
48 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
49
+
50private:
+
51#ifdef RTABMAP_FLOAM
+
52 LaserProcessingClass * laserProcessing_;
+
53 OdomEstimationClass * odomEstimation_;
+
54
+
55 Transform lastPose_;
+
56 bool lost_;
+
57 float linVar_;
+
58 float angVar_;
+
59#endif
+
60};
+
+
61
+
62}
+
63
+
64#endif /* ODOMETRYFLOAM_H_ */
+ +
virtual Odometry::Type getType()
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
What one Odometry iteration produced, beyond the pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryFovis_8h_source.html b/preview/pr-1773/api/latest/OdometryFovis_8h_source.html new file mode 100644 index 00000000..db16c6fc --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryFovis_8h_source.html @@ -0,0 +1,201 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryFovis.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryFovis.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYFOVIS_H_
+
29#define ODOMETRYFOVIS_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33namespace fovis {
+
34class VisualOdometry;
+
35class Rectification;
+
36class StereoCalibration;
+
37class DepthImage;
+
38class StereoDepth;
+
39}
+
40
+
41namespace rtabmap {
+
42
+
+
43class RTABMAP_CORE_EXPORT OdometryFovis : public Odometry
+
44{
+
45public:
+ +
47 virtual ~OdometryFovis();
+
48
+
49 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
50 virtual Odometry::Type getType() {return Odometry::kTypeFovis;}
+
51
+
52private:
+
53 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
54
+
55private:
+
56#ifdef RTABMAP_FOVIS
+
57 fovis::VisualOdometry * fovis_;
+
58 fovis::Rectification * rect_;
+
59 fovis::StereoCalibration * stereoCalib_;
+
60 fovis::DepthImage * depthImage_;
+
61 fovis::StereoDepth * stereoDepth_;
+
62 bool lost_;
+
63#endif
+
64 ParametersMap fovisParameters_;
+
65 Transform previousLocalTransform_;
+
66};
+
+
67
+
68}
+
69
+
70#endif /* ODOMETRYFOVIS_H_ */
+ +
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
What one Odometry iteration produced, beyond the pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryInfo_8h_source.html b/preview/pr-1773/api/latest/OdometryInfo_8h_source.html new file mode 100644 index 00000000..ba5791b2 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryInfo_8h_source.html @@ -0,0 +1,261 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/OdometryInfo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryInfo.h
+
+
+
1/*
+
2Copyright (c) 2010-2025, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYINFO_H_
+
29#define ODOMETRYINFO_H_
+
30
+
31#include <rtabmap/core/rtabmap_core_export.h>
+
32#include <map>
+
33#include "rtabmap/core/Transform.h"
+
34#include "rtabmap/core/RegistrationInfo.h"
+
35#include "rtabmap/core/CameraModel.h"
+
36#include "rtabmap/core/LaserScan.h"
+
37#if CV_MAJOR_VERSION < 5
+
38#include <opencv2/features2d/features2d.hpp>
+
39#else
+
40#include <opencv2/features.hpp>
+
41#endif
+
42
+
43namespace rtabmap {
+
44
+
+
63class RTABMAP_CORE_EXPORT OdometryInfo
+
64{
+
65public:
+ + +
74 std::map<std::string, float> statistics(const Transform & pose = Transform());
+
75
+
76 bool lost;
+ + + + + + + + +
85 std::map<int, Transform> localBundlePoses;
+
86 std::map<int, std::vector<CameraModel> > localBundleModels;
+ + +
89 std::vector<int> localBundleOutliersPerCam;
+ + + + +
94 double stamp;
+
95 double interval;
+ + + + + + + + + +
105
+
106 int type;
+
107
+
108 // F2M
+
109 std::multimap<int, cv::KeyPoint> words;
+
110 std::map<int, cv::Point3f> localMap;
+ +
112
+
113 // F2F
+
114 std::vector<cv::Point2f> refCorners;
+
115 std::vector<cv::Point2f> newCorners;
+
116 std::vector<int> cornerInliers;
+
117};
+
+
118
+
119}
+
120
+
121#endif /* ODOMETRYINFO_H_ */
+
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
+
What one Odometry iteration produced, beyond the pose.
+
std::vector< cv::Point2f > newCorners
Where those corners were found in the current frame (F2F).
+
LaserScan localScanMap
Local scan map in the odometry frame (F2M).
+
RegistrationInfo reg
Registration result: matches, inliers, covariance, ICP indicators and timings.
+
std::vector< cv::Point2f > refCorners
Corners of the reference frame (F2F).
+
std::map< int, cv::Point3f > localMap
Local feature map in the odometry frame, by word id (F2M).
+
double interval
Time since the previous processed frame (s); the divisor for velocities.
+
std::map< std::string, float > statistics(const Transform &pose=Transform())
Formats the content as the Odometry/... statistics.
+ +
int localBundleConstraints
Feature observations kept by the last local bundle adjustment.
+
int localMapSize
Number of 3D points in the local feature map (F2M).
+
int localKeyFrames
Number of key frames forming the local map (F2M).
+
std::vector< int > cornerInliers
Indices in refCorners / newCorners kept as inliers (F2F).
+
float distanceTravelled
Distance travelled since the odometry was last reset (m).
+
int features
Number of features extracted in the current frame.
+
double gravityRollError
Absolute roll difference between the estimated pose and the IMU gravity (rad).
+
int localBundleMaxKeyFramesForInlier
Highest number of key frames observing a same inlier.
+
double stamp
Stamp of the processed frame.
+
Transform guess
Motion guess given to the front-end (from the velocity model, an external pose or an IMU).
+
float timeEstimation
Time spent estimating the motion (s).
+
float timeDeskewing
Time spent deskewing the laser scan (s).
+
double gravityPitchError
Absolute pitch difference between the estimated pose and the IMU gravity (rad).
+
bool keyFrameAdded
True if this frame became a key frame of the local map.
+
int localBundleOutliers
Features rejected by the last local bundle adjustment.
+
bool lost
True when the motion could not be estimated on this frame (transform is then null).
+
std::map< int, std::vector< CameraModel > > localBundleModels
Camera models of localBundlePoses.
+
float timeParticleFiltering
Time spent in the particle filter (s), when enabled.
+
std::vector< int > localBundleOutliersPerCam
Outliers of the last local bundle adjustment, per camera.
+
Transform transformGroundTruth
Ground truth motion since the previous frame, when the data provides it.
+
OdometryInfo copyWithoutData() const
A copy without the heavy members (features, local map, scan).
+
std::multimap< int, cv::KeyPoint > words
Keypoints of the current frame, by word id (F2M).
+
std::map< int, Transform > localBundlePoses
Key frame poses optimized by the local bundle adjustment.
+
Transform transformFiltered
transform after Kalman or particle filtering, when enabled.
+
int localScanMapSize
Number of points in the local scan map (F2M).
+
float localBundleAvgInlierDistance
Average distance of the bundle adjustment inliers (m).
+
int type
Odometry strategy that produced this, see Parameters::kOdomStrategy().
+
Transform transform
Motion since the previous frame, null when lost.
+
int memoryUsage
Process memory used (MB), only with Parameters::kRtabmapPublishRAMUsage().
+
float localBundleTime
Time spent in the local bundle adjustment (s).
+
Statistics and diagnostics returned by Registration.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryLIOSAM_8h_source.html b/preview/pr-1773/api/latest/OdometryLIOSAM_8h_source.html new file mode 100644 index 00000000..796a295f --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryLIOSAM_8h_source.html @@ -0,0 +1,214 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryLIOSAM.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryLIOSAM.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYLIOSAM_H_
+
29#define ODOMETRYLIOSAM_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33#ifdef RTABMAP_LIOSAM
+
34#include <Eigen/Core>
+
35#include <Eigen/Geometry>
+
36#include <vector>
+
37namespace lio_sam { class LioSamCore; }
+
38#endif
+
39
+
40namespace rtabmap {
+
41
+
+
42class RTABMAP_CORE_EXPORT OdometryLIOSAM : public Odometry
+
43{
+
44public:
+ +
46 virtual ~OdometryLIOSAM();
+
47
+
48 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
49 virtual Odometry::Type getType() {return Odometry::kTypeLIOSAM;}
+
50 virtual bool canProcessAsyncIMU() const {return true;}
+
51
+
52private:
+
53 virtual Transform computeTransform(SensorData & data, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
54
+
55#ifdef RTABMAP_LIOSAM
+
56 bool init(const Transform & imuLocalTransform, const Transform & lidarLocalTransform);
+
57#endif
+
58
+
59private:
+
60#ifdef RTABMAP_LIOSAM
+
61 lio_sam::LioSamCore * lioSam_;
+
62 Transform lastPose_;
+
63 bool lost_;
+
64 float linVar_;
+
65 float angVar_;
+
66 ParametersMap parameters_;
+
67 Transform imuLocalTransform_; // base_link -> imu_link (cached for deferred init)
+
68
+
69 // Buffered IMU samples received before initialization
+
70 struct ImuSample {
+
71 double stamp;
+
72 Eigen::Vector3d acc;
+
73 Eigen::Vector3d gyro;
+
74 Eigen::Quaterniond orientation;
+
75 };
+
76 std::vector<ImuSample> imuBuffer_;
+
77#endif
+
78};
+
+
79
+
80}
+
81
+
82#endif /* ODOMETRYLIOSAM_H_ */
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual bool canProcessAsyncIMU() const
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryLOAM_8h_source.html b/preview/pr-1773/api/latest/OdometryLOAM_8h_source.html new file mode 100644 index 00000000..c28e2bcb --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryLOAM_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryLOAM.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryLOAM.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYLOAM_H_
+
29#define ODOMETRYLOAM_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33#ifdef RTABMAP_LOAM
+
34#include <loam_velodyne/BasicScanRegistration.h>
+
35#include <loam_velodyne/BasicLaserOdometry.h>
+
36#include <loam_velodyne/BasicLaserMapping.h>
+
37#include <loam_velodyne/BasicTransformMaintenance.h>
+
38#include <loam_velodyne/MultiScanRegistration.h>
+
39#endif
+
40
+
41namespace rtabmap {
+
42
+
+
43class RTABMAP_CORE_EXPORT OdometryLOAM : public Odometry
+
44{
+
45public:
+ +
47 virtual ~OdometryLOAM();
+
48
+
49 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
50 virtual Odometry::Type getType() {return Odometry::kTypeLOAM;}
+
51
+
52private:
+
53 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
54
+
55private:
+
56#ifdef RTABMAP_LOAM
+
57 std::vector<pcl::PointCloud<pcl::PointXYZI> > segmentScanRings(const pcl::PointCloud<pcl::PointXYZ> & laserCloudIn);
+
58
+
59 loam::BasicScanRegistration scanRegistration_;
+
60 loam::MultiScanMapper scanMapper_;
+
61 loam::BasicLaserOdometry * laserOdometry_;
+
62 loam::BasicLaserMapping * laserMapping_;
+
63 loam::BasicTransformMaintenance transformMaintenance_;
+
64 Transform lastPose_;
+
65 float scanPeriod_;
+
66 float linVar_;
+
67 float angVar_;
+
68 bool localMapping_;
+
69 bool lost_;
+
70#endif
+
71};
+
+
72
+
73}
+
74
+
75#endif /* ODOMETRYLOAM_H_ */
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual Odometry::Type getType()
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryMSCKF_8h_source.html b/preview/pr-1773/api/latest/OdometryMSCKF_8h_source.html new file mode 100644 index 00000000..e734a1df --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryMSCKF_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryMSCKF.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryMSCKF.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYMSCKF_H_
+
29#define ODOMETRYMSCKF_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33namespace rtabmap {
+
34
+
35class ImageProcessorNoROS;
+
36class MsckfVioNoROS;
+
37
+
+
38class RTABMAP_CORE_EXPORT OdometryMSCKF : public Odometry
+
39{
+
40public:
+ +
42 virtual ~OdometryMSCKF();
+
43
+
44 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
45 virtual Odometry::Type getType() {return Odometry::kTypeMSCKF;}
+
46 virtual bool canProcessRawImages() const {return true;}
+
47 virtual bool canProcessAsyncIMU() const {return true;}
+
48
+
49private:
+
50 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
51
+
52private:
+
53#ifdef RTABMAP_MSCKF_VIO
+
54 ImageProcessorNoROS * imageProcessor_;
+
55 MsckfVioNoROS * msckf_;
+
56 IMU lastImu_;
+
57 ParametersMap parameters_;
+
58 Transform fixPoseRotation_;
+
59 Transform previousPose_;
+
60 bool initGravity_;
+
61#endif
+
62};
+
+
63
+
64}
+
65
+
66#endif /* ODOMETRYMSCKF_H_ */
+
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual bool canProcessRawImages() const
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual bool canProcessAsyncIMU() const
+
virtual Odometry::Type getType()
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryMono_8h_source.html b/preview/pr-1773/api/latest/OdometryMono_8h_source.html new file mode 100644 index 00000000..81ade844 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryMono_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryMono.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryMono.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYMONO_H_
+
29#define ODOMETRYMONO_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32#include <rtabmap/core/Link.h>
+
33
+
34namespace rtabmap {
+
35
+
36class Memory;
+
37class Feature2D;
+
38
+
+
39class RTABMAP_CORE_EXPORT OdometryMono : public Odometry
+
40{
+
41public:
+ +
43 virtual ~OdometryMono();
+
44 virtual void reset(const Transform & initialPose);
+
45 virtual Odometry::Type getType() {return kTypeUndef;}
+
46
+
47private:
+
48 virtual Transform computeTransform(SensorData & data, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
49private:
+
50 //Parameters:
+
51 int flowWinSize_;
+
52 int flowIterations_;
+
53 double flowEps_;
+
54 int flowMaxLevel_;
+
55 int minInliers_;
+
56 int iterations_;
+
57 double pnpReprojError_;
+
58 int pnpFlags_;
+
59 int pnpRefineIterations_;
+
60
+
61 Feature2D * feature2D_;
+
62
+
63 Memory * memory_;
+
64 int localHistoryMaxSize_;
+
65 float initMinFlow_;
+
66 float initMinTranslation_;
+
67 float minTranslation_;
+
68 float fundMatrixReprojError_;
+
69 float fundMatrixConfidence_;
+
70
+
71 std::map<int, cv::Point2f> firstFrameGuessCorners_;
+
72 std::map<int, cv::Point3f> localMap_;
+
73 std::map<int, std::map<int, cv::Point3f> > keyFrameWords3D_;
+
74 std::map<int, Transform> keyFramePoses_;
+
75 std::multimap<int, Link> keyFrameLinks_;
+
76 std::map<int, std::vector<CameraModel> > keyFrameModels_;
+
77 float maxVariance_;
+
78 float keyFrameThr_;
+
79};
+
+
80
+
81}
+
82
+
83#endif /* ODOMETRYMONO_H_ */
+
Abstract 2D feature detector and descriptor extractor for visual SLAM.
Definition Features2d.h:145
+
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Definition Memory.h:102
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual void reset(const Transform &initialPose)
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryORBSLAM2_8h_source.html b/preview/pr-1773/api/latest/OdometryORBSLAM2_8h_source.html new file mode 100644 index 00000000..d4a32ae3 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryORBSLAM2_8h_source.html @@ -0,0 +1,193 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryORBSLAM2.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryORBSLAM2.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYORBSLAM2_H_
+
29#define ODOMETRYORBSLAM2_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33
+
34class ORBSLAM2System;
+
35
+
36namespace rtabmap {
+
37
+
+
38class RTABMAP_CORE_EXPORT OdometryORBSLAM2 : public Odometry
+
39{
+
40public:
+ +
42 virtual ~OdometryORBSLAM2();
+
43
+
44 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
45 virtual Odometry::Type getType() {return Odometry::kTypeORBSLAM;}
+
46
+
47private:
+
48 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
49
+
50private:
+
51#if defined(RTABMAP_ORB_SLAM) and RTABMAP_ORB_SLAM == 2
+
52 ORBSLAM2System * orbslam_;
+
53 bool firstFrame_;
+
54 Transform originLocalTransform_;
+
55 Transform previousPose_;
+
56#endif
+
57
+
58};
+
+
59
+
60}
+
61
+
62#endif /* ODOMETRYORBSLAM2_H_ */
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual Odometry::Type getType()
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryORBSLAM3_8h_source.html b/preview/pr-1773/api/latest/OdometryORBSLAM3_8h_source.html new file mode 100644 index 00000000..a2b91f0f --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryORBSLAM3_8h_source.html @@ -0,0 +1,204 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryORBSLAM3.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryORBSLAM3.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYORBSLAM3_H_
+
29#define ODOMETRYORBSLAM3_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33#if defined(RTABMAP_ORB_SLAM) and RTABMAP_ORB_SLAM == 3
+
34#include <System.h>
+
35#endif
+
36
+
37namespace rtabmap {
+
38
+
+
39class RTABMAP_CORE_EXPORT OdometryORBSLAM3 : public Odometry
+
40{
+
41public:
+ +
43 virtual ~OdometryORBSLAM3();
+
44
+
45 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
46 virtual Odometry::Type getType() {return Odometry::kTypeORBSLAM;}
+
47 virtual bool canProcessAsyncIMU() const;
+
48
+
49private:
+
50 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
51
+
52 bool init(const rtabmap::CameraModel & model1, const rtabmap::CameraModel & model2, double stamp, bool stereo, double baseline);
+
53private:
+
54#if defined(RTABMAP_ORB_SLAM) and RTABMAP_ORB_SLAM == 3
+
55 ORB_SLAM3::System * orbslam_;
+
56 bool firstFrame_;
+
57 Transform originLocalTransform_;
+
58 Transform previousPose_;
+
59 bool useIMU_;
+
60 Transform imuLocalTransform_;
+
61 ParametersMap parameters_;
+
62 std::vector<ORB_SLAM3::IMU::Point> orbslamImus_;
+
63 double lastImuStamp_;
+
64 double lastImageStamp_;
+
65#endif
+
66
+
67};
+
+
68
+
69}
+
70
+
71#endif /* ODOMETRYORBSLAM_H3_ */
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual bool canProcessAsyncIMU() const
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryOkvis_8h_source.html b/preview/pr-1773/api/latest/OdometryOkvis_8h_source.html new file mode 100644 index 00000000..391662a9 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryOkvis_8h_source.html @@ -0,0 +1,203 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryOkvis.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryOkvis.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYOKVIS_H_
+
29#define ODOMETRYOKVIS_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33namespace okvis {
+
34 class ThreadedKFVio;
+
35}
+
36
+
37namespace rtabmap {
+
38
+
39class OkvisCallbackHandler;
+
+
40class RTABMAP_CORE_EXPORT OdometryOkvis : public Odometry
+
41{
+
42public:
+ +
44 virtual ~OdometryOkvis();
+
45
+
46 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
47 virtual Odometry::Type getType() {return Odometry::kTypeOkvis;}
+
48 virtual bool canProcessRawImages() const {return true;}
+
49 virtual bool canProcessAsyncIMU() const {return true;}
+
50
+
51private:
+
52 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
53
+
54private:
+
55 std::string configFilename_;
+
56#ifdef RTABMAP_OKVIS
+
57 OkvisCallbackHandler * okvisCallbackHandler_;
+
58 okvis::ThreadedKFVio * okvisEstimator_;
+
59 int imagesProcessed_;
+
60 bool initGravity_;
+
61#endif
+
62 ParametersMap okvisParameters_;
+
63 IMU lastImu_; // only used for initialization
+
64 Transform previousPose_;
+
65};
+
+
66
+
67}
+
68
+
69#endif /* ODOMETRYOKVIS_H_ */
+
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual bool canProcessAsyncIMU() const
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
virtual bool canProcessRawImages() const
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryOpen3D_8h_source.html b/preview/pr-1773/api/latest/OdometryOpen3D_8h_source.html new file mode 100644 index 00000000..d04a76f0 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryOpen3D_8h_source.html @@ -0,0 +1,190 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryOpen3D.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryOpen3D.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYOPEN3D_H_
+
29#define ODOMETRYOPEN3D_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33namespace rtabmap {
+
34
+
+
35class RTABMAP_CORE_EXPORT OdometryOpen3D : public Odometry
+
36{
+
37public:
+ +
39 virtual ~OdometryOpen3D();
+
40
+
41 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
42 virtual Odometry::Type getType() {return Odometry::kTypeOpen3D;}
+
43
+
44private:
+
45 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
46
+
47private:
+
48#ifdef RTABMAP_OPEN3D
+
49 rtabmap::SensorData keyFrame_;
+
50 Transform lastKeyFramePose_;
+
51 int method_;
+
52 float maxDepth_;
+
53 float keyFrameThr_;
+
54#endif
+
55};
+
+
56
+
57}
+
58
+
59#endif /* ODOMETRYOPEN3D_H_ */
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryOpenVINS_8h_source.html b/preview/pr-1773/api/latest/OdometryOpenVINS_8h_source.html new file mode 100644 index 00000000..58f18495 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryOpenVINS_8h_source.html @@ -0,0 +1,199 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryOpenVINS.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryOpenVINS.h
+
+
+
1/*
+
2Copyright (c) 2010-2021, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYOPENVINS_H_
+
29#define ODOMETRYOPENVINS_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33namespace ov_msckf {
+
34class VioManager;
+
35struct VioManagerOptions;
+
36}
+
37
+
38namespace rtabmap {
+
39
+
+
40class RTABMAP_CORE_EXPORT OdometryOpenVINS : public Odometry
+
41{
+
42public:
+ +
44
+
45 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
46 virtual Odometry::Type getType() {return Odometry::kTypeOpenVINS;}
+
47 virtual bool canProcessRawImages() const {return true;}
+
48 virtual bool canProcessAsyncIMU() const {return true;}
+
49
+
50private:
+
51 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
52
+
53private:
+
54#ifdef RTABMAP_OPENVINS
+
55 std::unique_ptr<ov_msckf::VioManager> vioManager_;
+
56 std::unique_ptr<ov_msckf::VioManagerOptions> params_;
+
57 bool initGravity_;
+
58 Transform previousPoseInv_;
+
59 Transform imuLocalTransformInv_;
+
60 Eigen::Matrix<double, 6, 6> Phi_;
+
61#endif
+
62};
+
+
63
+
64}
+
65
+
66#endif /* ODOMETRYOPENVINS_H_ */
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual bool canProcessAsyncIMU() const
+
virtual Odometry::Type getType()
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual bool canProcessRawImages() const
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryThread_8h_source.html b/preview/pr-1773/api/latest/OdometryThread_8h_source.html new file mode 100644 index 00000000..f849bd9b --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryThread_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/OdometryThread.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryThread.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYTHREAD_H_
+
29#define ODOMETRYTHREAD_H_
+
30
+
31#include <rtabmap/core/rtabmap_core_export.h>
+
32#include <rtabmap/core/SensorEvent.h>
+
33#include <rtabmap/core/SensorData.h>
+
34#include <rtabmap/utilite/UThread.h>
+
35#include <rtabmap/utilite/UEventsHandler.h>
+
36#include <list>
+
37
+
38namespace rtabmap {
+
39
+
40class Odometry;
+
41
+
+
80class RTABMAP_CORE_EXPORT OdometryThread : public UThread, public UEventsHandler {
+
81public:
+
90 OdometryThread(Odometry * odometry, unsigned int dataBufferMaxSize = 1);
+
91 virtual ~OdometryThread();
+
92
+
93protected:
+
103 virtual bool handleEvent(UEvent * event);
+
104
+
105private:
+
106 virtual void mainLoopBegin();
+
107 virtual void mainLoopKill();
+
108
+
109 //============================================================
+
110 // MAIN LOOP
+
111 //============================================================
+
112 virtual void mainLoop();
+
113 void addData(const SensorEvent & data);
+
114 bool getData(SensorEvent & data);
+
115
+
116private:
+
117 USemaphore _dataAdded;
+
118 UMutex _dataMutex;
+
119 std::list<SensorEvent> _dataBuffer;
+
120 std::list<SensorData> _imuBuffer;
+
121 Odometry * _odometry;
+
122 unsigned int _dataBufferMaxSize;
+
123 bool _resetOdometry;
+
124 Transform _resetPose;
+
125 Transform _previousGuessPose;
+
126 double _oldestAsyncImuStamp;
+
127 double _newestAsyncImuStamp;
+
128};
+
+
129
+
130} // namespace rtabmap
+
131
+
132
+
133#endif /* ODOMETRYTHREAD_H_ */
+ + + + + +
Runs an Odometry front-end in its own thread, driven by events.
+
virtual bool handleEvent(UEvent *event)
Receives the events listed in the class description.
+
OdometryThread(Odometry *odometry, unsigned int dataBufferMaxSize=1)
Constructor.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Event class for sensor data communication in RTAB-Map's event system.
Definition SensorEvent.h:65
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryVINSFusion_8h_source.html b/preview/pr-1773/api/latest/OdometryVINSFusion_8h_source.html new file mode 100644 index 00000000..6342fe47 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryVINSFusion_8h_source.html @@ -0,0 +1,198 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryVINSFusion.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryVINSFusion.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYVINSFUSION_H_
+
29#define ODOMETRYVINSFUSION_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33namespace rtabmap {
+
34
+
35class VinsFusionEstimator;
+
36
+
+
37class RTABMAP_CORE_EXPORT OdometryVINSFusion : public Odometry
+
38{
+
39public:
+ +
41 virtual ~OdometryVINSFusion();
+
42
+
43 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
44 virtual Odometry::Type getType() {return Odometry::kTypeVINSFusion;}
+
45 virtual bool canProcessRawImages() const {return true;}
+
46 virtual bool canProcessAsyncIMU() const {return true;}
+
47
+
48private:
+
49 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
50
+
51private:
+
52#ifdef RTABMAP_VINS_FUSION
+
53 VinsFusionEstimator * vinsEstimator_;
+
54 bool initGravity_;
+
55 Transform previousPose_;
+
56 Transform previousLocalTransform_;
+
57 IMU lastImu_;
+
58 double lastImuStamp_;
+
59#endif
+
60};
+
+
61
+
62}
+
63
+
64#endif /* ODOMETRYVINSFUSION_H_ */
+
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual bool canProcessAsyncIMU() const
+
virtual bool canProcessRawImages() const
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryVINS_8h_source.html b/preview/pr-1773/api/latest/OdometryVINS_8h_source.html new file mode 100644 index 00000000..dfc58ff4 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryVINS_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryVINS.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryVINS.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29#pragma message("Warning: OdometryVINS.h is deprecated. Please use OdometryVINSFusion.h instead.")
+
30
+
31#include "rtabmap/core/odometry/OdometryVINSFusion.h"
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OdometryViso2_8h_source.html b/preview/pr-1773/api/latest/OdometryViso2_8h_source.html new file mode 100644 index 00000000..c7488015 --- /dev/null +++ b/preview/pr-1773/api/latest/OdometryViso2_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/odometry/OdometryViso2.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OdometryViso2.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRYVISO2_H_
+
29#define ODOMETRYVISO2_H_
+
30
+
31#include <rtabmap/core/Odometry.h>
+
32
+
33class VisualOdometryStereo;
+
34
+
35namespace rtabmap {
+
36
+
+
37class RTABMAP_CORE_EXPORT OdometryViso2 : public Odometry
+
38{
+
39public:
+ +
41 virtual ~OdometryViso2();
+
42
+
43 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
44 virtual Odometry::Type getType() {return Odometry::kTypeViso2;}
+
45
+
46private:
+
47 virtual Transform computeTransform(SensorData & image, const Transform & guess = Transform(), OdometryInfo * info = 0);
+
48
+
49private:
+
50#ifdef RTABMAP_VISO2
+
51 VisualOdometryStereo * viso2_;
+
52 int ref_frame_change_method_; // Reference frame method (defautl 0): 0=under inliers threshold, 1=min pixel motion,
+
53 int ref_frame_inlier_threshold_; // method 0. Change the reference frame if the number of inliers is low
+
54 double ref_frame_motion_threshold_; // method 1. Change the reference frame if last motion is small
+
55 bool lost_;
+
56 bool keep_reference_frame_;
+
57#endif
+
58 Transform reference_motion_;
+
59 Transform previousLocalTransform_;
+
60 ParametersMap viso2Parameters_;
+
61};
+
+
62
+
63}
+
64
+
65#endif /* ODOMETRYVISO2_H_ */
+
What one Odometry iteration produced, beyond the pose.
+ +
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
virtual Odometry::Type getType()
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Odometry_8h_source.html b/preview/pr-1773/api/latest/Odometry_8h_source.html new file mode 100644 index 00000000..d51bce75 --- /dev/null +++ b/preview/pr-1773/api/latest/Odometry_8h_source.html @@ -0,0 +1,280 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Odometry.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Odometry.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef ODOMETRY_H_
+
29#define ODOMETRY_H_
+
30
+
31#include <rtabmap/core/rtabmap_core_export.h>
+
32
+
33#include <rtabmap/core/Transform.h>
+
34#include <rtabmap/core/SensorData.h>
+
35#include <rtabmap/core/Parameters.h>
+
36
+
37namespace rtabmap {
+
38
+
39class OdometryInfo;
+
40class ParticleFilter;
+
41
+
+
56class RTABMAP_CORE_EXPORT Odometry
+
57{
+
58public:
+
+
60 enum Type {
+
61 kTypeUndef = -1,
+
62 kTypeF2M = 0,
+
63 kTypeF2F = 1,
+
64 kTypeFovis = 2,
+
65 kTypeViso2 = 3,
+
66 kTypeDVO = 4,
+
67 kTypeORBSLAM = 5,
+
68 kTypeOkvis = 6,
+
69 kTypeLOAM = 7,
+
70 kTypeMSCKF = 8,
+
71 kTypeVINSFusion = 9,
+
72 kTypeOpenVINS = 10,
+
73 kTypeFLOAM = 11,
+
74 kTypeOpen3D = 12,
+
75 kTypeCuVSLAM = 13,
+
76 kTypeLIOSAM = 14
+
77 };
+
+
78
+
84 static Odometry * create(const ParametersMap & parameters = ParametersMap());
+
90 static Odometry * create(Type & type, const ParametersMap & parameters = ParametersMap());
+
91
+
92 virtual ~Odometry();
+ +
108 Transform process(SensorData & data, const Transform & guess, OdometryInfo * info = 0);
+
113 virtual void reset(const Transform & initialPose = Transform::getIdentity());
+
115 virtual Odometry::Type getType() = 0;
+
117 virtual bool canProcessRawImages() const {return false;}
+
119 virtual bool canProcessAsyncIMU() const {return false;}
+
120
+
122 const Transform & getPose() const {return _pose;}
+
124 bool isInfoDataFilled() const {return _fillInfoData;}
+
126 RTABMAP_DEPRECATED const Transform & previousVelocityTransform() const;
+
128 const Transform & getVelocityGuess() const {return velocityGuess_;}
+
130 double previousStamp() const {return previousStamp_;}
+
132 unsigned int framesProcessed() const {return framesProcessed_;}
+
134 bool imagesAlreadyRectified() const {return _imagesAlreadyRectified;}
+
135
+
136protected:
+
138 const std::map<double, Transform> & imus() const {return imus_;}
+
139
+
141 Odometry(const rtabmap::ParametersMap & parameters);
+
142
+
143private:
+
151 virtual Transform computeTransform(SensorData & data, const Transform & guess = Transform(), OdometryInfo * info = 0) = 0;
+
152
+
153 void initKalmanFilter(const Transform & initialPose = Transform::getIdentity(), float vx=0.0f, float vy=0.0f, float vz=0.0f, float vroll=0.0f, float vpitch=0.0f, float vyaw=0.0f);
+
154 void predictKalmanFilter(float dt, float * vx=0, float * vy=0, float * vz=0, float * vroll=0, float * vpitch=0, float * vyaw=0);
+
155 void updateKalmanFilter(float & vx, float & vy, float & vz, float & vroll, float & vpitch, float & vyaw);
+
156
+
157private:
+
158 int _resetCountdown;
+
159 bool _force3DoF;
+
160 bool _holonomic;
+
161 bool guessFromMotion_;
+
162 float guessSmoothingDelay_;
+
163 int _filteringStrategy;
+
164 int _particleSize;
+
165 float _particleNoiseT;
+
166 float _particleLambdaT;
+
167 float _particleNoiseR;
+
168 float _particleLambdaR;
+
169 bool _fillInfoData;
+
170 float _kalmanProcessNoise;
+
171 float _kalmanMeasurementNoise;
+
172 unsigned int _imageDecimation;
+
173 bool _alignWithGround;
+
174 bool _publishRAMUsage;
+
175 bool _imagesAlreadyRectified;
+
176 bool _deskewing;
+
177 Transform _pose;
+
178 int _resetCurrentCount;
+
179 double previousStamp_;
+
180 std::list<std::pair<std::vector<float>, double> > previousVelocities_;
+
181 Transform velocityGuess_;
+
182 Transform imuLastTransform_;
+
183 Transform previousGroundTruthPose_;
+
184 float distanceTravelled_;
+
185 unsigned int framesProcessed_;
+
186
+
187 std::vector<ParticleFilter *> particleFilters_;
+
188 cv::KalmanFilter kalmanFilter_;
+
189 std::vector<StereoCameraModel> stereoModels_;
+
190 std::vector<CameraModel> models_;
+
191 std::map<double, Transform> imus_;
+
192};
+
+
193
+
194} /* namespace rtabmap */
+
195#endif /* ODOMETRY_H_ */
+
What one Odometry iteration produced, beyond the pose.
+
Abstract base class for visual, lidar and visual-inertial odometry backends.
Definition Odometry.h:57
+
Transform process(SensorData &data, OdometryInfo *info=0)
Processes a sensor frame and updates the integrated pose.
+
virtual void reset(const Transform &initialPose=Transform::getIdentity())
Resets internal state and sets the initial pose.
+
static Odometry * create(Type &type, const ParametersMap &parameters=ParametersMap())
Creates an odometry instance of a given type.
+
bool isInfoDataFilled() const
Definition Odometry.h:124
+
RTABMAP_DEPRECATED const Transform & previousVelocityTransform() const
+
double previousStamp() const
Definition Odometry.h:130
+
Transform process(SensorData &data, const Transform &guess, OdometryInfo *info=0)
Processes a sensor frame with an external motion guess.
+
Type
Odometry backend selected by Parameters::kOdomStrategy().
Definition Odometry.h:60
+
virtual bool canProcessRawImages() const
Definition Odometry.h:117
+
const std::map< double, Transform > & imus() const
Definition Odometry.h:138
+
unsigned int framesProcessed() const
Definition Odometry.h:132
+
virtual bool canProcessAsyncIMU() const
Definition Odometry.h:119
+
const Transform & getPose() const
Definition Odometry.h:122
+
virtual Odometry::Type getType()=0
+
const Transform & getVelocityGuess() const
Definition Odometry.h:128
+
static Odometry * create(const ParametersMap &parameters=ParametersMap())
Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
+
bool imagesAlreadyRectified() const
Definition Odometry.h:134
+
Odometry(const rtabmap::ParametersMap &parameters)
Constructs the base odometry state from RTAB-Map parameters.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OptimizerCVSBA_8h_source.html b/preview/pr-1773/api/latest/OptimizerCVSBA_8h_source.html new file mode 100644 index 00000000..2ee91cd1 --- /dev/null +++ b/preview/pr-1773/api/latest/OptimizerCVSBA_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/optimizer/OptimizerCVSBA.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OptimizerCVSBA.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef OPTIMIZERCVSBA_H_
+
29#define OPTIMIZERCVSBA_H_
+
30
+
31#include <rtabmap/core/Optimizer.h>
+
32
+
33namespace rtabmap {
+
34
+
+
35class RTABMAP_CORE_EXPORT OptimizerCVSBA : public Optimizer
+
36{
+
37public:
+
38 static bool available();
+
39
+
40public:
+ +
42 int iterations = Parameters::defaultOptimizerIterations(),
+
43 bool slam2d = Parameters::defaultRegForce3DoF(),
+
44 bool covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored()) :
+
45 Optimizer(iterations, slam2d, covarianceIgnored) {}
+
46 OptimizerCVSBA(const ParametersMap & parameters) :
+
47 Optimizer(parameters) {}
+
48 virtual ~OptimizerCVSBA() {}
+
49
+
50 virtual Type type() const {return kTypeCVSBA;}
+
51
+
52 virtual std::map<int, Transform> optimizeBA(
+
53 int rootId,
+
54 const std::map<int, Transform> & poses,
+
55 const std::multimap<int, Link> & links,
+
56 const std::map<int, std::vector<CameraModel> > & models,
+
57 std::map<int, cv::Point3f> & points3DMap,
+
58 const std::map<int, std::map<int, FeatureBA> > & wordReferences, // <ID words, IDs frames + keypoint(x,y,depth)>
+
59 BAOutliers * outliers = 0);
+
60};
+
+
61
+
62} /* namespace rtabmap */
+
63#endif /* OPTIMIZERCVSBA_H_ */
+ +
virtual std::map< int, Transform > optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
+
virtual Type type() const
Returns the concrete back-end identifier (one of Type).
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+
Type
Graph-optimizer back-end identifier.
Definition Optimizer.h:94
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OptimizerCeres_8h_source.html b/preview/pr-1773/api/latest/OptimizerCeres_8h_source.html new file mode 100644 index 00000000..acaca520 --- /dev/null +++ b/preview/pr-1773/api/latest/OptimizerCeres_8h_source.html @@ -0,0 +1,214 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/optimizer/OptimizerCeres.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OptimizerCeres.h
+
+
+
1/*
+
2Copyright (c) 2010-2019, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef OPTIMIZERCERES_H_
+
29#define OPTIMIZERCERES_H_
+
30
+
31#include <rtabmap/core/Optimizer.h>
+
32
+
33namespace rtabmap {
+
34
+
+
35class RTABMAP_CORE_EXPORT OptimizerCeres : public Optimizer
+
36{
+
37public:
+
38 static bool available();
+
39
+
40public:
+ +
42 int iterations = Parameters::defaultOptimizerIterations(),
+
43 bool slam2d = Parameters::defaultRegForce3DoF(),
+
44 bool covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored(),
+
45 double epsilon = Parameters::defaultOptimizerEpsilon()) :
+
46 Optimizer(iterations, slam2d, covarianceIgnored, epsilon),
+
47 pixelVariance_(Parameters::defaultOptimizerPixelVariance()),
+
48 disparityVariance_(Parameters::defaultOptimizerDisparityVariance()),
+
49 robustKernelDelta_(Parameters::defaultOptimizerRobustKernelDelta()),
+
50 baseline_(Parameters::defaultOptimizerBaseline()) {}
+
51 OptimizerCeres(const ParametersMap & parameters);
+
52 virtual ~OptimizerCeres() {}
+
53
+
54 virtual Type type() const {return kTypeCeres;}
+
55
+
56 virtual void parseParameters(const ParametersMap & parameters);
+
57
+
58 virtual std::map<int, Transform> optimize(
+
59 int rootId,
+
60 const std::map<int, Transform> & poses,
+
61 const std::multimap<int, Link> & edgeConstraints,
+
62 cv::Mat & outputCovariance,
+
63 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
+
64 double * finalError = 0,
+
65 int * iterationsDone = 0);
+
66
+
67 virtual std::map<int, Transform> optimizeBA(
+
68 int rootId,
+
69 const std::map<int, Transform> & poses,
+
70 const std::multimap<int, Link> & links,
+
71 const std::map<int, std::vector<CameraModel> > & models, // in case of stereo, Tx should be set
+
72 std::map<int, cv::Point3f> & points3DMap,
+
73 const std::map<int, std::map<int, FeatureBA> > & wordReferences, // <ID words, IDs frames + keypoint(x,y,depth)>
+
74 BAOutliers * outliers = 0);
+
75
+
76private:
+
77 double pixelVariance_;
+
78 double disparityVariance_;
+
79 double robustKernelDelta_;
+
80 double baseline_;
+
81};
+
+
82
+
83} /* namespace rtabmap */
+
84#endif /* OPTIMIZERCERES_H_ */
+ +
virtual void parseParameters(const ParametersMap &parameters)
Reads shared knobs from parameters and applies them to this instance.
+
virtual std::map< int, Transform > optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
Pose-graph optimization with marginal covariance of rootId.
+
virtual Type type() const
Returns the concrete back-end identifier (one of Type).
+
virtual std::map< int, Transform > optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+
Type
Graph-optimizer back-end identifier.
Definition Optimizer.h:94
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OptimizerG2O_8h_source.html b/preview/pr-1773/api/latest/OptimizerG2O_8h_source.html new file mode 100644 index 00000000..8cbe71d8 --- /dev/null +++ b/preview/pr-1773/api/latest/OptimizerG2O_8h_source.html @@ -0,0 +1,221 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/optimizer/OptimizerG2O.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OptimizerG2O.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef OPTIMIZERG2O_H_
+
29#define OPTIMIZERG2O_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Optimizer.h>
+
34
+
35namespace rtabmap {
+
36
+
+
37class RTABMAP_CORE_EXPORT OptimizerG2O : public Optimizer
+
38{
+
39public:
+
40 static bool available();
+
41 static bool isCSparseAvailable();
+
42 static bool isCholmodAvailable();
+
43
+
44public:
+
45 static bool loadGraph(
+
46 const std::string & fileName,
+
47 std::map<int, Transform> & poses,
+
48 std::multimap<int, Link> & edgeConstraints);
+
49
+
50public:
+
51 OptimizerG2O(const ParametersMap & parameters = ParametersMap());
+
52 virtual ~OptimizerG2O() {}
+
53
+
54 virtual Type type() const {return kTypeG2O;}
+
55
+
56 virtual void parseParameters(const ParametersMap & parameters);
+
57
+
58 virtual std::map<int, Transform> optimize(
+
59 int rootId,
+
60 const std::map<int, Transform> & poses,
+
61 const std::multimap<int, Link> & edgeConstraints,
+
62 cv::Mat & outputCovariance,
+
63 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
+
64 double * finalError = 0,
+
65 int * iterationsDone = 0);
+
66
+
67 virtual std::map<int, Transform> optimizeBA(
+
68 int rootId,
+
69 const std::map<int, Transform> & poses,
+
70 const std::multimap<int, Link> & links,
+
71 const std::map<int, std::vector<CameraModel> > & models, // in case of stereo, Tx should be set
+
72 std::map<int, cv::Point3f> & points3DMap,
+
73 const std::map<int, std::map<int, FeatureBA> > & wordReferences, // <ID words, IDs frames + keypoint(x,y,depth)>
+
74 BAOutliers * outliers = 0);
+
75
+
76 bool saveGraph(
+
77 const std::string & fileName,
+
78 const std::map<int, Transform> & poses,
+
79 const std::multimap<int, Link> & edgeConstraints);
+
80
+
81private:
+
82 int solver_;
+
83 int optimizer_;
+
84 double pixelVariance_;
+
85 double disparityVariance_;
+
86 double robustKernelDelta_;
+
87 double baseline_;
+
88};
+
+
89
+
90} /* namespace rtabmap */
+
91#endif /* OPTIMIZERG2O_H_ */
+ +
virtual void parseParameters(const ParametersMap &parameters)
Reads shared knobs from parameters and applies them to this instance.
+
virtual std::map< int, Transform > optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
Pose-graph optimization with marginal covariance of rootId.
+
virtual Type type() const
Returns the concrete back-end identifier (one of Type).
+
virtual std::map< int, Transform > optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+
Type
Graph-optimizer back-end identifier.
Definition Optimizer.h:94
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OptimizerGTSAM_8h_source.html b/preview/pr-1773/api/latest/OptimizerGTSAM_8h_source.html new file mode 100644 index 00000000..172ba8d7 --- /dev/null +++ b/preview/pr-1773/api/latest/OptimizerGTSAM_8h_source.html @@ -0,0 +1,228 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/optimizer/OptimizerGTSAM.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OptimizerGTSAM.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef OPTIMIZERGTSAM_H_
+
29#define OPTIMIZERGTSAM_H_
+
30
+
31#include <rtabmap/core/Optimizer.h>
+
32
+
33namespace gtsam {
+
34 class ISAM2;
+
35}
+
36
+
37namespace rtabmap {
+
38
+
+
39class RTABMAP_CORE_EXPORT OptimizerGTSAM : public Optimizer
+
40{
+
41public:
+
42 static bool available();
+
43
+
44public:
+
45 OptimizerGTSAM(const ParametersMap & parameters = ParametersMap());
+
46 virtual ~OptimizerGTSAM();
+
47
+
48 virtual Type type() const {return kTypeGTSAM;}
+
49
+
50 virtual void parseParameters(const ParametersMap & parameters);
+
51
+
52 virtual std::map<int, Transform> optimize(
+
53 int rootId,
+
54 const std::map<int, Transform> & poses,
+
55 const std::multimap<int, Link> & edgeConstraints,
+
56 cv::Mat & outputCovariance,
+
57 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
+
58 double * finalError = 0,
+
59 int * iterationsDone = 0);
+
60
+
61 virtual std::map<int, Transform> optimizeBA(
+
62 int rootId,
+
63 const std::map<int, Transform> & poses,
+
64 const std::multimap<int, Link> & links,
+
65 const std::map<int, std::vector<CameraModel> > & models,
+
66 std::map<int, cv::Point3f> & points3DMap,
+
67 const std::map<int, std::map<int, FeatureBA> > & wordReferences,
+
68 BAOutliers * outliers = 0);
+
69
+
70private:
+
71 int internalOptimizerType_;
+
72 double pixelVariance_;
+
73 double disparityVariance_;
+
74 double robustKernelDelta_;
+
75 double baseline_;
+
76
+
77 gtsam::ISAM2 * isam2_;
+
78 struct ConstraintToFactor {
+
79 ConstraintToFactor(int _from, int _to, std::uint64_t _factorIndice)
+
80 {
+
81 from = _from;
+
82 to = _to;
+
83 factorIndice = _factorIndice;
+
84 }
+
85 int from;
+
86 int to;
+
87 std::uint64_t factorIndice;
+
88 };
+
89
+
90 std::vector<ConstraintToFactor> lastAddedConstraints_;
+
91 int lastSwitchId_;
+
92 std::set<int> addedPoses_;
+
93 std::map<int, bool> isLandmarkWithRotation_; // persists across iSAM2 incremental calls
+
94 std::pair<int, std::uint64_t> lastRootFactorIndex_;
+
95};
+
+
96
+
97} /* namespace rtabmap */
+
98#endif /* OPTIMIZERGTSAM_H_ */
+ +
virtual Type type() const
Returns the concrete back-end identifier (one of Type).
+
virtual std::map< int, Transform > optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
Pose-graph optimization with marginal covariance of rootId.
+
virtual std::map< int, Transform > optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
+
virtual void parseParameters(const ParametersMap &parameters)
Reads shared knobs from parameters and applies them to this instance.
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+
Type
Graph-optimizer back-end identifier.
Definition Optimizer.h:94
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/OptimizerTORO_8h_source.html b/preview/pr-1773/api/latest/OptimizerTORO_8h_source.html new file mode 100644 index 00000000..edc5ba63 --- /dev/null +++ b/preview/pr-1773/api/latest/OptimizerTORO_8h_source.html @@ -0,0 +1,203 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/optimizer/OptimizerTORO.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OptimizerTORO.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef OPTIMIZERTORO_H_
+
29#define OPTIMIZERTORO_H_
+
30
+
31#include <rtabmap/core/Optimizer.h>
+
32
+
33namespace rtabmap {
+
34
+
+
35class RTABMAP_CORE_EXPORT OptimizerTORO : public Optimizer
+
36{
+
37public:
+
38 static bool available();
+
39
+
40public:
+
41 static bool loadGraph(
+
42 const std::string & fileName,
+
43 std::map<int, Transform> & poses,
+
44 std::multimap<int, Link> & edgeConstraints);
+
45
+
46public:
+ +
48 int iterations = Parameters::defaultOptimizerIterations(),
+
49 bool slam2d = Parameters::defaultRegForce3DoF(),
+
50 bool covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored(),
+
51 double epsilon = Parameters::defaultOptimizerEpsilon()) :
+
52 Optimizer(iterations, slam2d, covarianceIgnored, epsilon) {}
+
53 OptimizerTORO(const ParametersMap & parameters) :
+
54 Optimizer(parameters) {}
+
55 virtual ~OptimizerTORO() {}
+
56
+
57 virtual Type type() const {return kTypeTORO;}
+
58
+
59 virtual std::map<int, Transform> optimize(
+
60 int rootId,
+
61 const std::map<int, Transform> & poses,
+
62 const std::multimap<int, Link> & edgeConstraints,
+
63 cv::Mat & outputCovariance,
+
64 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
+
65 double * finalError = 0,
+
66 int * iterationsDone = 0);
+
67
+
68 bool saveGraph(
+
69 const std::string & fileName,
+
70 const std::map<int, Transform> & poses,
+
71 const std::multimap<int, Link> & edgeConstraints);
+
72};
+
+
73
+
74} /* namespace rtabmap */
+
75#endif /* GRAPH_H_ */
+ +
virtual std::map< int, Transform > optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
Pose-graph optimization with marginal covariance of rootId.
+
virtual Type type() const
Returns the concrete back-end identifier (one of Type).
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+
Type
Graph-optimizer back-end identifier.
Definition Optimizer.h:94
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Optimizer_8h_source.html b/preview/pr-1773/api/latest/Optimizer_8h_source.html new file mode 100644 index 00000000..54285f61 --- /dev/null +++ b/preview/pr-1773/api/latest/Optimizer_8h_source.html @@ -0,0 +1,377 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Optimizer.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Optimizer.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef OPTIMIZER_H_
+
29#define OPTIMIZER_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <map>
+
34#include <list>
+
35#include <set>
+
36#include <rtabmap/core/Link.h>
+
37#include <rtabmap/core/Parameters.h>
+
38#include <rtabmap/core/Signature.h>
+
39
+
40namespace rtabmap {
+
41
+
+ +
52{
+
53public:
+
54 FeatureBA(const cv::KeyPoint & kptIn, const float & depthIn = 0.0f, const cv::Mat & descriptorIn = cv::Mat(), int cameraIndexIn = 0):
+
55 kpt(kptIn),
+
56 depth(depthIn),
+
57 descriptor(descriptorIn),
+
58 cameraIndex(cameraIndexIn)
+
59 {
+
60 //UDEBUG("kpt=(%f,%f) depth=%f, camIndex=%d", kpt.pt.x, kpt.pt.y, depth, cameraIndex);
+
61 }
+
62 cv::KeyPoint kpt;
+
63 float depth;
+
64 cv::Mat descriptor;
+ +
66};
+
+
67
+
68typedef std::map<int, std::set<int> > BAOutliers; // <word ID, rejected pose IDs>, matching wordReferences
+
69
+
+
90class RTABMAP_CORE_EXPORT Optimizer
+
91{
+
92public:
+
+
94 enum Type {
+
95 kTypeUndef = -1,
+
96 kTypeTORO = 0,
+
97 kTypeG2O = 1,
+
98 kTypeGTSAM = 2,
+
99 kTypeCeres = 3,
+
100 kTypeCVSBA = 4
+
101 };
+
+
102
+
109 static bool isAvailable(Optimizer::Type type);
+
110
+
117 static Optimizer * create(const ParametersMap & parameters);
+
118
+
120 static Optimizer * create(Optimizer::Type type, const ParametersMap & parameters = ParametersMap());
+
121
+ +
131 int fromId,
+
132 const std::map<int, Transform> & posesIn,
+
133 const std::multimap<int, Link> & linksIn,
+
134 std::map<int, Transform> & posesOut,
+
135 std::multimap<int, Link> & linksOut) const;
+
136
+
137public:
+
138 virtual ~Optimizer() {}
+
139
+
141 virtual Type type() const = 0;
+
142
+
145 int iterations() const {return iterations_;}
+
+
146 bool isSlam2d() const {return slam2d_;}
+
+
147 bool isCovarianceIgnored() const {return covarianceIgnored_;}
+
+
148 double epsilon() const {return epsilon_;}
+
+
149 bool isRobust() const {return robust_;}
+
+
150 bool priorsIgnored() const {return priorsIgnored_;}
+
+
151 bool landmarksIgnored() const {return landmarksIgnored_;}
+
+
152 float gravitySigma() const {return gravitySigma_;}
+
154
+
157 void setIterations(int iterations) {iterations_ = iterations;}
+
158 void setSlam2d(bool enabled) {slam2d_ = enabled;}
+
159 void setCovarianceIgnored(bool enabled) {covarianceIgnored_ = enabled;}
+
160 void setEpsilon(double epsilon) {epsilon_ = epsilon;}
+
161 void setRobust(bool enabled) {robust_ = enabled;}
+
162 void setPriorsIgnored(bool enabled) {priorsIgnored_ = enabled;}
+
163 void setLandmarksIgnored(bool enabled) {landmarksIgnored_ = enabled;}
+
164 void setGravitySigma(float value) {gravitySigma_ = value;}
+
166
+
173 virtual void parseParameters(const ParametersMap & parameters);
+
174
+
192 std::map<int, Transform> optimizeIncremental(
+
193 int rootId,
+
194 const std::map<int, Transform> & poses,
+
195 const std::multimap<int, Link> & constraints,
+
196 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
+
197 double * finalError = 0,
+
198 int * iterationsDone = 0);
+
199
+
206 std::map<int, Transform> optimize(
+
207 int rootId,
+
208 const std::map<int, Transform> & poses,
+
209 const std::multimap<int, Link> & constraints,
+
210 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
+
211 double * finalError = 0,
+
212 int * iterationsDone = 0);
+
213
+
230 virtual std::map<int, Transform> optimize(
+
231 int rootId,
+
232 const std::map<int, Transform> & poses,
+
233 const std::multimap<int, Link> & constraints,
+
234 cv::Mat & outputCovariance,
+
235 std::list<std::map<int, Transform> > * intermediateGraphes = 0,
+
236 double * finalError = 0,
+
237 int * iterationsDone = 0);
+
238
+
256 virtual std::map<int, Transform> optimizeBA(
+
257 int rootId,
+
258 const std::map<int, Transform> & poses,
+
259 const std::multimap<int, Link> & links,
+
260 const std::map<int, std::vector<CameraModel> > & models,
+
261 std::map<int, cv::Point3f> & points3DMap,
+
262 const std::map<int, std::map<int, FeatureBA> > & wordReferences,
+
263 BAOutliers * outliers = 0);
+
264
+
277 std::map<int, Transform> optimizeBA(
+
278 int rootId,
+
279 const std::map<int, Transform> & poses,
+
280 const std::multimap<int, Link> & links,
+
281 const std::map<int, Signature> & signatures,
+
282 std::map<int, cv::Point3f> & points3DMap,
+
283 std::map<int, std::map<int, FeatureBA> > & wordReferences,
+
284 bool rematchFeatures = false,
+
285 const ParametersMap & registrationParameters = ParametersMap());
+
286
+
289 std::map<int, Transform> optimizeBA(
+
290 int rootId,
+
291 const std::map<int, Transform> & poses,
+
292 const std::multimap<int, Link> & links,
+
293 const std::map<int, Signature> & signatures,
+
294 bool rematchFeatures = false,
+
295 const ParametersMap & registrationParameters = ParametersMap());
+
296
+ +
305 const Link & link,
+
306 const CameraModel & model,
+
307 std::map<int, cv::Point3f> & points3DMap,
+
308 const std::map<int, std::map<int, FeatureBA> > & wordReferences,
+
309 BAOutliers * outliers = 0);
+
310
+ +
327 const std::map<int, Transform> & poses,
+
328 const std::multimap<int, Link> & links,
+
329 const std::map<int, Signature> & signatures,
+
330 std::map<int, cv::Point3f> & points3DMap,
+
331 std::map<int, std::map<int, FeatureBA > > & wordReferences,
+
332 bool rematchFeatures = false,
+
333 bool useLinkTransformAsGuess = false,
+
334 ParametersMap registrationParameters = ParametersMap());
+
335
+
336protected:
+
337 Optimizer(
+
338 int iterations = Parameters::defaultOptimizerIterations(),
+
339 bool slam2d = Parameters::defaultRegForce3DoF(),
+
340 bool covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored(),
+
341 double epsilon = Parameters::defaultOptimizerEpsilon(),
+
342 bool robust = Parameters::defaultOptimizerRobust(),
+
343 bool priorsIgnored = Parameters::defaultOptimizerPriorsIgnored(),
+
344 bool landmarksIgnored = Parameters::defaultOptimizerLandmarksIgnored(),
+
345 float gravitySigma = Parameters::defaultOptimizerGravitySigma());
+
346 Optimizer(const ParametersMap & parameters);
+
347
+
348private:
+
349 int iterations_;
+
350 bool slam2d_;
+
351 bool covarianceIgnored_;
+
352 double epsilon_;
+
353 bool robust_;
+
354 bool priorsIgnored_;
+
355 bool landmarksIgnored_;
+
356 float gravitySigma_;
+
357};
+
358
+
359} /* namespace rtabmap */
+
360#endif /* OPTIMIZER_H_ */
+
+
+
+
+
+
+
+
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+
A single bundle adjustment feature observation: one keypoint seen in one frame.
Definition Optimizer.h:52
+
cv::KeyPoint kpt
2D image keypoint.
Definition Optimizer.h:62
+
cv::Mat descriptor
Optional descriptor for the keypoint (used when re-matching is enabled).
Definition Optimizer.h:64
+
int cameraIndex
Index into the frame's camera model list for multi-camera rigs.
Definition Optimizer.h:65
+
float depth
Depth at kpt in meters, or 0 if unknown (monocular).
Definition Optimizer.h:63
+ +
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+
virtual void parseParameters(const ParametersMap &parameters)
Reads shared knobs from parameters and applies them to this instance.
+
virtual std::map< int, Transform > optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
+
int iterations() const
Max solver iterations.
Definition Optimizer.h:145
+
Type
Graph-optimizer back-end identifier.
Definition Optimizer.h:94
+
std::map< int, Transform > optimizeIncremental(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
Pose-graph optimization that grows the graph one node at a time.
+
bool isRobust() const
If true, use a robust kernel / switchable factors against bad loop closures.
Definition Optimizer.h:149
+
std::map< int, Transform > optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
BA wrapper that derives camera models and correspondences from signatures.
+
bool landmarksIgnored() const
If true, landmark/marker observations are dropped.
Definition Optimizer.h:151
+
double epsilon() const
Convergence threshold on cost decrease.
Definition Optimizer.h:148
+
void getConnectedGraph(int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
Extracts the connected component reachable from fromId.
+
bool isSlam2d() const
True if optimizing in SE(2) instead of SE(3).
Definition Optimizer.h:146
+
static Optimizer * create(const ParametersMap &parameters)
Factory: build an optimizer from a ParametersMap.
+
std::map< int, Transform > optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
Pose-graph optimization (single shot).
+
bool isCovarianceIgnored() const
If true, all edges share an identity information matrix.
Definition Optimizer.h:147
+
void computeBACorrespondences(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
Build BA correspondences (3D points + per-frame observations) from signatures.
+
virtual Type type() const =0
Returns the concrete back-end identifier (one of Type).
+
std::map< int, Transform > optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map...
+
float gravitySigma() const
Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
Definition Optimizer.h:152
+
Transform optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
Refine a single two-frame link via BA.
+
bool priorsIgnored() const
If true, unary priors on poses are dropped.
Definition Optimizer.h:150
+
static Optimizer * create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
Factory: build an optimizer of a specific type. Caller owns the result.
+
virtual std::map< int, Transform > optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
Pose-graph optimization with marginal covariance of rootId.
+
static bool isAvailable(Optimizer::Type type)
Returns whether type was compiled in (its third-party dependency was found).
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/PDALWriter_8h_source.html b/preview/pr-1773/api/latest/PDALWriter_8h_source.html new file mode 100644 index 00000000..f7399e57 --- /dev/null +++ b/preview/pr-1773/api/latest/PDALWriter_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/PDALWriter.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PDALWriter.h
+
+
+
1/*
+
2Copyright (c) 2010-2021, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_PDALWRITER_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_PDALWRITER_H_
+
30
+
31#include <pcl/point_cloud.h>
+
32#include <pcl/point_types.h>
+
33
+
34namespace rtabmap {
+
35
+
36std::string getPDALSupportedWriters();
+
37
+
38int savePDALFile(const std::string & filePath, const pcl::PointCloud<pcl::PointXYZ> & cloud, const std::vector<int> & cameraIds = std::vector<int>(), bool binary = false);
+
39int savePDALFile(const std::string & filePath, const pcl::PointCloud<pcl::PointXYZRGB> & cloud, const std::vector<int> & cameraIds = std::vector<int>(), bool binary = false, const std::vector<float> & intensities = std::vector<float>());
+
40int savePDALFile(const std::string & filePath, const pcl::PointCloud<pcl::PointXYZRGBNormal> & cloud, const std::vector<int> & cameraIds = std::vector<int>(), bool binary = false, const std::vector<float> & intensities = std::vector<float>());
+
41int savePDALFile(const std::string & filePath, const pcl::PointCloud<pcl::PointXYZI> & cloud, const std::vector<int> & cameraIds = std::vector<int>(), bool binary = false);
+
42int savePDALFile(const std::string & filePath, const pcl::PointCloud<pcl::PointXYZINormal> & cloud, const std::vector<int> & cameraIds = std::vector<int>(), bool binary = false);
+
43
+
44}
+
45
+
46
+
47#endif /* CORELIB_INCLUDE_RTABMAP_CORE_PDALWRITER_H_ */
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/ParamEvent_8h_source.html b/preview/pr-1773/api/latest/ParamEvent_8h_source.html new file mode 100644 index 00000000..5223f742 --- /dev/null +++ b/preview/pr-1773/api/latest/ParamEvent_8h_source.html @@ -0,0 +1,183 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/ParamEvent.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ParamEvent.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef PARAMEVENT_H_
+
29#define PARAMEVENT_H_
+
30
+
31#include "rtabmap/core/Parameters.h"
+
32#include <rtabmap/utilite/UEvent.h>
+
33
+
34namespace rtabmap
+
35{
+
36
+
+
41class ParamEvent : public UEvent
+
42{
+
43public:
+
44 ParamEvent(const ParametersMap & parameters) : UEvent(0), parameters_(parameters) {}
+
45 ParamEvent(const std::string & parameterKey, const std::string & parameterValue) : UEvent(0)
+
46 {
+
47 parameters_.insert(std::pair<std::string, std::string>(parameterKey, parameterValue));
+
48 }
+
49 ~ParamEvent() {}
+
50 virtual std::string getClassName() const {return "ParamEvent";}
+
51
+
52 const ParametersMap & getParameters() const {return parameters_;}
+
53
+
54private:
+
55 ParametersMap parameters_;
+
56};
+
+
57
+
58}
+
59
+
60#endif /* PARAMEVENT_H_ */
+
61
+ + +
virtual std::string getClassName() const
Definition ParamEvent.h:50
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Parameters_8h_source.html b/preview/pr-1773/api/latest/Parameters_8h_source.html new file mode 100644 index 00000000..17ebfd91 --- /dev/null +++ b/preview/pr-1773/api/latest/Parameters_8h_source.html @@ -0,0 +1,1110 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Parameters.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Parameters.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef PARAMETERS_H_
+
29#define PARAMETERS_H_
+
30
+
31// default parameters
+
32#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
33#include "rtabmap/core/Version.h" // DLL export/import defines
+ +
35#include <opencv2/core/version.hpp>
+
36#include <opencv2/opencv_modules.hpp>
+
37#include <string>
+
38#include <map>
+
39
+
40namespace rtabmap
+
41{
+
42
+
44typedef std::map<std::string, std::string> ParametersMap; // Key, value
+
46typedef std::pair<std::string, std::string> ParametersPair;
+
47
+
66#define RTABMAP_PARAM(PREFIX, NAME, TYPE, DEFAULT_VALUE, DESCRIPTION) \
+
67 public: \
+
68 \
+
69 static std::string k##PREFIX##NAME() {return std::string(#PREFIX "/" #NAME);} \
+
70 \
+
71 static TYPE default##PREFIX##NAME() {return (TYPE)DEFAULT_VALUE;} \
+
72 \
+
73 static std::string type##PREFIX##NAME() {return std::string(#TYPE);} \
+
74 private: \
+
75 class Dummy##PREFIX##NAME { \
+
76 public: \
+
77 Dummy##PREFIX##NAME() {parameters_.insert(ParametersPair(#PREFIX "/" #NAME, #DEFAULT_VALUE)); \
+
78 parametersType_.insert(ParametersPair(#PREFIX "/" #NAME, #TYPE)); \
+
79 descriptions_.insert(ParametersPair(#PREFIX "/" #NAME, DESCRIPTION));} \
+
80 }; \
+
81 Dummy##PREFIX##NAME dummy##PREFIX##NAME
+
82// end define PARAM
+
83
+
103#define RTABMAP_PARAM_STR(PREFIX, NAME, DEFAULT_VALUE, DESCRIPTION) \
+
104 public: \
+
105 \
+
106 static std::string k##PREFIX##NAME() {return std::string(#PREFIX "/" #NAME);} \
+
107 \
+
108 static std::string default##PREFIX##NAME() {return DEFAULT_VALUE;} \
+
109 \
+
110 static std::string type##PREFIX##NAME() {return std::string("string");} \
+
111 private: \
+
112 class Dummy##PREFIX##NAME { \
+
113 public: \
+
114 Dummy##PREFIX##NAME() {parameters_.insert(ParametersPair(#PREFIX "/" #NAME, DEFAULT_VALUE)); \
+
115 parametersType_.insert(ParametersPair(#PREFIX "/" #NAME, "string")); \
+
116 descriptions_.insert(ParametersPair(#PREFIX "/" #NAME, DESCRIPTION));} \
+
117 }; \
+
118 Dummy##PREFIX##NAME dummy##PREFIX##NAME
+
119// end define PARAM
+
120
+
139#define RTABMAP_PARAM_COND(PREFIX, NAME, TYPE, COND, DEFAULT_VALUE1, DEFAULT_VALUE2, DESCRIPTION) \
+
140 public: \
+
141 \
+
142 static std::string k##PREFIX##NAME() {return std::string(#PREFIX "/" #NAME);} \
+
143 \
+
144 static TYPE default##PREFIX##NAME() {return COND?DEFAULT_VALUE1:DEFAULT_VALUE2;} \
+
145 \
+
146 static std::string type##PREFIX##NAME() {return std::string(#TYPE);} \
+
147 private: \
+
148 class Dummy##PREFIX##NAME { \
+
149 public: \
+
150 Dummy##PREFIX##NAME() {parameters_.insert(ParametersPair(#PREFIX "/" #NAME, COND?#DEFAULT_VALUE1:#DEFAULT_VALUE2)); \
+
151 parametersType_.insert(ParametersPair(#PREFIX "/" #NAME, #TYPE)); \
+
152 descriptions_.insert(ParametersPair(#PREFIX "/" #NAME, DESCRIPTION));} \
+
153 }; \
+
154 Dummy##PREFIX##NAME dummy##PREFIX##NAME
+
155// end define PARAM
+
156
+
+
182class RTABMAP_CORE_EXPORT Parameters
+
183{
+
184 // Rtabmap parameters
+
185 RTABMAP_PARAM(Rtabmap, PublishStats, bool, true, "Publishing statistics.");
+
186 RTABMAP_PARAM(Rtabmap, PublishLastSignature, bool, true, "Publishing last signature.");
+
187 RTABMAP_PARAM(Rtabmap, PublishPdf, bool, true, "Publishing pdf.");
+
188 RTABMAP_PARAM(Rtabmap, PublishLikelihood, bool, true, "Publishing likelihood.");
+
189 RTABMAP_PARAM(Rtabmap, PublishRAMUsage, bool, false, "Publishing RAM usage in statistics (may add a small overhead to get info from the system).");
+
190 RTABMAP_PARAM(Rtabmap, ComputeRMSE, bool, true, "Compute root mean square error (RMSE) and publish it in statistics, if ground truth is provided.");
+
191 RTABMAP_PARAM(Rtabmap, SaveWMState, bool, false, "Save working memory state after each update in statistics.");
+
192 RTABMAP_PARAM(Rtabmap, TimeThr, float, 0, "Maximum time allowed for map update (ms) (0 means infinity). When map update time exceeds this fixed time threshold, some nodes in Working Memory (WM) are transferred to Long-Term Memory to limit the size of the WM and decrease the update time.");
+
193 RTABMAP_PARAM(Rtabmap, MemoryThr, int, 0, uFormat("Maximum nodes in the Working Memory (0 means infinity). Similar to \"%s\", when the number of nodes in Working Memory (WM) exceeds this treshold, some nodes are transferred to Long-Term Memory to keep WM size fixed.", kRtabmapTimeThr().c_str()));
+
194 RTABMAP_PARAM(Rtabmap, DetectionRate, float, 1, "Detection rate (Hz). RTAB-Map will filter input images to satisfy this rate.");
+
195 RTABMAP_PARAM(Rtabmap, ImageBufferSize, unsigned int, 1, "Data buffer size (0 min inf).");
+
196 RTABMAP_PARAM(Rtabmap, CreateIntermediateNodes, bool, false, uFormat("Create intermediate nodes between loop closure detection. Only used when %s>0.", kRtabmapDetectionRate().c_str()));
+
197 RTABMAP_PARAM_STR(Rtabmap, WorkingDirectory, "", "Working directory.");
+
198 RTABMAP_PARAM(Rtabmap, MaxRetrieved, unsigned int, 2, "Maximum nodes retrieved at the same time from LTM.");
+
199 RTABMAP_PARAM(Rtabmap, MaxRepublished, unsigned int, 2, uFormat("Maximum nodes republished when requesting missing data. When %s=false, only loop closure data is republished, otherwise the closest nodes from the current localization are republished first. Ignored if %s=false.", kRGBDEnabled().c_str(), kRtabmapPublishLastSignature().c_str()));
+
200 RTABMAP_PARAM(Rtabmap, StatisticLogsBufferedInRAM, bool, true, "Statistic logs buffered in RAM instead of written to hard drive after each iteration.");
+
201 RTABMAP_PARAM(Rtabmap, StatisticLogged, bool, false, "Logging enabled.");
+
202 RTABMAP_PARAM(Rtabmap, StatisticLoggedHeaders, bool, true, "Add column header description to log files.");
+
203 RTABMAP_PARAM(Rtabmap, StartNewMapOnLoopClosure, bool, false, "Start a new map only if there is a global loop closure with a previous map.");
+
204 RTABMAP_PARAM(Rtabmap, StartNewMapOnGoodSignature, bool, false, uFormat("Start a new map only if the first signature is not bad (i.e., has enough features, see %s).", kKpBadSignRatio().c_str()));
+
205 RTABMAP_PARAM(Rtabmap, ImagesAlreadyRectified, bool, true, "Images are already rectified. By default RTAB-Map assumes that received images are rectified. If they are not, they can be rectified by RTAB-Map if this parameter is false.");
+
206 RTABMAP_PARAM(Rtabmap, RectifyOnlyFeatures, bool, false, uFormat("If \"%s\" is false and this parameter is true, the whole RGB image will not be rectified, only the features. Warning: As projection of RGB-D image to point cloud is assuming that images are rectified, the generated point cloud map will have wrong colors if this parameter is true.", kRtabmapImagesAlreadyRectified().c_str()));
+
207
+
208 // Hypotheses selection
+
209 RTABMAP_PARAM(Rtabmap, LoopThr, float, 0.11, "Loop closing threshold.");
+
210 RTABMAP_PARAM(Rtabmap, LoopRatio, float, 0, "The loop closure hypothesis must be over LoopRatio x lastHypothesisValue.");
+
211 RTABMAP_PARAM(Rtabmap, LoopGPS, bool, true, uFormat("Use GPS to filter likelihood (if GPS is recorded). Only locations inside the local radius \"%s\" of the current GPS location are considered for loop closure detection.", kRGBDLocalRadius().c_str()));
+
212 RTABMAP_PARAM(Rtabmap, VirtualPlaceLikelihoodRatio, int, 0, "Likelihood ratio for virtual place (for no loop closure hypothesis): 0=Mean / StdDev, 1=StdDev / (Max-Mean)");
+
213
+
214 // Memory
+
215 RTABMAP_PARAM(Mem, RehearsalSimilarity, float, 0.6, "Rehearsal similarity.");
+
216 RTABMAP_PARAM(Mem, ImageKept, bool, false, "Keep raw images in RAM.");
+
217 RTABMAP_PARAM(Mem, BinDataKept, bool, true, "Keep binary data in db.");
+
218 RTABMAP_PARAM(Mem, RawDescriptorsKept, bool, true, "Raw descriptors kept in memory.");
+
219 RTABMAP_PARAM(Mem, LoadVisualLocalFeaturesOnInit, bool, true, "Load all local visual features (keypoints, descriptors and 3D points) in RAM when loading an existing database. This can add significant time to initialize the memory but the features will be already loaded before computing loop closure transforms. If false, the features are loaded on-demand from the database when a loop closure transformation should be estimated.");
+
220 RTABMAP_PARAM(Mem, MapLabelsAdded, bool, true, "Create map labels. The first node of a map will be labeled as \"map#\" where # is the map ID.");
+
221 RTABMAP_PARAM(Mem, SaveDepth16Format, bool, false, "Save depth image into 16 bits format to reduce memory used. Warning: values over ~65 meters are ignored (maximum 65535 millimeters).");
+
222 RTABMAP_PARAM(Mem, NotLinkedNodesKept, bool, true, "Keep not linked nodes in db (rehearsed nodes and deleted nodes).");
+
223 RTABMAP_PARAM(Mem, IntermediateNodeDataKept, bool, false, "Keep intermediate node data in db.");
+
224 RTABMAP_PARAM_STR(Mem, ImageCompressionFormat, ".jpg", "RGB image compression format. It should be \".jpg\" or \".png\".");
+
225 RTABMAP_PARAM_STR(Mem, DepthCompressionFormat, ".rvl", "Depth image compression format for 16UC1 depth type. It should be \".png\" or \".rvl\". If depth type is 32FC1, \".png\" is used.");
+
226 RTABMAP_PARAM(Mem, STMSize, unsigned int, 10, "Short-term memory size.");
+
227 RTABMAP_PARAM(Mem, IncrementalMemory, bool, true, "SLAM mode, otherwise it is Localization mode.");
+
228 RTABMAP_PARAM(Mem, LocalizationReadOnly, bool, false, uFormat("In localization mode, open the database in read-only mode (ignored if %s=true). Currrenty incompatible with memory management (%s and %s cannot be used) and if there are disjoint sessions in working memory. Last localization pose won't be saved back in the database at the end of the session, so the robot will always restart to original last localization pose, unless %s is used or an external initial pose is provided on initialization.", kMemIncrementalMemory().c_str(), kRtabmapLoopThr().c_str(), kRtabmapMemoryThr().c_str(), kRGBDStartAtOrigin().c_str()).c_str());
+
229 RTABMAP_PARAM(Mem, LocalizationDataSaved, bool, false, uFormat("Save localization data during localization session (when %s=false). When enabled, the database will then also grow in localization mode. This mode would be used only for debugging purpose.", kMemIncrementalMemory().c_str()).c_str());
+
230 RTABMAP_PARAM(Mem, ReduceGraph, bool, false, uFormat("Reduce graph. Merge nodes when loop closures are added (ignoring those with user data). Note that this approach assumes that 100%% of the loop closures accepted are good, so it is highly recommended to enable \"%s\" at the same time.", kRGBDOptimizeMaxError().c_str()));
+
231 RTABMAP_PARAM(Mem, RecentWmRatio, float, 0.2, "Ratio of locations after the last loop closure in WM that cannot be transferred.");
+
232 RTABMAP_PARAM(Mem, TransferSortingByWeightId, bool, false, "On transfer, signatures are sorted by weight->ID only (i.e. the oldest of the lowest weighted signatures are transferred first). If false, the signatures are sorted by weight->Age->ID (i.e. the oldest inserted in WM of the lowest weighted signatures are transferred first). Note that retrieval updates the age, not the ID.");
+
233 RTABMAP_PARAM(Mem, RehearsalIdUpdatedToNewOne, bool, false, uFormat("On merge, update to new id. When false, no copy. Keep this disable if %s=true.", kRtabmapCreateIntermediateNodes().c_str()));
+
234 RTABMAP_PARAM(Mem, RehearsalWeightIgnoredWhileMoving, bool, false, "When the robot is moving, weights are not updated on rehearsal.");
+
235 RTABMAP_PARAM(Mem, GenerateIds, bool, true, "True=Generate location IDs, False=use input image IDs.");
+
236 RTABMAP_PARAM(Mem, BadSignaturesIgnored, bool, false, "Bad signatures are ignored.");
+
237 RTABMAP_PARAM(Mem, InitWMWithAllNodes, bool, false, "Initialize the Working Memory with all nodes in Long-Term Memory. When false, it is initialized with nodes of the previous session.");
+
238 RTABMAP_PARAM(Mem, DepthAsMask, bool, true, "Use depth image as mask when extracting features for vocabulary.");
+
239 RTABMAP_PARAM(Mem, DepthMaskFloorThr, float, 0.0, uFormat("Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if %s is false.", kMemDepthAsMask().c_str()));
+
240 RTABMAP_PARAM(Mem, StereoFromMotion, bool, false, uFormat("Triangulate features without depth using stereo from motion (odometry). It would be ignored if %s is true and the feature detector used supports masking.", kMemDepthAsMask().c_str()));
+
241 RTABMAP_PARAM(Mem, ImagePreDecimation, unsigned int, 1, uFormat("Decimation of the RGB image before visual feature detection. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If %s is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.",kMemDepthAsMask().c_str()));
+
242 RTABMAP_PARAM(Mem, ImagePostDecimation, unsigned int, 1, uFormat("Decimation of the RGB image before saving it to database. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. Decimation is done from the original image. If set to same value than %s, data already decimated is saved (no need to re-decimate the image).", kMemImagePreDecimation().c_str()));
+
243 RTABMAP_PARAM(Mem, CompressionParallelized, bool, true, "Compression of sensor data is multi-threaded.");
+
244 RTABMAP_PARAM(Mem, LaserScanDownsampleStepSize, int, 1, "If > 1, downsample the laser scans when creating a signature.");
+
245 RTABMAP_PARAM(Mem, LaserScanVoxelSize, float, 0.0, uFormat("If > 0 m, voxel filtering is done on laser scans when creating a signature. If the laser scan had normals, they will be removed. To recompute the normals, make sure to use \"%s\" or \"%s\" parameters.", kMemLaserScanNormalK().c_str(), kMemLaserScanNormalRadius().c_str()));
+
246 RTABMAP_PARAM(Mem, LaserScanNormalK, int, 0, "If > 0 and laser scans don't have normals, normals will be computed with K search neighbors when creating a signature.");
+
247 RTABMAP_PARAM(Mem, LaserScanNormalRadius, float, 0.0, "If > 0 m and laser scans don't have normals, normals will be computed with radius search neighbors when creating a signature.");
+
248 RTABMAP_PARAM(Mem, UseOdomFeatures, bool, true, "Use odometry features instead of regenerating them.");
+
249 RTABMAP_PARAM(Mem, UseOdomGravity, bool, false, uFormat("Use odometry instead of IMU orientation to add gravity links to new nodes created. We assume that odometry is already aligned with gravity (e.g., we are using a VIO approach). Gravity constraints are used by graph optimization only if \"%s\" is not zero.", kOptimizerGravitySigma().c_str()));
+
250 RTABMAP_PARAM(Mem, CovOffDiagIgnored, bool, true, "Ignore off diagonal values of the covariance matrix.");
+
251 RTABMAP_PARAM(Mem, GlobalDescriptorStrategy, int, 0, "Extract global descriptor from sensor data. 0=disabled, 1=PyDescriptor");
+
252 RTABMAP_PARAM(Mem, RotateImagesUpsideUp, bool, false, "Rotate images so that upside is up if they are not already. This can be useful in case the robots don't have all same camera orientation but are using the same map, so that not rotation-invariant visual features can still be used across the fleet.");
+
253
+
254 // KeypointMemory (Keypoint-based)
+
255 RTABMAP_PARAM(Kp, NNStrategy, int, 1, "FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, FLANN KdTree Single=5, NanoFLANN KdTree=6");
+
256 RTABMAP_PARAM(Kp, IncrementalDictionary, bool, true, "");
+
257 RTABMAP_PARAM(Kp, IncrementalFlann, bool, true, uFormat("When using FLANN based strategy, add/remove points to its index without always rebuilding the index (the index is only rebuilt when too many of its features have been removed, see \"%s\").", kKpFlannRebalancingFactor().c_str()));
+
258 RTABMAP_PARAM(Kp, FlannRebalancingFactor, float, 2.0, uFormat("Rebuild the incremental FLANN index (see \"%s\") once the ratio (factor-1)/factor of its features has been removed, e.g. half of them for a factor of 2. Rebuilding frees the memory of the removed features and speeds up the searches. Features are mostly removed when memory management is enabled (\"%s\" or \"%s\"). Set to 1 to never rebuild, which also uses less memory as the features don't have to be referenced one by one.", kKpIncrementalFlann().c_str(), kRtabmapTimeThr().c_str(), kRtabmapMemoryThr().c_str()));
+
259 RTABMAP_PARAM(Kp, FlannThreads, int, 1, "Number of threads used for FLANN kNN search (batched queries). Set to 0 for all available.");
+
260 RTABMAP_PARAM(Kp, ByteToFloat, bool, false, uFormat("For %s=1, binary descriptors are converted to float by converting each byte to float instead of converting each bit to float. When converting bytes instead of bits, less memory is used and search is faster at the cost of slightly less accurate matching.", kKpNNStrategy().c_str()));
+
261 RTABMAP_PARAM(Kp, MaxDepth, float, 0, "Filter extracted keypoints by depth (0=inf).");
+
262 RTABMAP_PARAM(Kp, MinDepth, float, 0, "Filter extracted keypoints by depth.");
+
263 RTABMAP_PARAM(Kp, MaxFeatures, int, 500, "Maximum features extracted from the images (0 means not bounded, <0 means no extraction).");
+
264 RTABMAP_PARAM(Kp, SSC, bool, false, "If true, SSC (Suppression via Square Covering) is applied to limit keypoints.");
+
265 RTABMAP_PARAM(Kp, BadSignRatio, float, 0.5, uFormat("Bad signature ratio. If %s=0, the ratio is computed from the average number of words per signature (less than Ratio x AverageWordsPerImage = bad).", kKpMaxFeatures().c_str()));
+
266 RTABMAP_PARAM(Kp, NndrRatio, float, 0.8, "NNDR ratio (A matching pair is detected, if its distance is closer than X times the distance of the second nearest neighbor.)");
+
267#if CV_MAJOR_VERSION > 2 && !defined(HAVE_OPENCV_XFEATURES2D)
+
268 // OpenCV>2 without xFeatures2D module doesn't have BRIEF
+
269 RTABMAP_PARAM(Kp, DetectorStrategy, int, 8, "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat");
+
270#else
+
271 RTABMAP_PARAM(Kp, DetectorStrategy, int, 6, "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat");
+
272#endif
+
273 RTABMAP_PARAM(Kp, TfIdfLikelihoodUsed, bool, true, "Use of the td-idf strategy to compute the likelihood.");
+
274 RTABMAP_PARAM(Kp, Parallelized, bool, true, "If the dictionary update and signature creation were parallelized.");
+
275 RTABMAP_PARAM_STR(Kp, RoiRatios, "0.0 0.0 0.0 0.0", "Region of interest ratios [left, right, top, bottom].");
+
276 RTABMAP_PARAM_STR(Kp, DictionaryPath, "", "Path of the pre-computed dictionary");
+
277 RTABMAP_PARAM(Kp, NewWordsComparedTogether, bool, true, "When adding new words to dictionary, they are compared also with each other (to detect same words in the same signature).");
+
278 RTABMAP_PARAM(Kp, FlannIndexSaved, bool, false, uFormat("Save FLANN index during localization session (when %s=false). The FLANN index will be saved to database after the first time localization mode is used, then on next sessions, the index is reloaded from the database instead of being rebuilt again. This can save significant loading time when the visual word dictionary is big (>1M words). Note that if the dictionary is modified (parameters or data), the index will be rebuilt and saved again on the next session. Ignored on initialization if %s is enabled.", kMemIncrementalMemory().c_str(), kMemInitWMWithAllNodes().c_str()).c_str());
+
279 RTABMAP_PARAM(Kp, SerializeWithChecksum, bool, true, "On serialization of the FLANN index, compute checksum of the data used by the FLANN index. This adds a slight overhead on serialization/deserialization to make sure that the dictionary data correspond to same data used when the index was built.");
+
280 RTABMAP_PARAM(Kp, SubPixWinSize, int, 3, "See cv::cornerSubPix().");
+
281 RTABMAP_PARAM(Kp, SubPixIterations, int, 0, "See cv::cornerSubPix(). 0 disables sub pixel refining.");
+
282 RTABMAP_PARAM(Kp, SubPixEps, double, 0.02, "See cv::cornerSubPix().");
+
283 RTABMAP_PARAM(Kp, GridRows, int, 1, uFormat("Number of rows of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kKpMaxFeatures().c_str()));
+
284 RTABMAP_PARAM(Kp, GridCols, int, 1, uFormat("Number of columns of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kKpMaxFeatures().c_str()));
+
285
+
286 //Database
+
287 RTABMAP_PARAM(DbSqlite3, InMemory, bool, false, "Using database in the memory instead of a file on the hard disk.");
+
288 RTABMAP_PARAM(DbSqlite3, CacheSize, unsigned int, 10000,
+
289 "PRAGMA cache_size: number of database pages kept in SQLite's page cache (approx. cacheSize * page_size bytes, often ~4 KiB per page). "
+
290 "Larger values reduce disk I/O when the working set fits in RAM. SQLite built-in default is typically 2000 pages.");
+
291 RTABMAP_PARAM(DbSqlite3, JournalMode, int, 3,
+
292 "PRAGMA journal_mode: rollback journal storage. See sqlite.org/pragma.html#pragma_journal_mode for more details. "
+
293 "0=DELETE (SQLite default): journal file deleted after each commit. "
+
294 "1=TRUNCATE: journal truncated to zero length. "
+
295 "2=PERSIST: journal file kept, header zeroed after commit. "
+
296 "3=MEMORY: journal in RAM only; faster, weaker crash safety. "
+
297 "4=OFF: no journal; fastest, risk of corruption on crash.");
+
298 RTABMAP_PARAM(DbSqlite3, Synchronous, int, 0,
+
299 "PRAGMA synchronous: how aggressively SQLite syncs the database to disk. See sqlite.org/pragma.html#pragma_synchronous for more details. "
+
300 "0=OFF: no wait for persistent storage; fastest, corruption possible on power loss. "
+
301 "1=NORMAL: sync at critical moments (common SQLite default with WAL). "
+
302 "2=FULL (SQLite safest default): sync after every commit; slowest.");
+
303 RTABMAP_PARAM(DbSqlite3, TempStore, int, 2,
+
304 "PRAGMA temp_store: where SQLite stores temporary tables and indices. See sqlite.org/pragma.html#pragma_temp_store for more details. "
+
305 "0=DEFAULT: SQLite compile-time default (often on-disk temp files). "
+
306 "1=FILE: temporary files in the system temp directory. "
+
307 "2=MEMORY: temporary data in RAM when possible.");
+
308 RTABMAP_PARAM_STR(Db, TargetVersion, "", "Target database version for backward compatibility purpose. Only Major and minor versions are used and should be set (e.g., 0.19 vs 0.20 or 1.0 vs 2.0). Patch version is ignored (e.g., 0.20.1 and 0.20.3 will generate a 0.20 database).");
+
309
+
310 // Keypoints descriptors/detectors
+
311 RTABMAP_PARAM(SURF, Extended, bool, false, "Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors).");
+
312 RTABMAP_PARAM(SURF, HessianThreshold, float, 500, "Threshold for hessian keypoint detector used in SURF.");
+
313 RTABMAP_PARAM(SURF, Octaves, int, 4, "Number of pyramid octaves the keypoint detector will use.");
+
314 RTABMAP_PARAM(SURF, OctaveLayers, int, 2, "Number of octave layers within each octave.");
+
315 RTABMAP_PARAM(SURF, Upright, bool, false, "Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation).");
+
316 RTABMAP_PARAM(SURF, GpuVersion, bool, false, "GPU-SURF: Use GPU version of SURF. This option is enabled only if OpenCV is built with CUDA and GPUs are detected.");
+
317 RTABMAP_PARAM(SURF, GpuKeypointsRatio, float, 0.01, "Used with SURF GPU.");
+
318
+
319 RTABMAP_PARAM(SIFT, NOctaveLayers, int, 3, "The number of layers in each octave. 3 is the value used in D. Lowe paper. The number of octaves is computed automatically from the image resolution. Not used by CudaSift, the number of octaves is still computed automatically.");
+
320 RTABMAP_PARAM(SIFT, ContrastThreshold, double, 0.04, uFormat("The contrast threshold used to filter out weak features in semi-uniform (low-contrast) regions. The larger the threshold, the less features are produced by the detector. Not used by CudaSift (see %s instead).", kSIFTGaussianThreshold().c_str()));
+
321 RTABMAP_PARAM(SIFT, EdgeThreshold, double, 10, "The threshold used to filter out edge-like features. Note that the its meaning is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are filtered out (more features are retained).");
+
322 RTABMAP_PARAM(SIFT, Sigma, double, 1.6, "The sigma of the Gaussian applied to the input image at the octave #0. If your image is captured with a weak camera with soft lenses, you might want to reduce the number.");
+
323 RTABMAP_PARAM(SIFT, PreciseUpscale, bool, false, "Whether to enable precise upscaling in the scale pyramid (OpenCV >= 4.8).");
+
324 RTABMAP_PARAM(SIFT, RootSIFT, bool, false, "Apply RootSIFT normalization of the descriptors.");
+
325 RTABMAP_PARAM(SIFT, Gpu, bool, false, "CudaSift: Use GPU version of SIFT. This option is enabled only if RTAB-Map is built with CudaSift dependency and GPUs are detected.");
+
326 RTABMAP_PARAM(SIFT, GaussianThreshold, float, 2.0, "CudaSift: Threshold on difference of Gaussians for feature pruning. The higher the threshold, the less features with low response/hessian are produced by the detector.");
+
327 RTABMAP_PARAM(SIFT, MaxGaussianThreshold, float, 0.0, uFormat("CudaSift: Maximum threshold on difference of Gaussians for feature pruning (ignored if smaller or equal than %s). The lower the threshold, the less features with high response/hessian are produced by the detector.", kSIFTGaussianThreshold().c_str()));
+
328 RTABMAP_PARAM(SIFT, Upscale, bool, false, "CudaSift: Whether to enable upscaling.");
+
329
+
330 RTABMAP_PARAM(BRIEF, Bytes, int, 32, "Bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes.");
+
331
+
332 RTABMAP_PARAM(FAST, Threshold, int, 20, "Threshold on difference between intensity of the central pixel and pixels of a circle around this pixel.");
+
333 RTABMAP_PARAM(FAST, NonmaxSuppression, bool, true, "If true, non-maximum suppression is applied to detected corners (keypoints).");
+
334 RTABMAP_PARAM(FAST, Gpu, bool, false, "GPU-FAST: Use GPU version of FAST. This option is enabled only if OpenCV is built with CUDA and GPUs are detected.");
+
335 RTABMAP_PARAM(FAST, GpuKeypointsRatio, double, 0.05, "Used with FAST GPU.");
+
336 RTABMAP_PARAM(FAST, MinThreshold, int, 7, "Minimum threshold. Used only when FAST/GridRows and FAST/GridCols are set.");
+
337 RTABMAP_PARAM(FAST, MaxThreshold, int, 200, "Maximum threshold. Used only when FAST/GridRows and FAST/GridCols are set.");
+
338 RTABMAP_PARAM(FAST, GridRows, int, 0, "Grid rows (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.");
+
339 RTABMAP_PARAM(FAST, GridCols, int, 0, "Grid cols (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.");
+
340 RTABMAP_PARAM(FAST, CV, int, 0, "Enable FastCV implementation if non-zero (and RTAB-Map is built with FastCV support). Values should be 9 and 10.");
+
341
+
342 RTABMAP_PARAM(GFTT, QualityLevel, double, 0.001, "");
+
343 RTABMAP_PARAM(GFTT, MinDistance, double, 7, "");
+
344 RTABMAP_PARAM(GFTT, BlockSize, int, 3, "");
+
345 RTABMAP_PARAM(GFTT, UseHarrisDetector, bool, false, "");
+
346 RTABMAP_PARAM(GFTT, K, double, 0.04, "");
+
347 RTABMAP_PARAM(GFTT, Gpu, bool, false, "GPU-GFTT: Use GPU version of GFTT. This option is enabled only if OpenCV>=3 is built with CUDA and GPUs are detected.");
+
348
+
349 RTABMAP_PARAM(ORB, ScaleFactor, float, 2, "Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor will mean that to cover certain scale range you will need more pyramid levels and so the speed will suffer.");
+
350 RTABMAP_PARAM(ORB, NLevels, int, 3, "The number of pyramid levels. The smallest level will have linear size equal to input_image_linear_size/pow(scaleFactor, nlevels).");
+
351 RTABMAP_PARAM(ORB, EdgeThreshold, int, 19, "This is size of the border where the features are not detected. It should roughly match the patchSize parameter.");
+
352 RTABMAP_PARAM(ORB, FirstLevel, int, 0, "It should be 0 in the current implementation.");
+
353 RTABMAP_PARAM(ORB, WTA_K, int, 2, "The number of points that produce each element of the oriented BRIEF descriptor. The default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 random points (of course, those point coordinates are random, but they are generated from the pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3).");
+
354 RTABMAP_PARAM(ORB, ScoreType, int, 0, "The default HARRIS_SCORE=0 means that Harris algorithm is used to rank features (the score is written to KeyPoint::score and is used to retain best nfeatures features); FAST_SCORE=1 is alternative value of the parameter that produces slightly less stable keypoints, but it is a little faster to compute.");
+
355 RTABMAP_PARAM(ORB, PatchSize, int, 31, "size of the patch used by the oriented BRIEF descriptor. Of course, on smaller pyramid layers the perceived image area covered by a feature will be larger.");
+
356 RTABMAP_PARAM(ORB, Gpu, bool, false, "GPU-ORB: Use GPU version of ORB. This option is enabled only if OpenCV is built with CUDA and GPUs are detected.");
+
357
+
358 RTABMAP_PARAM(FREAK, OrientationNormalized, bool, true, "Enable orientation normalization.");
+
359 RTABMAP_PARAM(FREAK, ScaleNormalized, bool, true, "Enable scale normalization.");
+
360 RTABMAP_PARAM(FREAK, PatternScale, float, 22, "Scaling of the description pattern.");
+
361 RTABMAP_PARAM(FREAK, NOctaves, int, 4, "Number of octaves covered by the detected keypoints.");
+
362
+
363 RTABMAP_PARAM(BRISK, Thresh, int, 30, "FAST/AGAST detection threshold score.");
+
364 RTABMAP_PARAM(BRISK, Octaves, int, 3, "Detection octaves. Use 0 to do single scale.");
+
365 RTABMAP_PARAM(BRISK, PatternScale, float, 1,"Apply this scale to the pattern used for sampling the neighbourhood of a keypoint.");
+
366
+
367 RTABMAP_PARAM(KAZE, Extended, bool, false, "Set to enable extraction of extended (128-byte) descriptor.");
+
368 RTABMAP_PARAM(KAZE, Upright, bool, false, "Set to enable use of upright descriptors (non rotation-invariant).");
+
369 RTABMAP_PARAM(KAZE, Threshold, float, 0.001, "Detector response threshold to accept keypoint.");
+
370 RTABMAP_PARAM(KAZE, NOctaves, int, 4, "Maximum octave evolution of the image.");
+
371 RTABMAP_PARAM(KAZE, NOctaveLayers, int, 4, "Default number of sublevels per scale level.");
+
372 RTABMAP_PARAM(KAZE, Diffusivity, int, 1, "Diffusivity type: 0=DIFF_PM_G1, 1=DIFF_PM_G2, 2=DIFF_WEICKERT or 3=DIFF_CHARBONNIER.");
+
373
+
374 RTABMAP_PARAM_STR(SuperPoint, ModelPath, "", "[Required] Path to pre-trained weights Torch file of SuperPoint (*.pt).");
+
375 RTABMAP_PARAM(SuperPoint, Threshold, float, 0.010, "Detector response threshold to accept keypoint.");
+
376 RTABMAP_PARAM(SuperPoint, NMS, bool, true, "If true, non-maximum suppression is applied to detected keypoints.");
+
377 RTABMAP_PARAM(SuperPoint, NMSRadius, int, 4, uFormat("[%s=true] Minimum distance (pixels) between keypoints.", kSuperPointNMS().c_str()));
+
378 RTABMAP_PARAM(SuperPoint, Cuda, bool, true, "Use Cuda device for Torch, otherwise CPU device is used by default.");
+
379
+
380 RTABMAP_PARAM_STR(SuperPointRpautrat, WeightsPath, "", "[Required] SuperPoint weights file (*.pth).");
+
381 RTABMAP_PARAM_STR(SuperPointRpautrat, ModelPath, "", "[Required] SuperPoint python model file (superpoint_pytorch.py).");
+
382 RTABMAP_PARAM(SuperPointRpautrat, Threshold, float, 0.005, "Detector response threshold to accept keypoint.");
+
383 RTABMAP_PARAM(SuperPointRpautrat, NMS, bool, true, "If true, non-maximum suppression is applied to detected keypoints.");
+
384 RTABMAP_PARAM(SuperPointRpautrat, NMSRadius, int, 4, uFormat("[%s=true] Minimum distance (pixels) between keypoints.", kSuperPointRpautratNMS().c_str()));
+
385 RTABMAP_PARAM(SuperPointRpautrat, Cuda, bool, true, "Use Cuda device for Torch, otherwise CPU device is used by default.");
+
386
+
387 RTABMAP_PARAM_STR(PyDetector, Path, "", "Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied.");
+
388 RTABMAP_PARAM(PyDetector, Cuda, bool, true, "Use cuda.");
+
389
+
390 // BayesFilter
+
391 RTABMAP_PARAM(Bayes, VirtualPlacePriorThr, float, 0.9, "Virtual place prior. Considering that we are at a new place, this is the prior probability to move again to a new place (unvisited location). The prior probability to move to a previously visited location is 1 - VirtualPlacePriorThr (split equally against all previously visited locations).");
+
392 RTABMAP_PARAM_STR(Bayes, PredictionLC, "0.1 0.36 0.30 0.16 0.062 0.0151 0.00255 0.000324 2.5e-05 1e-06 4.8e-08 1.2e-09 1.9e-11 2.2e-13 1.7e-15 8.5e-18 2.9e-20 6.9e-23", "Prediction of loop closures (Gaussian-like, here with sigma=1.6) - Format: {VirtualPlaceProb, LoopClosureProb, NeighborLvl1, NeighborLvl2, ...}. Considering we are at a previously visited location, the first value is the probability to move to a new place (unvisited location), the second value is the probability to stay at the same location, the third value is the probability to move to a neighbor or loop closure at the first depth level, the fourth value is the probability to move to a neighbor or loop closure at the second depth level, etc. If the sum of the values is not 1, the difference is normalized against all remaining visited locations. Normally, the sum of these values should be 1.");
+
393 RTABMAP_PARAM(Bayes, FullPredictionUpdate, bool, false, "Regenerate all the prediction matrix on each iteration (otherwise only removed/added ids are updated).");
+
394 RTABMAP_PARAM(Bayes, SparsePrediction, bool, true, uFormat("Use a sparse representation of the prediction instead of a dense matrix, which significantly reduces memory usage and processing time on large maps. Ignored when the values of %s sum to less than 1, as the prediction is then not sparse.", kBayesPredictionLC().c_str()).c_str());
+
395
+
396 // Verify hypotheses
+
397 RTABMAP_PARAM(VhEp, Enabled, bool, false, uFormat("Verify visual loop closure hypothesis by computing a fundamental matrix. This is done prior to transformation computation when %s is enabled.", kRGBDEnabled().c_str()));
+
398 RTABMAP_PARAM(VhEp, MatchCountMin, int, 8, "Minimum of matching visual words pairs to accept the loop hypothesis.");
+
399 RTABMAP_PARAM(VhEp, RansacParam1, float, 3, "Fundamental matrix (see cvFindFundamentalMat()): Max distance (in pixels) from the epipolar line for a point to be inlier.");
+
400 RTABMAP_PARAM(VhEp, RansacParam2, float, 0.99, "Fundamental matrix (see cvFindFundamentalMat()): Performance of RANSAC.");
+
401
+
402 // RGB-D SLAM
+
403 RTABMAP_PARAM(RGBD, Enabled, bool, true, "Activate metric SLAM. If set to false, classic RTAB-Map loop closure detection is done using only images and without any metric information.");
+
404 RTABMAP_PARAM(RGBD, LinearUpdate, float, 0.1, uFormat("Minimum linear displacement (m) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both %s and %s should be set to 0.", Parameters::kRGBDLinearUpdate().c_str(), Parameters::kRGBDAngularUpdate().c_str()));
+
405 RTABMAP_PARAM(RGBD, AngularUpdate, float, 0.1, uFormat("Minimum angular displacement (rad) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both %s and %s should be set to 0.", Parameters::kRGBDLinearUpdate().c_str(), Parameters::kRGBDAngularUpdate().c_str()));
+
406 RTABMAP_PARAM(RGBD, LinearSpeedUpdate, float, 0.0, "Maximum linear speed (m/s) to update the map (0 means not limit).");
+
407 RTABMAP_PARAM(RGBD, AngularSpeedUpdate, float, 0.0, "Maximum angular speed (rad/s) to update the map (0 means not limit).");
+
408 RTABMAP_PARAM(RGBD, AggressiveLoopThr, float, 0.05, uFormat("Loop closure threshold used (overriding %s) when a new mapping session is not yet linked to a map of the highest loop closure hypothesis. In localization mode, this threshold is used when there are no loop closure constraints with any map in the cache (%s). In all cases, the goal is to aggressively loop on a previous map in the database. Only used when %s is enabled. Set 1 to disable.", kRtabmapLoopThr().c_str(), kRGBDMaxOdomCacheSize().c_str(), kRGBDEnabled().c_str()));
+
409 RTABMAP_PARAM(RGBD, NewMapOdomChangeDistance, float, 0, "A new map is created if a change of odometry translation greater than X m is detected (0 m = disabled).");
+
410 RTABMAP_PARAM(RGBD, OptimizeFromGraphEnd, bool, false, "Optimize graph from the newest node. If false, the graph is optimized from the oldest node of the current graph (this adds an overhead computation to detect to oldest node of the current graph, but it can be useful to preserve the map referential from the oldest node). Warning when set to false: when some nodes are transferred, the first referential of the local map may change, resulting in momentary changes in robot/map position (which are annoying in teleoperation).");
+
411 RTABMAP_PARAM(RGBD, OptimizeMaxError, float, 3.0, uFormat("Reject loop closures if optimization error ratio is greater than this value (0=disabled). Ratio is computed as absolute error over standard deviation of each link. This will help to detect when a wrong loop closure is added to the graph. If used with \"%s\", the disabled loop closure links will be removed.", kOptimizerRobust().c_str()));
+
412 RTABMAP_PARAM(RGBD, OptimizeMaxErrorRepairRadius, float, 0.0, uFormat("If two consecutive loop closures are rejected by %s on the same old loop closure link, we will remove that old link, and other old links under that radius if necessary, until optimization is accepted. When optimization is accepted, the old loop closure links are removed from the graph. This feature is useful to reject bad loop closures that were accepted previously. Set to 0 to disable this feature.", kRGBDOptimizeMaxError().c_str()));
+
413 RTABMAP_PARAM(RGBD, MaxLoopClosureDistance, float, 0.0, "Reject loop closures/localizations if the distance from the map is over this distance (0=disabled).");
+
414 RTABMAP_PARAM(RGBD, ForceOdom3DoF, bool, true, uFormat("Force odometry pose to be 3DoF if %s=true.", kRegForce3DoF().c_str()));
+
415 RTABMAP_PARAM(RGBD, StartAtOrigin, bool, false, uFormat("If true, rtabmap will assume the robot is starting from origin of the map. If false, rtabmap will assume the robot is restarting from the last saved localization pose from previous session (the place where it shut down previously). Used only in localization mode (%s=false).", kMemIncrementalMemory().c_str()));
+
416 RTABMAP_PARAM(RGBD, GoalReachedRadius, float, 0.5, "Goal reached radius (m).");
+
417 RTABMAP_PARAM(RGBD, PlanStuckIterations, int, 0, "Mark the current goal node on the path as unreachable if it is not updated after X iterations (0=disabled). If all upcoming nodes on the path are unreachabled, the plan fails.");
+
418 RTABMAP_PARAM(RGBD, PlanLinearVelocity, float, 0, "Linear velocity (m/sec) used to compute path weights.");
+
419 RTABMAP_PARAM(RGBD, PlanAngularVelocity, float, 0, "Angular velocity (rad/sec) used to compute path weights.");
+
420 RTABMAP_PARAM(RGBD, GoalsSavedInUserData, bool, false, "When a goal is received and processed with success, it is saved in user data of the location with this format: \"GOAL:#\".");
+
421 RTABMAP_PARAM(RGBD, MaxLocalRetrieved, unsigned int, 2, "Maximum local locations retrieved (0=disabled) near the current pose in the local map or on the current planned path (those on the planned path have priority).");
+
422 RTABMAP_PARAM(RGBD, LocalRadius, float, 10, "Local radius (m) for nodes selection in the local map. This parameter is used in some approaches about the local map management.");
+
423 RTABMAP_PARAM(RGBD, LocalImmunizationRatio, float, 0.25, "Ratio of working memory for which local nodes are immunized from transfer.");
+
424 RTABMAP_PARAM(RGBD, ScanMatchingIdsSavedInLinks, bool, true, "Save scan matching IDs from one-to-many proximity detection in link's user data.");
+
425 RTABMAP_PARAM(RGBD, NeighborLinkRefining, bool, false, uFormat("When a new node is added to the graph, the transformation of its neighbor link to the previous node is refined using registration approach selected (%s).", kRegStrategy().c_str()));
+
426 RTABMAP_PARAM(RGBD, LoopClosureIdentityGuess, bool, false, uFormat("Use Identity matrix as guess when computing loop closure transform, otherwise no guess is used, thus assuming that registration strategy selected (%s) can deal with transformation estimation without guess.", kRegStrategy().c_str()));
+
427 RTABMAP_PARAM(RGBD, LoopClosureReextractFeatures, bool, false, "Extract features even if there are some already in the nodes. Raw features are not saved in database.");
+
428 RTABMAP_PARAM(RGBD, LocalBundleOnLoopClosure, bool, false, "Do local bundle adjustment with neighborhood of the loop closure.");
+
429 RTABMAP_PARAM(RGBD, InvertedReg, bool, false, "On loop closure, do registration from the target to reference instead of reference to target.");
+
430 RTABMAP_PARAM(RGBD, CreateOccupancyGrid, bool, false, "Create local occupancy grid maps. See \"Grid\" group for parameters.");
+
431 RTABMAP_PARAM(RGBD, MarkerDetection, bool, false, "Detect static markers to be added as landmarks for graph optimization. If input data have already landmarks, this will be ignored. See \"Marker\" group for parameters.");
+
432 RTABMAP_PARAM(RGBD, LoopCovLimited, bool, false, "Limit covariance of non-neighbor links to minimum covariance of neighbor links. In other words, if covariance of a loop closure link is smaller than the minimum covariance of odometry links, its covariance is set to minimum covariance of odometry links.");
+
433 RTABMAP_PARAM(RGBD, MaxOdomCacheSize, int, 10, uFormat("Maximum odometry cache size. Used only in localization mode (when %s=false). This is used to get smoother localizations and to verify localization transforms (when %s!=0) to make sure we don't teleport to a location very similar to one we previously localized on. Set 0 to disable caching.", kMemIncrementalMemory().c_str(), kRGBDOptimizeMaxError().c_str()));
+
434 RTABMAP_PARAM(RGBD, LocalizationSmoothing, bool, true, uFormat("Adjust localization constraints based on optimized odometry cache poses (when %s>0).", kRGBDMaxOdomCacheSize().c_str()));
+
435 RTABMAP_PARAM(RGBD, LocalizationPriorError, double, 0.001, uFormat("The corresponding variance (error x error) set to priors of the map's poses during localization (when %s>0).", kRGBDMaxOdomCacheSize().c_str()));
+
436 RTABMAP_PARAM(RGBD, LocalizationSecondTryWithoutProximityLinks, bool, true, uFormat("When localization is rejected by graph optimization validation, try a second time without proximity links if landmark or loop closure links are also present in odometry cache (see %s). If it succeeds, the proximity links are removed. This assumes that global loop closure and landmark links are more accurate than proximity links.", kRGBDMaxOdomCacheSize().c_str()));
+
437
+
438 // Local/Proximity loop closure detection
+
439 RTABMAP_PARAM(RGBD, ProximityByTime, bool, false, "Detection over all locations in STM.");
+
440 RTABMAP_PARAM(RGBD, ProximityBySpace, bool, true, "Detection over locations (in Working Memory) near in space.");
+
441 RTABMAP_PARAM(RGBD, ProximityMaxGraphDepth, int, 50, "Maximum depth from the current/last loop closure location and the local loop closure hypotheses. Set 0 to ignore.");
+
442 RTABMAP_PARAM(RGBD, ProximityMaxPaths, int, 3, "Maximum paths compared (from the most recent) for proximity detection. 0 means no limit.");
+
443 RTABMAP_PARAM(RGBD, ProximityPathFilteringRadius, float, 1, "Path filtering radius to reduce the number of nodes to compare in a path in one-to-many proximity detection. The nearest node in a path should be inside that radius to be considered for one-to-one proximity detection.");
+
444 RTABMAP_PARAM(RGBD, ProximityPathMaxNeighbors, int, 0, "Maximum neighbor nodes compared on each path for one-to-many proximity detection. Set to 0 to disable one-to-many proximity detection (by merging the laser scans).");
+
445 RTABMAP_PARAM(RGBD, ProximityPathRawPosesUsed, bool, true, "When comparing to a local path for one-to-many proximity detection, merge the scans using the odometry poses (with neighbor link optimizations) instead of the ones in the optimized local graph.");
+
446 RTABMAP_PARAM(RGBD, ProximityAngle, float, 45, "Maximum angle (degrees) for one-to-one proximity detection.");
+
447 RTABMAP_PARAM(RGBD, ProximityOdomGuess, bool, false, "Use odometry as motion guess for one-to-one proximity detection.");
+
448 RTABMAP_PARAM(RGBD, ProximityGlobalScanMap, bool, false, uFormat("Create a global assembled map from laser scans for one-to-many proximity detection, replacing the original one-to-many proximity detection (i.e., detection against local paths). Only used in localization mode (%s=false), otherwise original one-to-many proximity detection is done. Note also that if graph is modified (i.e., memory management is enabled or robot jumps from one disjoint session to another in same database), the global scan map is cleared and one-to-many proximity detection is reverted to original approach.", kMemIncrementalMemory().c_str()));
+
449 RTABMAP_PARAM(RGBD, ProximityMergedScanCovFactor, double, 100.0, uFormat("Covariance factor for one-to-many proximity detection (when %s>0 and scans are used).", kRGBDProximityPathMaxNeighbors().c_str()));
+
450
+
451 // Graph optimization
+
452#ifdef RTABMAP_GTSAM
+
453 RTABMAP_PARAM(Optimizer, Strategy, int, 2, "Graph optimization strategy: 0=TORO, 1=g2o, 2=GTSAM and 3=Ceres.");
+
454 RTABMAP_PARAM(Optimizer, Iterations, int, 20, "Optimization iterations.");
+
455 RTABMAP_PARAM(Optimizer, Epsilon, double, 0.00001, "Stop optimizing when the error improvement is less than this value.");
+
456#else
+
457#ifdef RTABMAP_G2O
+
458 RTABMAP_PARAM(Optimizer, Strategy, int, 1, "Graph optimization strategy: 0=TORO, 1=g2o, 2=GTSAM and 3=Ceres.");
+
459 RTABMAP_PARAM(Optimizer, Iterations, int, 20, "Optimization iterations.");
+
460 RTABMAP_PARAM(Optimizer, Epsilon, double, 0.0, "Stop optimizing when the error improvement is less than this value.");
+
461#else
+
462#ifdef RTABMAP_CERES
+
463 RTABMAP_PARAM(Optimizer, Strategy, int, 3, "Graph optimization strategy: 0=TORO, 1=g2o, 2=GTSAM and 3=Ceres.");
+
464 RTABMAP_PARAM(Optimizer, Iterations, int, 20, "Optimization iterations.");
+
465 RTABMAP_PARAM(Optimizer, Epsilon, double, 0.000001, "Stop optimizing when the error improvement is less than this value.");
+
466#else
+
467 RTABMAP_PARAM(Optimizer, Strategy, int, 0, "Graph optimization strategy: 0=TORO, 1=g2o, 2=GTSAM and 3=Ceres.");
+
468 RTABMAP_PARAM(Optimizer, Iterations, int, 100, "Optimization iterations.");
+
469 RTABMAP_PARAM(Optimizer, Epsilon, double, 0.00001, "Stop optimizing when the error improvement is less than this value.");
+
470#endif
+
471#endif
+
472#endif
+
473 RTABMAP_PARAM(Optimizer, VarianceIgnored, bool, false, "Ignore constraints' variance. If checked, identity information matrix is used for each constraint. Otherwise, an information matrix is generated from the variance saved in the links.");
+
474 RTABMAP_PARAM(Optimizer, Robust, bool, false, "Robust graph optimization using Vertigo (only work for g2o and GTSAM optimization strategies).");
+
475 RTABMAP_PARAM(Optimizer, PriorsIgnored, bool, true, "Ignore prior constraints (global pose or GPS) while optimizing. Currently only g2o and gtsam optimization supports this.");
+
476 RTABMAP_PARAM(Optimizer, LandmarksIgnored, bool, false, "Ignore landmark constraints while optimizing. Currently only g2o and gtsam optimization supports this.");
+
477#if defined(RTABMAP_G2O) || defined(RTABMAP_GTSAM)
+
478 RTABMAP_PARAM(Optimizer, GravitySigma, float, 0.3, uFormat("Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see %s).", kOptimizerStrategy().c_str()));
+
479#else
+
480 RTABMAP_PARAM(Optimizer, GravitySigma, float, 0.0, uFormat("Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see %s).", kOptimizerStrategy().c_str()));
+
481#endif
+
482
+
483#ifdef RTABMAP_ORB_SLAM
+
484 RTABMAP_PARAM(g2o, Solver, int, 3, "0=csparse 1=pcg 2=cholmod 3=Eigen");
+
485#else
+
486 RTABMAP_PARAM(g2o, Solver, int, 0, "0=csparse 1=pcg 2=cholmod 3=Eigen");
+
487#endif
+
488 RTABMAP_PARAM(g2o, Optimizer, int, 0, "0=Levenberg 1=GaussNewton");
+
489
+
490 RTABMAP_PARAM(Optimizer, Baseline, double, 0.075, "When doing bundle adjustment with RGB-D data (mono camera + depth), set a fake baseline (m) so the BA backend treats depth as stereo disparity. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Set to 0 to keep the problem mono (depth observations are ignored). For real stereo data the baseline in the calibration (Tx) is used directly.");
+
491 RTABMAP_PARAM(Optimizer, PixelVariance, double, 1.0, "Pixel variance used on the u/v axes of every bundle adjustment reprojection edge. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Should approximate the squared 1-sigma keypoint localization error in pixels. Set higher (e.g. 4-9) if features are noisy (low texture, motion blur, low light, or large detector scale). Set lower (e.g. 0.01-0.1) if features are sub-pixel refined (Lucas-Kanade tracking, parabolic peak interpolation). Intuition: the lower the pixel variance, the more the optimizer trusts the keypoint positions.");
+
492 RTABMAP_PARAM(Optimizer, DisparityVariance, double, 1.0, "Disparity variance used on the disparity axis (u - u_right) of stereo / RGB-D bundle adjustment edges. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Defaults to the same value as PixelVariance for backward compatibility. Set higher (e.g. 2-4) if your depth source is noisier than your feature detector's u/v precision (typical for stereo block matchers / SGM at long range). Set lower (e.g. 0.01-0.1) if your depth source is more accurate than the u/v detector (typical for ToF / LiDAR-fused depth where range is measured directly rather than triangulated). Intuition: the lower the disparity variance, the more the optimizer trusts the depth measurements. Geometric note: wider baseline and/or higher image resolution improve a block matcher's effective disparity precision (larger disparity magnitudes and finer sub-pixel refinement), so wide-baseline high-resolution stereo pairs can usually afford a lower disparity variance (e.g. 0.1-0.5); narrow-baseline low-resolution pairs should keep it higher (e.g. 1-4).");
+
493 RTABMAP_PARAM(Optimizer, RobustKernelDelta, double, 8, "Robust kernel delta used for bundle adjustment (0 means don't use robust kernel). Applies to all BA-capable backends (g2o, GTSAM, Ceres). Observations with chi2 over this threshold will be ignored in the second optimization pass.");
+
494
+
495 RTABMAP_PARAM(GTSAM, Optimizer, int, 1, "0=Levenberg 1=GaussNewton 2=Dogleg");
+
496 RTABMAP_PARAM(GTSAM, Incremental, bool, false, uFormat("Do graph optimization incrementally (iSAM2) to increase optimization speed on loop closures. Note that only GaussNewton and Dogleg optimization algorithms are supported (%s) in this mode.", kGTSAMOptimizer().c_str()));
+
497 RTABMAP_PARAM(GTSAM, IncRelinearizeThreshold, double, 0.01, "Only relinearize variables whose linear delta magnitude is greater than this threshold. See GTSAM::ISAM2 doc for more info.");
+
498 RTABMAP_PARAM(GTSAM, IncRelinearizeSkip, int, 1, "Only relinearize any variables every X calls to ISAM2::update(). See GTSAM::ISAM2 doc for more info.");
+
499
+
500 // Odometry
+
501 RTABMAP_PARAM(Odom, Strategy, int, 0, "0=Frame-to-Map (F2M) 1=Frame-to-Frame (F2F) 2=Fovis 3=viso2 4=DVO-SLAM 5=ORB_SLAM 6=OKVIS 7=LOAM 8=MSCKF_VIO 9=VINS-Fusion 10=OpenVINS 11=FLOAM 12=Open3D 13=cuVSLAM 14=LIO-SAM");
+
502 RTABMAP_PARAM(Odom, ResetCountdown, int, 0, "Automatically reset odometry after X consecutive images where odometry cannot be computed (a value of 0 disables auto-reset). When a reset occurs, odometry resumes from the last successfully computed pose with large covariance to trigger a new map. If external odometry is used, it will also be reset based on the motion estimated relative to the last computed pose but no large covariance will be received, so that a new map won't be triggered.");
+
503 RTABMAP_PARAM(Odom, Holonomic, bool, true, "If the robot is holonomic (strafing commands can be issued). If not, y value will be estimated from x and yaw values (y=x*tan(yaw)).");
+
504 RTABMAP_PARAM(Odom, FillInfoData, bool, true, "Fill info with data (inliers/outliers features).");
+
505 RTABMAP_PARAM(Odom, ImageBufferSize, unsigned int, 1, "Data buffer size (0 min inf).");
+
506 RTABMAP_PARAM(Odom, FilteringStrategy, int, 0, "0=No filtering 1=Kalman filtering 2=Particle filtering. This filter is used to smooth the odometry output.");
+
507 RTABMAP_PARAM(Odom, ParticleSize, unsigned int, 400, "Number of particles of the filter.");
+
508 RTABMAP_PARAM(Odom, ParticleNoiseT, float, 0.002, "Noise (m) of translation components (x,y,z).");
+
509 RTABMAP_PARAM(Odom, ParticleLambdaT, float, 100, "Lambda of translation components (x,y,z).");
+
510 RTABMAP_PARAM(Odom, ParticleNoiseR, float, 0.002, "Noise (rad) of rotational components (roll,pitch,yaw).");
+
511 RTABMAP_PARAM(Odom, ParticleLambdaR, float, 100, "Lambda of rotational components (roll,pitch,yaw).");
+
512 RTABMAP_PARAM(Odom, KalmanProcessNoise, float, 0.001, "Process noise covariance value.");
+
513 RTABMAP_PARAM(Odom, KalmanMeasurementNoise, float, 0.01, "Process measurement covariance value.");
+
514 RTABMAP_PARAM(Odom, GuessMotion, bool, true, "Guess next transformation from the last motion computed.");
+
515 RTABMAP_PARAM(Odom, GuessSmoothingDelay, float, 0, uFormat("Guess smoothing delay (s). Estimated velocity is averaged based on last transforms up to this maximum delay. This can help to get smoother velocity prediction. Last velocity computed is used directly if \"%s\" is set or the delay is below the odometry rate.", kOdomFilteringStrategy().c_str()));
+
516 RTABMAP_PARAM(Odom, KeyFrameThr, float, 0.3, "[Visual] Create a new keyframe when the number of inliers drops under this ratio of features in last frame. Setting the value to 0 means that a keyframe is created for each processed frame.");
+
517 RTABMAP_PARAM(Odom, VisKeyFrameThr, int, 150, "[Visual] Create a new keyframe when the number of inliers drops under this threshold. Setting the value to 0 means that a keyframe is created for each processed frame.");
+
518 RTABMAP_PARAM(Odom, ScanKeyFrameThr, float, 0.9, "[Geometry] Create a new keyframe when the number of ICP inliers drops under this ratio of points in last frame's scan. Setting the value to 0 means that a keyframe is created for each processed frame.");
+
519 RTABMAP_PARAM(Odom, ImageDecimation, unsigned int, 1, uFormat("Decimation of the RGB image before registration. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If %s is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.", kVisDepthAsMask().c_str()));
+
520 RTABMAP_PARAM(Odom, AlignWithGround, bool, false, "Align odometry with the ground on initialization.");
+
521 RTABMAP_PARAM(Odom, Deskewing, bool, true, "Lidar deskewing. If input lidar has time channel, it will be deskewed with a constant motion model (with IMU orientation and/or guess if provided).");
+
522
+
523 // Odometry Frame-to-Map
+
524 RTABMAP_PARAM(OdomF2M, MaxSize, int, 2000, "[Visual] Local map size: If > 0 (example 5000), the odometry will maintain a local map of X maximum words.");
+
525 RTABMAP_PARAM(OdomF2M, MaxNewFeatures, int, 0, "[Visual] Maximum features (sorted by keypoint response) added to local map from a new key-frame. 0 means no limit.");
+
526 RTABMAP_PARAM(OdomF2M, InitDepthFactor, float, 0.05, "[Visual] Depth factor used to initialize depth of features without depth. Depth = Factor * fx.");
+
527 RTABMAP_PARAM(OdomF2M, FloorThreshold, float, 0.0, "[Visual] Only track features in 3D feature map that are over this threshold (height in base frame). Can be useful to ignore reflections on the floor. 0 means disabled.");
+
528 RTABMAP_PARAM(OdomF2M, ScanMaxSize, int, 2000, "[Geometry] Maximum local scan map size.");
+
529 RTABMAP_PARAM(OdomF2M, ScanSubtractRadius, float, 0.05, "[Geometry] Radius used to filter points of a new added scan to local map. This could match the voxel size of the scans.");
+
530 RTABMAP_PARAM(OdomF2M, ScanSubtractAngle, float, 45, uFormat("[Geometry] Max angle (degrees) used to filter points of a new added scan to local map (when \"%s\">0). 0 means any angle.", kOdomF2MScanSubtractRadius().c_str()).c_str());
+
531 RTABMAP_PARAM(OdomF2M, ScanRange, float, 0, "[Geometry] Distance Range used to filter points of local map (when > 0). 0 means local map is updated using time and not range.");
+
532 RTABMAP_PARAM(OdomF2M, ValidDepthRatio, float, 0.75, "If a new frame has points without valid depth, they are added to local feature map only if points with valid depth on total points is over this ratio. Setting to 1 means no points without valid depth are added to local feature map.");
+
533#if defined(RTABMAP_G2O) || defined(RTABMAP_ORB_SLAM)
+
534 RTABMAP_PARAM(OdomF2M, BundleAdjustment, int, 1, uFormat("Local bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()));
+
535#else
+
536 RTABMAP_PARAM(OdomF2M, BundleAdjustment, int, 0, uFormat("Local bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()));
+
537#endif
+
538 RTABMAP_PARAM(OdomF2M, BundleAdjustmentMaxFrames, int, 10, "Maximum frames used for bundle adjustment (0=inf or all current frames in the local map).");
+
539 RTABMAP_PARAM(OdomF2M, BundleAdjustmentMinMotion, float, 0.0, "To create a new keyframe with bundle adjustment, a minimum motion (in pixels) can be required. The motion is computed by the average distance between inliers of the previous keyframe and new frame.");
+
540 RTABMAP_PARAM(OdomF2M, BundleAdjustmentMaxKeyFramesPerFeature, int, 0, "Maximum keyframes per feature for bundle adjustment. 0 means not limit.");
+
541 RTABMAP_PARAM(OdomF2M, BundleUpdateFeatureMapOnAllFrames, bool, false, uFormat("Update 3D local feature map on every frame with bundle adjustment. Recommended if %s=false and %s=true so that features without depth are better triangulated on every frame (not only on keyframes). If disabled, the feature map is updated only when a new keyframe is added (legacy approach).", kVisDepthAsMask().c_str(), kMemUseOdomFeatures().c_str()));
+
542
+
543 // Odometry Mono
+
544 RTABMAP_PARAM(OdomMono, InitMinFlow, float, 100, "Minimum optical flow required for the initialization step.");
+
545 RTABMAP_PARAM(OdomMono, InitMinTranslation, float, 0.1, "Minimum translation required for the initialization step.");
+
546 RTABMAP_PARAM(OdomMono, MinTranslation, float, 0.02, "Minimum translation to add new points to local map. On initialization, translation x 5 is used as the minimum.");
+
547 RTABMAP_PARAM(OdomMono, MaxVariance, float, 0.01, "Maximum variance to add new points to local map.");
+
548
+
549 // Odometry Fovis
+
550 RTABMAP_PARAM(OdomFovis, FeatureWindowSize, int, 9, "The size of the n x n image patch surrounding each feature, used for keypoint matching.");
+
551 RTABMAP_PARAM(OdomFovis, MaxPyramidLevel, int, 3, "The maximum Gaussian pyramid level to process the image at. Pyramid level 1 corresponds to the original image.");
+
552 RTABMAP_PARAM(OdomFovis, MinPyramidLevel, int, 0, "The minimum pyramid level.");
+
553 RTABMAP_PARAM(OdomFovis, TargetPixelsPerFeature, int, 250, "Specifies the desired feature density as a ratio of input image pixels per feature detected. This number is used to control the adaptive feature thresholding.");
+
554 RTABMAP_PARAM(OdomFovis, FastThreshold, int, 20, "FAST threshold.");
+
555 RTABMAP_PARAM(OdomFovis, UseAdaptiveThreshold, bool, true, "Use FAST adaptive threshold.");
+
556 RTABMAP_PARAM(OdomFovis, FastThresholdAdaptiveGain, double, 0.005, "FAST threshold adaptive gain.");
+
557 RTABMAP_PARAM(OdomFovis, UseHomographyInitialization, bool, true, "Use homography initialization.");
+
558
+
559 RTABMAP_PARAM(OdomFovis, UseBucketing, bool, true, "");
+
560 RTABMAP_PARAM(OdomFovis, BucketWidth, int, 80, "");
+
561 RTABMAP_PARAM(OdomFovis, BucketHeight, int, 80, "");
+
562 RTABMAP_PARAM(OdomFovis, MaxKeypointsPerBucket, int, 25, "");
+
563 RTABMAP_PARAM(OdomFovis, UseImageNormalization, bool, false, "");
+
564
+
565 RTABMAP_PARAM(OdomFovis, InlierMaxReprojectionError, double, 1.5, "The maximum image-space reprojection error (in pixels) a feature match is allowed to have and still be considered an inlier in the set of features used for motion estimation.");
+
566 RTABMAP_PARAM(OdomFovis, CliqueInlierThreshold, double, 0.1, "See Howard's greedy max-clique algorithm for determining the maximum set of mutually consisten feature matches. This specifies the compatibility threshold, in meters.");
+
567 RTABMAP_PARAM(OdomFovis, MinFeaturesForEstimate, int, 20, "Minimum number of features in the inlier set for the motion estimate to be considered valid.");
+
568 RTABMAP_PARAM(OdomFovis, MaxMeanReprojectionError, double, 10.0, "Maximum mean reprojection error over the inlier feature matches for the motion estimate to be considered valid.");
+
569 RTABMAP_PARAM(OdomFovis, UseSubpixelRefinement, bool, true, "Specifies whether or not to refine feature matches to subpixel resolution.");
+
570 RTABMAP_PARAM(OdomFovis, FeatureSearchWindow, int, 25, "Specifies the size of the search window to apply when searching for feature matches across time frames. The search is conducted around the feature location predicted by the initial rotation estimate.");
+
571 RTABMAP_PARAM(OdomFovis, UpdateTargetFeaturesWithRefined, bool, false, "When subpixel refinement is enabled, the refined feature locations can be saved over the original feature locations. This has a slightly negative impact on frame-to-frame visual odometry, but is likely better when using this library as part of a visual SLAM algorithm.");
+
572
+
573 RTABMAP_PARAM(OdomFovis, StereoRequireMutualMatch, bool, true, "");
+
574 RTABMAP_PARAM(OdomFovis, StereoMaxDistEpipolarLine, double, 1.5, "");
+
575 RTABMAP_PARAM(OdomFovis, StereoMaxRefinementDisplacement, double, 1.0, "");
+
576 RTABMAP_PARAM(OdomFovis, StereoMaxDisparity, int, 128, "");
+
577
+
578 // Odometry viso2
+
579 RTABMAP_PARAM(OdomViso2, RansacIters, int, 200, "Number of RANSAC iterations.");
+
580 RTABMAP_PARAM(OdomViso2, InlierThreshold, double, 2.0, "Fundamental matrix inlier threshold.");
+
581 RTABMAP_PARAM(OdomViso2, Reweighting, bool, true, "Lower border weights (more robust to calibration errors).");
+
582 RTABMAP_PARAM(OdomViso2, MatchNmsN, int, 3, "Non-max-suppression: min. distance between maxima (in pixels).");
+
583 RTABMAP_PARAM(OdomViso2, MatchNmsTau, int, 50, "Non-max-suppression: interest point peakiness threshold.");
+
584 RTABMAP_PARAM(OdomViso2, MatchBinsize, int, 50, "Matching bin width/height (affects efficiency only).");
+
585 RTABMAP_PARAM(OdomViso2, MatchRadius, int, 200, "Matching radius (du/dv in pixels).");
+
586 RTABMAP_PARAM(OdomViso2, MatchDispTolerance, int, 2, "Disparity tolerance for stereo matches (in pixels).");
+
587 RTABMAP_PARAM(OdomViso2, MatchOutlierDispTolerance, int, 5, "Outlier removal: disparity tolerance (in pixels).");
+
588 RTABMAP_PARAM(OdomViso2, MatchOutlierFlowTolerance, int, 5, "Outlier removal: flow tolerance (in pixels).");
+
589 RTABMAP_PARAM(OdomViso2, MatchMultiStage, bool, true, "Multistage matching (denser and faster).");
+
590 RTABMAP_PARAM(OdomViso2, MatchHalfResolution, bool, true, "Match at half resolution, refine at full resolution.");
+
591 RTABMAP_PARAM(OdomViso2, MatchRefinement, int, 1, "Refinement (0=none,1=pixel,2=subpixel).");
+
592 RTABMAP_PARAM(OdomViso2, BucketMaxFeatures, int, 2, "Maximal number of features per bucket.");
+
593 RTABMAP_PARAM(OdomViso2, BucketWidth, double, 50, "Width of bucket.");
+
594 RTABMAP_PARAM(OdomViso2, BucketHeight, double, 50, "Height of bucket.");
+
595
+
596 // Odometry ORB_SLAM
+
597 RTABMAP_PARAM_STR(OdomORBSLAM, VocPath, "", "Path to ORB vocabulary (*.txt).");
+
598 RTABMAP_PARAM(OdomORBSLAM, Bf, double, 0.076, "Fake IR projector baseline (m) used only when stereo is not used.");
+
599 RTABMAP_PARAM(OdomORBSLAM, ThDepth, double, 40.0, "Close/Far threshold. Baseline times.");
+
600 RTABMAP_PARAM(OdomORBSLAM, Fps, float, 0.0, "Camera FPS (0 to estimate from input data).");
+
601 RTABMAP_PARAM(OdomORBSLAM, MaxFeatures, int, 1000, "Maximum ORB features extracted per frame.");
+
602 RTABMAP_PARAM(OdomORBSLAM, MapSize, int, 3000, "Maximum size of the feature map (0 means infinite). Only supported with ORB_SLAM2.");
+
603 RTABMAP_PARAM(OdomORBSLAM, Inertial, bool, false, "Enable IMU. Only supported with ORB_SLAM3.");
+
604 RTABMAP_PARAM(OdomORBSLAM, GyroNoise, double, 0.01, "IMU gyroscope \"white noise\".");
+
605 RTABMAP_PARAM(OdomORBSLAM, AccNoise, double, 0.1, "IMU accelerometer \"white noise\".");
+
606 RTABMAP_PARAM(OdomORBSLAM, GyroWalk, double, 0.000001, "IMU gyroscope \"random walk\".");
+
607 RTABMAP_PARAM(OdomORBSLAM, AccWalk, double, 0.0001, "IMU accelerometer \"random walk\".");
+
608 RTABMAP_PARAM(OdomORBSLAM, SamplingRate, double, 0, "IMU sampling rate (0 to estimate from input data).");
+
609
+
610
+
611 // Odometry OKVIS
+
612 RTABMAP_PARAM_STR(OdomOKVIS, ConfigPath, "", "Path of OKVIS config file.");
+
613
+
614 // Odometry LOAM
+
615 RTABMAP_PARAM(OdomLOAM, Sensor, int, 2, "Velodyne sensor: 0=VLP-16, 1=HDL-32, 2=HDL-64E");
+
616 RTABMAP_PARAM(OdomLOAM, ScanPeriod, float, 0.1, "Scan period (s)");
+
617 RTABMAP_PARAM(OdomLOAM, Resolution, float, 0.2, "Map resolution");
+
618 RTABMAP_PARAM(OdomLOAM, LinVar, float, 0.01, "Linear output variance.");
+
619 RTABMAP_PARAM(OdomLOAM, AngVar, float, 0.01, "Angular output variance.");
+
620 RTABMAP_PARAM(OdomLOAM, LocalMapping, bool, true, "Local mapping. It adds more time to compute odometry, but accuracy is significantly improved.");
+
621
+
622 // Odometry MSCKF_VIO
+
623 RTABMAP_PARAM(OdomMSCKF, GridRow, int, 4, "");
+
624 RTABMAP_PARAM(OdomMSCKF, GridCol, int, 5, "");
+
625 RTABMAP_PARAM(OdomMSCKF, GridMinFeatureNum, int, 3, "");
+
626 RTABMAP_PARAM(OdomMSCKF, GridMaxFeatureNum, int, 4, "");
+
627 RTABMAP_PARAM(OdomMSCKF, PyramidLevels, int, 3, "");
+
628 RTABMAP_PARAM(OdomMSCKF, PatchSize, int, 15, "");
+
629 RTABMAP_PARAM(OdomMSCKF, FastThreshold, int, 10, "");
+
630 RTABMAP_PARAM(OdomMSCKF, MaxIteration, int, 30, "");
+
631 RTABMAP_PARAM(OdomMSCKF, TrackPrecision, double, 0.01, "");
+
632 RTABMAP_PARAM(OdomMSCKF, RansacThreshold, double, 3, "");
+
633 RTABMAP_PARAM(OdomMSCKF, StereoThreshold, double, 5, "");
+
634 RTABMAP_PARAM(OdomMSCKF, PositionStdThreshold, double, 8.0, "");
+
635 RTABMAP_PARAM(OdomMSCKF, RotationThreshold, double, 0.2618, "");
+
636 RTABMAP_PARAM(OdomMSCKF, TranslationThreshold, double, 0.4, "");
+
637 RTABMAP_PARAM(OdomMSCKF, TrackingRateThreshold, double, 0.5, "");
+
638 RTABMAP_PARAM(OdomMSCKF, OptTranslationThreshold, double, 0, "");
+
639 RTABMAP_PARAM(OdomMSCKF, NoiseGyro, double, 0.005, "");
+
640 RTABMAP_PARAM(OdomMSCKF, NoiseAcc, double, 0.05, "");
+
641 RTABMAP_PARAM(OdomMSCKF, NoiseGyroBias, double, 0.001, "");
+
642 RTABMAP_PARAM(OdomMSCKF, NoiseAccBias, double, 0.01, "");
+
643 RTABMAP_PARAM(OdomMSCKF, NoiseFeature, double, 0.035, "");
+
644 RTABMAP_PARAM(OdomMSCKF, InitCovVel, double, 0.25, "");
+
645 RTABMAP_PARAM(OdomMSCKF, InitCovGyroBias, double, 0.01, "");
+
646 RTABMAP_PARAM(OdomMSCKF, InitCovAccBias, double, 0.01, "");
+
647 RTABMAP_PARAM(OdomMSCKF, InitCovExRot, double, 0.00030462, "");
+
648 RTABMAP_PARAM(OdomMSCKF, InitCovExTrans, double, 0.000025, "");
+
649 RTABMAP_PARAM(OdomMSCKF, MaxCamStateSize, int, 20, "");
+
650
+
651 // Odometry VINS-Fusion
+
652 RTABMAP_PARAM_STR(OdomVINSFusion, ConfigPath, "", "Path of VINS-Fusion config file.");
+
653
+
654 // Odometry OpenVINS
+
655 RTABMAP_PARAM_STR(OdomOpenVINS, ConfigPath, "", "Path of OpenVINS config file (*.yaml). Same format used than OpenVINS library. Note that any parameter from that config file will overwrite the same parameter in OdomOpenVINS group.");
+
656 RTABMAP_PARAM(OdomOpenVINS, UseStereo, bool, true, "If we have more than 1 camera, if we should try to track stereo constraints between pairs.");
+
657 RTABMAP_PARAM(OdomOpenVINS, UseKLT, bool, true, "If true we will use KLT, otherwise use a ORB descriptor + robust matching.");
+
658 RTABMAP_PARAM(OdomOpenVINS, NumPts, int, 200, "Number of points (per camera) we will extract and try to track.");
+
659 RTABMAP_PARAM(OdomOpenVINS, MinPxDist, int, 15, "Eistance between features (features near each other provide less information).");
+
660 RTABMAP_PARAM(OdomOpenVINS, FiTriangulate1d, bool, false, "If we should perform 1d triangulation instead of 3d.");
+
661 RTABMAP_PARAM(OdomOpenVINS, FiRefineFeatures, bool, true, "If we should perform Levenberg-Marquardt refinement.");
+
662 RTABMAP_PARAM(OdomOpenVINS, FiMaxRuns, int, 5, "Max runs for Levenberg-Marquardt.");
+
663 RTABMAP_PARAM(OdomOpenVINS, FiMaxBaseline, double, 40, "Max baseline ratio to accept triangulated features.");
+
664 RTABMAP_PARAM(OdomOpenVINS, FiMaxCondNumber, double, 10000, "Max condition number of linear triangulation matrix accept triangulated features.");
+
665
+
666 RTABMAP_PARAM(OdomOpenVINS, UseFEJ, bool, true, "If first-estimate Jacobians should be used (enable for good consistency).");
+
667 RTABMAP_PARAM(OdomOpenVINS, Integration, int, 1, "0=discrete, 1=rk4, 2=analytical (if rk4 or analytical used then analytical covariance propagation is used).");
+
668 RTABMAP_PARAM(OdomOpenVINS, CalibCamExtrinsics, bool, false, "Bool to determine whether or not to calibrate imu-to-camera pose.");
+
669 RTABMAP_PARAM(OdomOpenVINS, CalibCamIntrinsics, bool, false, "Bool to determine whether or not to calibrate camera intrinsics.");
+
670 RTABMAP_PARAM(OdomOpenVINS, CalibCamTimeoffset, bool, false, "Bool to determine whether or not to calibrate camera to IMU time offset.");
+
671 RTABMAP_PARAM(OdomOpenVINS, CalibIMUIntrinsics, bool, false, "Bool to determine whether or not to calibrate the IMU intrinsics.");
+
672 RTABMAP_PARAM(OdomOpenVINS, CalibIMUGSensitivity, bool, false, "Bool to determine whether or not to calibrate the Gravity sensitivity.");
+
673 RTABMAP_PARAM(OdomOpenVINS, MaxClones, int, 11, "Max clone size of sliding window.");
+
674 RTABMAP_PARAM(OdomOpenVINS, MaxSLAM, int, 50, "Max number of estimated SLAM features.");
+
675 RTABMAP_PARAM(OdomOpenVINS, MaxSLAMInUpdate, int, 25, "Max number of SLAM features we allow to be included in a single EKF update..");
+
676 RTABMAP_PARAM(OdomOpenVINS, MaxMSCKFInUpdate, int, 50, "Max number of MSCKF features we will use at a given image timestep..");
+
677 RTABMAP_PARAM(OdomOpenVINS, FeatRepMSCKF, int, 0, "What representation our features are in (msckf features).");
+
678 RTABMAP_PARAM(OdomOpenVINS, FeatRepSLAM, int, 4, "What representation our features are in (slam features).");
+
679 RTABMAP_PARAM(OdomOpenVINS, DtSLAMDelay, double, 0.0, "Delay, in seconds, that we should wait from init before we start estimating SLAM features.");
+
680 RTABMAP_PARAM(OdomOpenVINS, GravityMag, double, 9.81, "Gravity magnitude in the global frame (i.e. should be 9.81 typically).");
+
681 RTABMAP_PARAM_STR(OdomOpenVINS, LeftMaskPath, "", "Mask for left image.");
+
682 RTABMAP_PARAM_STR(OdomOpenVINS, RightMaskPath, "", "Mask for right image.");
+
683
+
684 RTABMAP_PARAM(OdomOpenVINS, InitWindowTime, double, 2.0, "Amount of time we will initialize over (seconds).");
+
685 RTABMAP_PARAM(OdomOpenVINS, InitIMUThresh, double, 1.0, "Variance threshold on our acceleration to be classified as moving.");
+
686 RTABMAP_PARAM(OdomOpenVINS, InitMaxDisparity, double, 10.0, "Max disparity to consider the platform stationary (dependent on resolution).");
+
687 RTABMAP_PARAM(OdomOpenVINS, InitMaxFeatures, int, 50, "How many features to track during initialization (saves on computation).");
+
688 RTABMAP_PARAM(OdomOpenVINS, InitDynUse, bool, false, "If dynamic initialization should be used.");
+
689 RTABMAP_PARAM(OdomOpenVINS, InitDynMLEOptCalib, bool, false, "If we should optimize calibration during intialization (not recommended).");
+
690 RTABMAP_PARAM(OdomOpenVINS, InitDynMLEMaxIter, int, 50, "How many iterations the MLE refinement should use (zero to skip the MLE).");
+
691 RTABMAP_PARAM(OdomOpenVINS, InitDynMLEMaxTime, double, 0.05, "How many seconds the MLE should be completed in.");
+
692 RTABMAP_PARAM(OdomOpenVINS, InitDynMLEMaxThreads, int, 6, "How many threads the MLE should use.");
+
693 RTABMAP_PARAM(OdomOpenVINS, InitDynNumPose, int, 6, "Number of poses to use within our window time (evenly spaced).");
+
694 RTABMAP_PARAM(OdomOpenVINS, InitDynMinDeg, double, 10.0, "Orientation change needed to try to init.");
+
695 RTABMAP_PARAM(OdomOpenVINS, InitDynInflationOri, double, 10.0, "What to inflate the recovered q_GtoI covariance by.");
+
696 RTABMAP_PARAM(OdomOpenVINS, InitDynInflationVel, double, 100.0, "What to inflate the recovered v_IinG covariance by.");
+
697 RTABMAP_PARAM(OdomOpenVINS, InitDynInflationBg, double, 10.0, "What to inflate the recovered bias_g covariance by.");
+
698 RTABMAP_PARAM(OdomOpenVINS, InitDynInflationBa, double, 100.0, "What to inflate the recovered bias_a covariance by.");
+
699 RTABMAP_PARAM(OdomOpenVINS, InitDynMinRecCond, double, 1e-15, "Reciprocal condition number thresh for info inversion.");
+
700
+
701 RTABMAP_PARAM(OdomOpenVINS, TryZUPT, bool, true, "If we should try to use zero velocity update.");
+
702 RTABMAP_PARAM(OdomOpenVINS, ZUPTChi2Multiplier, double, 0.0, "Chi2 multiplier for zero velocity.");
+
703 RTABMAP_PARAM(OdomOpenVINS, ZUPTMaxVelodicy, double, 0.1, "Max velocity we will consider to try to do a zupt (i.e. if above this, don't do zupt).");
+
704 RTABMAP_PARAM(OdomOpenVINS, ZUPTNoiseMultiplier, double, 10.0, "Multiplier of our zupt measurement IMU noise matrix (default should be 1.0).");
+
705 RTABMAP_PARAM(OdomOpenVINS, ZUPTMaxDisparity, double, 0.5, "Max disparity we will consider to try to do a zupt (i.e. if above this, don't do zupt).");
+
706 RTABMAP_PARAM(OdomOpenVINS, ZUPTOnlyAtBeginning, bool, false, "If we should only use the zupt at the very beginning static initialization phase.");
+
707
+
708 RTABMAP_PARAM(OdomOpenVINS, AccelerometerNoiseDensity, double, 0.01, "[m/s^2/sqrt(Hz)] (accel \"white noise\").");
+
709 RTABMAP_PARAM(OdomOpenVINS, AccelerometerRandomWalk, double, 0.001, "[m/s^3/sqrt(Hz)] (accel bias diffusion).");
+
710 RTABMAP_PARAM(OdomOpenVINS, GyroscopeNoiseDensity, double, 0.001, "[rad/s/sqrt(Hz)] (gyro \"white noise\").");
+
711 RTABMAP_PARAM(OdomOpenVINS, GyroscopeRandomWalk, double, 0.0001, "[rad/s^2/sqrt(Hz)] (gyro bias diffusion).");
+
712 RTABMAP_PARAM(OdomOpenVINS, UpMSCKFSigmaPx, double, 1.0, "Pixel noise for MSCKF features.");
+
713 RTABMAP_PARAM(OdomOpenVINS, UpMSCKFChi2Multiplier, double, 1.0, "Chi2 multiplier for MSCKF features.");
+
714 RTABMAP_PARAM(OdomOpenVINS, UpSLAMSigmaPx, double, 1.0, "Pixel noise for SLAM features.");
+
715 RTABMAP_PARAM(OdomOpenVINS, UpSLAMChi2Multiplier, double, 1.0, "Chi2 multiplier for SLAM features.");
+
716
+
717 // Odometry Open3D
+
718 RTABMAP_PARAM(OdomOpen3D, MaxDepth, float, 3.0, "Maximum depth.");
+
719 RTABMAP_PARAM(OdomOpen3D, Method, int, 0, "Registration method: 0=PointToPlane, 1=Intensity, 2=Hybrid.");
+
720
+
721 // Odometry cuVSLAM
+
722 RTABMAP_PARAM(OdomCuVSLAM, MulticamMode, int, 0, "cuVSLAM multicam_mode setting: 0=moderate, 1=performance, 2=precision.");
+
723
+
724 // Odometry LIO-SAM
+
725 RTABMAP_PARAM_STR(OdomLIOSAM, ConfigPath, "", "Path to LIO-SAM params.yaml config file. When set, sensor/IMU/feature parameters are loaded from the file and the individual parameters below are ignored.");
+
726 RTABMAP_PARAM(OdomLIOSAM, Sensor, int, 0, "LiDAR sensor: 0=Velodyne, 1=Ouster, 2=Livox");
+
727 RTABMAP_PARAM(OdomLIOSAM, NScan, int, 16, "Number of LiDAR channels (16, 32, 64, 128).");
+
728 RTABMAP_PARAM(OdomLIOSAM, HorizonScan, int, 1800, "Horizontal resolution (Velodyne:1800, Ouster:512/1024/2048).");
+
729 RTABMAP_PARAM(OdomLIOSAM, ImuAccNoise, float, 0.01, "IMU accelerometer white noise.");
+
730 RTABMAP_PARAM(OdomLIOSAM, ImuGyrNoise, float, 0.001, "IMU gyroscope white noise.");
+
731 RTABMAP_PARAM(OdomLIOSAM, ImuAccBiasN, float, 0.0002,"IMU accelerometer bias noise.");
+
732 RTABMAP_PARAM(OdomLIOSAM, ImuGyrBiasN, float, 0.00003,"IMU gyroscope bias noise.");
+
733 RTABMAP_PARAM(OdomLIOSAM, ImuGravity, float, 9.80511,"Gravity magnitude.");
+
734 RTABMAP_PARAM(OdomLIOSAM, EdgeThreshold,float, 1.0, "Edge feature curvature threshold.");
+
735 RTABMAP_PARAM(OdomLIOSAM, SurfThreshold,float, 0.1, "Surface feature curvature threshold.");
+
736 RTABMAP_PARAM(OdomLIOSAM, LinVar, float, 0.01, "Linear output variance.");
+
737 RTABMAP_PARAM(OdomLIOSAM, AngVar, float, 0.01, "Angular output variance.");
+
738
+
739 // Common registration parameters
+
740 RTABMAP_PARAM(Reg, RepeatOnce, bool, true, "Do a second registration with the output of the first registration as guess. Only done if no guess was provided for the first registration (like on loop closure). It can be useful if the registration approach used can use a guess to get better matches.");
+
741 RTABMAP_PARAM(Reg, Strategy, int, 0, "0=Vis, 1=Icp, 2=VisIcp");
+
742 RTABMAP_PARAM(Reg, Force3DoF, bool, false, "Force 3 degrees-of-freedom transform (3Dof: x,y and yaw). Parameters z, roll and pitch will be set to 0.");
+
743
+
744 // Visual registration parameters
+
745 RTABMAP_PARAM(Vis, EstimationType, int, 1, "Motion estimation approach: 0:3D->3D, 1:3D->2D (PnP), 2:2D->2D (Epipolar Geometry)");
+
746 RTABMAP_PARAM(Vis, InlierDistance, float, 0.1, uFormat("[%s = 0] Maximum distance for feature correspondences. Used by 3D->3D estimation approach.", kVisEstimationType().c_str()));
+
747 RTABMAP_PARAM(Vis, RefineIterations, int, 5, uFormat("[%s = 0] Number of iterations used to refine the transformation found by RANSAC. 0 means that the transformation is not refined.", kVisEstimationType().c_str()));
+
748 RTABMAP_PARAM(Vis, PnPReprojError, float, 2, uFormat("[%s = 1] PnP reprojection error.", kVisEstimationType().c_str()));
+
749 RTABMAP_PARAM(Vis, PnPFlags, int, 0, uFormat("[%s = 1] PnP flags: 0=Iterative, 1=EPNP, 2=P3P", kVisEstimationType().c_str()));
+
750#if defined(RTABMAP_G2O) || defined(RTABMAP_ORB_SLAM)
+
751 RTABMAP_PARAM(Vis, PnPRefineIterations, int, 0, uFormat("[%s = 1] Refine iterations. Set to 0 if \"%s\" is also used.", kVisEstimationType().c_str(), kVisBundleAdjustment().c_str()));
+
752#else
+
753 RTABMAP_PARAM(Vis, PnPRefineIterations, int, 1, uFormat("[%s = 1] Refine iterations. Set to 0 if \"%s\" is also used.", kVisEstimationType().c_str(), kVisBundleAdjustment().c_str()));
+
754#endif
+
755 RTABMAP_PARAM(Vis, PnPVarianceMedianRatio, int, 4, uFormat("[%s = 1] Ratio used to compute variance of the estimated transformation if 3D correspondences are provided (should be > 1). The higher it is, the smaller the covariance will be. With accurate depth estimation, this could be set to 2. For depth estimated by stereo, 4 or more maybe used to ignore large errors of very far points.", kVisEstimationType().c_str()));
+
756 RTABMAP_PARAM(Vis, PnPMaxVariance, float, 0.0, uFormat("[%s = 1] Max linear variance between 3D point correspondences after PnP. 0 means disabled.", kVisEstimationType().c_str()));
+
757 RTABMAP_PARAM(Vis, PnPSamplingPolicy, unsigned int, 1, uFormat("[%s = 1] Multi-camera random sampling policy: 0=AUTO, 1=ANY, 2=HOMOGENEOUS. With HOMOGENEOUS policy, RANSAC will be done uniformly against all cameras, so at least 2 matches per camera are required. With ANY policy, RANSAC is not constraint to sample on all cameras at the same time. AUTO policy will use HOMOGENEOUS if there are at least 2 matches per camera, otherwise it will fallback to ANY policy.", kVisEstimationType().c_str()).c_str());
+
758 RTABMAP_PARAM(Vis, PnPSplitLinearCovComponents, bool, false, uFormat("[%s = 1] Compute variance for each linear component instead of using the combined XYZ variance for all linear components.", kVisEstimationType().c_str()).c_str());
+
759
+
760 RTABMAP_PARAM(Vis, EpipolarGeometryVar, float, 0.1, uFormat("[%s = 2] Epipolar geometry maximum variance to accept the transformation.", kVisEstimationType().c_str()));
+
761 RTABMAP_PARAM(Vis, MinInliers, int, 20, "Minimum feature correspondences to compute/accept the transformation.");
+
762 RTABMAP_PARAM(Vis, MeanInliersDistance, float, 0.0, "Maximum distance (m) of the mean distance of inliers from the camera to accept the transformation. 0 means disabled.");
+
763 RTABMAP_PARAM(Vis, MinInliersDistribution, float, 0.0, "Minimum distribution value of the inliers in the image to accept the transformation. The distribution is the second eigen value of the PCA (Principal Component Analysis) on the keypoints of the normalized image [-0.5, 0.5]. The value would be between 0 and 0.5. 0 means disabled.");
+
764
+
765 RTABMAP_PARAM(Vis, Iterations, int, 300, "Maximum iterations to compute the transform.");
+
766#if CV_MAJOR_VERSION > 2 && !defined(HAVE_OPENCV_XFEATURES2D)
+
767 // OpenCV>2 without xFeatures2D module doesn't have BRIEF
+
768 RTABMAP_PARAM(Vis, FeatureType, int, 8, "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat");
+
769#else
+
770 RTABMAP_PARAM(Vis, FeatureType, int, 6, "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat");
+
771#endif
+
772 RTABMAP_PARAM(Vis, MaxFeatures, int, 1000, "0 no limits.");
+
773 RTABMAP_PARAM(Vis, SSC, bool, false, "If true, SSC (Suppression via Square Covering) is applied to limit keypoints.");
+
774 RTABMAP_PARAM(Vis, MaxDepth, float, 0, "Max depth of the features (0 means no limit).");
+
775 RTABMAP_PARAM(Vis, MinDepth, float, 0, "Min depth of the features (0 means no limit).");
+
776 RTABMAP_PARAM(Vis, DepthAsMask, bool, true, "Use depth image as mask when extracting features.");
+
777 RTABMAP_PARAM(Vis, DepthMaskFloorThr, float, 0.0, uFormat("Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if %s is false.", kVisDepthAsMask().c_str()));
+
778 RTABMAP_PARAM_STR(Vis, RoiRatios, "0.0 0.0 0.0 0.0", "Region of interest ratios [left, right, top, bottom].");
+
779 RTABMAP_PARAM(Vis, SubPixWinSize, int, 3, "See cv::cornerSubPix().");
+
780 RTABMAP_PARAM(Vis, SubPixIterations, int, 0, "See cv::cornerSubPix(). 0 disables sub pixel refining.");
+
781 RTABMAP_PARAM(Vis, SubPixEps, float, 0.02, "See cv::cornerSubPix().");
+
782 RTABMAP_PARAM(Vis, GridRows, int, 1, uFormat("Number of rows of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kVisMaxFeatures().c_str()));
+
783 RTABMAP_PARAM(Vis, GridCols, int, 1, uFormat("Number of columns of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kVisMaxFeatures().c_str()));
+
784 RTABMAP_PARAM(Vis, CorType, int, 0, "Correspondences computation approach: 0=Features Matching, 1=Optical Flow");
+
785 RTABMAP_PARAM(Vis, CorNNType, int, 1, uFormat("[%s=0] FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, Brute Force Cross Check=5, SuperGlue=6, GMS=7, FLANN KdTree Single=8, NanoFLANN KdTree=9. Used for features matching approach.", kVisCorType().c_str()));
+
786 RTABMAP_PARAM(Vis, CorNNDR, float, 0.8, uFormat("[%s=0] NNDR: nearest neighbor distance ratio. Used for knn features matching approach.", kVisCorType().c_str()));
+
787 RTABMAP_PARAM(Vis, CorGuessWinSize, int, 40, uFormat("[%s=0] Matching window size (pixels) around projected points when a guess transform is provided to find correspondences. 0 means disabled.", kVisCorType().c_str()));
+
788 RTABMAP_PARAM(Vis, CorGuessMatchToProjection, bool, false, uFormat("[%s=0] Match frame's corners to source's projected points (when guess transform is provided) instead of projected points to frame's corners.", kVisCorType().c_str()));
+
789 RTABMAP_PARAM(Vis, CorFlowWinSize, int, 16, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()));
+
790 RTABMAP_PARAM(Vis, CorFlowIterations, int, 30, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()));
+
791 RTABMAP_PARAM(Vis, CorFlowEps, float, 0.01, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()));
+
792 RTABMAP_PARAM(Vis, CorFlowMaxLevel, int, 3, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()));
+
793 RTABMAP_PARAM(Vis, CorFlowUseMinEigenVals, bool, true, uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach. Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.", kVisCorType().c_str()));
+
794 RTABMAP_PARAM(Vis, CorFlowMinEigThreshold, float, 1e-4, uFormat("[%s=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.", kVisCorFlowUseMinEigenVals().c_str()));
+
795 RTABMAP_PARAM(Vis, CorFlowErrorThreshold, float, 20, uFormat("[%s=false] Filter out features with error greater than this threshold.", kVisCorFlowUseMinEigenVals().c_str()));
+
796 RTABMAP_PARAM(Vis, CorFlowGpu, bool, false, uFormat("[%s=1] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that %s is not used in the GPU implementation.", kVisCorType().c_str(), kVisCorFlowUseMinEigenVals().c_str()));
+
797 #if defined(RTABMAP_G2O) || defined(RTABMAP_ORB_SLAM)
+
798 RTABMAP_PARAM(Vis, BundleAdjustment, int, 1, uFormat("Optimization with bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()));
+
799#else
+
800 RTABMAP_PARAM(Vis, BundleAdjustment, int, 0, uFormat("Optimization with bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()));
+
801#endif
+
802
+
803 // Features matching approaches
+
804 RTABMAP_PARAM_STR(PyMatcher, Path, "", "Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied.");
+
805 RTABMAP_PARAM(PyMatcher, Iterations, int, 20, "Sinkhorn iterations. Used by SuperGlue.");
+
806 RTABMAP_PARAM(PyMatcher, Threshold, float, 0.2, "Used by SuperGlue.");
+
807 RTABMAP_PARAM(PyMatcher, Cuda, bool, true, "Used by SuperGlue.");
+
808 RTABMAP_PARAM_STR(PyMatcher, Model, "indoor", "For SuperGlue, set only \"indoor\" or \"outdoor\". For OANet, set path to one of the pth file (e.g., \"OANet/model/gl3d/sift-4000/model_best.pth\").");
+
809
+
810 RTABMAP_PARAM(GMS, WithRotation, bool, false, "Take rotation transformation into account.");
+
811 RTABMAP_PARAM(GMS, WithScale, bool, false, "Take scale transformation into account.");
+
812 RTABMAP_PARAM(GMS, ThresholdFactor, double, 6.0, "The higher, the less matches.");
+
813
+
814 // Global descriptor approaches
+
815 RTABMAP_PARAM_STR(PyDescriptor, Path, "", "Path to python script file (see available ones in rtabmap/corelib/src/pydescriptor/*). See the header to see where the script should be used.");
+
816 RTABMAP_PARAM(PyDescriptor, Dim, int, 4096, "Descriptor dimension.");
+
817
+
818 // ICP registration parameters
+
819#ifdef RTABMAP_POINTMATCHER
+
820 RTABMAP_PARAM(Icp, Strategy, int, 1, "ICP implementation: 0=Point Cloud Library, 1=libpointmatcher, 2=CCCoreLib (CloudCompare).");
+
821#else
+
822 RTABMAP_PARAM(Icp, Strategy, int, 0, "ICP implementation: 0=Point Cloud Library, 1=libpointmatcher, 2=CCCoreLib (CloudCompare).");
+
823#endif
+
824 RTABMAP_PARAM(Icp, MaxTranslation, float, 0.2, "Maximum ICP translation correction accepted (m).");
+
825 RTABMAP_PARAM(Icp, MaxRotation, float, 0.78, "Maximum ICP rotation correction accepted (rad).");
+
826 RTABMAP_PARAM(Icp, VoxelSize, float, 0.05, "Uniform sampling voxel size (0=disabled).");
+
827 RTABMAP_PARAM(Icp, DownsamplingStep, int, 1, "Downsampling step size (1=no sampling). This is done before uniform sampling.");
+
828 RTABMAP_PARAM(Icp, RangeMin, float, 0, "Minimum range filtering (0=disabled).");
+
829 RTABMAP_PARAM(Icp, RangeMax, float, 0, "Maximum range filtering (0=disabled).");
+
830#ifdef RTABMAP_POINTMATCHER
+
831 RTABMAP_PARAM(Icp, MaxCorrespondenceDistance, float, 0.1, "Max distance for point correspondences.");
+
832#else
+
833 RTABMAP_PARAM(Icp, MaxCorrespondenceDistance, float, 0.05, "Max distance for point correspondences.");
+
834#endif
+
835 RTABMAP_PARAM(Icp, ReciprocalCorrespondences, bool, true, "To be a valid correspondence, the corresponding point in target cloud to point in source cloud should be both their closest closest correspondence.");
+
836 RTABMAP_PARAM(Icp, Iterations, int, 30, "Max iterations.");
+
837 RTABMAP_PARAM(Icp, Epsilon, float, 0, "Set the transformation epsilon (maximum allowable difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution.");
+
838 RTABMAP_PARAM(Icp, CorrespondenceRatio, float, 0.1, "Ratio of matching correspondences to accept the transform.");
+
839 RTABMAP_PARAM(Icp, Force4DoF, bool, false, uFormat("Limit ICP to x, y, z and yaw DoF. Available if %s > 0.", kIcpStrategy().c_str()));
+
840 RTABMAP_PARAM(Icp, FiltersEnabled, int, 3, "Flag to enable filters: 1=\"from\" cloud only, 2=\"to\" cloud only, 3=both.");
+
841#ifdef RTABMAP_POINTMATCHER
+
842 RTABMAP_PARAM(Icp, PointToPlane, bool, true, "Use point to plane ICP.");
+
843#else
+
844 RTABMAP_PARAM(Icp, PointToPlane, bool, false, "Use point to plane ICP.");
+
845#endif
+
846 RTABMAP_PARAM(Icp, PointToPlaneK, int, 5, "Number of neighbors to compute normals for point to plane if the cloud doesn't have already normals.");
+
847 RTABMAP_PARAM(Icp, PointToPlaneRadius, float, 0.0, "Search radius to compute normals for point to plane if the cloud doesn't have already normals.");
+
848 RTABMAP_PARAM(Icp, PointToPlaneGroundNormalsUp, float, 0.0, "Invert normals on ground if they are pointing down (useful for ring-like 3D LiDARs). 0 means disabled, 1 means only normals perfectly aligned with -z axis. This is only done with 3D scans.");
+
849 RTABMAP_PARAM(Icp, PointToPlaneMinComplexity, float, 0.02, uFormat("Minimum structural complexity (0.0=low, 1.0=high) of the scan to do PointToPlane registration, otherwise PointToPoint registration is done instead and strategy from %s is used. This check is done only when %s=true.", kIcpPointToPlaneLowComplexityStrategy().c_str(), kIcpPointToPlane().c_str()));
+
850 RTABMAP_PARAM(Icp, PointToPlaneComplexityCentered, bool, false, uFormat("If false (default), the complexity metric uses the uncentered second-moment matrix (1/N) * sum(n_i * n_i^T), whose smallest eigenvalue directly measures how well the surface normals span R^N. If true, uses centered PCA (cv::PCA covariance) for backwards compatibility -- but the centered metric is known to mis-classify perpendicular-surface scenes as degenerate when normals are consistently viewpoint-flipped (only N distinct directions in N-D collapse to rank N-1 after centering). For true degeneracies (parallel surfaces, e.g. corridors) the two metrics agree because the normal mean is zero. The %s threshold of 0.02 works under either setting.", kIcpPointToPlaneMinComplexity().c_str()));
+
851 RTABMAP_PARAM(Icp, PointToPlaneLowComplexityStrategy, int, 1, uFormat("If structural complexity is below %s: set to 0 so that the transform is automatically rejected, set to 1 (default, legacy) to recompute the transform with PointToPoint and limit its correction in axes with most constraints (e.g., for a corridor-like environment, the resulting transform will be limited in y and yaw, x will taken from the guess), set to 2 to recompute the transform with PointToPoint and accept it \"as is\", set to 3 to keep the PointToPlane transform and apply the same axis-constrained projection as strategy 1.", kIcpPointToPlaneMinComplexity().c_str()));
+
852 RTABMAP_PARAM(Icp, OutlierRatio, float, 0.85, uFormat("Outlier ratio. For libpointmatcher (%s=1), sets TrimmedDistOutlierFilter/ratio for convenience when configuration file is not set. For CCCoreLib (%s=2), sets \"finalOverlapRatio\". For PCL (%s=0), if 0<value<1, installs a RANSAC correspondence rejector with inlier threshold = value * %s. The value should be between 0 and 1.", kIcpStrategy().c_str(), kIcpStrategy().c_str(), kIcpStrategy().c_str(), kIcpMaxCorrespondenceDistance().c_str()));
+
853 RTABMAP_PARAM_STR(Icp, DebugExportFormat, "", "Export scans used for ICP in the specified format (a warning on terminal will be shown with the file paths used). Supported formats are \"pcd\", \"ply\" or \"vtk\". If logger level is debug, from and to scans will stamped, so previous files won't be overwritten.");
+
854
+
855 // libpointmatcher
+
856 RTABMAP_PARAM_STR(Icp, PMConfig, "", uFormat("Configuration file (*.yaml) used by libpointmatcher. Note that data filters set for libpointmatcher are done after filtering done by rtabmap (i.e., %s, %s), so make sure to disable those in rtabmap if you want to use only those from libpointmatcher. Parameters %s, %s and %s are also ignored if configuration file is set.", kIcpVoxelSize().c_str(), kIcpDownsamplingStep().c_str(), kIcpIterations().c_str(), kIcpEpsilon().c_str(), kIcpMaxCorrespondenceDistance().c_str()).c_str());
+
857 RTABMAP_PARAM(Icp, PMMatcherKnn, int, 1, "KDTreeMatcher/knn: number of nearest neighbors to consider it the reference. For convenience when configuration file is not set.");
+
858 RTABMAP_PARAM(Icp, PMMatcherEpsilon, float, 0.0, "KDTreeMatcher/epsilon: approximation to use for the nearest-neighbor search. For convenience when configuration file is not set.");
+
859 RTABMAP_PARAM(Icp, PMMatcherIntensity, bool, false, uFormat("KDTreeMatcher: among nearest neighbors, keep only the one with the most similar intensity. This only work with %s>1.", kIcpPMMatcherKnn().c_str()));
+
860
+
861 RTABMAP_PARAM(Icp, CCSamplingLimit, unsigned int, 50000, "Maximum number of points per cloud (they are randomly resampled below this limit otherwise).");
+
862 RTABMAP_PARAM(Icp, CCFilterOutFarthestPoints, bool, false, "If true, the algorithm will automatically ignore farthest points from the reference, for better convergence.");
+
863 RTABMAP_PARAM(Icp, CCMaxFinalRMS, float, 0.2, "Maximum final RMS error.");
+
864
+
865 // Stereo disparity
+
866 RTABMAP_PARAM(Stereo, WinWidth, int, 15, "Window width.");
+
867 RTABMAP_PARAM(Stereo, WinHeight, int, 3, "Window height.");
+
868 RTABMAP_PARAM(Stereo, Iterations, int, 30, "Maximum iterations.");
+
869 RTABMAP_PARAM(Stereo, MaxLevel, int, 5, "Maximum pyramid level.");
+
870 RTABMAP_PARAM(Stereo, MinDisparity, float, 0.5, "Minimum disparity.");
+
871 RTABMAP_PARAM(Stereo, MaxDisparity, float, 128.0, "Maximum disparity.");
+
872 RTABMAP_PARAM(Stereo, OpticalFlow, bool, true, "Use optical flow to find stereo correspondences, otherwise a simple block matching approach is used.");
+
873 RTABMAP_PARAM(Stereo, SSD, bool, true, uFormat("[%s=false] Use Sum of Squared Differences (SSD) window, otherwise Sum of Absolute Differences (SAD) window is used.", kStereoOpticalFlow().c_str()));
+
874 RTABMAP_PARAM(Stereo, Eps, double, 0.01, uFormat("[%s=true] Epsilon stop criterion.", kStereoOpticalFlow().c_str()));
+
875 RTABMAP_PARAM(Stereo, UseMinEigenVals, bool, true, uFormat("[%s=true] Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.", kStereoOpticalFlow().c_str()));
+
876 RTABMAP_PARAM(Stereo, MinEigThreshold, double, 1e-4, uFormat("[%s=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.", kStereoUseMinEigenVals().c_str()));
+
877 RTABMAP_PARAM(Stereo, ErrorThreshold, double, 50, uFormat("[%s=false] Filter out features with error greater than this threshold.", kStereoUseMinEigenVals().c_str()));
+
878 RTABMAP_PARAM(Stereo, Gpu, bool, false, uFormat("[%s=true] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that %s is not used in the GPU implementation.", kStereoOpticalFlow().c_str(), kStereoUseMinEigenVals().c_str()));
+
879
+
880 RTABMAP_PARAM(Stereo, DenseStrategy, int, 0, "0=cv::StereoBM, 1=cv::StereoSGBM");
+
881
+
882 RTABMAP_PARAM(StereoBM, BlockSize, int, 15, "See cv::StereoBM");
+
883 RTABMAP_PARAM(StereoBM, MinDisparity, int, 0, "See cv::StereoBM");
+
884 RTABMAP_PARAM(StereoBM, NumDisparities, int, 128, "See cv::StereoBM");
+
885 RTABMAP_PARAM(StereoBM, PreFilterSize, int, 9, "See cv::StereoBM");
+
886 RTABMAP_PARAM(StereoBM, PreFilterCap, int, 31, "See cv::StereoBM");
+
887 RTABMAP_PARAM(StereoBM, UniquenessRatio, int, 15, "See cv::StereoBM");
+
888 RTABMAP_PARAM(StereoBM, TextureThreshold, int, 10, "See cv::StereoBM");
+
889 RTABMAP_PARAM(StereoBM, SpeckleWindowSize, int, 100, "See cv::StereoBM");
+
890 RTABMAP_PARAM(StereoBM, SpeckleRange, int, 4, "See cv::StereoBM");
+
891 RTABMAP_PARAM(StereoBM, Disp12MaxDiff, int, -1, "See cv::StereoBM");
+
892
+
893 RTABMAP_PARAM(StereoSGBM, BlockSize, int, 15, "See cv::StereoSGBM");
+
894 RTABMAP_PARAM(StereoSGBM, MinDisparity, int, 0, "See cv::StereoSGBM");
+
895 RTABMAP_PARAM(StereoSGBM, NumDisparities, int, 128, "See cv::StereoSGBM");
+
896 RTABMAP_PARAM(StereoSGBM, PreFilterCap, int, 31, "See cv::StereoSGBM");
+
897 RTABMAP_PARAM(StereoSGBM, UniquenessRatio, int, 20, "See cv::StereoSGBM");
+
898 RTABMAP_PARAM(StereoSGBM, SpeckleWindowSize, int, 100, "See cv::StereoSGBM");
+
899 RTABMAP_PARAM(StereoSGBM, SpeckleRange, int, 4, "See cv::StereoSGBM");
+
900 RTABMAP_PARAM(StereoSGBM, Disp12MaxDiff, int, 1, "See cv::StereoSGBM");
+
901 RTABMAP_PARAM(StereoSGBM, P1, int, 2, "See cv::StereoSGBM");
+
902 RTABMAP_PARAM(StereoSGBM, P2, int, 5, "See cv::StereoSGBM");
+
903#if CV_MAJOR_VERSION < 3
+
904 RTABMAP_PARAM(StereoSGBM, Mode, int, 0, "See cv::StereoSGBM");
+
905#else
+
906 RTABMAP_PARAM(StereoSGBM, Mode, int, 2, "See cv::StereoSGBM");
+
907#endif
+
908
+
909 // Occupancy Grid
+
910 RTABMAP_PARAM(Grid, Sensor, int, 1, "Create occupancy grid from selected sensor: 0=laser scan, 1=depth image(s) or 2=both laser scan and depth image(s).");
+
911 RTABMAP_PARAM(Grid, DepthDecimation, unsigned int, 4, uFormat("[%s=true] Decimation of the depth image before creating cloud.", kGridDepthDecimation().c_str()));
+
912 RTABMAP_PARAM(Grid, RangeMin, float, 0.0, "Minimum range from sensor.");
+
913 RTABMAP_PARAM(Grid, RangeMax, float, 5.0, "Maximum range from sensor. 0=inf.");
+
914 RTABMAP_PARAM_STR(Grid, DepthRoiRatios, "0.0 0.0 0.0 0.0", uFormat("[%s>=1] Region of interest ratios [left, right, top, bottom].", kGridSensor().c_str()));
+
915 RTABMAP_PARAM(Grid, FootprintLength, float, 0.0, "Footprint length used to filter points over the footprint of the robot.");
+
916 RTABMAP_PARAM(Grid, FootprintWidth, float, 0.0, "Footprint width used to filter points over the footprint of the robot. Footprint length should be set.");
+
917 RTABMAP_PARAM(Grid, FootprintHeight, float, 0.0, "Footprint height used to filter points over the footprint of the robot. Footprint length and width should be set.");
+
918 RTABMAP_PARAM(Grid, ScanDecimation, int, 1, uFormat("[%s=0 or 2] Decimation of the laser scan before creating cloud.", kGridSensor().c_str()));
+
919 RTABMAP_PARAM(Grid, CellSize, float, 0.05, "Resolution of the occupancy grid.");
+
920 RTABMAP_PARAM(Grid, PreVoxelFiltering, bool, true, uFormat("Input cloud is downsampled by voxel filter (voxel size is \"%s\") before doing segmentation of obstacles and ground.", kGridCellSize().c_str()));
+
921 RTABMAP_PARAM(Grid, MapFrameProjection, bool, false, "Projection in map frame. On a 3D terrain and a fixed local camera transform (the cloud is created relative to ground), you may want to disable this to do the projection in robot frame instead.");
+
922 RTABMAP_PARAM(Grid, NormalsSegmentation, bool, true, "Segment ground from obstacles using point normals, otherwise a fast passthrough is used.");
+
923 RTABMAP_PARAM(Grid, MaxObstacleHeight, float, 0.0, "Maximum obstacles height (0=disabled).");
+
924 RTABMAP_PARAM(Grid, MinGroundHeight, float, 0.0, "Minimum ground height (0=disabled).");
+
925 RTABMAP_PARAM(Grid, MaxGroundHeight, float, 0.0, uFormat("Maximum ground height (0=disabled). Should be set if \"%s\" is false.", kGridNormalsSegmentation().c_str()));
+
926 RTABMAP_PARAM(Grid, MaxGroundAngle, float, 45, uFormat("[%s=true] Maximum angle (degrees) between point's normal to ground's normal to label it as ground. Points with higher angle difference are considered as obstacles.", kGridNormalsSegmentation().c_str()));
+
927 RTABMAP_PARAM(Grid, NormalK, int, 20, uFormat("[%s=true] K neighbors to compute normals.", kGridNormalsSegmentation().c_str()));
+
928 RTABMAP_PARAM(Grid, ClusterRadius, float, 0.1, uFormat("[%s=true] Cluster maximum radius.", kGridNormalsSegmentation().c_str()));
+
929 RTABMAP_PARAM(Grid, MinClusterSize, int, 10, uFormat("[%s=true] Minimum cluster size to project the points.", kGridNormalsSegmentation().c_str()));
+
930 RTABMAP_PARAM(Grid, FlatObstacleDetected, bool, true, uFormat("[%s=true] Flat obstacles detected.", kGridNormalsSegmentation().c_str()));
+
931#ifdef RTABMAP_OCTOMAP
+
932 RTABMAP_PARAM(Grid, 3D, bool, true, uFormat("A 3D occupancy grid is required if you want an OctoMap (3D ray tracing). Set to false if you want only a 2D map, the cloud will be projected on xy plane. A 2D map can be still generated if checked, but it requires more memory and time to generate it. Ignored if laser scan is 2D and \"%s\" is 0.", kGridSensor().c_str()));
+
933#else
+
934 RTABMAP_PARAM(Grid, 3D, bool, false, uFormat("A 3D occupancy grid is required if you want an OctoMap (3D ray tracing). Set to false if you want only a 2D map, the cloud will be projected on xy plane. A 2D map can be still generated if checked, but it requires more memory and time to generate it. Ignored if laser scan is 2D and \"%s\" is 0.", kGridSensor().c_str()));
+
935#endif
+
936 RTABMAP_PARAM(Grid, GroundIsObstacle, bool, false, uFormat("[%s=true] Ground segmentation (%s) is ignored, all points are obstacles. Use this only if you want an OctoMap with ground identified as an obstacle (e.g., with an UAV).", kGrid3D().c_str(), kGridNormalsSegmentation().c_str()));
+
937 RTABMAP_PARAM(Grid, NoiseFilteringRadius, float, 0.0, "Noise filtering radius (0=disabled). Done after segmentation.");
+
938 RTABMAP_PARAM(Grid, NoiseFilteringMinNeighbors, int, 5, "Noise filtering minimum neighbors.");
+
939 RTABMAP_PARAM(Grid, Scan2dUnknownSpaceFilled, bool, false, uFormat("Unknown space filled. Only used with 2D laser scans. Use %s to set maximum range if laser scan max range is to set.", kGridRangeMax().c_str()));
+
940 RTABMAP_PARAM(Grid, RayTracing, bool, false, uFormat("Ray tracing is done for each occupied cell, filling unknown space between the sensor and occupied cells. If %s=true, RTAB-Map should be built with OctoMap support, otherwise 3D ray tracing is ignored.", kGrid3D().c_str()));
+
941 RTABMAP_PARAM(GridGlobal, UpdateError, float, 0.01, "Graph changed detection error (m). Update map only if poses in new optimized graph have moved more than this value.");
+
942 RTABMAP_PARAM(GridGlobal, FootprintRadius, float, 0.0, "Footprint radius (m) used to clear all obstacles under the graph.");
+
943 RTABMAP_PARAM(GridGlobal, MinSize, float, 0.0, "Minimum map size (m).");
+
944 RTABMAP_PARAM(GridGlobal, Eroded, bool, false, "Erode obstacle cells.");
+
945 RTABMAP_PARAM(GridGlobal, MaxNodes, int, 0, "Maximum nodes assembled in the map starting from the last node (0=unlimited).");
+
946 RTABMAP_PARAM(GridGlobal, AltitudeDelta, float, 0, "Assemble only nodes that have the same altitude of +-delta meters of the current pose (0=disabled). This is used to generate 2D occupancy grid based on the current altitude (e.g., multi-floor building).");
+
947 RTABMAP_PARAM(GridGlobal, OccupancyThr, float, 0.5, "Occupancy threshold (value between 0 and 1).");
+
948 RTABMAP_PARAM(GridGlobal, ProbHit, float, 0.7, "Probability of a hit (value between 0.5 and 1).");
+
949 RTABMAP_PARAM(GridGlobal, ProbMiss, float, 0.4, "Probability of a miss (value between 0 and 0.5).");
+
950 RTABMAP_PARAM(GridGlobal, ProbClampingMin, float, 0.1192, "Probability clamping minimum (value between 0 and 1).");
+
951 RTABMAP_PARAM(GridGlobal, ProbClampingMax, float, 0.971, "Probability clamping maximum (value between 0 and 1).");
+
952 RTABMAP_PARAM(GridGlobal, FloodFillDepth, unsigned int, 0, "Flood fill filter (0=disabled), used to remove empty cells outside the map. The flood fill is done at the specified depth (between 1 and 16) of the OctoMap.");
+
953
+
954 RTABMAP_PARAM(Marker, Strategy, int, 0, "Marker detection implementation: 0=OpenCV, 1=AprilTag");
+
955 RTABMAP_PARAM(Marker, Dictionary, int, 0, "Dictionary to use: DICT_ARUCO_4X4_50=0, DICT_ARUCO_4X4_100=1, DICT_ARUCO_4X4_250=2, DICT_ARUCO_4X4_1000=3, DICT_ARUCO_5X5_50=4, DICT_ARUCO_5X5_100=5, DICT_ARUCO_5X5_250=6, DICT_ARUCO_5X5_1000=7, DICT_ARUCO_6X6_50=8, DICT_ARUCO_6X6_100=9, DICT_ARUCO_6X6_250=10, DICT_ARUCO_6X6_1000=11, DICT_ARUCO_7X7_50=12, DICT_ARUCO_7X7_100=13, DICT_ARUCO_7X7_250=14, DICT_ARUCO_7X7_1000=15, DICT_ARUCO_ORIGINAL = 16, DICT_APRILTAG_16h5=17, DICT_APRILTAG_25h9=18, DICT_APRILTAG_36h10=19, DICT_APRILTAG_36h11=20, DICT_ARUCO_MIP_36H12=21");
+
956 RTABMAP_PARAM(Marker, Length, float, 0, "The length (m) of the markers' side. Value <=0 means automatic marker length estimation using the depth image (the camera should look at the marker perpendicularly for initialization). If 0, the length is estimated only on the first marker detected, then re-used for all next detections (i.e., this assumes that markers have all the same length). With <0, the length is estimated once for each unique marker, then re-used for next detections with the same marker ID.");
+
957 RTABMAP_PARAM_STR(Marker, Lengths, "", uFormat("List of markers to detect. Format is the marker's ID followed by its length (in meters), multiple markers are separated by a vertical line (\"id1 length|id2 length\"). We can also define a range of markers with \"id1:id2 length\" (id2 included). If empty, all markers of the chosen dictionary can be detected and their length is set/estimated based on %s. For example, to detect markers 12 and 14 with lengths of 8 and 15 cm respectively, and all markers between 30 and 40 with a length of 10 cm, set \"12 0.08|14 0.15|30:40 0.1\".", kMarkerLength().c_str()).c_str());
+
958 RTABMAP_PARAM(Marker, MaxDepthError, float, 0.01, uFormat("Maximum depth error between all corners of a marker when estimating the marker length (when %s is 0). The smaller it is, the more perpendicular the camera should be toward the marker to initialize the length.", kMarkerLength().c_str()));
+
959 RTABMAP_PARAM(Marker, VarianceLinear, float, 0.001, uFormat("Linear variance to set on marker detections. If %s is enabled and %s=2 (GTSAM): it is the variance of the range factor, with 9999 to disable range factor and to do only bearing.", kMarkerVarianceOrientationIgnored().c_str(), kOptimizerStrategy().c_str()));
+
960 RTABMAP_PARAM(Marker, VarianceAngular, float, 0.01, uFormat("Angular variance to set on marker detections. If %s is enabled, it is ignored with %s=1 (g2o) and it corresponds to bearing variance with %s=2 (GTSAM).", kMarkerVarianceOrientationIgnored().c_str(), kOptimizerStrategy().c_str(), kOptimizerStrategy().c_str()));
+
961 RTABMAP_PARAM(Marker, VarianceOrientationIgnored, bool, false, uFormat("When this setting is false, the landmark's orientation is optimized during graph optimization. When this setting is true, only the position of the landmark is optimized. This can be useful when the landmark's orientation estimation is not reliable. Note that for %s=1 (g2o), only %s needs be set if we ignore orientation. For %s=2 (GTSAM), instead of optimizing the landmark's position directly, a bearing/range factor is used, with %s as the variance of the range factor (with 9999 to optimize the position with only a bearing factor) and %s as the variance of the bearing factor (pitch/yaw).", kOptimizerStrategy().c_str(), kMarkerVarianceLinear().c_str(), kOptimizerStrategy().c_str(), kMarkerVarianceLinear().c_str(), kMarkerVarianceAngular().c_str()));
+
962 RTABMAP_PARAM(Marker, MaxRange, float, 0.0, "Maximum range in which markers will be detected. <=0 for unlimited range.");
+
963 RTABMAP_PARAM(Marker, MinRange, float, 0.0, "Miniminum range in which markers will be detected. <=0 for unlimited range.");
+
964 RTABMAP_PARAM_STR(Marker, Priors, "", "World prior locations of the markers. The map will be transformed in marker's world frame when a tag is detected. Format is the marker's ID followed by its position (angles in rad), multiple markers are separated by vertical line (\"id1 x y z roll pitch yaw|id2 x y z roll pitch yaw\"). Example: \"1 0 0 1 0 0 0|2 1 0 1 0 0 1.57\" (marker 2 is 1 meter forward than marker 1 with 90 deg yaw rotation).");
+
965 RTABMAP_PARAM(Marker, PriorsVarianceLinear, float, 0.001, "Linear variance to set on marker priors.");
+
966 RTABMAP_PARAM(Marker, PriorsVarianceAngular, float, 0.001, "Angular variance to set on marker priors.");
+
967
+
968 RTABMAP_PARAM(MarkerAprilTag, NThreads, int, 1, "How many threads should be used?");
+
969 RTABMAP_PARAM(MarkerAprilTag, QuadDecimate, float, 1.0, "Detection of quads can be done on a lower-resolution image, improving speed at a cost of pose accuracy and a slight decrease in detection rate. Decoding the binary payload is still done at full resolution.");
+
970 RTABMAP_PARAM(MarkerAprilTag, QuadSigma, float, 0.0, "What Gaussian blur should be applied to the segmented image (used for quad detection?) Parameter is the standard deviation in pixels. Very noisy images benefit from non-zero values (e.g. 0.8).");
+
971 RTABMAP_PARAM(MarkerAprilTag, RefineEdges, bool, true, uFormat("When true, the edges of the each quad are adjusted to \"snap to\" strong gradients nearby. This is useful when decimation is employed, as it can increase the quality of the initial quad estimate substantially. Generally recommended to be on (true). Very computationally inexpensive. Option is ignored if %s = 1.", kMarkerAprilTagQuadDecimate().c_str()));
+
972 RTABMAP_PARAM(MarkerAprilTag, DecodeSharpening, double, 0.25, "How much sharpening should be done to decoded images? This can help decode small tags but may or may not help in odd lighting conditions or low light conditions.");
+
973 RTABMAP_PARAM(MarkerAprilTag, Debug, bool, false, uFormat("When true, write a variety of debugging images to the working directory where the app started (not %s) at various stages through the detection process. (Somewhat slow).", kRtabmapWorkingDirectory().c_str()));
+
974
+
975 RTABMAP_PARAM(MarkerOpenCV, CornerRefinementMethod, int, 0, "Corner refinement method for OpenCV strategy (0: None, 1: Subpixel, 2:contour, 3: AprilTag2). For OpenCV <3.3.0, this is \"doCornerRefinement\" parameter: set 0 for false and 1 for true.");
+
976
+
977 RTABMAP_PARAM(ImuFilter, MadgwickGain, double, 0.1, "Gain of the filter. Higher values lead to faster convergence but more noise. Lower values lead to slower convergence but smoother signal, belongs in [0, 1].");
+
978 RTABMAP_PARAM(ImuFilter, MadgwickZeta, double, 0.0, "Gyro drift gain (approx. rad/s), belongs in [-1, 1].");
+
979
+
980 RTABMAP_PARAM(ImuFilter, ComplementaryGainAcc, double, 0.01, "Gain parameter for the complementary filter, belongs in [0, 1].");
+
981 RTABMAP_PARAM(ImuFilter, ComplementaryBiasAlpha, double, 0.01, "Bias estimation gain parameter, belongs in [0, 1].");
+
982 RTABMAP_PARAM(ImuFilter, ComplementaryDoBiasEstimation, bool, true, "Parameter whether to do bias estimation or not.");
+
983 RTABMAP_PARAM(ImuFilter, ComplementaryDoAdpativeGain, bool, true, "Parameter whether to do adaptive gain or not.");
+
984
+
985public:
+
986 virtual ~Parameters();
+
987
+
+ +
993 {
+
994 return parameters_;
+
995 }
+
+
996
+
1001 static std::string getType(const std::string & paramKey);
+
1002
+
1007 static std::string getDescription(const std::string & paramKey);
+
1008
+
1009 static bool parse(const ParametersMap & parameters, const std::string & key, bool & value);
+
1010 static bool parse(const ParametersMap & parameters, const std::string & key, int & value);
+
1011 static bool parse(const ParametersMap & parameters, const std::string & key, unsigned int & value);
+
1012 static bool parse(const ParametersMap & parameters, const std::string & key, float & value);
+
1013 static bool parse(const ParametersMap & parameters, const std::string & key, double & value);
+
1014 static bool parse(const ParametersMap & parameters, const std::string & key, std::string & value);
+
1015 static void parse(const ParametersMap & parameters, ParametersMap & parametersOut);
+
1016
+
1017 static const char * showUsage();
+
1018 static ParametersMap parseArguments(int argc, char * argv[], bool onlyParameters = false);
+
1019
+
1020 static std::string getVersion();
+
1021 static std::string getDefaultDatabaseName();
+
1022
+
1023 static std::string serialize(const ParametersMap & parameters);
+
1024 static ParametersMap deserialize(const std::string & parameters);
+
1025
+
1026 static bool isFeatureParameter(const std::string & param);
+
1027 static ParametersMap getDefaultOdometryParameters(bool stereo = false, bool vis = true, bool icp = false);
+
1028 static ParametersMap getDefaultParameters(const std::string & group);
+
1033 static ParametersMap filterParameters(const ParametersMap & parameters, const std::string & group, bool remove = false);
+
1034
+
1035 static void readINI(const std::string & configFile, ParametersMap & parameters, bool modifiedOnly = false);
+
1036 static void readINIStr(const std::string & configContent, ParametersMap & parameters, bool modifiedOnly = false);
+
1037 static void writeINI(const std::string & configFile, const ParametersMap & parameters);
+
1038
+
1043 static const std::map<std::string, std::pair<bool, std::string> > & getRemovedParameters();
+
1044
+ +
1049
+
1050 static std::string createDefaultWorkingDirectory();
+
1051
+
1052private:
+
1053 Parameters();
+
1054
+
1055private:
+
1056 static ParametersMap parameters_;
+
1057 static ParametersMap parametersType_;
+
1058 static ParametersMap descriptions_;
+
1059 static Parameters instance_;
+
1060
+
1061 static std::map<std::string, std::pair<bool, std::string> > removedParameters_;
+
1062 static ParametersMap backwardCompatibilityMap_;
+
1063};
+
+
1064
+
1065}
+
1066
+
1067#endif /* PARAMETERS_H_ */
+
Some conversion functions.
+
std::string UTILITE_EXPORT uFormat(const char *fmt,...)
+
BRISK detector and descriptor.
Definition Features2d.h:599
+
FAST corner detector only (no descriptor).
Definition Features2d.h:416
+
Good-features-to-track detector (Shi–Tomasi / Harris).
Definition Features2d.h:494
+
KAZE detector and descriptor (OpenCV 3+).
Definition Features2d.h:621
+
ORB detector and descriptor (optional GPU).
Definition Features2d.h:384
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+ +
static std::string getType(const std::string &paramKey)
+
static ParametersMap filterParameters(const ParametersMap &parameters, const std::string &group, bool remove=false)
+
static const ParametersMap & getDefaultParameters()
Definition Parameters.h:992
+
static const ParametersMap & getBackwardCompatibilityMap()
+
static std::string getDescription(const std::string &paramKey)
+
static const std::map< std::string, std::pair< bool, std::string > > & getRemovedParameters()
+
Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure).
Definition Rtabmap.h:194
+
SIFT detector and descriptor (optional GPU / CudaSift).
Definition Features2d.h:349
+
SURF detector and descriptor (non-free / xfeatures2d depending on OpenCV build).
Definition Features2d.h:321
+
Block Matching algorithm for dense stereo matching.
Definition StereoBM.h:47
+
Semi-Global Block Matching algorithm for dense stereo matching.
Definition StereoSGBM.h:51
+
Sparse stereo matching using block matching.
Definition Stereo.h:55
+
SuperPoint (rpautrat) via Torch + Python (RTAB-Map must be built with libtorch and Python support).
Definition Features2d.h:698
+ +
std::pair< std::string, std::string > ParametersPair
A single parameter key/value pair, the entry type of ParametersMap.
Definition Parameters.h:46
+
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/ParticleFilter_8h_source.html b/preview/pr-1773/api/latest/ParticleFilter_8h_source.html new file mode 100644 index 00000000..da98aac0 --- /dev/null +++ b/preview/pr-1773/api/latest/ParticleFilter_8h_source.html @@ -0,0 +1,305 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/ParticleFilter.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ParticleFilter.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef PARTICLEFILTER_H_
+
29#define PARTICLEFILTER_H_
+
30
+ + +
33
+
34
+
35namespace rtabmap {
+
36
+
37// taken from http://www.developpez.net/forums/d544518/c-cpp/c/equivalent-randn-matlab-c/
+
38#define TWOPI (6.2831853071795864769252867665590057683943387987502) /* 2 * pi */
+
39
+
40/*
+
41 RAND is a macro which returns a pseudo-random numbers from a uniform
+
42 distribution on the interval [0 1]
+
43*/
+
44#define RAND (rand())/((double) RAND_MAX)
+
45
+
46/*
+
47 RANDN is a macro which returns a pseudo-random numbers from a normal
+
48 distribution with mean zero and standard deviation one. This macro uses Box
+
49 Muller's algorithm
+
50*/
+
51#define RANDN (sqrt(-2.0*log(RAND))*cos(TWOPI*RAND))
+
52
+
53std::vector<double> cumSum(const std::vector<double> & v)
+
54{
+
55 std::vector<double> cum(v.size());
+
56 double sum = 0;
+
57 for(unsigned int i=0; i<v.size(); ++i)
+
58 {
+
59 cum[i] = v[i] + sum;
+
60 sum += v[i];
+
61 }
+
62 return cum;
+
63}
+
64
+
65std::vector<double> resample(const std::vector<double> & p, // particles
+
66 const std::vector<double> & w, // weights
+
67 bool normalizeWeights = false)
+
68{
+
69 std::vector<double> np; //new particles
+
70 if(p.size() != w.size() || p.size() == 0)
+
71 {
+
72 UERROR("particles (%d) and weights (%d) are not the same size", (int)p.size(), (int)w.size());
+
73 return np;
+
74 }
+
75
+
76 std::vector<double> cs;
+
77 if(normalizeWeights)
+
78 {
+
79 double wSum = uSum(w);
+
80 std::vector<double> wNorm(w.size());
+
81 for(unsigned int i=0; i<w.size(); ++i)
+
82 {
+
83 wNorm[i] = w[i]/wSum;
+
84 }
+
85 cs = cumSum(wNorm); // cumulative sum
+
86 }
+
87 else
+
88 {
+
89 cs = cumSum(w); // cumulative sum
+
90 }
+
91 for(unsigned int j=0; j<cs.size(); ++j)
+
92 {
+
93 cs[j]/=cs.back();
+
94 }
+
95
+
96 np.resize(p.size());
+
97 for(unsigned int i=0; i<np.size(); ++i)
+
98 {
+
99 unsigned int index = 0;
+
100 double randnum = RAND;
+
101 for(unsigned int j=0; j<cs.size(); ++j)
+
102 {
+
103 if(randnum < cs[j])
+
104 {
+
105 index = j;
+
106 break;
+
107 }
+
108 }
+
109 np[i] = p[index];
+
110 }
+
111 return np;
+
112}
+
113
+
114
+
+ +
116{
+
117public:
+
118 ParticleFilter(unsigned int nParticles = 200,
+
119 double noise = 0.1,
+
120 double lambda = 10.0,
+
121 double initValue = 0.0) :
+
122 noise_(noise),
+
123 lambda_(lambda)
+
124 {
+
125 particles_.resize(nParticles, initValue);
+
126 }
+
127
+
128 void init(double initValue = 0.0f)
+
129 {
+
130 particles_ = std::vector<double>(particles_.size(), initValue);
+
131 }
+
132
+
133 double filter(double val)
+
134 {
+
135 std::vector<double> weights(particles_.size(), 1);
+
136 double sumWeights = 0;
+
137 for(unsigned int i=0; i<particles_.size(); ++i)
+
138 {
+
139 // add noise to particle
+
140 particles_[i] += noise_ * RANDN;
+
141
+
142 // compute weight
+
143 double dist = fabs(particles_[i] - val);
+
144 //dist = sqrt(dist*dist);
+
145 double w = exp(-lambda_*dist);
+
146 if(uIsFinite(w) && w > 0)
+
147 {
+
148 weights[i] = w;
+
149 }
+
150 sumWeights += weights[i];
+
151 }
+
152
+
153
+
154 //normalize and compute estimated value
+
155 double value =0.0;
+
156 for(unsigned int i=0; i<weights.size(); ++i)
+
157 {
+
158 weights[i] /= sumWeights;
+
159 value += weights[i] * particles_[i];
+
160 }
+
161
+
162 //resample the particles
+
163 particles_ = resample(particles_, weights, false);
+
164
+
165 return value;
+
166 }
+
167
+
168private:
+
169 std::vector<double> particles_;
+
170 double noise_;
+
171 double lambda_;
+
172};
+
+
173
+
174}
+
175
+
176
+
177#endif /* PARTICLEFILTER_H_ */
+
ULogger class and convenient macros.
+
#define UERROR(...)
Definition ULogger.h:62
+
Basic mathematics functions.
+
T uSum(const std::list< T > &list)
Definition UMath.h:318
+
bool uIsFinite(const T &value)
Definition UMath.h:53
+ + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Posix_2UThreadC_8h_source.html b/preview/pr-1773/api/latest/Posix_2UThreadC_8h_source.html new file mode 100644 index 00000000..b4513a57 --- /dev/null +++ b/preview/pr-1773/api/latest/Posix_2UThreadC_8h_source.html @@ -0,0 +1,530 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/Posix/UThreadC.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThreadC.h
+
+
+
1
+
2// Written by Phillip Sitbon
+
3// Copyright 2003
+
4//
+
5// Modified by Mathieu Labbe
+
6//
+
7// Posix/Thread.h
+
8// - Posix thread
+
9//
+
11
+
12#ifndef _U_Thread_Posix_
+
13#define _U_Thread_Posix_
+
14
+
15#include "rtabmap/utilite/USemaphore.h"
+
16#include "rtabmap/utilite/UMutex.h"
+
17
+
18#include <pthread.h>
+
19
+
23inline void uSleep(unsigned int ms)
+
24{
+
25 struct timespec req;
+
26 struct timespec rem;
+
27 req.tv_sec = ms / 1000;
+
28 req.tv_nsec = (ms - req.tv_sec * 1000) * 1000 * 1000;
+
29 nanosleep (&req, &rem);
+
30}
+
31
+
35inline void uSleepMicro(unsigned int us)
+
36{
+
37 struct timespec req;
+
38 struct timespec rem;
+
39 req.tv_sec = us / 1000000;
+
40 req.tv_nsec = (us - req.tv_sec * 1000000) * 1000;
+
41 nanosleep (&req, &rem);
+
42}
+
43
+
47inline void uSleepNano(unsigned int ns)
+
48{
+
49 struct timespec req;
+
50 struct timespec rem;
+
51 req.tv_sec = ns / 1000000000;
+
52 req.tv_nsec = (ns - req.tv_sec * 1000000000);
+
53 nanosleep (&req, &rem);
+
54}
+
55
+
56
+
57#define InvalidHandle 0
+
58#define THREAD_HANDLE pthread_t
+
59
+
60typedef void *( * pthread_fn )( void * );
+
61
+
62template
+
63<
+
64 typename Thread_T
+
65>
+
+ +
67{
+
68 private:
+
69 struct Instance;
+
70
+
71 public:
+
72 typedef Thread_T & Thread_R;
+
73 typedef const Thread_T & Thread_C_R;
+
74
+
75 typedef THREAD_HANDLE Handle;
+
76 typedef void ( *Handler)( Thread_R );
+
77
+
78 virtual ~UThreadC() {}
+
79
+
80 protected:
+
81 UThreadC() {}
+
82
+
83 virtual void ThreadMain( Thread_R ) = 0;
+
84
+
85 static void Exit()
+
86 { pthread_exit(0); }
+
87#ifndef ANDROID
+
88 static void TestCancel()
+
89 { pthread_testcancel(); }
+
90#endif
+
91
+
92 static Handle Self()
+
93 { return (Handle)pthread_self(); }
+
94
+
95 public:
+
96
+
97 static int Create(
+
98 const Handler & Function,
+
99 Thread_C_R Param,
+
100 Handle * const & H = 0,
+
101 const bool & CreateDetached = false,
+
102 const unsigned int & StackSize = 0,
+
103 const bool & CancelEnable = false,
+
104 const bool & CancelAsync = false
+
105 )
+
106 {
+
107 M_Create().lock();
+
108 pthread_attr_t attr;
+
109 pthread_attr_init(&attr);
+
110
+
111 if ( CreateDetached )
+
112 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
+
113
+
114 if ( StackSize )
+
115 pthread_attr_setstacksize(&attr,StackSize);
+
116
+
117 Instance I(Param,0,Function,CancelEnable,CancelAsync);
+
118
+
119 Handle h=InvalidHandle;
+
120 int R = pthread_create((pthread_t *)&h,&attr,(pthread_fn)ThreadMainHandler,(void *)&I);
+
121
+
122 pthread_attr_destroy(&attr);
+
123
+
124 if(H) *H = h;
+
125 if ( !R ) S_Create().acquire();
+
126
+
127 M_Create().unlock();
+
128 return R;
+
129 }
+
130
+
131 int Create(
+
132 Thread_C_R Param,
+
133 Handle * const & H = 0,
+
134 const bool & CreateDetached = false,
+
135 const unsigned int & StackSize = 0,
+
136 const bool & CancelEnable = false,
+
137 const bool & CancelAsync = false
+
138 ) const
+
139 {
+
140 M_Create().lock();
+
141 pthread_attr_t attr;
+
142 pthread_attr_init(&attr);
+
143
+
144 if ( CreateDetached )
+
145 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
+
146
+
147 if ( StackSize )
+
148 pthread_attr_setstacksize(&attr,StackSize);
+
149
+
150 Instance I(Param,const_cast<UThreadC *>(this),0,CancelEnable,CancelAsync);
+
151
+
152 Handle h=InvalidHandle;
+
153 int R = pthread_create((pthread_t *)&h,&attr,(pthread_fn)ThreadMainHandler,(void *)&I);
+
154
+
155 pthread_attr_destroy(&attr);
+
156
+
157 if(H) *H = h;
+
158 if ( !R ) S_Create().acquire();
+
159
+
160 M_Create().unlock();
+
161 return R;
+
162 }
+
163
+
164 static int Join( Handle H )
+
165 { return pthread_join(H,0); }
+
166
+
167#ifndef ANDROID
+
168 static int Kill( Handle H )
+
169 { return pthread_cancel(H); }
+
170#endif
+
171
+
172 static int Detach( Handle H )
+
173 { return pthread_detach(H); }
+
174
+
175 private:
+
176
+
177 static const UMutex &M_Create() { static UMutex M; return M; }
+
178 static USemaphore &S_Create() { static USemaphore S; return S; }
+
179
+
180 static void *ThreadMainHandler( Instance *Param )
+
181 {
+
182 Instance I(*Param);
+
183 Thread_T Data(I.Data);
+
184 S_Create().release();
+
185
+
186#ifndef ANDROID
+
187 if ( I.Flags & 1 /*CancelEnable*/ )
+
188 {
+
189 pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
+
190
+
191 if ( I.Flags & 2 /*CancelAsync*/ )
+
192 pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL);
+
193 else
+
194 pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
+
195 }
+
196 else
+
197 {
+
198 pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,NULL);
+
199 }
+
200#endif
+
201
+
202 if ( I.Owner )
+
203 I.Owner->ThreadMain(Data);
+
204 else
+
205 I.pFN(Data);
+
206
+
207 return 0;
+
208 }
+
209
+
210 struct Instance
+
211 {
+
212 Instance( Thread_C_R P, UThreadC<Thread_T> *const &O, const UThreadC<Thread_T>::Handler &pH = 0, const bool &CE=false, const bool &CA=false )
+
213 : Data(P), Owner(O), pFN(pH), Flags(0) { if ( CE ) Flags|=1; if ( CA ) Flags|=2; }
+
214
+
215 Thread_C_R Data;
+
216 UThreadC<Thread_T> * Owner;
+
217 Handler pFN;
+
218 unsigned char Flags;
+
219 };
+
220};
+
+
221
+
223// Explicit specialization, no thread parameters
+
224//
+
225template<>
+
+
226class UThreadC<void>
+
227{
+
228 private:
+
229 struct Instance;
+
230
+
231 public:
+
232 typedef THREAD_HANDLE Handle;
+
233 typedef void ( *Handler)();
+
234
+
235 virtual ~UThreadC() {}
+
236
+
237 protected:
+
238 UThreadC() {}
+
239
+
240 virtual void ThreadMain() = 0;
+
241
+
242 static void Exit()
+
243 { pthread_exit(0); }
+
244
+
245#ifndef ANDROID
+
246 static void TestCancel()
+
247 { pthread_testcancel(); }
+
248#endif
+
249
+
250 static Handle Self()
+
251 { return (Handle)pthread_self(); }
+
252
+
253 public:
+
254
+
255 static int Create(
+
256 const Handler & Function,
+
257 Handle * const & H = 0,
+
258 const bool & CreateDetached = false,
+
259 const unsigned int & StackSize = 0,
+
260 const bool & CancelEnable = false,
+
261 const bool & CancelAsync = false
+
262 )
+
263 {
+
264 M_Create().lock();
+
265 pthread_attr_t attr;
+
266 pthread_attr_init(&attr);
+
267
+
268 if ( CreateDetached )
+
269 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
+
270
+
271 if ( StackSize )
+
272 pthread_attr_setstacksize(&attr,StackSize);
+
273
+
274 Instance I(0,Function,CancelEnable,CancelAsync);
+
275
+
276 Handle h=InvalidHandle;
+
277 int R = pthread_create((pthread_t *)&h,&attr,(pthread_fn)ThreadMainHandler,(void *)&I);
+
278
+
279 pthread_attr_destroy(&attr);
+
280
+
281 if(H) *H = h;
+
282 if ( !R ) S_Create().acquire();
+
283
+
284 M_Create().unlock();
+
285 return R;
+
286 }
+
287
+
288 int Create(
+
289 Handle * const & H = 0,
+
290 const bool & CreateDetached = false,
+
291 const unsigned int & StackSize = 0,
+
292 const bool & CancelEnable = false,
+
293 const bool & CancelAsync = false
+
294 ) const
+
295 {
+
296 M_Create().lock();
+
297 pthread_attr_t attr;
+
298 pthread_attr_init(&attr);
+
299
+
300 if ( CreateDetached )
+
301 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
+
302
+
303 if ( StackSize )
+
304 pthread_attr_setstacksize(&attr,StackSize);
+
305
+
306 Instance I(const_cast<UThreadC *>(this),0,CancelEnable,CancelAsync);
+
307
+
308 Handle h=InvalidHandle;
+
309 int R = pthread_create((pthread_t *)&h,&attr,(pthread_fn)ThreadMainHandler,(void *)&I);
+
310
+
311 pthread_attr_destroy(&attr);
+
312
+
313 if(H) *H = h;
+
314 if ( !R ) S_Create().acquire();
+
315
+
316 M_Create().unlock();
+
317 return R;
+
318 }
+
319
+
320 int Create(
+
321 unsigned long & ThreadId,
+
322 Handle * const & H = 0,
+
323 const bool & CreateDetached = false,
+
324 const unsigned int & StackSize = 0,
+
325 const bool & CancelEnable = false,
+
326 const bool & CancelAsync = false
+
327 ) const
+
328 {
+
329 M_Create().lock();
+
330 pthread_attr_t attr;
+
331 pthread_attr_init(&attr);
+
332
+
333 if ( CreateDetached )
+
334 pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
+
335
+
336 if ( StackSize )
+
337 pthread_attr_setstacksize(&attr,StackSize);
+
338
+
339 Instance I(const_cast<UThreadC *>(this),0,CancelEnable,CancelAsync);
+
340
+
341 *H = InvalidHandle;
+
342 int R = pthread_create((pthread_t *)&(*H),&attr,(pthread_fn)ThreadMainHandler,(void *)&I);
+
343
+
344 ThreadId = (unsigned long)*H;
+
345
+
346 pthread_attr_destroy(&attr);
+
347
+
348 if ( !R ) S_Create().acquire();
+
349
+
350 M_Create().unlock();
+
351 return R;
+
352 }
+
353
+
354 static int Join( Handle H )
+
355 { return pthread_join(H,0); }
+
356
+
357#ifndef ANDROID
+
358 static int Kill( Handle H )
+
359 { return pthread_cancel(H); }
+
360#endif
+
361
+
362 static int Detach( Handle H )
+
363 { return pthread_detach(H); }
+
364
+
365 private:
+
366
+
367 static const UMutex &M_Create() { static UMutex M; return M; }
+
368 static USemaphore &S_Create() { static USemaphore S; return S; }
+
369
+
370 static void *ThreadMainHandler( Instance *Param )
+
371 {
+
372 Instance I(*Param);
+
373 S_Create().release();
+
374
+
375#ifndef ANDROID
+
376 if ( I.Flags & 1 /*CancelEnable*/ )
+
377 {
+
378 pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);
+
379
+
380 if ( I.Flags & 2 /*CancelAsync*/ )
+
381 pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL);
+
382 else
+
383 pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL);
+
384 }
+
385 else
+
386 {
+
387 pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,NULL);
+
388 }
+
389#endif
+
390
+
391 if ( I.Owner )
+
392 I.Owner->ThreadMain();
+
393 else
+
394 I.pFN();
+
395
+
396 return 0;
+
397 }
+
398
+
399 struct Instance
+
400 {
+
401 Instance( UThreadC<void> *const &O, const UThreadC<void>::Handler &pH = 0, const bool &CE=false, const bool &CA=false )
+
402 : pFN(pH), Owner(O), Flags(0) { if ( CE ) Flags|=1; if ( CA ) Flags|=2; }
+
403
+ +
405 UThreadC<void> * Owner;
+
406 unsigned char Flags;
+
407
+
408 };
+
409};
+
+
410
+
411#endif // !_U_Thread_Posix_
+ +
int unlock() const
Definition UMutex.h:120
+
int lock() const
Definition UMutex.h:88
+ +
bool acquire(int n=1, int ms=0)
Definition USemaphore.h:108
+
int release(int n=1)
Definition USemaphore.h:197
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/ProgressState_8h_source.html b/preview/pr-1773/api/latest/ProgressState_8h_source.html new file mode 100644 index 00000000..f81b83d8 --- /dev/null +++ b/preview/pr-1773/api/latest/ProgressState_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/ProgressState.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ProgressState.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_PROGRESSSTATE_H_
+
29#define CORELIB_INCLUDE_RTABMAP_CORE_PROGRESSSTATE_H_
+
30
+ +
32
+
33namespace rtabmap {
+
34
+
+ +
36{
+
37public:
+
38 ProgressState():canceled_(false){}
+
39 virtual bool callback(const std::string & msg) const
+
40 {
+
41 if(!msg.empty())
+
42 UDEBUG("msg=%s", msg.c_str());
+
43 return true;
+
44 }
+
45 virtual ~ProgressState(){}
+
46
+
47 void setCanceled(bool canceled)
+
48 {
+
49 canceled_ = canceled;
+
50 }
+
51 bool isCanceled() const
+
52 {
+
53 return canceled_;
+
54 }
+
55
+
56private:
+
57 bool canceled_;
+
58};
+
+
59
+
60}
+
61
+
62#endif /* CORELIB_INCLUDE_RTABMAP_CORE_PROGRESSSTATE_H_ */
+
ULogger class and convenient macros.
+
#define UDEBUG(...)
Definition ULogger.h:59
+ + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/PythonInterface_8h_source.html b/preview/pr-1773/api/latest/PythonInterface_8h_source.html new file mode 100644 index 00000000..55cd1583 --- /dev/null +++ b/preview/pr-1773/api/latest/PythonInterface_8h_source.html @@ -0,0 +1,168 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/PythonInterface.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PythonInterface.h
+
+
+
1/*
+
2 * PythonInterface.h
+
3 *
+
4 * Created on: Jan. 14, 2021
+
5 * Author: mathieu
+
6 */
+
7
+
8#ifndef CORELIB_SRC_PYTHON_PYTHONINTERFACE_H_
+
9#define CORELIB_SRC_PYTHON_PYTHONINTERFACE_H_
+
10
+
11#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
12
+
13#include <string>
+
14#include <rtabmap/utilite/UMutex.h>
+
15
+
16namespace pybind11 {
+
17class scoped_interpreter;
+
18class gil_scoped_release;
+
19}
+
20
+
21namespace rtabmap {
+
22
+
+
28class RTABMAP_CORE_EXPORT PythonInterface
+
29{
+
30public:
+
31 // Pass a caller tag (e.g. class name) so the main-thread assertion
+
32 // can report who triggered the first construction.
+
33 static PythonInterface & instance(const std::string & caller = "");
+
34
+
35 PythonInterface(const PythonInterface &) = delete;
+
36 PythonInterface & operator=(const PythonInterface &) = delete;
+
37
+
38private:
+
39 explicit PythonInterface(const std::string & caller);
+ +
41
+
42 pybind11::scoped_interpreter* guard_;
+
43 pybind11::gil_scoped_release* release_;
+
44};
+
+
45
+
46std::string RTABMAP_CORE_EXPORT getPythonTraceback();
+
47
+
48}
+
49
+
50#endif /* CORELIB_SRC_PYTHON_PYTHONINTERFACE_H_ */
+ + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Recovery_8h_source.html b/preview/pr-1773/api/latest/Recovery_8h_source.html new file mode 100644 index 00000000..4061be82 --- /dev/null +++ b/preview/pr-1773/api/latest/Recovery_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Recovery.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Recovery.h
+
+
+
1/*
+
2Copyright (c) 2010-2017, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef RECOVERY_H_
+
29#define RECOVERY_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <string>
+
34
+
35namespace rtabmap {
+
36
+
37class ProgressState;
+
38
+
47bool RTABMAP_CORE_EXPORT databaseRecovery(
+
48 const std::string & corruptedDatabase,
+
49 bool keepCorruptedDatabase = true,
+
50 std::string * errorMsg = 0,
+
51 ProgressState * progressState = 0);
+
52
+
53}
+
54
+
55
+
56#endif /* RECOVERY_H_ */
+ + +
bool RTABMAP_CORE_EXPORT databaseRecovery(const std::string &corruptedDatabase, bool keepCorruptedDatabase=true, std::string *errorMsg=0, ProgressState *progressState=0)
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/RegistrationIcp_8h_source.html b/preview/pr-1773/api/latest/RegistrationIcp_8h_source.html new file mode 100644 index 00000000..0edf7f5c --- /dev/null +++ b/preview/pr-1773/api/latest/RegistrationIcp_8h_source.html @@ -0,0 +1,246 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/RegistrationIcp.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RegistrationIcp.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef REGISTRATIONICP_H_
+
29#define REGISTRATIONICP_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Registration.h>
+
34#include <rtabmap/core/Signature.h>
+
35
+
36namespace rtabmap {
+
37
+
38// Geometrical registration
+
+
39class RTABMAP_CORE_EXPORT RegistrationIcp : public Registration
+
40{
+
41public:
+
+ +
43 kIcpUndef = -1,
+
44 kIcpPCL = 0,
+
45 kIcpPointMatcher = 1,
+
46 kIcpCCCoreLib = 2,
+
47 kIcpEnd = 3
+
48 };
+
+
49
+
50public:
+
58 static bool available(IcpStrategy strategy);
+
59
+
64 static const char * strategyName(IcpStrategy strategy);
+
65
+
66 // take ownership of child
+
67 RegistrationIcp(const ParametersMap & parameters = ParametersMap(), Registration * child = 0);
+
68 RegistrationIcp(IcpStrategy strategy, const ParametersMap & parameters = ParametersMap(), Registration * child = 0);
+
69 virtual ~RegistrationIcp();
+
70
+
71 virtual void parseParameters(const ParametersMap & parameters);
+
72
+
73protected:
+ +
75 Signature & from,
+
76 Signature & to,
+
77 Transform guess,
+
78 RegistrationInfo & info) const;
+
79 virtual bool isScanRequiredImpl() const {return true;}
+
80 virtual bool canUseGuessImpl() const {return true;}
+
81 virtual float getMinGeometryCorrespondencesRatioImpl() const {return _correspondenceRatio;}
+
82
+
83private:
+
84 IcpStrategy _strategy;
+
85 float _maxTranslation;
+
86 float _maxRotation;
+
87 float _voxelSize;
+
88 int _downsamplingStep;
+
89 float _rangeMin;
+
90 float _rangeMax;
+
91 float _maxCorrespondenceDistance;
+
92 bool _reciprocalCorrespondences;
+
93 int _maxIterations;
+
94 float _epsilon;
+
95 float _correspondenceRatio;
+
96 bool _force4DoF;
+
97 int _filtersEnabled;
+
98 bool _pointToPlane;
+
99 int _pointToPlaneK;
+
100 float _pointToPlaneRadius;
+
101 float _pointToPlaneGroundNormalsUp;
+
102 float _pointToPlaneMinComplexity;
+
103 bool _pointToPlaneComplexityCentered;
+
104 int _pointToPlaneLowComplexityStrategy;
+
105 std::string _libpointmatcherConfig;
+
106 int _libpointmatcherKnn;
+
107 float _libpointmatcherEpsilon;
+
108 bool _libpointmatcherIntensity;
+
109 float _outlierRatio;
+
110 unsigned int _ccSamplingLimit;
+
111 bool _ccFilterOutFarthestPoints;
+
112 double _ccMaxFinalRMS;
+
113 std::string _debugExportFormat;
+
114 std::string _workingDir;
+
115
+
116 void * _libpointmatcherICP;
+
117 void * _libpointmatcherICPFilters;
+
118};
+
+
119
+
120}
+
121
+
122#endif /* REGISTRATIONICP_H_ */
+ + +
static bool available(IcpStrategy strategy)
Returns true if strategy is built into this rtabmap binary.
+
virtual Transform computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const
Strategy-specific registration.
+
virtual void parseParameters(const ParametersMap &parameters)
Parses Reg/RepeatOnce, Reg/Force3DoF and forwards to the child registration if set.
+
static const char * strategyName(IcpStrategy strategy)
Human-readable name for strategy ("PCL", "libpointmatcher", "CCCoreLib", or "Unknown").
+
Statistics and diagnostics returned by Registration.
+
Abstract base for registering two observations (visual, ICP, or both).
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/RegistrationInfo_8h_source.html b/preview/pr-1773/api/latest/RegistrationInfo_8h_source.html new file mode 100644 index 00000000..212d227e --- /dev/null +++ b/preview/pr-1773/api/latest/RegistrationInfo_8h_source.html @@ -0,0 +1,257 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/RegistrationInfo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RegistrationInfo.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef REGISTRATIONINFO_H_
+
29#define REGISTRATIONINFO_H_
+
30
+
31
+
32namespace rtabmap {
+
33
+
+ +
48{
+
49public:
+ +
51 totalTime(0.0),
+
52 inliers(0),
+
53 inliersRatio(0),
+ + +
56 matches(0),
+
57 variance(0.0f),
+ +
59 icpTranslation(0.0f),
+
60 icpRotation(0.0f),
+ + + +
64 icpRMS(0),
+ +
66
+
67 {
+
68 }
+
69
+
+ +
72 {
+
73 RegistrationInfo output;
+
74 output.totalTime = totalTime;
+
75 output.covariance = covariance.clone();
+
76 output.rejectedMsg = rejectedMsg;
+
77 output.inliers = inliers;
+ + + +
81 output.matches = matches;
+ +
83 output.variance = variance;
+ + +
86 output.icpRotation = icpRotation;
+ + + +
90 output.icpRMS = icpRMS;
+ +
92 return output;
+
93 }
+
+
94
+
95 cv::Mat covariance;
+
96 std::string rejectedMsg;
+
97 double totalTime;
+
99 // RegistrationVis
+ + + + +
104 std::vector<int> inliersIDs;
+ +
106 float variance;
+
107 std::vector<int> matchesIDs;
+
108 std::vector<int> projectedIDs;
+
109 std::vector<int> inliersPerCam;
+
110 std::vector<int> matchesPerCam;
+
112 // RegistrationIcp
+ + + + + + +
119 float icpRMS;
+ +
121};
+
+
122
+
123}
+
124
+
125#endif /* REGISTRATIONINFO_H_ */
+
Statistics and diagnostics returned by Registration.
+ +
std::vector< int > inliersPerCam
+ + + + +
std::vector< int > inliersIDs
+ + + + + + + + + + + +
std::vector< int > matchesIDs
+
std::vector< int > projectedIDs
+
std::vector< int > matchesPerCam
+
RegistrationInfo copyWithoutData() const
Copies scalar metrics and covariance; omits correspondence ID vectors.
+ + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/RegistrationVis_8h_source.html b/preview/pr-1773/api/latest/RegistrationVis_8h_source.html new file mode 100644 index 00000000..91f8b56d --- /dev/null +++ b/preview/pr-1773/api/latest/RegistrationVis_8h_source.html @@ -0,0 +1,265 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/RegistrationVis.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RegistrationVis.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef REGISTRATIONVIS_H_
+
29#define REGISTRATIONVIS_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Registration.h>
+
34#include <rtabmap/core/Signature.h>
+
35
+
36namespace rtabmap {
+
37
+
38class Feature2D;
+
39
+
40#ifdef RTABMAP_PYTHON
+
41class PyMatcher;
+
42#endif
+
43
+
+
60class RTABMAP_CORE_EXPORT RegistrationVis : public Registration
+
61{
+
62public:
+
64 RegistrationVis(const ParametersMap & parameters = ParametersMap(), Registration * child = 0);
+
65 virtual ~RegistrationVis();
+
66
+
68 virtual void parseParameters(const ParametersMap & parameters);
+
69
+
71 float getInlierDistance() const {return _inlierDistance;}
+
73 int getIterations() const {return _iterations;}
+
75 int getMinInliers() const {return _minInliers;}
+
77 int getNNType() const {return _nnType;}
+
79 std::string getNNTypeName() const {return getNNTypeName(_nnType);}
+
80
+
84 static std::string getNNTypeName(int nnType);
+
86 float getNNDR() const {return _nndr;}
+
88 int getEstimationType() const {return _estimationType;}
+
89
+
91 const Feature2D * getDetector() const {return _detectorFrom;}
+
92
+
93protected:
+ +
95 Signature & from,
+
96 Signature & to,
+
97 Transform guess,
+
98 RegistrationInfo & info) const;
+
99
+
100 virtual bool isImageRequiredImpl() const {return true;}
+
101 virtual bool canUseGuessImpl() const {return _correspondencesApproach != 0 || _guessWinSize>0;}
+
102 virtual int getMinVisualCorrespondencesImpl() const {return _minInliers;}
+
103
+
104private:
+
105 int _minInliers;
+
106 float _inlierDistance;
+
107 int _iterations;
+
108 int _refineIterations;
+
109 float _epipolarGeometryVar;
+
110 int _estimationType;
+
111 float _PnPReprojError;
+
112 int _PnPFlags;
+
113 int _PnPRefineIterations;
+
114 int _PnPVarMedianRatio;
+
115 float _PnPMaxVar;
+
116 bool _PnPSplitLinearCovarianceComponents;
+
117 unsigned int _multiSamplingPolicy;
+
118 int _correspondencesApproach;
+
119 int _flowWinSize;
+
120 int _flowIterations;
+
121 float _flowEps;
+
122 int _flowMaxLevel;
+
123 bool _flowGpu;
+
124 bool _flowUseMinEigenVals;
+
125 float _flowMinEigThreshold;
+
126 float _flowErrorThreshold;
+
127 float _nndr;
+
128 int _nnType;
+
129 bool _gmsWithRotation;
+
130 bool _gmsWithScale;
+
131 double _gmsThresholdFactor;
+
132 int _guessWinSize;
+
133 bool _guessMatchToProjection;
+
134 int _bundleAdjustment;
+
135 bool _depthAsMask;
+
136 float _maskFloorThreshold;
+
137 float _minInliersDistributionThr;
+
138 float _maxInliersMeanDistance;
+
139
+
140 ParametersMap _featureParameters;
+
141 ParametersMap _bundleParameters;
+
142
+
143 Feature2D * _detectorFrom;
+
144 Feature2D * _detectorTo;
+
145
+
146#ifdef RTABMAP_PYTHON
+
147 PyMatcher * _pyMatcher;
+
148#endif
+
149};
+
+
150
+
151}
+
152
+
153#endif /* REGISTRATION_H_ */
+
Abstract 2D feature detector and descriptor extractor for visual SLAM.
Definition Features2d.h:145
+
Statistics and diagnostics returned by Registration.
+
Visual registration between two signatures using features and geometry.
+
const Feature2D * getDetector() const
+
float getInlierDistance() const
+
virtual void parseParameters(const ParametersMap &parameters)
Parses Vis/ and feature parameters; recreates feature detectors.
+ +
static std::string getNNTypeName(int nnType)
Name of a Vis/CorNNType value.
+ + +
std::string getNNTypeName() const
+
virtual Transform computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const
Strategy-specific registration.
+
RegistrationVis(const ParametersMap &parameters=ParametersMap(), Registration *child=0)
child is owned and deleted in the destructor.
+ + +
Abstract base for registering two observations (visual, ICP, or both).
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Registration_8h_source.html b/preview/pr-1773/api/latest/Registration_8h_source.html new file mode 100644 index 00000000..f708aa6e --- /dev/null +++ b/preview/pr-1773/api/latest/Registration_8h_source.html @@ -0,0 +1,265 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Registration.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Registration.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef RTABMAP_REGISTRATION_H_
+
29#define RTABMAP_REGISTRATION_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Parameters.h>
+
34#include <rtabmap/core/Signature.h>
+
35#include <rtabmap/core/RegistrationInfo.h>
+
36
+
37namespace rtabmap {
+
38
+
+
60class RTABMAP_CORE_EXPORT Registration
+
61{
+
62public:
+
+
64 enum Type {
+
65 kTypeUndef = -1,
+
66 kTypeVis = 0,
+
67 kTypeIcp = 1,
+
68 kTypeVisIcp = 2
+
69 };
+
+ + +
74
+
75public:
+
77 static Registration * create(const ParametersMap & parameters);
+
79 static Registration * create(Type & type, const ParametersMap & parameters = ParametersMap());
+
80
+
81public:
+
82 virtual ~Registration();
+
84 virtual void parseParameters(const ParametersMap & parameters);
+
85
+
87 bool isImageRequired() const;
+
89 bool isScanRequired() const;
+
91 bool isUserDataRequired() const;
+
92
+
94 bool canUseGuess() const;
+
95
+ + +
100
+
102 bool repeatOnce() const {return repeatOnce_;}
+
104 bool force3DoF() const {return force3DoF_;}
+
105
+ +
108
+ +
111 const Signature & from,
+
112 const Signature & to,
+
113 Transform guess = Transform::getIdentity(),
+
114 RegistrationInfo * info = 0) const;
+ +
117 const SensorData & from,
+
118 const SensorData & to,
+
119 Transform guess = Transform::getIdentity(),
+
120 RegistrationInfo * info = 0) const;
+
121
+ +
124 Signature & from,
+
125 Signature & to,
+
126 Transform guess = Transform::getIdentity(),
+
127 RegistrationInfo * info = 0) const;
+
128
+
129protected:
+
131 Registration(const ParametersMap & parameters = ParametersMap(), Registration * child = 0);
+
132
+ +
139 Signature & from,
+
140 Signature & to,
+
141 Transform guess,
+
142 RegistrationInfo & info) const = 0;
+
143
+
144 virtual bool isImageRequiredImpl() const {return false;}
+
145 virtual bool isScanRequiredImpl() const {return false;}
+
146 virtual bool isUserDataRequiredImpl() const {return false;}
+
147 virtual bool canUseGuessImpl() const {return false;}
+
148 virtual int getMinVisualCorrespondencesImpl() const {return 0;}
+
149 virtual float getMinGeometryCorrespondencesRatioImpl() const {return 0.0f;}
+
150
+
151private:
+
152 bool repeatOnce_;
+
153 bool force3DoF_;
+
154 Registration * child_;
+
155
+
156};
+
+
157
+
158}
+
159
+
160#endif /* RTABMAP_REGISTRATION_H_ */
+
Statistics and diagnostics returned by Registration.
+
Abstract base for registering two observations (visual, ICP, or both).
+
virtual void parseParameters(const ParametersMap &parameters)
Parses Reg/RepeatOnce, Reg/Force3DoF and forwards to the child registration if set.
+
static Registration * create(Type &type, const ParametersMap &parameters=ParametersMap())
Creates a registration of type (may be adjusted, e.g. to kTypeVis). Caller owns the pointer.
+
virtual Transform computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const =0
Strategy-specific registration.
+
bool isUserDataRequired() const
True if user data is needed (parent or child).
+
Transform computeTransformation(const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
Registers two SensorData observations (wrapped as signatures).
+
Transform computeTransformationMod(Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
Registers from to to; signatures may be modified by the implementation.
+
static Registration * create(const ParametersMap &parameters)
Creates a registration from Reg/Strategy in parameters. Caller owns the pointer.
+
bool repeatOnce() const
+
static double COVARIANCE_LINEAR_EPSILON
Minimum diagonal value for linear covariance (m²).
+
Registration(const ParametersMap &parameters=ParametersMap(), Registration *child=0)
child is owned and deleted in the destructor.
+
bool isScanRequired() const
True if laser scans are needed (parent or child).
+
Transform computeTransformation(const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
Registers from to to using immutable signatures (copied internally).
+
bool canUseGuess() const
True if the strategy can refine an initial guess (parent or child).
+ +
int getMinVisualCorrespondences() const
Minimum visual inliers required (max of parent and child thresholds).
+
void setChildRegistration(Registration *child)
Replaces the current child registration; takes ownership of child.
+
float getMinGeometryCorrespondencesRatio() const
Minimum geometry inlier ratio required (max of parent and child thresholds).
+
bool isImageRequired() const
True if images are needed (parent or child).
+
static double COVARIANCE_ANGULAR_EPSILON
Minimum diagonal value for angular covariance (rad²).
+
Type
Registration strategy selected by Reg/Strategy.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/RtabmapEvent_8h_source.html b/preview/pr-1773/api/latest/RtabmapEvent_8h_source.html new file mode 100644 index 00000000..a68754ce --- /dev/null +++ b/preview/pr-1773/api/latest/RtabmapEvent_8h_source.html @@ -0,0 +1,440 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/RtabmapEvent.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RtabmapEvent.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef RTABMAPEVENT_H_
+
29#define RTABMAPEVENT_H_
+
30
+
31
+
32
+
33#include <rtabmap/utilite/UEvent.h>
+ +
35#include "rtabmap/core/Statistics.h"
+
36#include "rtabmap/core/Parameters.h"
+
37
+
38namespace rtabmap
+
39{
+
40
+
+
42class RtabmapEvent : public UEvent
+
43{
+
44public:
+
45 RtabmapEvent(const Statistics & stats) :
+
46 UEvent(0),
+
47 _stats(stats) {}
+
48
+
49 virtual ~RtabmapEvent() {}
+
50 const Statistics & getStats() const {return _stats;}
+
51 virtual std::string getClassName() const {return std::string("RtabmapEvent");}
+
52
+
53private:
+
54 Statistics _stats;
+
55};
+
+
56
+
+
67class RtabmapEventCmd : public UEvent
+
68{
+
69public:
+
70 enum dummy {d}; // Hack, to fix Eclipse complaining about not defined Cmd enum ?!
+ +
93public:
+
94 RtabmapEventCmd(Cmd cmd, const ParametersMap & parameters = ParametersMap()) :
+
95 UEvent(0),
+
96 cmd_(cmd),
+
97 parameters_(parameters){}
+
98 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const ParametersMap & parameters = ParametersMap()) :
+
99 UEvent(0),
+
100 cmd_(cmd),
+
101 value1_(value1),
+
102 parameters_(parameters){}
+
103 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const ParametersMap & parameters = ParametersMap()) :
+
104 UEvent(0),
+
105 cmd_(cmd),
+
106 value1_(value1),
+
107 value2_(value2),
+
108 parameters_(parameters){}
+
109 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const UVariant & value3, const ParametersMap & parameters = ParametersMap()) :
+
110 UEvent(0),
+
111 cmd_(cmd),
+
112 value1_(value1),
+
113 value2_(value2),
+
114 value3_(value3),
+
115 parameters_(parameters){}
+
116 RtabmapEventCmd(Cmd cmd, const UVariant & value1, const UVariant & value2, const UVariant & value3, const UVariant & value4, const ParametersMap & parameters = ParametersMap()) :
+
117 UEvent(0),
+
118 cmd_(cmd),
+
119 value1_(value1),
+
120 value2_(value2),
+
121 value3_(value3),
+
122 value4_(value4),
+
123 parameters_(parameters){}
+
124
+
125 virtual ~RtabmapEventCmd() {}
+
126 Cmd getCmd() const {return cmd_;}
+
127
+
128 const UVariant & value1() const {return value1_;}
+
129 const UVariant & value2() const {return value2_;}
+
130 const UVariant & value3() const {return value3_;}
+
131 const UVariant & value4() const {return value4_;}
+
132
+
133 const ParametersMap & getParameters() const {return parameters_;}
+
134
+
135 virtual std::string getClassName() const {return std::string("RtabmapEventCmd");}
+
136
+
137private:
+
138 Cmd cmd_;
+
139 UVariant value1_;
+
140 UVariant value2_;
+
141 UVariant value3_;
+
142 UVariant value4_;
+
143 ParametersMap parameters_;
+
144};
+
+
145
+
+ +
147{
+
148public:
+
149 enum dummy {d}; // Hack, to fix Eclipse complaining about not defined Status enum ?!
+
150 enum Status {
+
151 kInitializing,
+
152 kInitialized,
+
153 kClosing,
+
154 kClosed,
+
155 kInfo,
+
156 kError
+
157 };
+
158
+
159public:
+
160 RtabmapEventInit(Status status, const std::string & info = std::string()) :
+
161 UEvent(0),
+
162 _status(status),
+
163 _info(info)
+
164 {}
+
165
+
166 // for convenience
+
167 RtabmapEventInit(const std::string & info) :
+
168 UEvent(0),
+
169 _status(kInfo),
+
170 _info(info)
+
171 {}
+
172
+
173 Status getStatus() const {return _status;}
+
174 const std::string & getInfo() const {return _info;}
+
175
+
176 virtual ~RtabmapEventInit() {}
+
177 virtual std::string getClassName() const {return std::string("RtabmapEventInit");}
+
178private:
+
179 Status _status;
+
180 std::string _info; // "Loading signatures", "Loading words" ...
+
181};
+
+
182
+
+ +
184{
+
185public:
+
186 RtabmapEvent3DMap(int codeError = 0):
+
187 UEvent(codeError){}
+ +
189 const std::map<int, Signature> & signatures,
+
190 const std::map<int, Transform> & poses,
+
191 const std::multimap<int, Link> & constraints) :
+
192 UEvent(0),
+
193 _signatures(signatures),
+
194 _poses(poses),
+
195 _constraints(constraints)
+
196 {}
+
197
+
198 virtual ~RtabmapEvent3DMap() {}
+
199
+
200 const std::map<int, Signature> & getSignatures() const {return _signatures;}
+
201 const std::map<int, Transform> & getPoses() const {return _poses;}
+
202 const std::multimap<int, Link> & getConstraints() const {return _constraints;}
+
203
+
204 virtual std::string getClassName() const {return std::string("RtabmapEvent3DMap");}
+
205
+
206private:
+
207 std::map<int, Signature> _signatures;
+
208 std::map<int, Transform> _poses;
+
209 std::multimap<int, Link> _constraints;
+
210};
+
+
211
+
+ +
213{
+
214public:
+ +
216 UEvent(0),
+
217 _planningTime(0.0) {}
+ +
219 int goalId,
+
220 const std::vector<std::pair<int, Transform> > & poses,
+
221 double planningTime) :
+
222 UEvent(goalId),
+
223 _poses(poses),
+
224 _planningTime(planningTime) {}
+ +
226 int goalId,
+
227 const std::string & goalLabel,
+
228 const std::vector<std::pair<int, Transform> > & poses,
+
229 double planningTime) :
+
230 UEvent(goalId),
+
231 _goalLabel(goalLabel),
+
232 _poses(poses),
+
233 _planningTime(planningTime) {}
+
234
+
235 virtual ~RtabmapGlobalPathEvent() {}
+
236 int getGoal() const {return this->getCode();}
+
237 const std::string & getGoalLabel() const {return _goalLabel;}
+
238 double getPlanningTime() const {return _planningTime;}
+
239 const std::vector<std::pair<int, Transform> > & getPoses() const {return _poses;}
+
240 virtual std::string getClassName() const {return std::string("RtabmapGlobalPathEvent");}
+
241
+
242private:
+
243 std::string _goalLabel;
+
244 std::vector<std::pair<int, Transform> > _poses;
+
245 double _planningTime;
+
246};
+
+
247
+
+ +
249{
+
250public:
+
251 RtabmapLabelErrorEvent(int id, const std::string & label):
+
252 UEvent(id),
+
253 _label(label){}
+
254
+
255 virtual ~RtabmapLabelErrorEvent() {}
+
256 int id() const {return this->getCode();}
+
257 const std::string & label() const {return _label;}
+
258 virtual std::string getClassName() const {return std::string("RtabmapLabelErrorEvent");}
+
259
+
260private:
+
261 std::string _label;
+
262};
+
+
263
+
+ +
265{
+
266public:
+
267 RtabmapGoalStatusEvent(int status):
+
268 UEvent(status){}
+
269
+
270 virtual ~RtabmapGoalStatusEvent() {}
+
271 virtual std::string getClassName() const {return std::string("RtabmapGoalStatusEvent");}
+
272};
+
+
273
+
274} // namespace rtabmap
+
275
+
276#endif /* RTABMAPEVENT_H_ */
+
UVariant class for storing and converting between different data types.
+ +
int getCode() const
Definition UEvent.h:74
+
A variant type that can hold values of different types.
Definition UVariant.h:54
+ +
virtual std::string getClassName() const
+
Command sent to RtabmapThread, with its parameters.
+
virtual std::string getClassName() const
+
Cmd
What the receiving RtabmapThread should do.
+ + + + + + + + + + + + + + + + + + + + +
virtual std::string getClassName() const
+ +
virtual std::string getClassName() const
+ +
virtual std::string getClassName() const
+ +
virtual std::string getClassName() const
+ +
virtual std::string getClassName() const
+
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/RtabmapThread_8h_source.html b/preview/pr-1773/api/latest/RtabmapThread_8h_source.html new file mode 100644 index 00000000..c31aa9b7 --- /dev/null +++ b/preview/pr-1773/api/latest/RtabmapThread_8h_source.html @@ -0,0 +1,261 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/RtabmapThread.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RtabmapThread.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef RTABMAPTHREAD_H_
+
29#define RTABMAPTHREAD_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+ +
34#include <rtabmap/utilite/UEventsHandler.h>
+
35#include <rtabmap/utilite/USemaphore.h>
+
36#include <rtabmap/utilite/UMutex.h>
+
37
+
38#include "rtabmap/core/RtabmapEvent.h"
+
39#include "rtabmap/core/SensorData.h"
+
40#include "rtabmap/core/Parameters.h"
+
41#include "rtabmap/core/OdometryEvent.h"
+
42
+
43#include <queue>
+
44
+
45class UTimer;
+
46
+
47namespace rtabmap {
+
48
+
49class Rtabmap;
+
50
+
+
104class RTABMAP_CORE_EXPORT RtabmapThread :
+
105 public UThreadNode,
+
106 public UEventsHandler
+
107{
+
108public:
+
+
110 enum State {
+ +
112 kStateProcessCommand
+
113 };
+
+
114
+
115public:
+ +
127 virtual ~RtabmapThread();
+
128
+ +
138 void setDetectorRate(float rate);
+
145 void setDataBufferSize(unsigned int bufferSize);
+
152 void createIntermediateNodes(bool enabled);
+
153
+
155 float getDetectorRate() const {return _rate;}
+
157 unsigned int getDataBufferSize() const {return _dataBufferMaxSize;}
+
159 bool getCreateIntermediateNodes() const {return _createIntermediateNodes;}
+
160
+
171 void close(bool databaseSaved, const std::string & databasePath = "");
+
172
+
173protected:
+
183 virtual bool handleEvent(UEvent * anEvent);
+
184
+
185private:
+
186 virtual void mainLoopBegin();
+
187 virtual void mainLoop();
+
188 virtual void mainLoopKill();
+
189 void process();
+
190 void addData(const OdometryEvent & odomEvent);
+
191 bool getData(OdometryEvent & data);
+
192 void pushNewState(State newState, const RtabmapEventCmd & cmdEvent = RtabmapEventCmd(RtabmapEventCmd::kCmdUndef));
+
193 void publishMap(bool optimized, bool full, bool graphOnly) const;
+
194
+
195private:
+
196 UMutex _stateMutex;
+
197 std::queue<State> _state;
+
198 std::queue<RtabmapEventCmd> _stateParam;
+
199
+
200 std::list<OdometryEvent> _dataBuffer;
+
201 std::list<double> _newMapEvents;
+
202 UMutex _dataMutex;
+
203 USemaphore _dataAdded;
+
204 unsigned int _dataBufferMaxSize;
+
205 float _rate;
+
206 bool _createIntermediateNodes;
+
207 double _previousStamp;
+
208
+
209 Rtabmap * _rtabmap;
+
210 bool _paused;
+
211 Transform lastPose_;
+
212 cv::Mat covariance_;
+
213
+
214 cv::Mat _userData;
+
215 UMutex _userDataMutex;
+
216};
+
+
217
+
218} /* namespace rtabmap */
+
219#endif /* RTABMAPTHREAD_H_ */
+
Backward-compatible alias header for UThread.
+ + + + + + +
One processed frame with the pose the odometry integrated for it.
+
Command sent to RtabmapThread, with its parameters.
+
Runs a Rtabmap instance in its own thread, driven by events.
+
State
What the main loop does on its next wake-up.
+ +
bool getCreateIntermediateNodes() const
+
RtabmapThread(Rtabmap *rtabmap)
Constructor.
+
void createIntermediateNodes(bool enabled)
Keeps the frames skipped by setDetectorRate() as intermediate nodes.
+
void setDetectorRate(float rate)
Sets the maximum rate at which frames are processed (Hz, 0 = unlimited).
+
unsigned int getDataBufferSize() const
+
void close(bool databaseSaved, const std::string &databasePath="")
Joins the thread and closes rtabmap. This will delete rtabmap object if set.
+
virtual bool handleEvent(UEvent *anEvent)
Receives the events listed in the class description.
+
void setDataBufferSize(unsigned int bufferSize)
Sets how many frames may wait in the buffer (0 = unlimited).
+
float getDetectorRate() const
+
void clearBufferedData()
Drops the buffered frames, the pending user data and the odometry state.
+
Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure).
Definition Rtabmap.h:194
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Rtabmap_8h_source.html b/preview/pr-1773/api/latest/Rtabmap_8h_source.html new file mode 100644 index 00000000..e8f7c385 --- /dev/null +++ b/preview/pr-1773/api/latest/Rtabmap_8h_source.html @@ -0,0 +1,580 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Rtabmap.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Rtabmap.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef RTABMAP_H_
+
29#define RTABMAP_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include "rtabmap/core/Parameters.h"
+
34#include "rtabmap/core/SensorData.h"
+
35#include "rtabmap/core/Statistics.h"
+
36#include "rtabmap/core/Link.h"
+
37#include "rtabmap/core/ProgressState.h"
+
38#include "rtabmap/core/Graph.h"
+
39
+
40#include <opencv2/core/core.hpp>
+
41#include <list>
+
42#include <stack>
+
43#include <set>
+
44
+
45namespace rtabmap
+
46{
+
47
+
48class EpipolarGeometry;
+
49class Memory;
+
50class BayesFilter;
+
51class Signature;
+
52class Optimizer;
+
53
+
+
193class RTABMAP_CORE_EXPORT Rtabmap
+
194{
+
195public:
+
+ + + +
200 kVhUndef
+
201 };
+
+
202
+
203public:
+
204 Rtabmap();
+
205 virtual ~Rtabmap();
+
206
+ +
224 const SensorData & data,
+
225 Transform odomPose,
+
226 const cv::Mat & odomCovariance = cv::Mat::eye(6,6,CV_64FC1),
+
227 const std::vector<float> & odomVelocity = std::vector<float>(),
+
228 const std::map<std::string, float> & externalStats = std::map<std::string, float>());
+ +
237 const SensorData & data,
+
238 Transform odomPose,
+
239 float odomLinearVariance,
+
240 float odomAngularVariance,
+
241 const std::vector<float> & odomVelocity = std::vector<float>(),
+
242 const std::map<std::string, float> & externalStats = std::map<std::string, float>());
+ +
254 const cv::Mat & image,
+
255 int id=0, const std::map<std::string, float> & externalStats = std::map<std::string, float>());
+
256
+
271 void init(const ParametersMap & parameters, const std::string & databasePath = "", bool loadDatabaseParameters = false);
+
282 void init(const std::string & configFile = "", const std::string & databasePath = "", bool loadDatabaseParameters = false);
+
283
+
294 void close(bool databaseSaved = true, const std::string & ouputDatabasePath = "");
+
295
+
297 const std::string & getWorkingDir() const {return _wDir;}
+
299 bool isRGBDMode() const { return _rgbdSlamMode; }
+
301 int getLoopClosureId() const {return _loopClosureHypothesis.first;}
+
303 float getLoopClosureValue() const {return _loopClosureHypothesis.second;}
+
305 int getHighestHypothesisId() const {return _highestHypothesis.first;}
+
307 float getHighestHypothesisValue() const {return _highestHypothesis.second;}
+
309 int getLastLocationId() const;
+
311 std::list<int> getWM() const;
+
313 std::set<int> getSTM() const;
+
315 int getWMSize() const;
+
317 int getSTMSize() const;
+
319 std::map<int, int> getWeights() const;
+
321 int getTotalMemSize() const;
+
323 double getLastProcessTime() const {return _lastProcessTime;};
+
325 bool isInSTM(int locationId) const;
+
327 bool isIDsGenerated() const;
+
329 const Statistics & getStatistics() const;
+
331 const std::map<int, Transform> & getLocalOptimizedPoses() const {return _optimizedPoses;}
+
333 const std::multimap<int, Link> & getLocalConstraints() const {return _constraints;}
+
337 Transform getPose(int locationId) const;
+
349 Transform getMapCorrection() const {return _mapCorrection;}
+
351 const Memory * getMemory() const {return _memory;}
+
353 float getGoalReachedRadius() const {return _goalReachedRadius;}
+
355 float getLocalRadius() const {return _localRadius;}
+
363 const Transform & getLastLocalizationPose() const {return _lastLocalizationPose;}
+
364
+
369 float getTimeThreshold() const {return _maxTimeAllowed;}
+
383 void setTimeThreshold(float maxTimeAllowed);
+
388 int getMemoryThreshold() const {return _maxMemoryAllowed;}
+
399 void setMemoryThreshold(int maxMemoryAllowed);
+
400
+
448 void setInitialPose(const Transform & initialPose);
+ +
465 bool labelLocation(int id, const std::string & label);
+
481 bool setUserData(int id, const cv::Mat & data);
+
488 void generateDOTGraph(const std::string & path, int id=0, int margin=5);
+ +
504 const std::string & path,
+
505 bool optimized,
+
506 bool global,
+
507 int format
+
508 );
+ +
517 void dumpPrediction() const;
+
519 void dumpData() const;
+
524 void parseParameters(const ParametersMap & parameters);
+
526 const ParametersMap & getParameters() const {return _parameters;}
+
535 void setWorkingDirectory(std::string path);
+ + +
568 void setOptimizedPoses(const std::map<int, Transform> & poses, const std::multimap<int, Link> & constraints);
+
576 Signature getSignatureCopy(int id, bool images, bool scan, bool userData, bool occupancyGrid, bool withWords, bool withGlobalDescriptors) const;
+
581 RTABMAP_DEPRECATED
+
582 void get3DMap(std::map<int, Signature> & signatures,
+
583 std::map<int, Transform> & poses,
+
584 std::multimap<int, Link> & constraints,
+
585 bool optimized,
+
586 bool global) const;
+
603 void getGraph(std::map<int, Transform> & poses,
+
604 std::multimap<int, Link> & constraints,
+
605 bool optimized,
+
606 bool global,
+
607 std::map<int, Signature> * signatures = 0,
+
608 bool withImages = false,
+
609 bool withScan = false,
+
610 bool withUserData = false,
+
611 bool withGrid = false,
+
612 bool withWords = true,
+
613 bool withGlobalDescriptors = true) const;
+
624 std::map<int, Transform> getNodesInRadius(const Transform & pose, float radius, int k=0, std::map<int, float> * distsSqr=0);
+
635 std::map<int, Transform> getNodesInRadius(int nodeId, float radius, int k=0, std::map<int, float> * distsSqr=0);
+ +
664 float clusterRadiusMax = 0.5f,
+
665 float clusterAngle = M_PI/6.0f,
+
666 int iterations = 1,
+
667 bool intraSession = true,
+
668 bool interSession = true,
+
669 const ProgressState * state = 0,
+
670 float clusterRadiusMin = 0.0f,
+
671 int toFromMapId = -1);
+ +
685 int optimizerType = 1 /*g2o*/,
+
686 bool rematchFeatures = true,
+
687 int iterations = 0,
+
688 float pixelVariance = 0.0f);
+ +
698 const std::map<int, Transform> & mapPoses,
+
699 const cv::Mat & map,
+
700 float xMin,
+
701 float yMin,
+
702 float cellSize,
+
703 int cropRadius = 1,
+
704 bool filterScans = false);
+ +
729 bool addLink(const Link & link);
+
735 cv::Mat getInformation(const cv::Mat & covariance) const;
+
750 void addNodesToRepublish(const std::vector<int> & ids);
+
773 void setDummyDictionary(bool enabled = true);
+
774
+
776 int getPathStatus() const {return _pathStatus;}
+
781 void clearPath(int status);
+
794 bool computePath(int targetNode, bool global);
+
803 bool computePath(const Transform & targetPose, float tolerance = -1.0f);
+
805 const std::vector<std::pair<int, Transform> > & getPath() const {return _path;}
+
807 std::vector<std::pair<int, Transform> > getPathNextPoses() const;
+
809 std::vector<int> getPathNextNodes() const;
+ +
813 unsigned int getPathCurrentIndex() const {return _pathCurrentIndex;}
+
815 unsigned int getPathCurrentGoalIndex() const {return _pathGoalIndex;}
+
817 const Transform & getPathTransformToGoal() const {return _pathTransformToGoal;}
+
818
+
843 std::map<int, Transform> getForwardWMPoses(int fromId, int maxNearestNeighbors, float radius, int maxDiffID) const;
+
879 std::map<int, std::map<int, Transform> > getPaths(const std::map<int, Transform> & poses, const Transform & target, int maxGraphDepth = 0) const;
+
910 void adjustLikelihood(std::map<int, float> & likelihood) const;
+
911
+
912private:
+
913 void optimizeCurrentMap(int id,
+
914 bool lookInDatabase,
+
915 std::map<int, Transform> & optimizedPoses,
+
916 cv::Mat & covariance,
+
917 std::multimap<int, Link> * constraints = 0,
+
918 double * error = 0,
+
919 int * iterationsDone = 0) const;
+
920 std::map<int, Transform> optimizeGraph(
+
921 int fromId,
+
922 const std::set<int> & ids,
+
923 const std::map<int, Transform> & guessPoses,
+
924 bool lookInDatabase,
+
925 cv::Mat & covariance,
+
926 std::multimap<int, Link> * constraints = 0,
+
927 double * error = 0,
+
928 int * iterationsDone = 0) const;
+
929 std::list<std::pair<int, int> > repairGraph(
+
930 graph::MaxGraphErrors & maxGraphErrors,
+
931 std::map<int, Transform> & poses,
+
932 std::multimap<int, Link> & constraints,
+
933 double & optimizationError,
+
934 int & optimizationIterations,
+
935 cv::Mat & optimizationCovariance);
+
936 void updateGoalIndex();
+
937 bool computePath(int targetNode, std::map<int, Transform> nodes, const std::multimap<int, rtabmap::Link> & constraints);
+
938
+
939 void createGlobalScanMap();
+
940
+
941 void setupLogFiles(bool overwrite = false);
+
942 void flushStatisticLogs();
+
943
+
944private:
+
945 // Modifiable parameters
+
946 bool _publishStats;
+
947 bool _publishLastSignatureData;
+
948 bool _publishPdf;
+
949 bool _publishLikelihood;
+
950 bool _publishRAMUsage;
+
951 bool _computeRMSE;
+
952 bool _saveWMState;
+
953 float _maxTimeAllowed;
+
954 unsigned int _maxMemoryAllowed;
+
955 float _loopThr;
+
956 float _loopRatio;
+
957 float _aggressiveLoopThr;
+
958 int _virtualPlaceLikelihoodRatio;
+
959 float _maxLoopClosureDistance;
+
960 bool _verifyLoopClosureHypothesis;
+
961 unsigned int _maxRetrieved;
+
962 unsigned int _maxLocalRetrieved;
+
963 unsigned int _maxRepublished;
+
964 bool _rawDataKept;
+
965 bool _statisticLogsBufferedInRAM;
+
966 bool _statisticLogged;
+
967 bool _statisticLoggedHeaders;
+
968 bool _rgbdSlamMode;
+
969 float _rgbdLinearUpdate;
+
970 float _rgbdAngularUpdate;
+
971 float _rgbdLinearSpeedUpdate;
+
972 float _rgbdAngularSpeedUpdate;
+
973 float _newMapOdomChangeDistance;
+
974 bool _neighborLinkRefining;
+
975 bool _proximityByTime;
+
976 bool _proximityBySpace;
+
977 bool _scanMatchingIdsSavedInLinks;
+
978 bool _loopClosureIdentityGuess;
+
979 float _localRadius;
+
980 float _localImmunizationRatio;
+
981 int _proximityMaxGraphDepth;
+
982 int _proximityMaxPaths;
+
983 int _proximityMaxNeighbors;
+
984 float _proximityFilteringRadius;
+
985 bool _proximityRawPosesUsed;
+
986 float _proximityAngle;
+
987 bool _proximityOdomGuess;
+
988 double _proximityMergedScanCovFactor;
+
989 std::string _databasePath;
+
990 bool _optimizeFromGraphEnd;
+
991 float _optimizationMaxError;
+
992 float _optimizationMaxErrorRepairRadius;
+
993 bool _startNewMapOnLoopClosure;
+
994 bool _startNewMapOnGoodSignature;
+
995 float _goalReachedRadius;
+
996 bool _goalsSavedInUserData;
+
997 int _pathStuckIterations;
+
998 float _pathLinearVelocity;
+
999 float _pathAngularVelocity;
+
1000 bool _forceOdom3doF;
+
1001 bool _restartAtOrigin;
+
1002 bool _loopCovLimited;
+
1003 bool _loopGPS;
+
1004 int _maxOdomCacheSize;
+
1005 bool _localizationSmoothing;
+
1006 double _localizationPriorInf;
+
1007 bool _localizationSecondTryWithoutProximityLinks;
+
1008 bool _createGlobalScanMap;
+
1009 float _markerPriorsLinearVariance;
+
1010 float _markerPriorsAngularVariance;
+
1011
+
1012 std::pair<int, float> _loopClosureHypothesis;
+
1013 std::pair<int, float> _highestHypothesis;
+
1014 double _lastProcessTime;
+
1015 bool _someNodesHaveBeenTransferred;
+
1016 float _distanceTravelled;
+
1017 float _distanceTravelledSinceLastLocalization;
+
1018 bool _optimizeFromGraphEndChanged;
+
1019
+
1020 // Abstract classes containing all loop closure
+
1021 // strategies for a type of signature or configuration.
+
1022 EpipolarGeometry * _epipolarGeometry;
+
1023 BayesFilter * _bayesFilter;
+
1024 Optimizer * _graphOptimizer;
+
1025 ParametersMap _parameters;
+
1026
+
1027 Memory * _memory;
+
1028
+
1029 FILE* _foutFloat;
+
1030 FILE* _foutInt;
+
1031 std::list<std::string> _bufferedLogsF;
+
1032 std::list<std::string> _bufferedLogsI;
+
1033
+
1034 Statistics statistics_;
+
1035
+
1036 std::string _wDir;
+
1037
+
1038 std::map<int, Transform> _optimizedPoses;
+
1039 std::multimap<int, Link> _constraints;
+
1040 Transform _mapCorrection;
+
1041 Transform _mapCorrectionBackup;
+
1042 Transform _lastLocalizationPose;
+
1043 int _lastLocalizationNodeId;
+
1044 cv::Mat _localizationCovariance;
+
1045 std::map<int, std::pair<cv::Point3d, Transform> > _gpsGeocentricCache;
+
1046 bool _currentSessionHasGPS;
+
1047 LaserScan _globalScanMap;
+
1048 std::map<int, Transform> _globalScanMapPoses;
+
1049 std::map<int, Transform> _odomCachePoses;
+
1050 std::multimap<int, Link> _odomCacheConstraints;
+
1051 std::map<int, Transform> _markerPriors;
+
1052 std::pair<int, int> _lastRejectedLoopClosureIds;
+
1053
+
1054 std::set<int> _nodesToRepublish;
+
1055
+
1056 // Planning stuff
+
1057 int _pathStatus;
+
1058 std::vector<std::pair<int,Transform> > _path;
+
1059 std::set<unsigned int> _pathUnreachableNodes;
+
1060 unsigned int _pathCurrentIndex;
+
1061 unsigned int _pathGoalIndex;
+
1062 Transform _pathTransformToGoal;
+
1063 int _pathStuckCount;
+
1064 float _pathStuckDistance;
+
1065
+
1066 bool _dummyDictionary;
+
1067};
+
+
1068
+
1069} // namespace rtabmap
+
1070#endif /* RTABMAP_H_ */
+
Recursive Bayesian filter for loop-closure hypothesis estimation in RTAB-Map.
Definition BayesFilter.h:82
+ +
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
+ +
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Definition Memory.h:102
+
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
+ +
Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure).
Definition Rtabmap.h:194
+
bool setUserData(int id, const cv::Mat &data)
Attaches user data to signature id, compressing it on the fly if needed.
+
const Memory * getMemory() const
Definition Rtabmap.h:351
+
void addNodesToRepublish(const std::vector< int > &ids)
Marks node ids whose data should be re-emitted on the next process().
+
bool computePath(const Transform &targetPose, float tolerance=-1.0f)
Plans a path in the current optimized map toward a metric goal pose.
+
std::map< int, Transform > getNodesInRadius(const Transform &pose, float radius, int k=0, std::map< int, float > *distsSqr=0)
Returns optimized poses within a metric radius of pose.
+
int getWMSize() const
+
void setWorkingDirectory(std::string path)
Sets the working directory used for dumps, logs and temporary files.
+
void init(const std::string &configFile="", const std::string &databasePath="", bool loadDatabaseParameters=false)
Initializes Rtabmap from a configuration file and a database.
+
int getLoopClosureId() const
Definition Rtabmap.h:301
+
const Transform & getLastLocalizationPose() const
Definition Rtabmap.h:363
+
std::map< int, int > getWeights() const
+
bool process(const cv::Mat &image, int id=0, const std::map< std::string, float > &externalStats=std::map< std::string, float >())
Appearance-only convenience overload (loop-closure detection without odometry).
+
void dumpData() const
Dumps the Memory state (signatures, words, dictionary) to the working directory.
+
void generateDOTGraph(const std::string &path, int id=0, int margin=5)
Writes a Graphviz DOT file of the pose graph.
+
void getGraph(std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global, std::map< int, Signature > *signatures=0, bool withImages=false, bool withScan=false, bool withUserData=false, bool withGrid=false, bool withWords=true, bool withGlobalDescriptors=true) const
Extracts a full snapshot of the current pose graph.
+
std::vector< int > getPathNextNodes() const
+
int getSTMSize() const
+
int triggerNewMap()
Starts a new map session (next process() will create a fresh map id).
+
const std::multimap< int, Link > & getLocalConstraints() const
Definition Rtabmap.h:333
+
void setDummyDictionary(bool enabled=true)
Loads the visual word dictionary as ids only, without descriptors.
+
float getHighestHypothesisValue() const
Definition Rtabmap.h:307
+
void clearPath(int status)
Clears the current path and sets its terminal status.
+
bool isInSTM(int locationId) const
+
void parseParameters(const ParametersMap &parameters)
Re-parses parameters and propagates them to owned sub-objects (Memory, BayesFilter,...
+
const Statistics & getStatistics() const
+
void close(bool databaseSaved=true, const std::string &ouputDatabasePath="")
Closes Rtabmap and releases the underlying Memory.
+
bool isIDsGenerated() const
+
int getPathCurrentGoalId() const
+
const std::vector< std::pair< int, Transform > > & getPath() const
Definition Rtabmap.h:805
+
int detectMoreLoopClosures(float clusterRadiusMax=0.5f, float clusterAngle=M_PI/6.0f, int iterations=1, bool intraSession=true, bool interSession=true, const ProgressState *state=0, float clusterRadiusMin=0.0f, int toFromMapId=-1)
Post-processing: searches for additional loop closures over the existing graph.
+
float getGoalReachedRadius() const
Definition Rtabmap.h:353
+
const std::string & getWorkingDir() const
Definition Rtabmap.h:297
+
int refineLinks()
Re-runs registration on every link of the current graph and updates the ones that converge.
+
void setMemoryThreshold(int maxMemoryAllowed)
Sets the maximum number of signatures kept in WM (0 = unbounded).
+
bool isRGBDMode() const
Definition Rtabmap.h:299
+
float getLocalRadius() const
Definition Rtabmap.h:355
+
void init(const ParametersMap &parameters, const std::string &databasePath="", bool loadDatabaseParameters=false)
Initializes Rtabmap with parameters and a database.
+
Signature getSignatureCopy(int id, bool images, bool scan, bool userData, bool occupancyGrid, bool withWords, bool withGlobalDescriptors) const
Returns a copy of signature id with optional payloads attached.
+
unsigned int getPathCurrentGoalIndex() const
Definition Rtabmap.h:815
+
void setOptimizedPoses(const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints)
Replaces the current optimized poses and constraints with externally provided ones.
+
Transform getMapCorrection() const
Definition Rtabmap.h:349
+
std::set< int > getSTM() const
+
void setTimeThreshold(float maxTimeAllowed)
Sets the per-iteration time budget (ms).
+
std::map< int, Transform > getForwardWMPoses(int fromId, int maxNearestNeighbors, float radius, int maxDiffID) const
Returns optimized poses of WM nodes located in front of fromId.
+
int getMemoryThreshold() const
Definition Rtabmap.h:388
+
double getLastProcessTime() const
Definition Rtabmap.h:323
+
bool process(const SensorData &data, Transform odomPose, float odomLinearVariance, float odomAngularVariance, const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())
Convenience overload: builds a diagonal covariance from scalar variances.
+
int getLastLocationId() const
+
unsigned int getPathCurrentIndex() const
Definition Rtabmap.h:813
+
void setInitialPose(const Transform &initialPose)
Sets the localization prior pose used to seed the next process() call (localization mode only).
+
const ParametersMap & getParameters() const
Definition Rtabmap.h:526
+
std::map< int, Transform > getNodesInRadius(int nodeId, float radius, int k=0, std::map< int, float > *distsSqr=0)
Returns optimized poses within a metric radius of node nodeId.
+
void adjustLikelihood(std::map< int, float > &likelihood) const
Applies the standard RTAB-Map likelihood adjustment.
+
void rejectLastLoopClosure()
Removes the loop-closure link added at the last process() iteration.
+
bool globalBundleAdjustment(int optimizerType=1, bool rematchFeatures=true, int iterations=0, float pixelVariance=0.0f)
Runs a global bundle adjustment over the optimized graph.
+
int getHighestHypothesisId() const
Definition Rtabmap.h:305
+
int getTotalMemSize() const
+
bool computePath(int targetNode, bool global)
Plans a path from the current location to node targetNode.
+
Transform getPose(int locationId) const
+
int cleanupLocalGrids(const std::map< int, Transform > &mapPoses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)
Filters spurious obstacles from every node's local grid using a reference 2D map.
+
void dumpPrediction() const
Dumps the Bayes-filter prediction matrix to a file in the working directory.
+
std::map< int, std::map< int, Transform > > getPaths(const std::map< int, Transform > &poses, const Transform &target, int maxGraphDepth=0) const
Segments a set of optimized poses into paths connected by neighbor links.
+
bool process(const SensorData &data, Transform odomPose, const cv::Mat &odomCovariance=cv::Mat::eye(6, 6, CV_64FC1), const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())
Main RTAB-Map iteration: ingests one sensor frame and updates the map.
+
float getLoopClosureValue() const
Definition Rtabmap.h:303
+
std::list< int > getWM() const
+
RTABMAP_DEPRECATED void get3DMap(std::map< int, Signature > &signatures, std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global) const
Deprecated: use getGraph() instead with withImages=true, withScan=true, withUserData=true and withGri...
+
const std::map< int, Transform > & getLocalOptimizedPoses() const
Definition Rtabmap.h:331
+
const Transform & getPathTransformToGoal() const
Definition Rtabmap.h:817
+
void deleteLastLocation()
Deletes the most recent (non-intermediate) location from the map.
+
cv::Mat getInformation(const cv::Mat &covariance) const
Converts an odometry covariance into an information matrix, clipping by Memory::getOdomMaxInf() when ...
+
bool addLink(const Link &link)
Adds an external link to the map.
+
void exportPoses(const std::string &path, bool optimized, bool global, int format)
Exports the current pose graph to a text file.
+
void resetMemory()
Clears all in-memory state and resets the database.
+
bool labelLocation(int id, const std::string &label)
Assigns or clears a label on signature id.
+
float getTimeThreshold() const
Definition Rtabmap.h:369
+
std::vector< std::pair< int, Transform > > getPathNextPoses() const
+
VhStrategy
Loop-closure verification strategy.
Definition Rtabmap.h:197
+
@ kVhEpipolar
Epipolar geometry verification (mostly historical, RGB-only mode).
Definition Rtabmap.h:199
+
@ kVhNone
No verification: the highest hypothesis above threshold is accepted.
Definition Rtabmap.h:198
+
int getPathStatus() const
Definition Rtabmap.h:776
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
Largest pose-graph constraint violations after optimization.
Definition Graph.h:232
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/SensorCaptureInfo_8h_source.html b/preview/pr-1773/api/latest/SensorCaptureInfo_8h_source.html new file mode 100644 index 00000000..1d5d4a3c --- /dev/null +++ b/preview/pr-1773/api/latest/SensorCaptureInfo_8h_source.html @@ -0,0 +1,232 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/SensorCaptureInfo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SensorCaptureInfo.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/Transform.h"
+
31#include <string>
+
32
+
33namespace rtabmap
+
34{
+
35
+
+ +
65{
+
66
+
67public:
+
+ +
81 cameraName(""),
+
82 id(0),
+
83 stamp(0.0),
+
84 timeCapture(0.0f),
+
85 timeDeskewing(0.0f),
+
86 timeDisparity(0.0f),
+
87 timeMirroring(0.0f),
+ + + + + + +
94 timeTotal(0.0f),
+
95 odomCovariance(cv::Mat::eye(6,6,CV_64FC1))
+
96 {
+
97 }
+
+
98
+ +
103
+
104 std::string cameraName;
+
105 int id;
+
106 double stamp;
+
107
+
108 // Timing information (all in seconds)
+ + + + + + + + + + +
119 float timeTotal;
+
120
+
121 // Odometry information
+ + +
124 std::vector<float> odomVelocity;
+
125};
+
+
126
+
133RTABMAP_DEPRECATED typedef SensorCaptureInfo CameraInfo;
+
134
+
135} // namespace rtabmap
+
Metadata structure for sensor data capture and processing.
+
float timeBilateralFiltering
Time for bilateral filtering of depth (seconds)
+
float timeScanFromDepth
Time to convert depth image to laser scan (seconds)
+
float timeCapture
Time to capture data from the sensor (seconds)
+
int id
Capture ID (typically matches SensorData ID)
+
float timeMirroring
Time for image mirroring/flipping (seconds)
+
float timeStereoExposureCompensation
Time for stereo exposure compensation (seconds)
+
virtual ~SensorCaptureInfo()
Virtual destructor.
+
Transform odomPose
Odometry pose at the time of capture (in odometry coordinate frame)
+
std::vector< float > odomVelocity
6DOF odometry velocity [vx, vy, vz, vroll, vpitch, vyaw] (m/s, rad/s)
+
SensorCaptureInfo()
Default constructor.
+
std::string cameraName
Camera/sensor name identifier.
+
cv::Mat odomCovariance
Odometry twist covariance matrix (6x6, CV_64FC1). Default: identity matrix.
+
float timeDeskewing
Time for laser scan deskewing (seconds)
+
float timeTotal
Total processing time (seconds)
+
float timeHistogramEqualization
Time for histogram equalization (seconds)
+
double stamp
Timestamp in seconds (typically matches SensorData stamp)
+
float timeImageDecimation
Time for image decimation/downsampling (seconds)
+
float timeDisparity
Time to compute stereo disparity (seconds)
+
float timeUndistortDepth
Time to undistort depth image (seconds)
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
RTABMAP_DEPRECATED typedef SensorCaptureInfo CameraInfo
Backward compatibility typedef.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/SensorCaptureThread_8h_source.html b/preview/pr-1773/api/latest/SensorCaptureThread_8h_source.html new file mode 100644 index 00000000..35f6f361 --- /dev/null +++ b/preview/pr-1773/api/latest/SensorCaptureThread_8h_source.html @@ -0,0 +1,384 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/SensorCaptureThread.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SensorCaptureThread.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31
+
32#include <rtabmap/core/Parameters.h>
+
33#include <rtabmap/core/Transform.h>
+
34#include <rtabmap/utilite/UThread.h>
+
35#include <rtabmap/utilite/UEventsSender.h>
+
36
+
37namespace clams
+
38{
+
39class DiscreteDepthDistortionModel;
+
40}
+
41
+
42namespace rtabmap
+
43{
+
44
+
45class Camera;
+
46class Lidar;
+
47class SensorCapture;
+
48class SensorCaptureInfo;
+
49class SensorData;
+
50class StereoDense;
+
51class IMUFilter;
+
52class Feature2D;
+
53
+
+
97class RTABMAP_CORE_EXPORT SensorCaptureThread :
+
98 public UThread,
+
99 public UEventsSender
+
100{
+
101public:
+ +
114 Camera * camera,
+
115 const ParametersMap & parameters = ParametersMap());
+
116
+ +
137 Camera * camera,
+
138 SensorCapture * odomSensor,
+
139 const Transform & extrinsics,
+
140 double poseTimeOffset = 0.0,
+
141 float poseScaleFactor = 1.0f,
+
142 double poseWaitTime = 0.1,
+
143 const ParametersMap & parameters = ParametersMap());
+
144
+ +
156 Lidar * lidar,
+
157 const ParametersMap & parameters = ParametersMap());
+
158
+ +
171 Lidar * lidar,
+
172 Camera * camera,
+
173 const ParametersMap & parameters = ParametersMap());
+
174
+ +
195 Lidar * lidar,
+
196 SensorCapture * odomSensor,
+
197 double poseTimeOffset = 0.0,
+
198 float poseScaleFactor = 1.0f,
+
199 double poseWaitTime = 0.1,
+
200 const ParametersMap & parameters = ParametersMap());
+
201
+ +
225 Lidar * lidar,
+
226 Camera * camera,
+
227 SensorCapture * odomSensor,
+
228 const Transform & extrinsics,
+
229 double poseTimeOffset = 0.0,
+
230 float poseScaleFactor = 1.0f,
+
231 double poseWaitTime = 0.1,
+
232 const ParametersMap & parameters = ParametersMap());
+
233
+ +
240
+
245 void setMirroringEnabled(bool enabled) {_mirroring = enabled;}
+
246
+
255 void setStereoExposureCompensation(bool enabled) {_stereoExposureCompensation = enabled;}
+
256
+
261 void setColorOnly(bool colorOnly) {_colorOnly = colorOnly;}
+
262
+
271 void setImageDecimation(int decimation) {_imageDecimation = decimation;}
+
272
+
287 void setHistogramMethod(int histogramMethod) {_histogramMethod = histogramMethod;}
+
288
+
296 void setStereoToDepth(bool enabled) {_stereoToDepth = enabled;}
+
297
+
306 void setFrameRate(float frameRate);
+
307
+
312 RTABMAP_DEPRECATED void setImageRate(float frameRate) {setFrameRate(frameRate);}
+
313
+
330 void setDistortionModel(const std::string & path);
+
331
+
340 void setOdomAsGroundTruth(bool enabled) {_odomAsGt = enabled;}
+
341
+
350 void enableBilateralFiltering(float sigmaS, float sigmaR);
+
351
+
355 void disableBilateralFiltering() {_bilateralFiltering = false;}
+
356
+
374 void enableIMUFiltering(int filteringStrategy=1, const ParametersMap & parameters = ParametersMap(), bool baseFrameConversion = false);
+
375
+ +
380
+ +
395
+ +
400
+
409 RTABMAP_DEPRECATED void setScanParameters(
+
410 bool fromDepth,
+
411 int downsampleStep, // decimation of the depth image in case the scan is from depth image
+
412 float rangeMin,
+
413 float rangeMax,
+
414 float voxelSize,
+
415 int normalsK,
+
416 float normalsRadius,
+
417 bool forceGroundNormalsUp,
+
418 bool deskewing);
+
419
+ +
441 bool fromDepth,
+
442 int downsampleStep=1, // decimation of the depth image in case the scan is from depth image
+
443 float rangeMin=0.0f,
+
444 float rangeMax=0.0f,
+
445 float voxelSize = 0.0f,
+
446 int normalsK = 0,
+
447 float normalsRadius = 0.0f,
+
448 float groundNormalsUp = 0.0f,
+
449 bool deskewing = false);
+
450
+
461 void postUpdate(SensorData * data, SensorCaptureInfo * info = 0) const;
+
462
+
463 // Getters
+
464
+
469 bool isPaused() const {return !this->isRunning();}
+
470
+
475 bool isCapturing() const {return this->isRunning();}
+
476
+
481 bool odomProvided() const;
+
482
+
487 Camera * camera() {return _camera;}
+
488
+
493 SensorCapture * odomSensor() {return _odomSensor;}
+
494
+
499 Lidar * lidar() {return _lidar;}
+
500
+
501private:
+
507 virtual void mainLoopBegin();
+
508
+
515 virtual void mainLoop();
+
516
+
522 virtual void mainLoopKill();
+
523
+
524private:
+
525 Camera * _camera;
+
526 SensorCapture * _odomSensor;
+
527 Lidar * _lidar;
+
528 Transform _extrinsicsOdomToCamera;
+
529 bool _odomAsGt;
+
530 double _poseTimeOffset;
+
531 float _poseScaleFactor;
+
532 double _poseWaitTime;
+
533 bool _mirroring;
+
534 bool _stereoExposureCompensation;
+
535 bool _colorOnly;
+
536 int _imageDecimation;
+
537 int _histogramMethod;
+
538 bool _stereoToDepth;
+
539 bool _scanDeskewing;
+
540 bool _scanFromDepth;
+
541 int _scanDownsampleStep;
+
542 float _scanRangeMin;
+
543 float _scanRangeMax;
+
544 float _scanVoxelSize;
+
545 int _scanNormalsK;
+
546 float _scanNormalsRadius;
+
547 float _scanForceGroundNormalsUp;
+
548 StereoDense * _stereoDense;
+
549 clams::DiscreteDepthDistortionModel * _distortionModel;
+
550 bool _bilateralFiltering;
+
551 float _bilateralSigmaS;
+
552 float _bilateralSigmaR;
+
553 IMUFilter * _imuFilter;
+
554 bool _imuBaseFrameConversion;
+
555 Feature2D * _featureDetector;
+
556 bool _depthAsMask;
+
557};
+
+
558
+
565RTABMAP_DEPRECATED typedef SensorCaptureThread CameraThread;
+
566
+
567} // namespace rtabmap
+ + + + +
Abstract 2D feature detector and descriptor extractor for visual SLAM.
Definition Features2d.h:145
+
Fuses gyroscope and accelerometer samples into an orientation quaternion.
Definition IMUFilter.h:59
+ +
Metadata structure for sensor data capture and processing.
+
Thread-based sensor data capture and event posting for RTAB-Map.
+
void setScanParameters(bool fromDepth, int downsampleStep=1, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalsK=0, float normalsRadius=0.0f, float groundNormalsUp=0.0f, bool deskewing=false)
Sets lidar scan processing parameters.
+
SensorCapture * odomSensor()
Returns the odometry sensor pointer.
+
void setMirroringEnabled(bool enabled)
Enables or disables image mirroring (horizontal flip)
+
RTABMAP_DEPRECATED void setImageRate(float frameRate)
Sets the target image capture rate (deprecated)
+
SensorCaptureThread(Lidar *lidar, Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())
Constructor for lidar with camera and odometry sensor.
+
void setStereoExposureCompensation(bool enabled)
Enables or disables stereo exposure compensation.
+
void setHistogramMethod(int histogramMethod)
Sets histogram equalization method.
+
RTABMAP_DEPRECATED void setScanParameters(bool fromDepth, int downsampleStep, float rangeMin, float rangeMax, float voxelSize, int normalsK, float normalsRadius, bool forceGroundNormalsUp, bool deskewing)
Sets lidar scan processing parameters (deprecated)
+
void setFrameRate(float frameRate)
Sets the target frame rate for capture.
+
void enableBilateralFiltering(float sigmaS, float sigmaR)
Enables bilateral filtering for depth images.
+
bool isPaused() const
Checks if the capture thread is paused.
+
void postUpdate(SensorData *data, SensorCaptureInfo *info=0) const
Post-processing hook called before posting SensorEvent.
+
void disableBilateralFiltering()
Disables bilateral filtering.
+
SensorCaptureThread(Lidar *lidar, SensorCapture *odomSensor, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())
Constructor for lidar with odometry sensor.
+
void setOdomAsGroundTruth(bool enabled)
Sets whether odometry poses should be treated as ground truth.
+
void setColorOnly(bool colorOnly)
Sets whether to capture color images only (skip depth)
+
void setImageDecimation(int decimation)
Sets image decimation factor.
+
void disableIMUFiltering()
Disables IMU data filtering.
+
SensorCaptureThread(Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())
Constructor for camera with odometry sensor.
+
SensorCaptureThread(Lidar *lidar, const ParametersMap &parameters=ParametersMap())
Constructor for lidar-only capture.
+
bool odomProvided() const
Checks if odometry is provided by the sensors.
+
void enableIMUFiltering(int filteringStrategy=1, const ParametersMap &parameters=ParametersMap(), bool baseFrameConversion=false)
Enables IMU data filtering.
+
SensorCaptureThread(Lidar *lidar, Camera *camera, const ParametersMap &parameters=ParametersMap())
Constructor for lidar with camera.
+
void enableFeatureDetection(const ParametersMap &parameters=ParametersMap())
Enables automatic feature detection on captured images.
+
Lidar * lidar()
Returns the lidar pointer.
+
void setDistortionModel(const std::string &path)
Sets the depth distortion model file path.
+
bool isCapturing() const
Checks if the capture thread is actively capturing.
+
SensorCaptureThread(Camera *camera, const ParametersMap &parameters=ParametersMap())
Constructor for camera-only capture.
+
Camera * camera()
Returns the camera pointer.
+
void setStereoToDepth(bool enabled)
Enables or disables stereo-to-depth conversion.
+
void disableFeatureDetection()
Disables automatic feature detection.
+
virtual ~SensorCaptureThread()
Virtual destructor.
+
Abstract base class for sensor data capture (cameras, lidars, etc.)
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Abstract base class for dense stereo matching algorithms.
Definition StereoDense.h:53
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
RTABMAP_DEPRECATED typedef SensorCaptureThread CameraThread
Backward compatibility typedef.
+
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/SensorCapture_8h_source.html b/preview/pr-1773/api/latest/SensorCapture_8h_source.html new file mode 100644 index 00000000..a2e0e49b --- /dev/null +++ b/preview/pr-1773/api/latest/SensorCapture_8h_source.html @@ -0,0 +1,231 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/SensorCapture.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SensorCapture.h
+
+
+
1/*
+
2Copyright (c) 2010-2022, Mathieu Labbe
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither names of its contributors may be used to endorse or promote products
+
13 derived from this software without specific prior written permission.
+
14
+
15THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
16ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
17WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
18DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
19DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
20(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
21LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
22ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
23(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
24SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
25*/
+
26
+
27#pragma once
+
28
+
29#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
30
+
31#include <opencv2/highgui/highgui.hpp>
+
32#include <rtabmap/core/SensorCaptureInfo.h>
+
33#include "rtabmap/core/SensorData.h"
+
34#include <set>
+
35#include <stack>
+
36#include <list>
+
37#include <vector>
+
38
+
39class UDirectory;
+
40class UTimer;
+
41
+
42namespace rtabmap
+
43{
+
44
+
+
78class RTABMAP_CORE_EXPORT SensorCapture
+
79{
+
80public:
+
84 virtual ~SensorCapture();
+
85
+ +
108
+
126 virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "") = 0;
+
127
+
137 virtual std::string getSerial() const = 0;
+
138
+
152 virtual bool odomProvided() const { return false; }
+
153
+
172 virtual bool getPose(double stamp, Transform & pose, cv::Mat & covariance, double maxWaitTime = 0.06) { return false; }
+
173
+
174 // Getters
+
175
+
180 float getFrameRate() const {return _frameRate;}
+
181
+
186 const Transform & getLocalTransform() const {return _localTransform;}
+
187
+
188 // Setters
+
189
+
200 void setFrameRate(float frameRate) {_frameRate = frameRate;}
+
201
+
210 void setLocalTransform(const Transform & localTransform) {_localTransform= localTransform;}
+
211
+ +
219
+
220protected:
+
231 SensorCapture(float frameRate = 0, const Transform & localTransform = Transform::getIdentity());
+
232
+
254 virtual SensorData captureData(SensorCaptureInfo * info = 0) = 0;
+
255
+
264 int getNextSeqID() {return ++_seq;}
+
265
+
266private:
+
267 float _frameRate;
+
268 Transform _localTransform;
+
269 UTimer * _frameRateTimer;
+
270 int _seq;
+
271};
+
+
272
+
273
+
274} // namespace rtabmap
+ + +
Metadata structure for sensor data capture and processing.
+
Abstract base class for sensor data capture (cameras, lidars, etc.)
+
virtual ~SensorCapture()
Virtual destructor.
+
void setLocalTransform(const Transform &localTransform)
Sets the local transform from base frame to sensor frame.
+
virtual bool init(const std::string &calibrationFolder=".", const std::string &cameraName="")=0
Initializes the sensor.
+
void setFrameRate(float frameRate)
Sets the target frame rate.
+
virtual bool getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
Gets the sensor's pose estimate at a specific timestamp.
+
virtual std::string getSerial() const =0
Returns the sensor's serial number or unique identifier.
+
virtual SensorData captureData(SensorCaptureInfo *info=0)=0
Pure virtual method to capture sensor data.
+
const Transform & getLocalTransform() const
Returns the local transform from base frame to sensor frame.
+
SensorData takeData(SensorCaptureInfo *info=0)
Captures sensor data with frame rate control.
+
int getNextSeqID()
Gets the next sequence ID.
+
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())
Protected constructor.
+
virtual bool odomProvided() const
Checks if the sensor provides odometry poses.
+
float getFrameRate() const
Returns the target frame rate.
+
void resetTimer()
Resets the frame rate timer.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/SensorData_8h_source.html b/preview/pr-1773/api/latest/SensorData_8h_source.html new file mode 100644 index 00000000..61dfc314 --- /dev/null +++ b/preview/pr-1773/api/latest/SensorData_8h_source.html @@ -0,0 +1,655 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/SensorData.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SensorData.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef SENSORDATA_H_
+
29#define SENSORDATA_H_
+
30
+
31#include <rtabmap/core/rtabmap_core_export.h>
+
32#include <rtabmap/core/Transform.h>
+
33#include <rtabmap/core/CameraModel.h>
+
34#include <rtabmap/core/StereoCameraModel.h>
+
35#include <opencv2/core/core.hpp>
+
36#if CV_MAJOR_VERSION < 5
+
37#include <opencv2/features2d/features2d.hpp>
+
38#else
+
39#include <opencv2/features.hpp>
+
40#endif
+
41#include <rtabmap/core/LaserScan.h>
+
42#include <rtabmap/core/IMU.h>
+
43#include <rtabmap/core/GPS.h>
+
44#include <rtabmap/core/EnvSensor.h>
+
45#include <rtabmap/core/Landmark.h>
+
46#include <rtabmap/core/GlobalDescriptor.h>
+
47
+
48namespace rtabmap
+
49{
+
50
+
+
96class RTABMAP_CORE_EXPORT SensorData
+
97{
+
98public:
+ +
106
+ +
120 const cv::Mat & image,
+
121 int id = 0,
+
122 double stamp = 0.0,
+
123 const cv::Mat & userData = cv::Mat());
+
124
+ +
138 const cv::Mat & image,
+
139 const CameraModel & cameraModel,
+
140 int id = 0,
+
141 double stamp = 0.0,
+
142 const cv::Mat & userData = cv::Mat());
+
143
+ +
157 const cv::Mat & rgb,
+
158 const cv::Mat & depth,
+
159 const CameraModel & cameraModel,
+
160 int id = 0,
+
161 double stamp = 0.0,
+
162 const cv::Mat & userData = cv::Mat());
+
163
+ +
178 const cv::Mat & rgb,
+
179 const cv::Mat & depth,
+
180 const cv::Mat & depth_confidence,
+
181 const CameraModel & cameraModel,
+
182 int id = 0,
+
183 double stamp = 0.0,
+
184 const cv::Mat & userData = cv::Mat());
+
185
+ +
200 const LaserScan & laserScan,
+
201 const cv::Mat & rgb,
+
202 const cv::Mat & depth,
+
203 const CameraModel & cameraModel,
+
204 int id = 0,
+
205 double stamp = 0.0,
+
206 const cv::Mat & userData = cv::Mat());
+
207
+ +
223 const LaserScan & laserScan,
+
224 const cv::Mat & rgb,
+
225 const cv::Mat & depth,
+
226 const cv::Mat & depthConfidence,
+
227 const CameraModel & cameraModel,
+
228 int id = 0,
+
229 double stamp = 0.0,
+
230 const cv::Mat & userData = cv::Mat());
+
231
+ +
282 const cv::Mat & rgb,
+
283 const cv::Mat & depth,
+
284 const std::vector<CameraModel> & cameraModels,
+
285 int id = 0,
+
286 double stamp = 0.0,
+
287 const cv::Mat & userData = cv::Mat());
+
288
+ +
305 const cv::Mat & rgb,
+
306 const cv::Mat & depth,
+
307 const cv::Mat & depthConfidence,
+
308 const std::vector<CameraModel> & cameraModels,
+
309 int id = 0,
+
310 double stamp = 0.0,
+
311 const cv::Mat & userData = cv::Mat());
+
312
+ +
329 const LaserScan & laserScan,
+
330 const cv::Mat & rgb,
+
331 const cv::Mat & depth,
+
332 const std::vector<CameraModel> & cameraModels,
+
333 int id = 0,
+
334 double stamp = 0.0,
+
335 const cv::Mat & userData = cv::Mat());
+
336
+ +
354 const LaserScan & laserScan,
+
355 const cv::Mat & rgb,
+
356 const cv::Mat & depth,
+
357 const cv::Mat & depthConfidence,
+
358 const std::vector<CameraModel> & cameraModels,
+
359 int id = 0,
+
360 double stamp = 0.0,
+
361 const cv::Mat & userData = cv::Mat());
+
362
+ +
376 const cv::Mat & left,
+
377 const cv::Mat & right,
+
378 const StereoCameraModel & cameraModel,
+
379 int id = 0,
+
380 double stamp = 0.0,
+
381 const cv::Mat & userData = cv::Mat());
+
382
+ +
397 const LaserScan & laserScan,
+
398 const cv::Mat & left,
+
399 const cv::Mat & right,
+
400 const StereoCameraModel & cameraModel,
+
401 int id = 0,
+
402 double stamp = 0.0,
+
403 const cv::Mat & userData = cv::Mat());
+
404
+ +
420 const cv::Mat & rgb,
+
421 const cv::Mat & depth,
+
422 const std::vector<StereoCameraModel> & cameraModels,
+
423 int id = 0,
+
424 double stamp = 0.0,
+
425 const cv::Mat & userData = cv::Mat());
+
426
+ +
441 const LaserScan & laserScan,
+
442 const cv::Mat & rgb,
+
443 const cv::Mat & depth,
+
444 const std::vector<StereoCameraModel> & cameraModels,
+
445 int id = 0,
+
446 double stamp = 0.0,
+
447 const cv::Mat & userData = cv::Mat());
+
448
+ +
460 const IMU & imu,
+
461 int id = 0,
+
462 double stamp = 0.0);
+
463
+
467 virtual ~SensorData();
+
468
+
+
485 bool isValid() const {
+
486 return !(_id == 0 &&
+
487 _stamp == 0.0 &&
+
488 _imageRaw.empty() &&
+
489 _imageCompressed.empty() &&
+
490 _depthOrRightRaw.empty() &&
+
491 _depthOrRightCompressed.empty() &&
+
492 _depthConfidenceRaw.empty() &&
+
493 _depthConfidenceCompressed.empty() &&
+
494 _laserScanRaw.isEmpty() &&
+
495 _laserScanCompressed.isEmpty() &&
+
496 _cameraModels.empty() &&
+
497 _stereoCameraModels.empty() &&
+
498 _userDataRaw.empty() &&
+
499 _userDataCompressed.empty() &&
+
500 _keypoints.size() == 0 &&
+
501 _descriptors.empty() &&
+
502 _groundCellsRaw.empty() &&
+
503 _groundCellsCompressed.empty() &&
+
504 _obstacleCellsRaw.empty() &&
+
505 _obstacleCellsCompressed.empty() &&
+
506 _emptyCellsRaw.empty() &&
+
507 _emptyCellsCompressed.empty() &&
+
508 imu_.empty());
+
509 }
+
+
510
+
515 int id() const {return _id;}
+
516
+
521 void setId(int id) {_id = id;}
+
522
+
527 double stamp() const {return _stamp;}
+
528
+
533 void setStamp(double stamp) {_stamp = stamp;}
+
534
+
540 const cv::Mat & imageCompressed() const {return _imageCompressed;}
+
541
+
547 const cv::Mat & depthOrRightCompressed() const {return _depthOrRightCompressed;}
+
548
+
554 const cv::Mat & depthConfidenceCompressed() const {return _depthConfidenceCompressed;}
+
555
+
560 const LaserScan & laserScanCompressed() const {return _laserScanCompressed;}
+
561
+
566 const cv::Mat & imageRaw() const {return _imageRaw;}
+
567
+
573 const cv::Mat & depthOrRightRaw() const {return _depthOrRightRaw;}
+
574
+
579 const cv::Mat & depthConfidenceRaw() const {return _depthConfidenceRaw;}
+
580
+
585 const LaserScan & laserScanRaw() const {return _laserScanRaw;}
+
586
+
592 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const CameraModel & model, bool clearPreviousData = true);
+
593 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const CameraModel & model, bool clearPreviousData = true);
+
594 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const std::vector<CameraModel> & models, bool clearPreviousData = true);
+
595 void setRGBDImage(const cv::Mat & rgb, const cv::Mat & depth, const cv::Mat & depth_confidence, const std::vector<CameraModel> & models, bool clearPreviousData = true);
+
596 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const StereoCameraModel & stereoCameraModel, bool clearPreviousData = true);
+
597 void setStereoImage(const cv::Mat & left, const cv::Mat & right, const std::vector<StereoCameraModel> & stereoCameraModels, bool clearPreviousData = true);
+
598
+
604 void setLaserScan(const LaserScan & laserScan, bool clearPreviousData = true);
+
605
+
610 void setCameraModel(const CameraModel & model) {_cameraModels.clear(); _cameraModels.push_back(model);}
+
611
+
616 void setCameraModels(const std::vector<CameraModel> & models) {_cameraModels = models;}
+
617
+
622 void setStereoCameraModel(const StereoCameraModel & stereoCameraModel) {_stereoCameraModels.clear(); _stereoCameraModels.push_back(stereoCameraModel);}
+
623
+
628 void setStereoCameraModels(const std::vector<StereoCameraModel> & stereoCameraModels) {_stereoCameraModels = stereoCameraModels;}
+
629
+
639 cv::Mat depthRaw() const {return !(_depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3) ? _depthOrRightRaw : cv::Mat();}
+
640
+
650 cv::Mat rightRaw() const {return _depthOrRightRaw.type()==CV_8UC1 || _depthOrRightRaw.type()==CV_8UC3 ? _depthOrRightRaw : cv::Mat();}
+
651
+
652 // Use setRGBDImage() or setStereoImage() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
+
653 RTABMAP_DEPRECATED void setImageRaw(const cv::Mat & image);
+
654 // Use setRGBDImage() or setStereoImage() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
+
655 RTABMAP_DEPRECATED void setDepthOrRightRaw(const cv::Mat & image);
+
656 // Use setLaserScan() with clearNotUpdated=false or removeRawData() instead. To be backward compatible, this function doesn't clear compressed data.
+
657 RTABMAP_DEPRECATED void setLaserScanRaw(const LaserScan & scan);
+
658 // Use setUserData() or removeRawData() instead.
+
659 RTABMAP_DEPRECATED void setUserDataRaw(const cv::Mat & data);
+
660
+ +
668
+ +
687 cv::Mat * imageRaw,
+
688 cv::Mat * depthOrRightRaw,
+
689 LaserScan * laserScanRaw = 0,
+
690 cv::Mat * userDataRaw = 0,
+
691 cv::Mat * groundCellsRaw = 0,
+
692 cv::Mat * obstacleCellsRaw = 0,
+
693 cv::Mat * emptyCellsRaw = 0,
+
694 cv::Mat * depthConfidenceRaw = 0);
+
695
+ +
711 cv::Mat * imageRaw,
+
712 cv::Mat * depthOrRightRaw,
+
713 LaserScan * laserScanRaw = 0,
+
714 cv::Mat * userDataRaw = 0,
+
715 cv::Mat * groundCellsRaw = 0,
+
716 cv::Mat * obstacleCellsRaw = 0,
+
717 cv::Mat * emptyCellsRaw = 0,
+
718 cv::Mat * depthConfidenceRaw = 0) const;
+
719
+
724 const std::vector<CameraModel> & cameraModels() const {return _cameraModels;}
+
725
+
730 const std::vector<StereoCameraModel> & stereoCameraModels() const {return _stereoCameraModels;}
+
731
+
744 void setUserData(const cv::Mat & userData, bool clearPreviousData = true);
+
745 const cv::Mat & userDataRaw() const {return _userDataRaw;}
+
746 const cv::Mat & userDataCompressed() const {return _userDataCompressed;}
+
747
+ +
762 const cv::Mat & ground,
+
763 const cv::Mat & obstacles,
+
764 const cv::Mat & empty,
+
765 float cellSize,
+
766 const cv::Point3f & viewPoint);
+
771 const cv::Mat & gridGroundCellsRaw() const {return _groundCellsRaw;}
+
772
+
778 const cv::Mat & gridGroundCellsCompressed() const {return _groundCellsCompressed;}
+
779
+
784 const cv::Mat & gridObstacleCellsRaw() const {return _obstacleCellsRaw;}
+
785
+
791 const cv::Mat & gridObstacleCellsCompressed() const {return _obstacleCellsCompressed;}
+
792
+
797 const cv::Mat & gridEmptyCellsRaw() const {return _emptyCellsRaw;}
+
798
+
804 const cv::Mat & gridEmptyCellsCompressed() const {return _emptyCellsCompressed;}
+
805
+
810 float gridCellSize() const {return _cellSize;}
+
811
+
816 const cv::Point3f & gridViewPoint() const {return _viewPoint;}
+
817
+
828 void setFeatures(const std::vector<cv::KeyPoint> & keypoints, const std::vector<cv::Point3f> & keypoints3D, const cv::Mat & descriptors);
+
829
+
834 const std::vector<cv::KeyPoint> & keypoints() const {return _keypoints;}
+
835
+
840 const std::vector<cv::Point3f> & keypoints3D() const {return _keypoints3D;}
+
841
+
846 const cv::Mat & descriptors() const {return _descriptors;}
+
847
+
852 void addGlobalDescriptor(const GlobalDescriptor & descriptor) {_globalDescriptors.push_back(descriptor);}
+
853
+
858 void setGlobalDescriptors(const std::vector<GlobalDescriptor> & descriptors) {_globalDescriptors = descriptors;}
+
859
+
863 void clearGlobalDescriptors() {_globalDescriptors.clear();}
+
864
+
869 const std::vector<GlobalDescriptor> & globalDescriptors() const {return _globalDescriptors;}
+
870
+
875 void setGroundTruth(const Transform & pose) {groundTruth_ = pose;}
+
876
+
881 const Transform & groundTruth() const {return groundTruth_;}
+
882
+
888 void setGlobalPose(const Transform & pose, const cv::Mat & covariance) {globalPose_ = pose; globalPoseCovariance_ = covariance;}
+
889
+
894 const Transform & globalPose() const {return globalPose_;}
+
895
+
900 const cv::Mat & globalPoseCovariance() const {return globalPoseCovariance_;}
+
901
+
906 void setGPS(const GPS & gps) {gps_ = gps;}
+
907
+
912 const GPS & gps() const {return gps_;}
+
913
+
920 void setIMU(const IMU & imu);
+
921
+
926 const IMU & imu() const {return imu_;}
+
927
+
932 void setEnvSensors(const EnvSensors & sensors) {_envSensors = sensors;}
+
933
+
938 void addEnvSensor(const EnvSensor & sensor) {_envSensors.insert(std::make_pair(sensor.type(), sensor));}
+
939
+
944 const EnvSensors & envSensors() const {return _envSensors;}
+
945
+
951 void setLandmarks(const Landmarks & landmarks) {_landmarks = landmarks;}
+
952
+
957 const Landmarks & landmarks() const {return _landmarks;}
+
958
+
967 unsigned long getMemoryUsed() const;
+
972 void clearCompressedData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
+
977 void clearRawData(bool images = true, bool scan = true, bool userData = true, bool occupancyGrid = true);
+
978
+
988 int isPointVisibleFromCameras(const cv::Point3f & pt) const;
+
989
+
990#ifdef HAVE_OPENCV_CUDEV
+
995 const cv::cuda::GpuMat & imageRawGpu() const {return _imageRawGpu;}
+
996
+
1001 void setImageRawGpu(const cv::cuda::GpuMat & image) {_imageRawGpu = image;}
+
1002
+
1007 const cv::cuda::GpuMat & depthOrRightRawGpu() const {return _depthOrRightRawGpu;}
+
1008
+
1013 void setDepthOrRightRawGpu(const cv::cuda::GpuMat & image) {_depthOrRightRawGpu = image;}
+
1014#endif
+
1015
+
1016private:
+
1017 int _id;
+
1018 double _stamp;
+
1019
+
1020 // Compressed data
+
1021 cv::Mat _imageCompressed;
+
1022 cv::Mat _depthOrRightCompressed;
+
1023 cv::Mat _depthConfidenceCompressed;
+
1024 LaserScan _laserScanCompressed;
+
1025
+
1026 // Raw data
+
1027 cv::Mat _imageRaw;
+
1028 cv::Mat _depthOrRightRaw;
+
1029 cv::Mat _depthConfidenceRaw;
+
1030 LaserScan _laserScanRaw;
+
1031
+
1032 // Camera models
+
1033 std::vector<CameraModel> _cameraModels;
+
1034 std::vector<StereoCameraModel> _stereoCameraModels;
+
1035
+
1036 // User data
+
1037 cv::Mat _userDataCompressed;
+
1038 cv::Mat _userDataRaw;
+
1039
+
1040 // Occupancy grid
+
1041 cv::Mat _groundCellsCompressed;
+
1042 cv::Mat _obstacleCellsCompressed;
+
1043 cv::Mat _emptyCellsCompressed;
+
1044 cv::Mat _groundCellsRaw;
+
1045 cv::Mat _obstacleCellsRaw;
+
1046 cv::Mat _emptyCellsRaw;
+
1047 float _cellSize;
+
1048 cv::Point3f _viewPoint;
+
1049
+
1050 // Environmental sensors
+
1051 EnvSensors _envSensors;
+
1052
+
1053 // Landmarks
+
1054 Landmarks _landmarks;
+
1055
+
1056 // Visual features
+
1057 std::vector<cv::KeyPoint> _keypoints;
+
1058 std::vector<cv::Point3f> _keypoints3D;
+
1059 cv::Mat _descriptors;
+
1060
+
1061 // Global descriptors
+
1062 std::vector<GlobalDescriptor> _globalDescriptors;
+
1063
+
1064 // Poses
+
1065 Transform groundTruth_;
+
1066 Transform globalPose_;
+
1067 cv::Mat globalPoseCovariance_;
+
1068
+
1069 // Sensor fusion
+
1070 GPS gps_;
+
1071 IMU imu_;
+
1072
+
1073#ifdef HAVE_OPENCV_CUDEV
+
1080 cv::cuda::GpuMat _imageRawGpu;
+
1081 cv::cuda::GpuMat _depthOrRightRawGpu;
+
1082#endif
+
1083};
+
+
1084
+
1085}
+
1086
+
1087
+
1088#endif /* SENSORDATA_H_ */
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+
Single environmental measurement (type, value, timestamp).
Definition EnvSensor.h:51
+
const Type & type() const
Definition EnvSensor.h:101
+
WGS84 GPS fix attached to a sensor sample or graph node.
Definition GPS.h:47
+ +
Inertial measurement sample (ROS sensor_msgs/Imu-like fields).
Definition IMU.h:57
+
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
const IMU & imu() const
Returns IMU data.
Definition SensorData.h:926
+
const cv::Mat & depthConfidenceRaw() const
Returns the raw depth confidence map.
Definition SensorData.h:579
+
const cv::Mat & gridObstacleCellsRaw() const
Returns raw obstacle cells.
Definition SensorData.h:784
+
void addEnvSensor(const EnvSensor &sensor)
Adds a single environmental sensor.
Definition SensorData.h:938
+
SensorData(const cv::Mat &image, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Mono camera constructor.
+
const LaserScan & laserScanCompressed() const
Returns the compressed laser scan.
Definition SensorData.h:560
+
SensorData(const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Stereo camera constructor.
+
const GPS & gps() const
Returns GPS data.
Definition SensorData.h:912
+
cv::Mat depthRaw() const
Returns the depth image (convenience method)
Definition SensorData.h:639
+
void setRGBDImage(const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &model, bool clearPreviousData=true)
+
void setIMU(const IMU &imu)
Sets IMU data.
+
const cv::Mat & depthOrRightRaw() const
Returns the raw depth or right stereo image.
Definition SensorData.h:573
+
SensorData(const IMU &imu, int id=0, double stamp=0.0)
IMU-only constructor.
+
const cv::Mat & gridGroundCellsRaw() const
Returns raw ground cells.
Definition SensorData.h:771
+
void uncompressDataConst(cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0) const
Uncompresses compressed data into provided output buffers (const version)
+
int isPointVisibleFromCameras(const cv::Point3f &pt) const
Checks if a 3D point is visible from any camera.
+
void clearCompressedData(bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
+
void clearGlobalDescriptors()
Clears all global descriptors.
Definition SensorData.h:863
+
const cv::Mat & gridEmptyCellsRaw() const
Returns raw empty cells.
Definition SensorData.h:797
+
const EnvSensors & envSensors() const
Returns all environmental sensors.
Definition SensorData.h:944
+
void setId(int id)
Sets the sensor data ID.
Definition SensorData.h:521
+
const cv::Mat & gridObstacleCellsCompressed() const
Returns compressed obstacle cells.
Definition SensorData.h:791
+
const cv::Point3f & gridViewPoint() const
Returns the occupancy grid viewpoint.
Definition SensorData.h:816
+
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
RGB-D constructor with depth confidence and laser scan.
+
void clearRawData(bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
+
const Transform & globalPose() const
Returns the global pose.
Definition SensorData.h:894
+
double stamp() const
Returns the timestamp.
Definition SensorData.h:527
+
const cv::Mat & globalPoseCovariance() const
Returns the global pose covariance.
Definition SensorData.h:900
+
void setStamp(double stamp)
Sets the timestamp.
Definition SensorData.h:533
+
void setOccupancyGrid(const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint)
Sets occupancy grid data.
+
const cv::Mat & descriptors() const
Returns the feature descriptors.
Definition SensorData.h:846
+
unsigned long getMemoryUsed() const
Computes the memory usage of this sensor data.
+
const std::vector< CameraModel > & cameraModels() const
Returns the camera models.
Definition SensorData.h:724
+
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Multi-camera stereo constructor.
+
void setGroundTruth(const Transform &pose)
Sets the ground truth pose.
Definition SensorData.h:875
+
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Multi-camera RGB-D constructor with depth confidence.
+
void setGlobalPose(const Transform &pose, const cv::Mat &covariance)
Sets the global pose with covariance.
Definition SensorData.h:888
+
const Landmarks & landmarks() const
Returns landmarks.
Definition SensorData.h:957
+
int id() const
Returns the sensor data ID.
Definition SensorData.h:515
+
const cv::Mat & depthOrRightCompressed() const
Returns the compressed depth or right stereo image.
Definition SensorData.h:547
+
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
RGB-D constructor with depth confidence.
+
void uncompressData(cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0)
Uncompresses compressed data into provided output buffers.
+
void setLaserScan(const LaserScan &laserScan, bool clearPreviousData=true)
+
SensorData()
Default constructor.
+
virtual ~SensorData()
Virtual destructor.
+
float gridCellSize() const
Returns the occupancy grid cell size.
Definition SensorData.h:810
+
void uncompressData()
Uncompresses all compressed data in-place.
+
cv::Mat rightRaw() const
Returns the right stereo image (convenience method)
Definition SensorData.h:650
+
const cv::Mat & imageCompressed() const
Returns the compressed RGB/grayscale image.
Definition SensorData.h:540
+
const std::vector< StereoCameraModel > & stereoCameraModels() const
Returns the stereo camera models.
Definition SensorData.h:730
+
const std::vector< cv::Point3f > & keypoints3D() const
Returns the 3D keypoints.
Definition SensorData.h:840
+
void setStereoCameraModel(const StereoCameraModel &stereoCameraModel)
Sets a single stereo camera model (clears previous models)
Definition SensorData.h:622
+
void setEnvSensors(const EnvSensors &sensors)
Sets all environmental sensors.
Definition SensorData.h:932
+
const cv::Mat & gridGroundCellsCompressed() const
Returns compressed ground cells.
Definition SensorData.h:778
+
void setStereoCameraModels(const std::vector< StereoCameraModel > &stereoCameraModels)
Sets multiple stereo camera models.
Definition SensorData.h:628
+
SensorData(const cv::Mat &image, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Appearance-only constructor.
+
void setGlobalDescriptors(const std::vector< GlobalDescriptor > &descriptors)
Sets all global descriptors.
Definition SensorData.h:858
+
SensorData(const LaserScan &laserScan, const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Stereo camera constructor with laser scan.
+
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
RGB-D constructor with laser scan.
+
const cv::Mat & gridEmptyCellsCompressed() const
Returns compressed empty cells.
Definition SensorData.h:804
+
void addGlobalDescriptor(const GlobalDescriptor &descriptor)
Adds a global descriptor.
Definition SensorData.h:852
+
void setUserData(const cv::Mat &userData, bool clearPreviousData=true)
+
const std::vector< GlobalDescriptor > & globalDescriptors() const
Returns all global descriptors.
Definition SensorData.h:869
+
void setFeatures(const std::vector< cv::KeyPoint > &keypoints, const std::vector< cv::Point3f > &keypoints3D, const cv::Mat &descriptors)
Sets visual features (keypoints, 3D points, descriptors)
+
void setGPS(const GPS &gps)
Sets GPS data.
Definition SensorData.h:906
+
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Multi-camera stereo constructor with laser scan.
+
bool isValid() const
Checks if the sensor data is valid.
Definition SensorData.h:485
+
void setCameraModel(const CameraModel &model)
Sets a single camera model (clears previous models)
Definition SensorData.h:610
+
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Multi-camera RGB-D constructor with laser scan.
+
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Multi-camera RGB-D constructor with depth confidence and laser scan.
+
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
Multi-camera RGB-D constructor.
+
const cv::Mat & imageRaw() const
Returns the raw RGB/grayscale image.
Definition SensorData.h:566
+
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
RGB-D constructor.
+
const cv::Mat & depthConfidenceCompressed() const
Returns the compressed depth confidence map.
Definition SensorData.h:554
+
const LaserScan & laserScanRaw() const
Returns the raw laser scan.
Definition SensorData.h:585
+
const Transform & groundTruth() const
Returns the ground truth pose.
Definition SensorData.h:881
+
void setLandmarks(const Landmarks &landmarks)
Sets landmarks.
Definition SensorData.h:951
+
void setCameraModels(const std::vector< CameraModel > &models)
Sets multiple camera models.
Definition SensorData.h:616
+
const std::vector< cv::KeyPoint > & keypoints() const
Returns the 2D keypoints.
Definition SensorData.h:834
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
std::map< int, Landmark > Landmarks
Map of landmark id → Landmark (typically positive keys).
Definition Landmark.h:113
+
std::map< EnvSensor::Type, EnvSensor > EnvSensors
Map of environmental readings keyed by EnvSensor::Type (at most one per type).
Definition EnvSensor.h:114
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/SensorEvent_8h_source.html b/preview/pr-1773/api/latest/SensorEvent_8h_source.html new file mode 100644 index 00000000..7a7d400c --- /dev/null +++ b/preview/pr-1773/api/latest/SensorEvent_8h_source.html @@ -0,0 +1,249 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/SensorEvent.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SensorEvent.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include <rtabmap/core/SensorCaptureInfo.h>
+
31#include <rtabmap/utilite/UEvent.h>
+
32#include "rtabmap/core/SensorData.h"
+
33
+
34namespace rtabmap
+
35{
+
36
+
+ +
64 public UEvent
+
65{
+
66public:
+
+
71 enum Code {
+ + +
74 };
+
+
75
+
76public:
+
+
88 SensorEvent(const cv::Mat & image, int seq=0, double stamp = 0.0, const std::string & cameraName = std::string()) :
+ +
90 data_(image, seq, stamp)
+
91 {
+
92 sensorCaptureInfo_.cameraName = cameraName;
+
93 }
+
+
94
+
+ + +
105 {
+
106 }
+
+
107
+
+ + +
117 data_(data)
+
118 {
+
119 }
+
+
120
+
+
130 SensorEvent(const SensorData & data, const std::string & cameraName) :
+ +
132 data_(data)
+
133 {
+
134 sensorCaptureInfo_.cameraName = cameraName;
+
135 }
+
+
136
+
+
146 SensorEvent(const SensorData & data, const SensorCaptureInfo & sensorCaptureInfo) :
+ +
148 data_(data),
+
149 sensorCaptureInfo_(sensorCaptureInfo)
+
150 {
+
151 }
+
+
152
+
161 const SensorData & data() const {return data_;}
+
162
+
170 const std::string & cameraName() const {return sensorCaptureInfo_.cameraName;}
+
171
+
180 const SensorCaptureInfo & info() const {return sensorCaptureInfo_;}
+
181
+
185 virtual ~SensorEvent() {}
+
186
+
194 virtual std::string getClassName() const {return std::string("SensorEvent");}
+
195
+
196private:
+
197 SensorData data_;
+
198 SensorCaptureInfo sensorCaptureInfo_;
+
199};
+
+
200
+
207RTABMAP_DEPRECATED typedef SensorEvent CameraEvent;
+
208
+
209} // namespace rtabmap
+ +
Metadata structure for sensor data capture and processing.
+
std::string cameraName
Camera/sensor name identifier.
+
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Event class for sensor data communication in RTAB-Map's event system.
Definition SensorEvent.h:65
+
const SensorData & data() const
Returns the sensor data contained in this event.
+
SensorEvent(const SensorData &data, const std::string &cameraName)
Constructor from SensorData with camera name.
+
SensorEvent(const SensorData &data, const SensorCaptureInfo &sensorCaptureInfo)
Constructor from SensorData with full capture info.
+
virtual ~SensorEvent()
Virtual destructor.
+
SensorEvent(const SensorData &data)
Constructor from SensorData.
+
virtual std::string getClassName() const
Returns the class name for event identification.
+
const SensorCaptureInfo & info() const
Returns the sensor capture information.
+
Code
Event codes for SensorEvent.
Definition SensorEvent.h:71
+
@ kCodeNoMoreImages
Event code indicating the sensor stream has ended.
Definition SensorEvent.h:73
+
@ kCodeData
Event code indicating new sensor data is available.
Definition SensorEvent.h:72
+
SensorEvent(const cv::Mat &image, int seq=0, double stamp=0.0, const std::string &cameraName=std::string())
Constructor from a single image.
Definition SensorEvent.h:88
+
const std::string & cameraName() const
Returns the camera name.
+
SensorEvent()
Constructor for end-of-stream event.
+ +
RTABMAP_DEPRECATED typedef SensorEvent CameraEvent
Backward compatibility typedef.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Signature_8h_source.html b/preview/pr-1773/api/latest/Signature_8h_source.html new file mode 100644 index 00000000..06ff713b --- /dev/null +++ b/preview/pr-1773/api/latest/Signature_8h_source.html @@ -0,0 +1,390 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Signature.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Signature.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31
+
32#include <pcl/point_types.h>
+
33#include <opencv2/core/core.hpp>
+
34#if CV_MAJOR_VERSION < 5
+
35#include <opencv2/features2d/features2d.hpp>
+
36#else
+
37#include <opencv2/features.hpp>
+
38#endif
+
39#include <opencv2/imgproc/imgproc.hpp>
+
40#include <map>
+
41#include <list>
+
42#include <vector>
+
43#include <set>
+
44
+
45#include <rtabmap/core/Transform.h>
+
46#include <rtabmap/core/SensorData.h>
+
47#include <rtabmap/core/Link.h>
+
48
+
49namespace rtabmap
+
50{
+
51
+
+
83class RTABMAP_CORE_EXPORT Signature
+
84{
+
85
+
86public:
+ +
94
+
112 Signature(int id,
+
113 int mapId = -1,
+
114 int weight = 0,
+
115 double stamp = 0.0,
+
116 const std::string & label = std::string(),
+
117 const Transform & pose = Transform(),
+
118 const Transform & groundTruthPose = Transform(),
+
119 const SensorData & sensorData = SensorData());
+
120
+
132 Signature(const SensorData & data);
+
133
+
137 virtual ~Signature();
+
138
+
151 float compareTo(const Signature & signature) const;
+
152
+
162 bool isBadSignature() const;
+
163
+
168 int id() const {return _id;}
+
169
+
174 int mapId() const {return _mapId;}
+
175
+
189 void setWeight(int weight) {_modified=_modified || _weight!=weight;_weight = weight;}
+
190
+
195 int getWeight() const {return _weight;}
+
196
+
208 void setLabel(const std::string & label) {_modified=_modified || _label.compare(label)!=0;_label = label;}
+
209
+
214 const std::string & getLabel() const {return _label;}
+
215
+
220 double getStamp() const {return _stamp;}
+
221
+
233 void addLinks(const std::list<Link> & links);
+
234
+
247 void addLinks(const std::map<int, Link> & links);
+
248
+
263 void addLink(const Link & link);
+
264
+
272 bool hasLink(int idTo, Link::Type type = Link::kUndef) const;
+
273
+
285 void changeLinkIds(int idFrom, int idTo);
+
286
+
295 void removeLinks(bool keepSelfReferringLinks = false);
+
296
+
304 void removeLink(int idTo);
+
305
+ +
314
+
326 void addLandmark(const Link & landmark);
+
327
+
332 const std::map<int, Link> & getLandmarks() const {return _landmarks;}
+
333
+ +
338
+
343 void removeLandmark(int landmarkId);
+
344
+
349 void setSaved(bool saved) {_saved = saved;}
+
350
+
359 void setModified(bool modified) {_modified = modified; _linksModified = modified;}
+
360
+
365 const std::multimap<int, Link> & getLinks() const {return _links;}
+
366
+
371 bool isSaved() const {return _saved;}
+
372
+
380 bool isModified() const {return _modified || _linksModified;}
+
381
+
386 bool isLinksModified() const {return _linksModified;}
+
387
+
388 // Visual words management
+
389
+ +
397
+
409 void changeWordsRef(int oldWordId, int activeWordId);
+
410
+
426 void setWords(const std::multimap<int, int> & words, const std::vector<cv::KeyPoint> & keypoints, const std::vector<cv::Point3f> & words3, const cv::Mat & descriptors);
+
427
+
436 bool isEnabled() const {return _enabled;}
+
437
+
442 void setEnabled(bool enabled) {_enabled = enabled;}
+
443
+
452 const std::multimap<int, int> & getWords() const {return _words;}
+
453
+
458 const std::vector<cv::KeyPoint> & getWordsKpts() const {return _wordsKpts;}
+
459
+
469 int getInvalidWordsCount() const {return _invalidWordsCount;}
+
470
+
479 const std::map<int, int> & getWordsChanged() const {return _wordsChanged;}
+
480
+
485 const cv::Mat & getWordsDescriptors() const {return _wordsDescriptors;}
+
486
+
495 void setWordsDescriptors(const cv::Mat & descriptors);
+
496
+
497 // Pose and metric information
+
498
+
519 void setPose(const Transform & pose) {_pose = pose;}
+
520
+
529 void setGroundTruthPose(const Transform & pose) {_groundTruthPose = pose;}
+
530
+
+
544 void setVelocity(float vx, float vy, float vz, float vroll, float vpitch, float vyaw) {
+
545 _velocity = std::vector<float>(6,0);
+
546 _velocity[0]=vx;
+
547 _velocity[1]=vy;
+
548 _velocity[2]=vz;
+
549 _velocity[3]=vroll;
+
550 _velocity[4]=vpitch;
+
551 _velocity[5]=vyaw;
+
552 }
+
+
553
+
562 const std::vector<cv::Point3f> & getWords3() const {return _words3;}
+
563
+
569 const Transform & getPose() const {return _pose;}
+
570
+
579 cv::Mat getPoseCovariance() const;
+
580
+
585 const Transform & getGroundTruthPose() const {return _groundTruthPose;}
+
586
+
591 const std::vector<float> & getVelocity() const {return _velocity;}
+
592
+
597 SensorData & sensorData() {return _sensorData;}
+
598
+
603 const SensorData & sensorData() const {return _sensorData;}
+
604
+
614 unsigned long getMemoryUsed(bool withSensorData=true) const;
+
615
+
616private:
+
617 int _id;
+
618 int _mapId;
+
619 double _stamp;
+
620 std::multimap<int, Link> _links;
+
621 std::map<int, Link> _landmarks;
+
622 int _weight;
+
623 std::string _label;
+
624 bool _saved;
+
625 bool _modified;
+
626 bool _linksModified;
+
627
+
635 std::multimap<int, int> _words;
+
636 std::vector<cv::KeyPoint> _wordsKpts;
+
637 std::vector<cv::Point3f> _words3;
+
638 cv::Mat _wordsDescriptors;
+
639 std::map<int, int> _wordsChanged;
+
640 bool _enabled;
+
641 int _invalidWordsCount;
+
642
+
643 Transform _pose;
+
644 Transform _groundTruthPose;
+
645 std::vector<float> _velocity;
+
646
+
647 SensorData _sensorData;
+
648};
+
+
649
+
650} // namespace rtabmap
+ + +
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
unsigned long getMemoryUsed(bool withSensorData=true) const
Computes the memory usage of this signature.
+
const std::map< int, int > & getWordsChanged() const
Returns the word ID change mapping.
Definition Signature.h:479
+
void setSaved(bool saved)
Sets whether this signature has been saved to the database.
Definition Signature.h:349
+
bool isSaved() const
Checks if this signature has been saved to the database.
Definition Signature.h:371
+
const SensorData & sensorData() const
Returns const access to the sensor data.
Definition Signature.h:603
+
void changeWordsRef(int oldWordId, int activeWordId)
Changes visual word references from one word ID to another.
+
void changeLinkIds(int idFrom, int idTo)
Changes all link target IDs from one value to another.
+
const std::multimap< int, Link > & getLinks() const
Returns all links from this signature.
Definition Signature.h:365
+
void setVelocity(float vx, float vy, float vz, float vroll, float vpitch, float vyaw)
Sets the velocity of this signature.
Definition Signature.h:544
+
const cv::Mat & getWordsDescriptors() const
Returns the feature descriptors for visual words.
Definition Signature.h:485
+
const std::map< int, Link > & getLandmarks() const
Returns all landmark observations.
Definition Signature.h:332
+
void setModified(bool modified)
Sets the modification flag for this signature.
Definition Signature.h:359
+
SensorData & sensorData()
Returns mutable access to the sensor data.
Definition Signature.h:597
+
void setWeight(int weight)
Sets the weight/importance of this signature.
Definition Signature.h:189
+
int id() const
Returns the signature ID.
Definition Signature.h:168
+
void removeVirtualLinks()
Removes all virtual links from this signature.
+
bool isEnabled() const
Checks if this signature is enabled.
Definition Signature.h:436
+
void addLink(const Link &link)
Adds a single link to this signature.
+
const std::vector< cv::KeyPoint > & getWordsKpts() const
Returns the keypoints associated with visual words.
Definition Signature.h:458
+
const Transform & getPose() const
Returns the pose of this signature.
Definition Signature.h:569
+
void setEnabled(bool enabled)
Sets whether this signature is enabled.
Definition Signature.h:442
+
const Transform & getGroundTruthPose() const
Returns the ground truth pose.
Definition Signature.h:585
+
virtual ~Signature()
Virtual destructor.
+
const std::multimap< int, int > & getWords() const
Returns the visual words map.
Definition Signature.h:452
+
bool isBadSignature() const
Checks if this signature is considered "bad".
+
void setWords(const std::multimap< int, int > &words, const std::vector< cv::KeyPoint > &keypoints, const std::vector< cv::Point3f > &words3, const cv::Mat &descriptors)
Sets all visual words for this signature.
+
void removeLandmark(int landmarkId)
Removes a specific landmark observation.
+
int getWeight() const
Returns the weight/importance of this signature.
Definition Signature.h:195
+
void addLandmark(const Link &landmark)
Adds a landmark observation to this signature.
+
const std::string & getLabel() const
Returns the label/name of this signature.
Definition Signature.h:214
+
void setWordsDescriptors(const cv::Mat &descriptors)
Sets the feature descriptors for visual words.
+
void removeLinks(bool keepSelfReferringLinks=false)
Removes all links from this signature.
+
Signature()
Default constructor.
+
bool isLinksModified() const
Checks if the links have been modified.
Definition Signature.h:386
+
Signature(int id, int mapId=-1, int weight=0, double stamp=0.0, const std::string &label=std::string(), const Transform &pose=Transform(), const Transform &groundTruthPose=Transform(), const SensorData &sensorData=SensorData())
Constructor with explicit parameters.
+
void removeLandmarks()
Removes all landmark observations.
+
void setLabel(const std::string &label)
Sets a label/name for this signature.
Definition Signature.h:208
+
void addLinks(const std::list< Link > &links)
Adds multiple links from a list.
+
void setGroundTruthPose(const Transform &pose)
Sets the ground truth pose for evaluation.
Definition Signature.h:529
+
double getStamp() const
Returns the timestamp of this signature.
Definition Signature.h:220
+
void removeAllWords()
Removes all visual words from this signature.
+
bool isModified() const
Checks if this signature has been modified.
Definition Signature.h:380
+
const std::vector< cv::Point3f > & getWords3() const
Returns the 3D points of visual words.
Definition Signature.h:562
+
void removeLink(int idTo)
Removes a specific link to a target signature.
+
float compareTo(const Signature &signature) const
Compares this signature to another signature.
+
int getInvalidWordsCount() const
Returns the count of invalid visual words.
Definition Signature.h:469
+
int mapId() const
Returns the map ID.
Definition Signature.h:174
+
void setPose(const Transform &pose)
Sets the pose of this signature.
Definition Signature.h:519
+
bool hasLink(int idTo, Link::Type type=Link::kUndef) const
Checks if this signature has a link to a target signature.
+
const std::vector< float > & getVelocity() const
Returns the velocity of this signature.
Definition Signature.h:591
+
Signature(const SensorData &data)
Constructor from sensor data.
+
void addLinks(const std::map< int, Link > &links)
Adds multiple links from a map.
+
cv::Mat getPoseCovariance() const
Gets the pose covariance matrix.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Statistics_8h_source.html b/preview/pr-1773/api/latest/Statistics_8h_source.html new file mode 100644 index 00000000..33bdd558 --- /dev/null +++ b/preview/pr-1773/api/latest/Statistics_8h_source.html @@ -0,0 +1,594 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Statistics.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Statistics.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef STATISTICS_H_
+
29#define STATISTICS_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <opencv2/core/core.hpp>
+
34#if CV_MAJOR_VERSION < 5
+
35#include <opencv2/features2d/features2d.hpp>
+
36#else
+
37#include <opencv2/features.hpp>
+
38#endif
+
39#include <opencv2/imgproc/imgproc.hpp>
+
40#include <list>
+
41#include <vector>
+
42#include <rtabmap/core/Signature.h>
+
43#include <rtabmap/core/Link.h>
+ +
45
+
46namespace rtabmap {
+
47
+
69#define RTABMAP_STATS(PREFIX, NAME, UNIT) \
+
70 public: \
+
71 static std::string k##PREFIX##NAME() {return #PREFIX "/" #NAME "/" #UNIT;} \
+
72 private: \
+
73 class Dummy##PREFIX##NAME { \
+
74 public: \
+
75 Dummy##PREFIX##NAME() {if(!_defaultDataInitialized)_defaultData.insert(std::pair<std::string, float>(#PREFIX "/" #NAME "/" #UNIT, 0.0f));} \
+
76 }; \
+
77 Dummy##PREFIX##NAME dummy##PREFIX##NAME
+
78
+
+
107class RTABMAP_CORE_EXPORT Statistics
+
108{
+
109 RTABMAP_STATS(Loop, Id,); // Combined loop or proximity detection
+
110 RTABMAP_STATS(Loop, RejectedHypothesis,);
+
111 RTABMAP_STATS(Loop, Accepted_hypothesis_id,);
+
112 RTABMAP_STATS(Loop, Suppressed_hypothesis_id,);
+
113 RTABMAP_STATS(Loop, Highest_hypothesis_id,);
+
114 RTABMAP_STATS(Loop, Highest_hypothesis_value,);
+
115 RTABMAP_STATS(Loop, Vp_hypothesis,);
+
116 RTABMAP_STATS(Loop, Reactivate_id,);
+
117 RTABMAP_STATS(Loop, Hypothesis_ratio,);
+
118 RTABMAP_STATS(Loop, Hypothesis_reactivated,);
+
119 RTABMAP_STATS(Loop, Map_id,);
+
120 RTABMAP_STATS(Loop, Visual_words,);
+
121 RTABMAP_STATS(Loop, Visual_inliers,);
+
122 RTABMAP_STATS(Loop, Visual_inliers_ratio,);
+
123 RTABMAP_STATS(Loop, Visual_matches,);
+
124 RTABMAP_STATS(Loop, Visual_variance,);
+
125 RTABMAP_STATS(Loop, Distance_since_last_loc, m);
+
126 RTABMAP_STATS(Loop, Last_id,);
+
127 RTABMAP_STATS(Loop, Optimization_max_error, m);
+
128 RTABMAP_STATS(Loop, Optimization_max_error_ratio, );
+
129 RTABMAP_STATS(Loop, Optimization_max_ang_error, deg);
+
130 RTABMAP_STATS(Loop, Optimization_max_ang_error_ratio, );
+
131 RTABMAP_STATS(Loop, Optimization_error, );
+
132 RTABMAP_STATS(Loop, Optimization_iterations, );
+
133 RTABMAP_STATS(Loop, Optimization_max_error_from_id, );
+
134 RTABMAP_STATS(Loop, Optimization_max_error_to_id, );
+
135 RTABMAP_STATS(Loop, Optimization_max_ang_error_from_id, );
+
136 RTABMAP_STATS(Loop, Optimization_max_ang_error_to_id, );
+
137 RTABMAP_STATS(Loop, Optimization_max_error_removed_from_id, );
+
138 RTABMAP_STATS(Loop, Optimization_max_error_removed_to_id, );
+
139 RTABMAP_STATS(Loop, Optimization_max_error_removed_count, );
+
140 RTABMAP_STATS(Loop, Linear_variance,);
+
141 RTABMAP_STATS(Loop, Angular_variance,);
+
142 RTABMAP_STATS(Loop, Landmark_detected,);
+
143 RTABMAP_STATS(Loop, Landmark_detected_node_ref,);
+
144 RTABMAP_STATS(Loop, Visual_inliers_mean_dist,m);
+
145 RTABMAP_STATS(Loop, Visual_inliers_distribution,);
+
146 RTABMAP_STATS(Loop, Proximity_links_cleared,);
+
147 //Odom correction
+
148 RTABMAP_STATS(Loop, Odom_correction_norm, m);
+
149 RTABMAP_STATS(Loop, Odom_correction_angle, deg);
+
150 RTABMAP_STATS(Loop, Odom_correction_x, m);
+
151 RTABMAP_STATS(Loop, Odom_correction_y, m);
+
152 RTABMAP_STATS(Loop, Odom_correction_z, m);
+
153 RTABMAP_STATS(Loop, Odom_correction_roll, deg);
+
154 RTABMAP_STATS(Loop, Odom_correction_pitch, deg);
+
155 RTABMAP_STATS(Loop, Odom_correction_yaw, deg);
+
156 // Map to Odom
+
157 RTABMAP_STATS(Loop, MapToOdom_norm, m);
+
158 RTABMAP_STATS(Loop, MapToOdom_angle, deg);
+
159 RTABMAP_STATS(Loop, MapToOdom_x, m);
+
160 RTABMAP_STATS(Loop, MapToOdom_y, m);
+
161 RTABMAP_STATS(Loop, MapToOdom_z, m);
+
162 RTABMAP_STATS(Loop, MapToOdom_roll, deg);
+
163 RTABMAP_STATS(Loop, MapToOdom_pitch, deg);
+
164 RTABMAP_STATS(Loop, MapToOdom_yaw, deg);
+
165 // Map to Base
+
166 RTABMAP_STATS(Loop, MapToBase_x, m);
+
167 RTABMAP_STATS(Loop, MapToBase_y, m);
+
168 RTABMAP_STATS(Loop, MapToBase_z, m);
+
169 RTABMAP_STATS(Loop, MapToBase_roll, deg);
+
170 RTABMAP_STATS(Loop, MapToBase_pitch, deg);
+
171 RTABMAP_STATS(Loop, MapToBase_yaw, deg);
+
172 RTABMAP_STATS(Loop, MapToBase_lin_std, m);
+
173 RTABMAP_STATS(Loop, MapToBase_lin_var, m2);
+
174
+
175 RTABMAP_STATS(Proximity, Time_detections,);
+
176 RTABMAP_STATS(Proximity, Space_last_detection_id,);
+
177 RTABMAP_STATS(Proximity, Space_paths,);
+
178 RTABMAP_STATS(Proximity, Space_visual_paths_checked,);
+
179 RTABMAP_STATS(Proximity, Space_scan_paths_checked,);
+
180 RTABMAP_STATS(Proximity, Space_detections_added_visually,);
+
181 RTABMAP_STATS(Proximity, Space_detections_added_icp_multi,);
+
182 RTABMAP_STATS(Proximity, Space_detections_added_icp_global,);
+
183
+
184 RTABMAP_STATS(NeighborLinkRefining, Accepted,);
+
185 RTABMAP_STATS(NeighborLinkRefining, Inliers,);
+
186 RTABMAP_STATS(NeighborLinkRefining, ICP_inliers_ratio,);
+
187 RTABMAP_STATS(NeighborLinkRefining, ICP_rotation, rad);
+
188 RTABMAP_STATS(NeighborLinkRefining, ICP_translation, m);
+
189 RTABMAP_STATS(NeighborLinkRefining, ICP_complexity,);
+
190 RTABMAP_STATS(NeighborLinkRefining, Variance,);
+
191 RTABMAP_STATS(NeighborLinkRefining, Pts,);
+
192
+
193 RTABMAP_STATS(Memory, Working_memory_size,);
+
194 RTABMAP_STATS(Memory, Working_memory_inter_size,);
+
195 RTABMAP_STATS(Memory, Short_time_memory_size,);
+
196 RTABMAP_STATS(Memory, Short_time_memory_inter_size,);
+
197 RTABMAP_STATS(Memory, Database_memory_used, MB);
+
198 RTABMAP_STATS(Memory, Signatures_removed,);
+
199 RTABMAP_STATS(Memory, Immunized_globally,);
+
200 RTABMAP_STATS(Memory, Immunized_locally,);
+
201 RTABMAP_STATS(Memory, Immunized_locally_max,);
+
202 RTABMAP_STATS(Memory, Signatures_retrieved,);
+
203 RTABMAP_STATS(Memory, Images_buffered,);
+
204 RTABMAP_STATS(Memory, Rehearsal_sim,);
+
205 RTABMAP_STATS(Memory, Rehearsal_id,);
+
206 RTABMAP_STATS(Memory, Rehearsal_merged,);
+
207 RTABMAP_STATS(Memory, Local_graph_size,);
+
208 RTABMAP_STATS(Memory, Odom_cache_poses,);
+
209 RTABMAP_STATS(Memory, Odom_cache_links,);
+
210 RTABMAP_STATS(Memory, Small_movement,);
+
211 RTABMAP_STATS(Memory, Fast_movement,);
+
212 RTABMAP_STATS(Memory, New_landmark,);
+
213 RTABMAP_STATS(Memory, Odometry_variance_ang,);
+
214 RTABMAP_STATS(Memory, Odometry_variance_lin,);
+
215 RTABMAP_STATS(Memory, Distance_travelled, m);
+
216 RTABMAP_STATS(Memory, RAM_usage, MB);
+
217 RTABMAP_STATS(Memory, RAM_estimated, MB);
+
218 RTABMAP_STATS(Memory, Triangulated_points, );
+
219 RTABMAP_STATS(Memory, Closest_node_distance, m);
+
220 RTABMAP_STATS(Memory, Closest_node_angle, rad);
+
221
+
222 RTABMAP_STATS(Timing, Memory_update, ms);
+
223 RTABMAP_STATS(Timing, Neighbor_link_refining, ms);
+
224 RTABMAP_STATS(Timing, Proximity_by_time, ms);
+
225 RTABMAP_STATS(Timing, Proximity_by_space_search, ms);
+
226 RTABMAP_STATS(Timing, Proximity_by_space_visual, ms);
+
227 RTABMAP_STATS(Timing, Proximity_by_space, ms);
+
228 RTABMAP_STATS(Timing, Cleaning_neighbors, ms);
+
229 RTABMAP_STATS(Timing, Reactivation, ms);
+
230 RTABMAP_STATS(Timing, Add_loop_closure_link, ms);
+
231 RTABMAP_STATS(Timing, Map_optimization, ms);
+
232 RTABMAP_STATS(Timing, Likelihood_computation, ms);
+
233 RTABMAP_STATS(Timing, Posterior_computation, ms);
+
234 RTABMAP_STATS(Timing, Hypotheses_creation, ms);
+
235 RTABMAP_STATS(Timing, Hypotheses_validation, ms);
+
236 RTABMAP_STATS(Timing, Statistics_creation, ms);
+
237 RTABMAP_STATS(Timing, Memory_cleanup, ms);
+
238 RTABMAP_STATS(Timing, Total, ms);
+
239 RTABMAP_STATS(Timing, Forgetting, ms);
+
240 RTABMAP_STATS(Timing, Joining_trash, ms);
+
241 RTABMAP_STATS(Timing, Emptying_trash, ms);
+
242 RTABMAP_STATS(Timing, Finalizing_statistics, ms);
+
243 RTABMAP_STATS(Timing, RAM_estimation, ms);
+
244
+
245 RTABMAP_STATS(TimingMem, Pre_update, ms);
+
246 RTABMAP_STATS(TimingMem, Signature_creation, ms);
+
247 RTABMAP_STATS(TimingMem, Rehearsal, ms);
+
248 RTABMAP_STATS(TimingMem, Keypoints_detection, ms);
+
249 RTABMAP_STATS(TimingMem, Subpixel, ms);
+
250 RTABMAP_STATS(TimingMem, Stereo_correspondences, ms);
+
251 RTABMAP_STATS(TimingMem, Descriptors_extraction, ms);
+
252 RTABMAP_STATS(TimingMem, Rectification, ms);
+
253 RTABMAP_STATS(TimingMem, Keypoints_3D, ms);
+
254 RTABMAP_STATS(TimingMem, Keypoints_3D_motion, ms);
+
255 RTABMAP_STATS(TimingMem, Joining_dictionary_update, ms);
+
256 RTABMAP_STATS(TimingMem, Add_new_words, ms);
+
257 RTABMAP_STATS(TimingMem, Compressing_data, ms);
+
258 RTABMAP_STATS(TimingMem, Post_decimation, ms);
+
259 RTABMAP_STATS(TimingMem, Scan_filtering, ms);
+
260 RTABMAP_STATS(TimingMem, Occupancy_grid, ms);
+
261 RTABMAP_STATS(TimingMem, Markers_detection, ms);
+
262
+
263 RTABMAP_STATS(Keypoint, Dictionary_size, words);
+
264 RTABMAP_STATS(Keypoint, Current_frame, words);
+
265 RTABMAP_STATS(Keypoint, Indexed_words, words);
+
266 RTABMAP_STATS(Keypoint, Index_memory_usage, KB);
+
267
+
268 RTABMAP_STATS(Gt, Translational_rmse, m);
+
269 RTABMAP_STATS(Gt, Translational_mean, m);
+
270 RTABMAP_STATS(Gt, Translational_median, m);
+
271 RTABMAP_STATS(Gt, Translational_std, m);
+
272 RTABMAP_STATS(Gt, Translational_min, m);
+
273 RTABMAP_STATS(Gt, Translational_max, m);
+
274 RTABMAP_STATS(Gt, Rotational_rmse, deg);
+
275 RTABMAP_STATS(Gt, Rotational_mean, deg);
+
276 RTABMAP_STATS(Gt, Rotational_median, deg);
+
277 RTABMAP_STATS(Gt, Rotational_std, deg);
+
278 RTABMAP_STATS(Gt, Rotational_min, deg);
+
279 RTABMAP_STATS(Gt, Rotational_max, deg);
+
280 RTABMAP_STATS(Gt, Localization_linear_error, m);
+
281 RTABMAP_STATS(Gt, Localization_angular_error, deg);
+
282
+
283public:
+
292 static const std::map<std::string, float> & defaultData();
+
293
+
307 static std::string serializeData(const std::map<std::string, float> & data);
+
308
+
321 static std::map<std::string, float> deserializeData(const std::string & data);
+
322
+
323public:
+ +
333
+
337 virtual ~Statistics();
+
338
+
354 void addStatistic(const std::string & name, float value);
+
355
+
356 // setters
+
357
+
367 void setExtended(bool extended) {_extended = extended;}
+
368
+
373 void setRefImageId(int id) {_refImageId = id;}
+
374
+
379 void setRefImageMapId(int id) {_refImageMapId = id;}
+
380
+
385 void setLoopClosureId(int id) {_loopClosureId = id;}
+
386
+
391 void setLoopClosureMapId(int id) {_loopClosureMapId = id;}
+
392
+
397 void setProximityDetectionId(int id) {_proximiyDetectionId = id;}
+
398
+
403 void setProximityDetectionMapId(int id) {_proximiyDetectionMapId = id;}
+
404
+
409 void setStamp(double stamp) {_stamp = stamp;}
+
410
+
418 RTABMAP_DEPRECATED void setLastSignatureData(const Signature & data);
+
419
+
430 void addSignatureData(const Signature & data) {uInsert(_signaturesData, std::make_pair(data.id(), data));}
+
431
+
436 void setSignaturesData(const std::map<int, Signature> & data) {_signaturesData = data;}
+
437
+
446 void setPoses(const std::map<int, Transform> & poses) {_poses = poses;}
+
447
+
456 void setConstraints(const std::multimap<int, Link> & constraints) {_constraints = constraints;}
+
457
+
467 void setMapCorrection(const Transform & mapCorrection) {_mapCorrection = mapCorrection;}
+
468
+
476 void setLoopClosureTransform(const Transform & loopClosureTransform) {_loopClosureTransform = loopClosureTransform;}
+
477
+
485 void setLocalizationCovariance(const cv::Mat & covariance) {_localizationCovariance = covariance;}
+
486
+
491 void setLabels(const std::map<int, std::string> & labels) {_labels = labels;}
+
492
+
497 void setWeights(const std::map<int, int> & weights) {_weights = weights;}
+
498
+
504 void setPosterior(const std::map<int, float> & posterior) {_posterior = posterior;}
+
505
+
513 void setLikelihood(const std::map<int, float> & likelihood) {_likelihood = likelihood;}
+
514
+
519 void setRawLikelihood(const std::map<int, float> & rawLikelihood) {_rawLikelihood = rawLikelihood;}
+
520
+
528 void setLocalPath(const std::vector<int> & localPath) {_localPath=localPath;}
+
529
+
534 void setCurrentGoalId(int goal) {_currentGoalId=goal;}
+
535
+
543 void setReducedIds(const std::map<int, int> & reducedIds) {_reducedIds = reducedIds;}
+
544
+
552 void setWmState(const std::vector<int> & state) {_wmState = state;}
+
553
+
561 void setOdomCachePoses(const std::map<int, Transform> & poses) {_odomCachePoses = poses;}
+
562
+
570 void setOdomCacheConstraints(const std::multimap<int, Link> & constraints) {_odomCacheConstraints = constraints;}
+
571
+
572 // getters
+
573
+
578 bool extended() const {return _extended;}
+
579
+
584 int refImageId() const {return _refImageId;}
+
585
+
590 int refImageMapId() const {return _refImageMapId;}
+
591
+
596 int loopClosureId() const {return _loopClosureId;}
+
597
+
602 int loopClosureMapId() const {return _loopClosureMapId;}
+
603
+
608 int proximityDetectionId() const {return _proximiyDetectionId;}
+
609
+
614 int proximityDetectionMapId() const {return _proximiyDetectionMapId;}
+
615
+
620 double stamp() const {return _stamp;}
+
621
+
630 const Signature & getLastSignatureData() const {return _signaturesData.empty()?_dummyEmptyData:_signaturesData.rbegin()->second;}
+
631
+
636 const std::map<int, Signature> & getSignaturesData() const {return _signaturesData;}
+
637
+
642 const std::map<int, Transform> & poses() const {return _poses;}
+
643
+
648 const std::multimap<int, Link> & constraints() const {return _constraints;}
+
649
+
657 const Transform & mapCorrection() const {return _mapCorrection;}
+
658
+
663 const Transform & loopClosureTransform() const {return _loopClosureTransform;}
+
664
+
669 const cv::Mat & localizationCovariance() const {return _localizationCovariance;}
+
670
+
675 const std::map<int, std::string> & labels() const {return _labels;}
+
676
+
681 const std::map<int, int> & weights() const {return _weights;}
+
682
+
687 const std::map<int, float> & posterior() const {return _posterior;}
+
688
+
693 const std::map<int, float> & likelihood() const {return _likelihood;}
+
694
+
699 const std::map<int, float> & rawLikelihood() const {return _rawLikelihood;}
+
700
+
705 const std::vector<int> & localPath() const {return _localPath;}
+
706
+
711 int currentGoalId() const {return _currentGoalId;}
+
712
+
717 const std::map<int, int> & reducedIds() const {return _reducedIds;}
+
718
+
723 const std::vector<int> & wmState() const {return _wmState;}
+
724
+
729 const std::map<int, Transform> & odomCachePoses() const {return _odomCachePoses;}
+
730
+
735 const std::multimap<int, Link> & odomCacheConstraints() const {return _odomCacheConstraints;}
+
736
+
748 const std::map<std::string, float> & data() const {return _data;}
+
749
+
750private:
+
751 bool _extended;
+
752
+
753 int _refImageId;
+
754 int _refImageMapId;
+
755 int _loopClosureId;
+
756 int _loopClosureMapId;
+
757 int _proximiyDetectionId;
+
758 int _proximiyDetectionMapId;
+
759 double _stamp;
+
760
+
761 std::map<int, Signature> _signaturesData;
+
762 Signature _dummyEmptyData;
+
763
+
764 std::map<int, Transform> _poses;
+
765 std::multimap<int, Link> _constraints;
+
766 Transform _mapCorrection;
+
767 Transform _loopClosureTransform;
+
768 cv::Mat _localizationCovariance;
+
769
+
770 std::map<int, std::string> _labels;
+
771 std::map<int, int> _weights;
+
772 std::map<int, float> _posterior;
+
773 std::map<int, float> _likelihood;
+
774 std::map<int, float> _rawLikelihood;
+
775
+
776 std::vector<int> _localPath;
+
777 int _currentGoalId;
+
778
+
779 std::map<int, int> _reducedIds;
+
780
+
781 std::vector<int> _wmState;
+
782
+
783 std::map<int, Transform> _odomCachePoses;
+
784 std::multimap<int, Link> _odomCacheConstraints;
+
785
+
795 std::map<std::string, float> _data;
+
796
+
797 static std::map<std::string, float> _defaultData;
+
798 static bool _defaultDataInitialized;
+
799 // end extended data
+
800};
+
+
801
+
802}// end namespace rtabmap
+
803
+
804#endif /* STATISTICS_H_ */
+
Wrappers of STL for convenient functions.
+
void uInsert(std::map< K, V > &map, const std::pair< K, V > &pair)
Definition UStl.h:441
+
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Definition Memory.h:102
+
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
+
int id() const
Returns the signature ID.
Definition Signature.h:168
+
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
+
int proximityDetectionId() const
Returns the proximity detection ID.
Definition Statistics.h:608
+
const std::vector< int > & wmState() const
Returns the working memory state.
Definition Statistics.h:723
+
void setStamp(double stamp)
Sets the timestamp for these statistics.
Definition Statistics.h:409
+
static std::map< std::string, float > deserializeData(const std::string &data)
Deserializes a statistics data map from a string.
+
void setLoopClosureId(int id)
Sets the loop closure detection ID.
Definition Statistics.h:385
+
int loopClosureMapId() const
Returns the loop closure map ID.
Definition Statistics.h:602
+
bool extended() const
Returns whether extended statistics mode is enabled.
Definition Statistics.h:578
+
void setRawLikelihood(const std::map< int, float > &rawLikelihood)
Sets raw likelihood values (before normalization)
Definition Statistics.h:519
+
double stamp() const
Returns the timestamp.
Definition Statistics.h:620
+
void addStatistic(const std::string &name, float value)
Adds a statistic value to the data map.
+
void setProximityDetectionId(int id)
Sets the proximity detection ID.
Definition Statistics.h:397
+
const std::multimap< int, Link > & constraints() const
Returns the constraint graph.
Definition Statistics.h:648
+
const Transform & loopClosureTransform() const
Returns the loop closure transform.
Definition Statistics.h:663
+
void setRefImageMapId(int id)
Sets the reference image map ID.
Definition Statistics.h:379
+
void setLoopClosureMapId(int id)
Sets the loop closure map ID.
Definition Statistics.h:391
+
void setLocalPath(const std::vector< int > &localPath)
Sets the local path (sequence of node IDs)
Definition Statistics.h:528
+
const std::multimap< int, Link > & odomCacheConstraints() const
Returns odometry cache constraints.
Definition Statistics.h:735
+
int refImageMapId() const
Returns the reference image map ID.
Definition Statistics.h:590
+
const std::map< int, float > & rawLikelihood() const
Returns raw likelihood values.
Definition Statistics.h:699
+
int refImageId() const
Returns the reference image ID.
Definition Statistics.h:584
+
const cv::Mat & localizationCovariance() const
Returns the localization covariance matrix.
Definition Statistics.h:669
+
const std::map< int, float > & likelihood() const
Returns likelihood values.
Definition Statistics.h:693
+
void setRefImageId(int id)
Sets the reference image ID (current/last processed signature ID)
Definition Statistics.h:373
+
void addSignatureData(const Signature &data)
Adds signature data to the statistics.
Definition Statistics.h:430
+
const Signature & getLastSignatureData() const
Returns the last signature data.
Definition Statistics.h:630
+
void setProximityDetectionMapId(int id)
Sets the proximity detection map ID.
Definition Statistics.h:403
+
Statistics()
Default constructor.
+
void setOdomCachePoses(const std::map< int, Transform > &poses)
Sets odometry cache poses.
Definition Statistics.h:561
+
void setMapCorrection(const Transform &mapCorrection)
Sets the map correction transform.
Definition Statistics.h:467
+
int loopClosureId() const
Returns the loop closure detection ID.
Definition Statistics.h:596
+
void setLocalizationCovariance(const cv::Mat &covariance)
Sets the localization covariance matrix.
Definition Statistics.h:485
+
const Transform & mapCorrection() const
Returns the map correction transform.
Definition Statistics.h:657
+
const std::vector< int > & localPath() const
Returns the local path.
Definition Statistics.h:705
+
void setCurrentGoalId(int goal)
Sets the current goal node ID.
Definition Statistics.h:534
+
void setLikelihood(const std::map< int, float > &likelihood)
Sets likelihood values for loop closure hypotheses.
Definition Statistics.h:513
+
const std::map< int, int > & reducedIds() const
Returns the reduced IDs mapping.
Definition Statistics.h:717
+
const std::map< int, Transform > & odomCachePoses() const
Returns odometry cache poses.
Definition Statistics.h:729
+
void setPosterior(const std::map< int, float > &posterior)
Sets posterior probabilities for loop closure hypotheses.
Definition Statistics.h:504
+
static const std::map< std::string, float > & defaultData()
Returns the default statistics data map.
+
void setWeights(const std::map< int, int > &weights)
Sets node weights.
Definition Statistics.h:497
+
void setExtended(bool extended)
Sets whether extended statistics mode is enabled.
Definition Statistics.h:367
+
void setWmState(const std::vector< int > &state)
Sets the working memory state.
Definition Statistics.h:552
+
void setLabels(const std::map< int, std::string > &labels)
Sets node labels.
Definition Statistics.h:491
+
const std::map< int, int > & weights() const
Returns node weights.
Definition Statistics.h:681
+
static std::string serializeData(const std::map< std::string, float > &data)
Serializes a statistics data map to a string.
+
const std::map< std::string, float > & data() const
Returns the statistics data map.
Definition Statistics.h:748
+
const std::map< int, Signature > & getSignaturesData() const
Returns all signature data.
Definition Statistics.h:636
+
void setReducedIds(const std::map< int, int > &reducedIds)
Sets the reduced IDs mapping.
Definition Statistics.h:543
+
void setLoopClosureTransform(const Transform &loopClosureTransform)
Sets the loop closure transform.
Definition Statistics.h:476
+
void setConstraints(const std::multimap< int, Link > &constraints)
Sets the constraint graph (links between nodes)
Definition Statistics.h:456
+
const std::map< int, float > & posterior() const
Returns posterior probabilities.
Definition Statistics.h:687
+
const std::map< int, Transform > & poses() const
Returns the pose graph.
Definition Statistics.h:642
+
void setPoses(const std::map< int, Transform > &poses)
Sets the pose graph (node poses)
Definition Statistics.h:446
+
void setSignaturesData(const std::map< int, Signature > &data)
Sets all signature data at once.
Definition Statistics.h:436
+
int currentGoalId() const
Returns the current goal node ID.
Definition Statistics.h:711
+
void setOdomCacheConstraints(const std::multimap< int, Link > &constraints)
Sets odometry cache constraints.
Definition Statistics.h:570
+
RTABMAP_DEPRECATED void setLastSignatureData(const Signature &data)
Sets the last signature data (deprecated)
+
int proximityDetectionMapId() const
Returns the proximity detection map ID.
Definition Statistics.h:614
+
virtual ~Statistics()
Virtual destructor.
+
const std::map< int, std::string > & labels() const
Returns node labels.
Definition Statistics.h:675
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/StereoBM_8h_source.html b/preview/pr-1773/api/latest/StereoBM_8h_source.html new file mode 100644 index 00000000..73ae75fc --- /dev/null +++ b/preview/pr-1773/api/latest/StereoBM_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/stereo/StereoBM.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StereoBM.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef STEREOBM_H_
+
29#define STEREOBM_H_
+
30
+
31#include <rtabmap/core/StereoDense.h>
+
32#include <rtabmap/core/Parameters.h>
+
33#include <opencv2/core/core.hpp>
+
34
+
35namespace rtabmap {
+
36
+
+
47class RTABMAP_CORE_EXPORT StereoBM : public StereoDense {
+
48public:
+
55 StereoBM(int blockSize, int numDisparities);
+
56
+
64 StereoBM(const ParametersMap & parameters = ParametersMap());
+
65
+
69 virtual ~StereoBM() {}
+
70
+
89 virtual void parseParameters(const ParametersMap & parameters);
+
90
+
104 virtual cv::Mat computeDisparity(
+
105 const cv::Mat & leftImage,
+
106 const cv::Mat & rightImage) const;
+
107
+
108private:
+
109 int blockSize_;
+
110 int minDisparity_;
+
111 int numDisparities_;
+
112 int preFilterSize_;
+
113 int preFilterCap_;
+
114 int uniquenessRatio_;
+
115 int textureThreshold_;
+
116 int speckleWindowSize_;
+
117 int speckleRange_;
+
118 int disp12MaxDiff_;
+
119};
+
+
120
+
121} /* namespace rtabmap */
+
122
+
123#endif /* STEREOBM_H_ */
+
Block Matching algorithm for dense stereo matching.
Definition StereoBM.h:47
+
StereoBM(int blockSize, int numDisparities)
Constructor with explicit block size and number of disparities.
+
virtual ~StereoBM()
Virtual destructor.
Definition StereoBM.h:69
+
StereoBM(const ParametersMap &parameters=ParametersMap())
Constructor with parameters map.
+
virtual cv::Mat computeDisparity(const cv::Mat &leftImage, const cv::Mat &rightImage) const
Compute disparity map from stereo image pair.
+
virtual void parseParameters(const ParametersMap &parameters)
Parse parameters from a parameters map.
+
Abstract base class for dense stereo matching algorithms.
Definition StereoDense.h:53
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/StereoCameraModel_8h_source.html b/preview/pr-1773/api/latest/StereoCameraModel_8h_source.html new file mode 100644 index 00000000..fb24a122 --- /dev/null +++ b/preview/pr-1773/api/latest/StereoCameraModel_8h_source.html @@ -0,0 +1,337 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/StereoCameraModel.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StereoCameraModel.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef STEREOCAMERAMODEL_H_
+
29#define STEREOCAMERAMODEL_H_
+
30
+
31#include <rtabmap/core/CameraModel.h>
+
32
+
33namespace rtabmap {
+
34
+
+
53class RTABMAP_CORE_EXPORT StereoCameraModel
+
54{
+
55public:
+
59 StereoCameraModel() : leftSuffix_("left"), rightSuffix_("right") {}
+
60
+ +
93 const std::string & name,
+
94 const cv::Size & imageSize1,
+
95 const cv::Mat & K1, const cv::Mat & D1, const cv::Mat & R1, const cv::Mat & P1,
+
96 const cv::Size & imageSize2,
+
97 const cv::Mat & K2, const cv::Mat & D2, const cv::Mat & R2, const cv::Mat & P2,
+
98 const cv::Mat & R, const cv::Mat & T, const cv::Mat & E, const cv::Mat & F,
+
99 const Transform & localTransform = Transform(0,0,1,0, -1,0,0,0, 0,-1,0,0));
+
100
+ +
125 const std::string & name,
+
126 const CameraModel & leftCameraModel,
+
127 const CameraModel & rightCameraModel,
+
128 const cv::Mat & R = cv::Mat(),
+
129 const cv::Mat & T = cv::Mat(),
+
130 const cv::Mat & E = cv::Mat(),
+
131 const cv::Mat & F = cv::Mat());
+
132
+ +
157 const std::string & name,
+
158 const CameraModel & leftCameraModel,
+
159 const CameraModel & rightCameraModel,
+
160 const Transform & extrinsics);
+
161
+ +
181 double fx,
+
182 double fy,
+
183 double cx,
+
184 double cy,
+
185 double baseline,
+
186 const Transform & localTransform = Transform(0,0,1,0, -1,0,0,0, 0,-1,0,0),
+
187 const cv::Size & imageSize = cv::Size(0,0));
+
188
+ +
207 const std::string & name,
+
208 double fx,
+
209 double fy,
+
210 double cx,
+
211 double cy,
+
212 double baseline,
+
213 const Transform & localTransform = Transform(0,0,1,0, -1,0,0,0, 0,-1,0,0),
+
214 const cv::Size & imageSize = cv::Size(0,0));
+
215
+ +
220
+
224 bool isValidForProjection() const {return left_.isValidForProjection() && right_.isValidForProjection() && baseline() > 0.0;}
+
225
+
229 bool isValidForRectification() const {return left_.isValidForRectification() && right_.isValidForRectification();}
+
230
+
234 void initRectificationMap() {left_.initRectificationMap(); right_.initRectificationMap();}
+
235
+
239 bool isRectificationMapInitialized() const {return left_.isRectificationMapInitialized() && right_.isRectificationMapInitialized();}
+
240
+
253 void setName(const std::string & name, const std::string & leftSuffix = "left", const std::string & rightSuffix = "right");
+
254
+
258 const std::string & name() const {return name_;}
+
259
+
263 void setImageSize(const cv::Size & size) {left_.setImageSize(size); right_.setImageSize(size);}
+
264
+
284 bool load(const std::string & directory, const std::string & cameraName, bool ignoreStereoTransform = true, bool initRectificationMaps = true);
+
285
+
299 bool save(const std::string & directory, bool ignoreStereoTransform = true) const;
+
300
+
315 bool saveStereoTransform(const std::string & directory) const;
+
316
+
330 std::vector<unsigned char> serialize() const;
+
331
+
343 unsigned int deserialize(const std::vector<unsigned char>& data);
+
344
+
365 unsigned int deserialize(const unsigned char * data, unsigned int dataSize);
+
366
+
378 double baseline() const {return right_.fx()!=0.0 && left_.fx() != 0.0 ? left_.Tx() / left_.fx() - right_.Tx()/right_.fx():0.0;}
+
379
+
395 float computeDepth(float disparity) const;
+
396
+
411 float computeDisparity(float depth) const; // m
+
412
+
428 float computeDisparity(unsigned short depth) const; // mm
+
429
+
454 void reproject(float x, float y, float z, float & uLeft, float & vLeft, float & uRight, float & vRight) const;
+
455
+
473 void reproject(float x, float y, float z, int & uLeft, int & vLeft, int & uRight, int & vRight) const;
+
474
+
475 const cv::Mat & R() const {return R_;}
+
+
476 const cv::Mat & T() const {return T_;}
+
+
477 const cv::Mat & E() const {return E_;}
+
+
478 const cv::Mat & F() const {return F_;}
+
479
+
+
492 void scale(double scale);
+
493
+
506 void roi(const cv::Rect & roi);
+
507
+
511 void setLocalTransform(const Transform & transform) {left_.setLocalTransform(transform);}
+
512
+
516 const Transform & localTransform() const {return left_.localTransform();}
+
517
+ +
543
+
547 const CameraModel & left() const {return left_;}
+
551 const CameraModel & right() const {return right_;}
+
552
+
556 const std::string & getLeftSuffix() const {return leftSuffix_;}
+
560 const std::string & getRightSuffix() const {return rightSuffix_;}
+
561
+
562private:
+
573 void updateStereoRectification();
+
574
+
575private:
+
576 std::string leftSuffix_;
+
577 std::string rightSuffix_;
+
578 CameraModel left_;
+
579 CameraModel right_;
+
580 std::string name_;
+
581
+
582 cv::Mat R_;
+
583 cv::Mat T_;
+
584 cv::Mat E_;
+
585 cv::Mat F_;
+
586};
+
587
+
601RTABMAP_CORE_EXPORT std::ostream& operator<<(std::ostream& os, const StereoCameraModel& model);
+
602
+
603} // rtabmap
+
604
+
605#endif /* STEREOCAMERAMODEL_H_ */
+
+
+
+
+
+
Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
Definition CameraModel.h:53
+
A class representing a calibrated stereo camera system.
+
const CameraModel & left() const
Returns the left camera model.
+
void reproject(float x, float y, float z, float &uLeft, float &vLeft, float &uRight, float &vRight) const
Reprojects a 3D point of the left camera frame into both image planes (floating-point).
+
StereoCameraModel(double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))
Minimal constructor using focal lengths and baseline only.
+
StereoCameraModel()
Default constructor. Creates an empty stereo model with default suffixes ("left", "right").
+
StereoCameraModel(const std::string &name, const cv::Size &imageSize1, const cv::Mat &K1, const cv::Mat &D1, const cv::Mat &R1, const cv::Mat &P1, const cv::Size &imageSize2, const cv::Mat &K2, const cv::Mat &D2, const cv::Mat &R2, const cv::Mat &P2, const cv::Mat &R, const cv::Mat &T, const cv::Mat &E, const cv::Mat &F, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0))
Constructs a StereoCameraModel from detailed intrinsic and extrinsic parameters for both cameras.
+
bool saveStereoTransform(const std::string &directory) const
Saves stereo extrinsic parameters to a YAML file in ROS format.
+
const cv::Mat & F() const
Fundamental matrix.
+
void scale(double scale)
Scales both cameras' calibration by a factor.
+
float computeDisparity(unsigned short depth) const
Computes the disparity value from a depth given in unsigned short format (millimeters).
+
const std::string & getRightSuffix() const
Gets the suffix used for the right camera calibration file.
+
std::vector< unsigned char > serialize() const
Serializes the stereo camera model into a byte vector.
+
Transform stereoTransform() const
Returns the stereo transform (left camera relative to right camera coordinate system).
+
float computeDepth(float disparity) const
Computes the depth (Z coordinate) from a given disparity value.
+
const Transform & localTransform() const
Gets the local transform from left camera to robot base.
+
void initRectificationMap()
Initializes the rectification maps for both cameras.
+
void reproject(float x, float y, float z, int &uLeft, int &vLeft, int &uRight, int &vRight) const
Reprojects a 3D point of the left camera frame into both image planes (rounded to int).
+
bool isValidForProjection() const
Returns true if both left and right models are valid for projection and the baseline is positive.
+
unsigned int deserialize(const std::vector< unsigned char > &data)
Deserializes stereo camera model data from a byte vector.
+
StereoCameraModel(const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const Transform &extrinsics)
Constructs a StereoCameraModel from two camera models and an extrinsic Transform between them.
+
const std::string & getLeftSuffix() const
Gets the suffix used for the left camera calibration file.
+
const cv::Mat & R() const
Stereo extrinsic rotation matrix.
+
const cv::Mat & T() const
Stereo extrinsic translation vector.
+
void setImageSize(const cv::Size &size)
Sets the image size for both left and right cameras.
+
const cv::Mat & E() const
Essential matrix.
+
double baseline() const
Returns the stereo baseline in meters.
+
StereoCameraModel(const std::string &name, double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))
Minimal constructor that also sets a name, required if we want to save it to a file.
+
bool load(const std::string &directory, const std::string &cameraName, bool ignoreStereoTransform=true, bool initRectificationMaps=true)
Loads stereo camera calibration data from disk.
+
bool isRectificationMapInitialized() const
Returns true if rectification maps are initialized.
+
const CameraModel & right() const
Returns the right camera model.
+
bool save(const std::string &directory, bool ignoreStereoTransform=true) const
Saves stereo camera calibration data to disk.
+
void roi(const cv::Rect &roi)
Applies region-of-interest (ROI) cropping to both cameras.
+
bool isValidForRectification() const
Returns true if both left and right models are valid for rectification.
+
void setName(const std::string &name, const std::string &leftSuffix="left", const std::string &rightSuffix="right")
Sets the camera name and optional image suffixes for the left and right cameras.
+
const std::string & name() const
Gets the camera name.
+
StereoCameraModel(const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const cv::Mat &R=cv::Mat(), const cv::Mat &T=cv::Mat(), const cv::Mat &E=cv::Mat(), const cv::Mat &F=cv::Mat())
Constructs a StereoCameraModel from two individual camera models and optional stereo extrinsic parame...
+
float computeDisparity(float depth) const
Computes the disparity value from a given depth.
+
void setLocalTransform(const Transform &transform)
Sets the local transform from left camera to robot base.
+
virtual ~StereoCameraModel()
Destructor.
+
unsigned int deserialize(const unsigned char *data, unsigned int dataSize)
Deserializes stereo camera model data from a raw byte array.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+ +
RTABMAP_CORE_EXPORT std::ostream & operator<<(std::ostream &os, const CameraModel &model)
Stream operator for printing a camera model to an output stream.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/StereoDense_8h_source.html b/preview/pr-1773/api/latest/StereoDense_8h_source.html new file mode 100644 index 00000000..f4da5ef0 --- /dev/null +++ b/preview/pr-1773/api/latest/StereoDense_8h_source.html @@ -0,0 +1,197 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/StereoDense.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StereoDense.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef STEREODENSE_H_
+
29#define STEREODENSE_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Parameters.h>
+
34#include <opencv2/core/core.hpp>
+
35
+
36namespace rtabmap {
+
37
+
+
53class RTABMAP_CORE_EXPORT StereoDense {
+
54public:
+
+
59 enum Type {
+
60 kTypeBM = 0,
+
61 kTypeSGBM = 1
+
62 };
+
+
63
+
75 static StereoDense * create(const ParametersMap & parameters);
+
76
+
87 static StereoDense * create(StereoDense::Type type, const ParametersMap & parameters = ParametersMap());
+
88
+
89public:
+
93 virtual ~StereoDense() {}
+
94
+
103 virtual void parseParameters(const ParametersMap & parameters) {}
+
104
+
119 virtual cv::Mat computeDisparity(
+
120 const cv::Mat & leftImage,
+
121 const cv::Mat & rightImage) const = 0;
+
122
+
123protected:
+
129 StereoDense(const ParametersMap & parameters = ParametersMap()) {}
+
130};
+
+
131
+
132} /* namespace rtabmap */
+
133
+
134#endif /* STEREODENSE_H_ */
+
Abstract base class for dense stereo matching algorithms.
Definition StereoDense.h:53
+
Type
Enumeration of available stereo matching algorithm types.
Definition StereoDense.h:59
+
StereoDense(const ParametersMap &parameters=ParametersMap())
Protected constructor.
+
virtual ~StereoDense()
Virtual destructor.
Definition StereoDense.h:93
+
virtual void parseParameters(const ParametersMap &parameters)
Parse parameters from a parameters map.
+
virtual cv::Mat computeDisparity(const cv::Mat &leftImage, const cv::Mat &rightImage) const =0
Compute disparity map from stereo image pair.
+
static StereoDense * create(const ParametersMap &parameters)
Factory method to create a StereoDense instance from parameters.
+
static StereoDense * create(StereoDense::Type type, const ParametersMap &parameters=ParametersMap())
Factory method to create a StereoDense instance of a specific type.
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/StereoSGBM_8h_source.html b/preview/pr-1773/api/latest/StereoSGBM_8h_source.html new file mode 100644 index 00000000..175a3596 --- /dev/null +++ b/preview/pr-1773/api/latest/StereoSGBM_8h_source.html @@ -0,0 +1,194 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/stereo/StereoSGBM.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StereoSGBM.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef STEREOSGBM_H_
+
29#define STEREOSGBM_H_
+
30
+
31#include <rtabmap/core/StereoDense.h>
+
32#include <rtabmap/core/Parameters.h>
+
33#include <opencv2/core/core.hpp>
+
34
+
35namespace rtabmap {
+
36
+
+
51class RTABMAP_CORE_EXPORT StereoSGBM : public StereoDense {
+
52public:
+
60 StereoSGBM(const ParametersMap & parameters = ParametersMap());
+
61
+
65 virtual ~StereoSGBM() {}
+
66
+
86 virtual void parseParameters(const ParametersMap & parameters);
+
87
+
101 virtual cv::Mat computeDisparity(
+
102 const cv::Mat & leftImage,
+
103 const cv::Mat & rightImage) const;
+
104
+
105private:
+
106 int blockSize_;
+
107 int minDisparity_;
+
108 int numDisparities_;
+
109 int preFilterCap_;
+
110 int uniquenessRatio_;
+
111 int speckleWindowSize_;
+
112 int speckleRange_;
+
113 int P1_;
+
114 int P2_;
+
115 int disp12MaxDiff_;
+
116 int mode_;
+
117};
+
+
118
+
119} /* namespace rtabmap */
+
120
+
121#endif /* STEREOSGBM_H_ */
+
Abstract base class for dense stereo matching algorithms.
Definition StereoDense.h:53
+
Semi-Global Block Matching algorithm for dense stereo matching.
Definition StereoSGBM.h:51
+
virtual ~StereoSGBM()
Virtual destructor.
Definition StereoSGBM.h:65
+
virtual void parseParameters(const ParametersMap &parameters)
Parse parameters from a parameters map.
+
StereoSGBM(const ParametersMap &parameters=ParametersMap())
Constructor with parameters map.
+
virtual cv::Mat computeDisparity(const cv::Mat &leftImage, const cv::Mat &rightImage) const
Compute disparity map from stereo image pair.
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Stereo_8h_source.html b/preview/pr-1773/api/latest/Stereo_8h_source.html new file mode 100644 index 00000000..e789e459 --- /dev/null +++ b/preview/pr-1773/api/latest/Stereo_8h_source.html @@ -0,0 +1,278 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Stereo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Stereo.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef STEREO_H_
+
29#define STEREO_H_
+
30
+
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
32
+
33#include <rtabmap/core/Parameters.h>
+
34#include <opencv2/core/core.hpp>
+
35
+
36namespace rtabmap {
+
37
+
+
55class RTABMAP_CORE_EXPORT Stereo {
+
56public:
+
70 static Stereo * create(const ParametersMap & parameters = ParametersMap());
+
71
+
72public:
+
82 Stereo(const ParametersMap & parameters = ParametersMap());
+
83
+
87 virtual ~Stereo() {}
+
88
+
104 virtual void parseParameters(const ParametersMap & parameters);
+
105
+
124 virtual std::vector<cv::Point2f> computeCorrespondences(
+
125 const cv::Mat & leftImage,
+
126 const cv::Mat & rightImage,
+
127 const std::vector<cv::Point2f> & leftCorners,
+
128 std::vector<unsigned char> & status) const;
+
129#ifdef HAVE_OPENCV_CUDEV
+
143 virtual std::vector<cv::Point2f> computeCorrespondences(
+
144 const cv::cuda::GpuMat & leftImage,
+
145 const cv::cuda::GpuMat & rightImage,
+
146 const std::vector<cv::Point2f> & leftCorners,
+
147 std::vector<unsigned char> & status) const;
+
148#endif
+
149
+
154 cv::Size winSize() const {return cv::Size(winWidth_, winHeight_);}
+
155
+
160 int iterations() const {return iterations_;}
+
161
+
166 int maxLevel() const {return maxLevel_;}
+
167
+
172 float minDisparity() const {return minDisparity_;}
+
173
+
178 float maxDisparity() const {return maxDisparity_;}
+
179
+
184 bool winSSD() const {return winSSD_;}
+
185
+
190 virtual bool isGpuEnabled() const {return false;}
+
191
+
192private:
+
193 int winWidth_;
+
194 int winHeight_;
+
195 int iterations_;
+
196 int maxLevel_;
+
197 float minDisparity_;
+
198 float maxDisparity_;
+
199 bool winSSD_;
+
200};
+
+
201
+
+
219class RTABMAP_CORE_EXPORT StereoOpticalFlow : public Stereo {
+
220public:
+ +
231
+ +
236
+
250 virtual void parseParameters(const ParametersMap & parameters);
+
251
+
269 virtual std::vector<cv::Point2f> computeCorrespondences(
+
270 const cv::Mat & leftImage,
+
271 const cv::Mat & rightImage,
+
272 const std::vector<cv::Point2f> & leftCorners,
+
273 std::vector<unsigned char> & status) const;
+
274
+
275#ifdef HAVE_OPENCV_CUDEV
+
291 virtual std::vector<cv::Point2f> computeCorrespondences(
+
292 const cv::cuda::GpuMat & leftImage,
+
293 const cv::cuda::GpuMat & rightImage,
+
294 const std::vector<cv::Point2f> & leftCorners,
+
295 std::vector<unsigned char> & status) const;
+
296#endif
+
297
+
302 float epsilon() const {return epsilon_;}
+
303
+
312 virtual bool isGpuEnabled() const;
+
313
+
314 bool usingMinEigenVals() const {return useMinEigenVals_;}
+
315 float minEigThreshold() const {return minEigThreshold_;}
+
316 float errorThreshold() const {return errorThreshold_;}
+
317
+
318private:
+
333 void updateStatus(
+
334 const std::vector<cv::Point2f> & leftCorners,
+
335 const std::vector<cv::Point2f> & rightCorners,
+
336 std::vector<unsigned char> & status,
+
337 std::vector<float> err = {}) const;
+
338
+
339private:
+
340 float epsilon_;
+
341 bool useMinEigenVals_;
+
342 float minEigThreshold_;
+
343 float errorThreshold_;
+
344 bool gpu_;
+
345};
+
+
346
+
347} /* namespace rtabmap */
+
348
+
349#endif /* STEREO_H_ */
+
Sparse stereo matching using optical flow.
Definition Stereo.h:219
+
virtual std::vector< cv::Point2f > computeCorrespondences(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status) const
Compute stereo correspondences using optical flow.
+
StereoOpticalFlow(const ParametersMap &parameters=ParametersMap())
Constructor.
+
virtual void parseParameters(const ParametersMap &parameters)
Parse parameters from a parameters map.
+
virtual bool isGpuEnabled() const
Check if GPU acceleration is enabled.
+
float epsilon() const
Get the convergence threshold (epsilon)
Definition Stereo.h:302
+
virtual ~StereoOpticalFlow()
Virtual destructor.
Definition Stereo.h:235
+
Sparse stereo matching using block matching.
Definition Stereo.h:55
+
Stereo(const ParametersMap &parameters=ParametersMap())
Constructor.
+
static Stereo * create(const ParametersMap &parameters=ParametersMap())
Factory method to create a Stereo instance.
+
int maxLevel() const
Get the maximum pyramid level.
Definition Stereo.h:166
+
virtual void parseParameters(const ParametersMap &parameters)
Parse parameters from a parameters map.
+
cv::Size winSize() const
Get the search window size.
Definition Stereo.h:154
+
float maxDisparity() const
Get the maximum disparity value.
Definition Stereo.h:178
+
float minDisparity() const
Get the minimum disparity value.
Definition Stereo.h:172
+
int iterations() const
Get the number of iterations.
Definition Stereo.h:160
+
virtual bool isGpuEnabled() const
Check if GPU acceleration is enabled.
Definition Stereo.h:190
+
virtual ~Stereo()
Virtual destructor.
Definition Stereo.h:87
+
bool winSSD() const
Check if SSD (Sum of Squared Differences) is used.
Definition Stereo.h:184
+
virtual std::vector< cv::Point2f > computeCorrespondences(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status) const
Compute stereo correspondences using block matching.
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Transform_8h_source.html b/preview/pr-1773/api/latest/Transform_8h_source.html new file mode 100644 index 00000000..e86e64ea --- /dev/null +++ b/preview/pr-1773/api/latest/Transform_8h_source.html @@ -0,0 +1,383 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/Transform.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Transform.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef TRANSFORM_H_
+
29#define TRANSFORM_H_
+
30
+
31#include <rtabmap/core/rtabmap_core_export.h>
+
32#include <vector>
+
33#include <string>
+
34#include <map>
+
35#include <Eigen/Core>
+
36#include <Eigen/Geometry>
+
37#include <opencv2/core/core.hpp>
+
38
+
39namespace rtabmap {
+
40
+
+
52class RTABMAP_CORE_EXPORT Transform
+
53{
+
54public:
+
55
+ +
65 Transform(float r11, float r12, float r13, float o14,
+
66 float r21, float r22, float r23, float o24,
+
67 float r31, float r32, float r33, float o34);
+
72 Transform(const cv::Mat & transformationMatrix);
+
78 Transform(float x, float y, float z, float roll, float pitch, float yaw);
+
84 Transform(float x, float y, float z, float qx, float qy, float qz, float qw);
+
88 Transform(float x, float y, float theta);
+
89
+ +
94
+
95 // --- Accessors (rotation matrix elements, translation) ---
+
96 float r11() const {return data()[0];}
+
97 float r12() const {return data()[1];}
+
98 float r13() const {return data()[2];}
+
99 float r21() const {return data()[4];}
+
100 float r22() const {return data()[5];}
+
101 float r23() const {return data()[6];}
+
102 float r31() const {return data()[8];}
+
103 float r32() const {return data()[9];}
+
104 float r33() const {return data()[10];}
+
105
+
106 float o14() const {return data()[3];}
+
+
107 float o24() const {return data()[7];}
+
+
108 float o34() const {return data()[11];}
+
109
+
110 float & operator[](int index) {return data()[index];}
+
111 const float & operator[](int index) const {return data()[index];}
+
112 float & operator()(int row, int col) {return data()[row*4 + col];}
+
113 const float & operator()(int row, int col) const {return data()[row*4 + col];}
+
114
+
118 bool isNull() const;
+
122 bool isIdentity() const;
+
123
+
127 void setNull();
+ +
132
+
136 const cv::Mat & dataMatrix() const {return data_;}
+
140 const float * data() const {return (const float *)data_.data;}
+
141 float * data() {return (float *)data_.data;}
+
142
+
146 int size() const {return 12;}
+
147
+
149 float & x() {return data()[3];}
+
+
150 float & y() {return data()[7];}
+
+
151 float & z() {return data()[11];}
+
152 const float & x() const {return data()[3];}
+
153 const float & y() const {return data()[7];}
+
154 const float & z() const {return data()[11];}
+
155
+
159 float theta() const;
+
160
+
164 bool isInvertible() const;
+ + + + + +
188 bool is3DoF() const;
+
192 bool is4DoF() const;
+
193
+
197 cv::Mat rotationMatrix() const;
+
201 cv::Mat translationMatrix() const;
+
202
+
206 void getTranslationAndEulerAngles(float & x, float & y, float & z, float & roll, float & pitch, float & yaw) const;
+
210 void getEulerAngles(float & roll, float & pitch, float & yaw) const;
+
214 void getTranslation(float & x, float & y, float & z) const;
+
218 float getAngle(const Transform & t) const;
+
222 float getNorm() const;
+
226 float getNormSquared() const;
+
230 float getDistance(const Transform & t) const;
+
234 float getDistanceSquared(const Transform & t) const;
+
240 Transform interpolate(float t, const Transform & other) const;
+ +
248 std::string prettyPrint() const;
+
249
+
251 Transform operator*(const Transform & t) const;
+
252 Transform & operator*=(const Transform & t);
+
253 bool operator==(const Transform & t) const;
+
254 bool operator!=(const Transform & t) const;
+
255
+
256 // --- Eigen conversions ---
+
257 Eigen::Matrix4f toEigen4f() const;
+
258 Eigen::Matrix4d toEigen4d() const;
+
259 Eigen::Affine3f toEigen3f() const;
+
260 Eigen::Affine3d toEigen3d() const;
+
261
+
262 Eigen::Quaternionf getQuaternionf() const;
+
263 Eigen::Quaterniond getQuaterniond() const;
+
264
+
265public:
+
266 // --- Static helpers ---
+
267
+ +
272
+
274 static Transform fromEigen4f(const Eigen::Matrix4f & matrix);
+
275 static Transform fromEigen4d(const Eigen::Matrix4d & matrix);
+
276 static Transform fromEigen3f(const Eigen::Affine3f & matrix);
+
277 static Transform fromEigen3d(const Eigen::Affine3d & matrix);
+
278 static Transform fromEigen3f(const Eigen::Isometry3f & matrix);
+
279 static Transform fromEigen3d(const Eigen::Isometry3d & matrix);
+
280 static Transform fromEigen3f(const Eigen::Matrix<float, 3, 4> & matrix);
+
281 static Transform fromEigen3d(const Eigen::Matrix<double, 3, 4> & matrix);
+
282
+
+ +
290 0.0f, -1.0f, 0.0f, 0.0f,
+
291 0.0f, 0.0f, 1.0f, 0.0f,
+
292 -1.0f, 0.0f, 0.0f, 0.0f);}
+
+
+ +
300 0.0f, 0.0f,-1.0f, 0.0f,
+
301 -1.0f, 0.0f, 0.0f, 0.0f,
+
302 0.0f, 1.0f, 0.0f, 0.0f);}
+
+
303
+
313 static Transform fromString(const std::string & string);
+
317 static bool canParseString(const std::string & string);
+
318
+ +
329 const std::map<double, Transform> & tfBuffer,
+
330 const double & stamp);
+
334 RTABMAP_DEPRECATED static Transform getClosestTransform(
+
335 const std::map<double, Transform> & tfBuffer,
+
336 const double & stamp,
+
337 double * stampDiff);
+
338
+
339private:
+
340 cv::Mat data_;
+
341};
+
342
+
346RTABMAP_CORE_EXPORT std::ostream& operator<<(std::ostream& os, const Transform& s);
+
347
+
+ +
353{
+
354public:
+
355 TransformStamped(const Transform & transform, const double & stamp) :
+
356 transform_(transform),
+
357 stamp_(stamp)
+
358 {}
+
359 const Transform & transform() const {return transform_;}
+
360 const double & stamp() const {return stamp_;}
+
361
+
362private:
+
363 Transform transform_;
+
364 double stamp_;
+
365};
+
+
366
+
367}
+
368
+
369#endif /* TRANSFORM_H_ */
+
+
+
+
+
+
Associates a transform with a timestamp.
Definition Transform.h:353
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
bool isNull() const
Checks whether the transform is null (all zeros).
+
Transform(float x, float y, float z, float roll, float pitch, float yaw)
Constructs a Transform from position and Euler angles (in radians).
+
float r11() const
Rotation matrix element at row 1, col 1.
Definition Transform.h:96
+
cv::Mat rotationMatrix() const
Returns the 3x3 rotation matrix (cv::Mat).
+
int size() const
Returns the number of float elements (always 12).
Definition Transform.h:146
+
void getTranslation(float &x, float &y, float &z) const
Extracts translation only.
+
float o34() const
Translation z.
Definition Transform.h:108
+
Transform to3DoF() const
Converts to 3 DoF (x, y, theta).
+
static Transform getTransform(const std::map< double, Transform > &tfBuffer, const double &stamp)
Retrieves the transform to a given timestamp.
+
Transform operator*(const Transform &t) const
Operator overloads.
+
float & x()
Translation getters/setters.
Definition Transform.h:149
+
bool is3DoF() const
Checks if the transform is 3 DoF (no pitch/roll).
+
std::string prettyPrint() const
Returns a string representation of the transform.
+
cv::Mat translationMatrix() const
Returns the 3x1 translation matrix (cv::Mat).
+
Transform inverse() const
Returns the inverse of the transform.
+
Transform(const cv::Mat &transformationMatrix)
Constructs a Transform from a 3x4 OpenCV matrix.
+
static Transform fromString(const std::string &string)
Parses a transform from a string representation. Supported formats:
+
const float * data() const
Returns a pointer to the raw data (12 floats).
Definition Transform.h:140
+
static Transform getIdentity()
Returns identity transform.
+
Transform clone() const
Returns a deep copy of the transform.
+
Transform to4DoF() const
Converts to 4 DoF (x, y, z, yaw).
+
Transform(float r11, float r12, float r13, float o14, float r21, float r22, float r23, float o24, float r31, float r32, float r33, float o34)
Constructor from rotation matrix elements and translation components.
+
static Transform rtabmap_T_opengl()
Returns the transform from OpenGL to RTAB-Map coordinate system.
Definition Transform.h:299
+
float o24() const
Translation y.
Definition Transform.h:107
+
const cv::Mat & dataMatrix() const
Returns the internal OpenCV matrix (3x4).
Definition Transform.h:136
+
void getTranslationAndEulerAngles(float &x, float &y, float &z, float &roll, float &pitch, float &yaw) const
Extracts translation and Euler angles (radians).
+
static RTABMAP_DEPRECATED Transform getClosestTransform(const std::map< double, Transform > &tfBuffer, const double &stamp, double *stampDiff)
+
float getAngle(const Transform &t) const
Returns angular difference (in radians) with another transform.
+
static Transform opengl_T_rtabmap()
Returns the transform from RTAB-Map to OpenGL coordinate system.
Definition Transform.h:289
+
Transform()
Default constructor. Initializes to a null (all zeros) transform.
+
float & y()
Translation y.
Definition Transform.h:150
+
void normalizeRotation()
Normalizes the rotation matrix.
+
float theta() const
Returns 2D orientation (theta) in radians.
+
bool is4DoF() const
Checks if the transform is 4 DoF (no pitch).
+
float o14() const
Translation x.
Definition Transform.h:106
+
bool isInvertible() const
Returns whether the transform is invertible.
+
float getDistance(const Transform &t) const
Returns the Euclidean distance to another transform.
+
void getEulerAngles(float &roll, float &pitch, float &yaw) const
Extracts Euler angles (roll, pitch, yaw).
+
bool isIdentity() const
Checks whether the transform is identity.
+
float getDistanceSquared(const Transform &t) const
Returns the squared distance to another transform.
+
static Transform fromEigen4f(const Eigen::Matrix4f &matrix)
Converts from Eigen representations.
+
float getNormSquared() const
Returns the squared norm of the translation vector.
+
Transform translation() const
Returns only the translation component.
+
Transform rotation() const
Returns only the rotation component.
+
void setNull()
Sets the transform to null (zero matrix).
+
float getNorm() const
Returns the Euclidean norm of the translation vector.
+
Transform interpolate(float t, const Transform &other) const
Interpolates between this and another transform.
+
Transform(float x, float y, float theta)
Constructs a 2D Transform (x, y, theta).
+
static bool canParseString(const std::string &string)
Checks if a string can be parsed into a transform.
+
Transform(float x, float y, float z, float qx, float qy, float qz, float qw)
Constructs a Transform from position and quaternion.
+
float & z()
Translation z.
Definition Transform.h:151
+
void setIdentity()
Sets the transform to the identity transform.
+ +
RTABMAP_CORE_EXPORT std::ostream & operator<<(std::ostream &os, const CameraModel &model)
Stream operator for printing a camera model to an output stream.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UConversion_8h.html b/preview/pr-1773/api/latest/UConversion_8h.html new file mode 100644 index 00000000..e35603d5 --- /dev/null +++ b/preview/pr-1773/api/latest/UConversion_8h.html @@ -0,0 +1,1075 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UConversion.h File Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UConversion.h File Reference
+
+
+ +

Some conversion functions. +More...

+
#include "rtabmap/utilite/utilite_export.h"
+#include <string>
+#include <vector>
+#include <stdarg.h>
+
+Include dependency graph for UConversion.h:
+
+
+ + + + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

std::string UTILITE_EXPORT uReplaceChar (const std::string &str, char before, char after)
 
std::string UTILITE_EXPORT uReplaceChar (const std::string &str, char before, const std::string &after)
 
std::string UTILITE_EXPORT uToUpperCase (const std::string &str)
 
std::string UTILITE_EXPORT uToLowerCase (const std::string &str)
 
std::string UTILITE_EXPORT uNumber2Str (unsigned int number)
 
std::string UTILITE_EXPORT uNumber2Str (int number)
 
std::string UTILITE_EXPORT uNumber2Str (float number, int precision=6, bool fixed=false)
 
std::string UTILITE_EXPORT uNumber2Str (double number, int precision=6, bool fixed=false)
 
int UTILITE_EXPORT uStr2Int (const std::string &str)
 
float UTILITE_EXPORT uStr2Float (const std::string &str)
 
double UTILITE_EXPORT uStr2Double (const std::string &str)
 
std::string UTILITE_EXPORT uBool2Str (bool boolean)
 
bool UTILITE_EXPORT uStr2Bool (const char *str)
 
+bool UTILITE_EXPORT uStr2Bool (const std::string &str)
 
std::vector< unsigned char > UTILITE_EXPORT uStr2Bytes (const std::string &str)
 
std::string UTILITE_EXPORT uBytes2Str (const std::vector< unsigned char > &bytes)
 
std::string UTILITE_EXPORT uBytes2Hex (const char *bytes, unsigned int bytesLen)
 
std::vector< char > UTILITE_EXPORT uHex2Bytes (const std::string &hex)
 
std::vector< char > UTILITE_EXPORT uHex2Bytes (const char *hex, int hexLen)
 
std::string UTILITE_EXPORT uHex2Str (const std::string &hex)
 
unsigned char UTILITE_EXPORT uHex2Ascii (const unsigned char &c, bool rightPart)
 
unsigned char UTILITE_EXPORT uAscii2Hex (const unsigned char &c)
 
std::string UTILITE_EXPORT uFormatv (const char *fmt, va_list ap)
 
std::string UTILITE_EXPORT uFormat (const char *fmt,...)
 
+

Detailed Description

+

Some conversion functions.

+

This contains functions to do some convenient conversion like uNumber2str(), uBytes2Hex() or uHex2Bytes().

+ +

Definition in file UConversion.h.

+

Function Documentation

+ +

◆ uReplaceChar() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string UTILITE_EXPORT uReplaceChar (const std::string & str,
char before,
char after 
)
+
+

Replace old characters in a string to new ones. Example :

std::string str = "Hello";
+
uReplaceChar(str, 'l', 'p');
+
// The results is str = "Heppo";
+
std::string UTILITE_EXPORT uReplaceChar(const std::string &str, char before, char after)
+
Parameters
+ + + + +
strthe string
beforethe character to be replaced by the new one
afterthe new character replacing the old one
+
+
+
Returns
the modified string
+ +
+
+ +

◆ uReplaceChar() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string UTILITE_EXPORT uReplaceChar (const std::string & str,
char before,
const std::string & after 
)
+
+

Replace old characters in a string with the specified string. Example :

std::string str = "Hello";
+
uReplaceChar(str, 'o', "oween");
+
// The results is str = "Helloween";
+
Parameters
+ + + + +
strthe string
beforethe character to be replaced by the new one
afterthe new string replacing the old character
+
+
+
Returns
the modified string
+ +
+
+ +

◆ uToUpperCase()

+ +
+
+ + + + + + + + +
std::string UTILITE_EXPORT uToUpperCase (const std::string & str)
+
+

Transform characters from a string to upper case. Example :

std::string str = "hello!";
+
str = uToUpperCase(str);
+
//str is now equal to "HELLO!"
+
std::string UTILITE_EXPORT uToUpperCase(const std::string &str)
+
Parameters
+ + +
strthe string
+
+
+
Returns
the modified string
+ +
+
+ +

◆ uToLowerCase()

+ +
+
+ + + + + + + + +
std::string UTILITE_EXPORT uToLowerCase (const std::string & str)
+
+

Transform characters from a string to lower case. Example :

std::string str = "HELLO!";
+
str = uToLowerCase(str, false);
+
//str is now equal to "hello!"
+
std::string UTILITE_EXPORT uToLowerCase(const std::string &str)
+
Parameters
+ + +
strthe string
+
+
+
Returns
the modified string
+ +
+
+ +

◆ uNumber2Str() [1/4]

+ +
+
+ + + + + + + + +
std::string UTILITE_EXPORT uNumber2Str (unsigned int number)
+
+

Convert an unsigned integer to a string.

+

This function converts an unsigned integer value to its string representation. The conversion uses standard decimal notation.

+

Example:

std::string str = uNumber2Str(42u);
+
// str contains "42"
+
std::string UTILITE_EXPORT uNumber2Str(unsigned int number)
+
Parameters
+ + +
numberthe unsigned integer number to convert to a string
+
+
+
Returns
the string representation of the number
+ +
+
+ +

◆ uNumber2Str() [2/4]

+ +
+
+ + + + + + + + +
std::string UTILITE_EXPORT uNumber2Str (int number)
+
+

Convert a signed integer to a string.

+

This function converts a signed integer value to its string representation. Negative numbers will include a minus sign prefix.

+

Example:

std::string str = uNumber2Str(-42);
+
// str contains "-42"
+
Parameters
+ + +
numberthe integer number to convert to a string
+
+
+
Returns
the string representation of the number (includes minus sign for negative values)
+ +
+
+ +

◆ uNumber2Str() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string UTILITE_EXPORT uNumber2Str (float number,
int precision = 6,
bool fixed = false 
)
+
+

Convert a float to a string.

+

This function converts a floating-point value to its string representation with configurable precision and format.

+

Example:

std::string str1 = uNumber2Str(3.14159f, 2, false);
+
// str1 contains "3.14" (scientific notation if needed)
+
+
std::string str2 = uNumber2Str(3.14159f, 2, true);
+
// str2 contains "3.14" (fixed decimal notation)
+
Parameters
+ + + + +
numberthe float number to convert to a string
precisionthe number of decimal places to display (default: 6)
fixedif true, use fixed decimal notation; if false, use scientific notation when appropriate (default: false)
+
+
+
Returns
the string representation of the number
+ +
+
+ +

◆ uNumber2Str() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string UTILITE_EXPORT uNumber2Str (double number,
int precision = 6,
bool fixed = false 
)
+
+

Convert a double to a string.

+

This function converts a double-precision floating-point value to its string representation with configurable precision and format.

+

Example:

std::string str1 = uNumber2Str(3.141592653589793, 4, false);
+
// str1 contains "3.1416" (scientific notation if needed)
+
+
std::string str2 = uNumber2Str(3.141592653589793, 4, true);
+
// str2 contains "3.1416" (fixed decimal notation)
+
Parameters
+ + + + +
numberthe double number to convert to a string
precisionthe number of decimal places to display (default: 6)
fixedif true, use fixed decimal notation; if false, use scientific notation when appropriate (default: false)
+
+
+
Returns
the string representation of the number
+ +
+
+ +

◆ uStr2Int()

+ +
+
+ + + + + + + + +
int UTILITE_EXPORT uStr2Int (const std::string & str)
+
+

Convert a string to an integer.

Parameters
+ + +
thestring
+
+
+
Returns
the number
+ +
+
+ +

◆ uStr2Float()

+ +
+
+ + + + + + + + +
float UTILITE_EXPORT uStr2Float (const std::string & str)
+
+

Convert a string to a float independent of the locale (comma/dot).

Parameters
+ + +
thestring
+
+
+
Returns
the number
+ +
+
+ +

◆ uStr2Double()

+ +
+
+ + + + + + + + +
double UTILITE_EXPORT uStr2Double (const std::string & str)
+
+

Convert a string to a double independent of the locale (comma/dot).

Parameters
+ + +
thestring
+
+
+
Returns
the number
+ +
+
+ +

◆ uBool2Str()

+ +
+
+ + + + + + + + +
std::string UTILITE_EXPORT uBool2Str (bool boolean)
+
+

Convert a bool to a string. The format used is "true" and "false".

Parameters
+ + +
booleanthe boolean to convert in a string
+
+
+
Returns
the string
+ +
+
+ +

◆ uStr2Bool()

+ +
+
+ + + + + + + + +
bool UTILITE_EXPORT uStr2Bool (const char * str)
+
+

Convert a string to a boolean. The format used is : "false", "FALSE" or "0" give false. All others give true.

Parameters
+ + +
strthe string to convert in a boolean
+
+
+
Returns
the boolean
+ +
+
+ +

◆ uStr2Bytes()

+ +
+
+ + + + + + + + +
std::vector< unsigned char > UTILITE_EXPORT uStr2Bytes (const std::string & str)
+
+

Convert a string to an array of bytes including the null character ('\0').

Parameters
+ + +
strthe string
+
+
+
Returns
the array of bytes
+ +
+
+ +

◆ uBytes2Str()

+ +
+
+ + + + + + + + +
std::string UTILITE_EXPORT uBytes2Str (const std::vector< unsigned char > & bytes)
+
+

Convert an array of bytes to string, the array of bytes must end with the null character ('\0').

Parameters
+ + +
bytesthe array of bytes
+
+
+
Returns
the string
+ +
+
+ +

◆ uBytes2Hex()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string UTILITE_EXPORT uBytes2Hex (const char * bytes,
unsigned int bytesLen 
)
+
+

Convert a bytes array to an hexadecimal string. The resulting string is twice the size of the bytes array. The hexadecimal Characters are in upper case. Example :

char bytes[] = {0x3F};
+
std::string hex = uBytes2Hex(bytes, 1);
+
// The string constains "3F".
+
std::string UTILITE_EXPORT uBytes2Hex(const char *bytes, unsigned int bytesLen)
+
Parameters
+ + + +
bytesthe bytes array
bytesLenthe length of the bytes array
+
+
+
Returns
the hexadecimal string
+ +
+
+ +

◆ uHex2Bytes() [1/2]

+ +
+
+ + + + + + + + +
std::vector< char > UTILITE_EXPORT uHex2Bytes (const std::string & hex)
+
+

Convert an hexadecimal string to a bytes array. The string must be pair length. The hexadecimal Characters can be in upper or lower case. Example :

std::string hex = "1f3B";
+
std::vector<char> bytes = uHex2Bytes(hex);
+
// The array contains {0x1F, 0x3B}.
+
std::vector< char > UTILITE_EXPORT uHex2Bytes(const std::string &hex)
+
Parameters
+ + +
hexthe hexadecimal string
+
+
+
Returns
the bytes array
+ +
+
+ +

◆ uHex2Bytes() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::vector< char > UTILITE_EXPORT uHex2Bytes (const char * hex,
int hexLen 
)
+
+

Convert an hexadecimal string to a bytes array. The string must be pair length. The hexadecimal Characters can be in upper or lower case. Example :

std::vector<char> bytes = uHex2Bytes("1f3B", 4);
+
// The array contains {0x1F, 0x3B}.
+
Parameters
+ + + +
hexthe hexadecimal string
bytesLenthe hexadecimal string length
+
+
+
Returns
the bytes array
+ +
+
+ +

◆ uHex2Str()

+ +
+
+ + + + + + + + +
std::string UTILITE_EXPORT uHex2Str (const std::string & hex)
+
+

Convert an hexadecimal string to an ascii string. A convenient way when using only strings. The hexadecimal str MUST not contains any null values 0x00 ("00"). Think to use of hex2bytes() to handle 0x00 values. Characters can be in upper or lower case. Example :

std::string str = uHex2Str("48656C6C4F21");
+
// The string contains "Hello!".
+
std::string UTILITE_EXPORT uHex2Str(const std::string &hex)
+
See also
hex2bytes
+
Parameters
+ + +
hexthe hexadecimal string
+
+
+
Returns
the ascii string
+ +
+
+ +

◆ uHex2Ascii()

+ +
+
+ + + + + + + + + + + + + + + + + + +
unsigned char UTILITE_EXPORT uHex2Ascii (const unsigned char & c,
bool rightPart 
)
+
+

Convert hexadecimal (left or right part) value to an ascii character. Example :

unsigned char F = uHex2Ascii(0xFA, false);
+
unsigned char A = uHex2Ascii(0xFA, true);
+
unsigned char UTILITE_EXPORT uHex2Ascii(const unsigned char &c, bool rightPart)
+
See also
ascii2hex
+
Parameters
+ + + +
cthe hexadecimal value
rightPartIf we want the character corresponding to the right of left part (4 bits) of the byte value.
+
+
+
Returns
the ascii character (in upper case)
+ +
+
+ +

◆ uAscii2Hex()

+ +
+
+ + + + + + + + +
unsigned char UTILITE_EXPORT uAscii2Hex (const unsigned char & c)
+
+

Convert an ascii character to an hexadecimal value (right 4 bits). Characters can be in upper or lower case. Example :

unsigned char hex = uAscii2Hex('F');
+
// The results is hex = 0x0F;
+
unsigned char UTILITE_EXPORT uAscii2Hex(const unsigned char &c)
+
See also
hex2ascii
+
Parameters
+ + +
cthe ascii character
+
+
+
Returns
the hexadecimal value
+ +
+
+ +

◆ uFormatv()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string UTILITE_EXPORT uFormatv (const char * fmt,
va_list ap 
)
+
+

Format a string like printf, and return it as a std::string

+ +
+
+ +

◆ uFormat()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string UTILITE_EXPORT uFormat (const char * fmt,
 ... 
)
+
+

Format a string like printf, and return it as a std::string

+ +
+
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UConversion_8h.js b/preview/pr-1773/api/latest/UConversion_8h.js new file mode 100644 index 00000000..34438305 --- /dev/null +++ b/preview/pr-1773/api/latest/UConversion_8h.js @@ -0,0 +1,26 @@ +var UConversion_8h = +[ + [ "uReplaceChar", "UConversion_8h.html#ac17caccd78f21956b7ddb78aa0c0c438", null ], + [ "uReplaceChar", "UConversion_8h.html#a214297200ebabb7a349fb203103d72ef", null ], + [ "uToUpperCase", "UConversion_8h.html#adc98c4d87bc7c13b7fc5b5504f457105", null ], + [ "uToLowerCase", "UConversion_8h.html#a426b88c678e06f77912c006ba02805ec", null ], + [ "uNumber2Str", "UConversion_8h.html#aa2bbc65658f335e92631e9f1d091a698", null ], + [ "uNumber2Str", "UConversion_8h.html#ab3a674443d1d17328488398497380eb0", null ], + [ "uNumber2Str", "UConversion_8h.html#a7d269614a35d90f2ee7eb1204bca0856", null ], + [ "uNumber2Str", "UConversion_8h.html#a863753727325d89d62a941b1e28ec080", null ], + [ "uStr2Int", "UConversion_8h.html#a3cd287c149717691ee36fcd593940f68", null ], + [ "uStr2Float", "UConversion_8h.html#aaa5c2c8be40ec84e20bc6967b6b9b46a", null ], + [ "uStr2Double", "UConversion_8h.html#a9e8508b95f98ab3da0d942ee7d6b2105", null ], + [ "uBool2Str", "UConversion_8h.html#ad80132c4fed005af5c96b39fca453ce6", null ], + [ "uStr2Bool", "UConversion_8h.html#abb8205ea44ccbebab8cf064fed0c7c1b", null ], + [ "uStr2Bytes", "UConversion_8h.html#aa320ef94bde5dd6f9e6ebdb986fc5ca6", null ], + [ "uBytes2Str", "UConversion_8h.html#a00c1115896f3da7c7c025ccbe651c0a3", null ], + [ "uBytes2Hex", "UConversion_8h.html#a51c595b50bcb99186160a9e18df13c60", null ], + [ "uHex2Bytes", "UConversion_8h.html#aafb2c6939780df0241eb35ab4fc8b91b", null ], + [ "uHex2Bytes", "UConversion_8h.html#ab4e6aa72e322c619e4bbaf5b98dba9d3", null ], + [ "uHex2Str", "UConversion_8h.html#a6d66453336bccd040539ac9905a9c409", null ], + [ "uHex2Ascii", "UConversion_8h.html#a03dfb0596b84e5673061561a1388b4ee", null ], + [ "uAscii2Hex", "UConversion_8h.html#a6c8b49faa5c59294f350dda7152f66a4", null ], + [ "uFormatv", "UConversion_8h.html#a9b62bc055b0d262a21af6b9e00b6db5f", null ], + [ "uFormat", "UConversion_8h.html#a59ad5e2b3368d3dd19d73a24159388ce", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UConversion_8h__dep__incl.map b/preview/pr-1773/api/latest/UConversion_8h__dep__incl.map new file mode 100644 index 00000000..04d2a5ef --- /dev/null +++ b/preview/pr-1773/api/latest/UConversion_8h__dep__incl.map @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UConversion_8h__dep__incl.md5 b/preview/pr-1773/api/latest/UConversion_8h__dep__incl.md5 new file mode 100644 index 00000000..6ccc63f9 --- /dev/null +++ b/preview/pr-1773/api/latest/UConversion_8h__dep__incl.md5 @@ -0,0 +1 @@ +2176991da7076b0ad838ebd435ea0d48 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UConversion_8h__dep__incl.png b/preview/pr-1773/api/latest/UConversion_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8cd60e29b81c9558e68ff87eca250308ab82fa GIT binary patch literal 310712 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%0AF6ubOlw6B! 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 z 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 +
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UConversion.h
+
+
+Go to the documentation of this file.
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UCONVERSION_H
+
21#define UCONVERSION_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include <string>
+
26#include <vector>
+
27#include <stdarg.h>
+
28
+
51std::string UTILITE_EXPORT uReplaceChar(const std::string & str, char before, char after);
+
52
+
67std::string UTILITE_EXPORT uReplaceChar(const std::string & str, char before, const std::string & after);
+
68
+
80std::string UTILITE_EXPORT uToUpperCase(const std::string & str);
+
81
+
93std::string UTILITE_EXPORT uToLowerCase(const std::string & str);
+
94
+
110std::string UTILITE_EXPORT uNumber2Str(unsigned int number);
+
111
+
127std::string UTILITE_EXPORT uNumber2Str(int number);
+
128
+
149std::string UTILITE_EXPORT uNumber2Str(float number, int precision=6, bool fixed = false);
+
150
+
171std::string UTILITE_EXPORT uNumber2Str(double number, int precision=6, bool fixed = false);
+
172
+
178int UTILITE_EXPORT uStr2Int(const std::string & str);
+
179
+
185float UTILITE_EXPORT uStr2Float(const std::string & str);
+
186
+
192double UTILITE_EXPORT uStr2Double(const std::string & str);
+
193
+
194
+
201std::string UTILITE_EXPORT uBool2Str(bool boolean);
+
209bool UTILITE_EXPORT uStr2Bool(const char * str);
+
210bool UTILITE_EXPORT uStr2Bool(const std::string & str);
+
211
+
217std::vector<unsigned char> UTILITE_EXPORT uStr2Bytes(const std::string & str);
+
218
+
224std::string UTILITE_EXPORT uBytes2Str(const std::vector<unsigned char> & bytes);
+
225
+
241std::string UTILITE_EXPORT uBytes2Hex(const char * bytes, unsigned int bytesLen);
+
256std::vector<char> UTILITE_EXPORT uHex2Bytes(const std::string & hex);
+
271std::vector<char> UTILITE_EXPORT uHex2Bytes(const char * hex, int hexLen);
+
272
+
289std::string UTILITE_EXPORT uHex2Str(const std::string & hex);
+
290
+
303unsigned char UTILITE_EXPORT uHex2Ascii(const unsigned char & c, bool rightPart);
+
304
+
317unsigned char UTILITE_EXPORT uAscii2Hex(const unsigned char & c);
+
318
+
322std::string UTILITE_EXPORT uFormatv (const char *fmt, va_list ap);
+
323
+
327std::string UTILITE_EXPORT uFormat (const char *fmt, ...)
+
328#if defined(__GNUC__) || defined(__clang__)
+
329 // Compiler-checked format string (see the note on ULogger::write).
+
330 __attribute__((format(printf, 1, 2)))
+
331#endif
+
332 ;
+
333
+
334#ifdef _WIN32
+
339UTILITE_EXPORT wchar_t * createWCharFromChar(const char * text);
+
340
+
345UTILITE_EXPORT char * createCharFromWChar(const wchar_t * wText);
+
346#endif
+
347
+
348#endif /* UCONVERSION_H */
+
std::string UTILITE_EXPORT uBytes2Str(const std::vector< unsigned char > &bytes)
+
unsigned char UTILITE_EXPORT uHex2Ascii(const unsigned char &c, bool rightPart)
+
int UTILITE_EXPORT uStr2Int(const std::string &str)
+
std::string UTILITE_EXPORT uToLowerCase(const std::string &str)
+
std::string UTILITE_EXPORT uBytes2Hex(const char *bytes, unsigned int bytesLen)
+
std::string UTILITE_EXPORT uFormat(const char *fmt,...)
+
unsigned char UTILITE_EXPORT uAscii2Hex(const unsigned char &c)
+
std::string UTILITE_EXPORT uHex2Str(const std::string &hex)
+
std::string UTILITE_EXPORT uFormatv(const char *fmt, va_list ap)
+
double UTILITE_EXPORT uStr2Double(const std::string &str)
+
std::string UTILITE_EXPORT uNumber2Str(unsigned int number)
+
std::vector< unsigned char > UTILITE_EXPORT uStr2Bytes(const std::string &str)
+
float UTILITE_EXPORT uStr2Float(const std::string &str)
+
std::vector< char > UTILITE_EXPORT uHex2Bytes(const std::string &hex)
+
bool UTILITE_EXPORT uStr2Bool(const char *str)
+
std::string UTILITE_EXPORT uReplaceChar(const std::string &str, char before, char after)
+
std::string UTILITE_EXPORT uBool2Str(bool boolean)
+
std::string UTILITE_EXPORT uToUpperCase(const std::string &str)
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UDestroyer_8h_source.html b/preview/pr-1773/api/latest/UDestroyer_8h_source.html new file mode 100644 index 00000000..5059f116 --- /dev/null +++ b/preview/pr-1773/api/latest/UDestroyer_8h_source.html @@ -0,0 +1,184 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UDestroyer.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UDestroyer.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UDESTROYER_H
+
21#define UDESTROYER_H
+
22
+
31template <class T>
+
+ +
33{
+
34public:
+
39 UDestroyer(T* doomed = 0) : doomed_(doomed) {}
+
40
+ +
42 {
+
43 if(doomed_)
+
44 {
+
45 delete doomed_;
+
46 doomed_ = 0;
+
47 }
+
48 }
+
49
+
+
55 bool setDoomed(T* doomed)
+
56 {
+
57 if(doomed_ && doomed)
+
58 {
+
59 return false;
+
60 }
+
61 doomed_ = doomed;
+
62 return true;
+
63 }
+
+
64
+
65private:
+
66 // Prevent users from making copies of a
+
67 // Destroyer to avoid double deletion:
+ +
69 void operator=(const UDestroyer<T>&);
+
70
+
71private:
+
72 T* doomed_;
+
73};
+
+
74
+
75#endif // UDESTROYER_H
+ +
bool setDoomed(T *doomed)
Definition UDestroyer.h:55
+
UDestroyer(T *doomed=0)
Definition UDestroyer.h:39
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UDirectory_8h_source.html b/preview/pr-1773/api/latest/UDirectory_8h_source.html new file mode 100644 index 00000000..c02ed14b --- /dev/null +++ b/preview/pr-1773/api/latest/UDirectory_8h_source.html @@ -0,0 +1,210 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UDirectory.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UDirectory.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UDIRECTORY_H
+
21#define UDIRECTORY_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include <string>
+
26#include <vector>
+
27#include <list>
+
28
+
+
34class UTILITE_EXPORT UDirectory
+
35{
+
36public:
+
42 static bool exists(const std::string & dirPath);
+
43
+
49 static std::string getDir(const std::string & filePath);
+
50
+
56 static std::string currentDir(bool trailingSeparator = false);
+
57
+
63 static bool makeDir(const std::string & dirPath);
+
64
+
70 static bool removeDir(const std::string & dirPath);
+
71
+
76 static std::string homeDir();
+
77
+
81 static std::string separator();
+
82
+
83public:
+
90 UDirectory(const std::string & path = "", const std::string & extensions = "");
+
91 UDirectory(const UDirectory & dir);
+
92 UDirectory & operator=(const UDirectory & dir);
+ +
94
+
99 void setPath(const std::string & path, const std::string & extensions = "");
+
100
+
104 void update();
+
105
+
110 bool isValid();
+
111
+
116 std::string getNextFileName();
+
117
+
122 std::string getNextFilePath();
+
123
+
129 const std::list<std::string> & getFileNames() const {return fileNames_;}
+
130
+
134 void rewind();
+
135
+
136private:
+
137 std::string path_;
+
138 std::vector<std::string> extensions_;
+
139 std::list<std::string> fileNames_;
+
140 std::list<std::string>::iterator iFileName_;
+
141};
+
+
142
+
143#endif /* UDIRECTORY_H */
+ +
static std::string getDir(const std::string &filePath)
+
std::string getNextFilePath()
+
static std::string currentDir(bool trailingSeparator=false)
+
static std::string homeDir()
+
static std::string separator()
+
static bool removeDir(const std::string &dirPath)
+
std::string getNextFileName()
+
bool isValid()
+
static bool makeDir(const std::string &dirPath)
+
const std::list< std::string > & getFileNames() const
Definition UDirectory.h:129
+
void setPath(const std::string &path, const std::string &extensions="")
+
void update()
+
void rewind()
+
UDirectory(const std::string &path="", const std::string &extensions="")
+
static bool exists(const std::string &dirPath)
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UEvent_8h_source.html b/preview/pr-1773/api/latest/UEvent_8h_source.html new file mode 100644 index 00000000..9adee9d1 --- /dev/null +++ b/preview/pr-1773/api/latest/UEvent_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UEvent.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEvent.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UEVENT_H
+
21#define UEVENT_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include <string>
+
26
+
27class UEventsHandler;
+
28
+
+
57class UTILITE_EXPORT UEvent{
+
58public:
+
59 virtual ~UEvent() {}
+
60
+
68 virtual std::string getClassName() const = 0; // TODO : macro?
+
69
+
74 int getCode() const {return code_;}
+
75
+
76protected:
+
81 UEvent(int code = 0) : code_(code) {}
+
82
+
83private:
+
84 int code_;
+
85};
+
+
86
+
87#endif // UEVENT_H
+ +
virtual std::string getClassName() const =0
+
UEvent(int code=0)
Definition UEvent.h:81
+
int getCode() const
Definition UEvent.h:74
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UEventsHandler_8h_source.html b/preview/pr-1773/api/latest/UEventsHandler_8h_source.html new file mode 100644 index 00000000..f6588f3d --- /dev/null +++ b/preview/pr-1773/api/latest/UEventsHandler_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UEventsHandler.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEventsHandler.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UEVENTSHANDLER_H
+
21#define UEVENTSHANDLER_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include "rtabmap/utilite/UEventsSender.h"
+
26class UEvent;
+
27
+
+
128class UTILITE_EXPORT UEventsHandler : public UEventsSender {
+
129public:
+
130
+
131 void registerToEventsManager();
+
132 void unregisterFromEventsManager();
+
133
+
134
+
135protected:
+
140 friend class UEventsManager;
+
141
+
158 virtual bool handleEvent(UEvent * event) = 0;
+
159
+
160protected:
+ +
173
+ +
183
+
184private:
+
185
+
186};
+
+
187
+
188#endif // UEVENTSHANDLER_H
+ + +
virtual bool handleEvent(UEvent *event)=0
+
virtual ~UEventsHandler()
+ + + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UEventsManager_8h_source.html b/preview/pr-1773/api/latest/UEventsManager_8h_source.html new file mode 100644 index 00000000..a51190f0 --- /dev/null +++ b/preview/pr-1773/api/latest/UEventsManager_8h_source.html @@ -0,0 +1,336 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UEventsManager.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEventsManager.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UEVENTSMANAGER_H
+
21#define UEVENTSMANAGER_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include "rtabmap/utilite/UEventsHandler.h"
+ + +
28#include "rtabmap/utilite/UDestroyer.h"
+
29
+
30#include <list>
+
31#include <map>
+
32
+
33// TODO Not implemented... for multithreading event handling
+
+ +
35{
+
36public:
+
37 virtual ~UEventDispatcher();
+
38protected:
+
39 friend class UEventsManager;
+ +
41
+
42 virtual void mainLoop();
+
43
+
44private:
+
45 virtual void killCleanup();
+
46
+
47private:
+
48 UEvent * _event;
+
49 std::vector<UEventsHandler*> _handlers;
+
50};
+
+
51
+
+
78class UTILITE_EXPORT UEventsManager : public UThread{
+
79
+
80public:
+
81
+
88 static void addHandler(UEventsHandler* handler);
+
89
+
96 static void removeHandler(UEventsHandler* handler);
+
97
+
110 static void post(UEvent * event, bool async = true, const UEventsSender * sender = 0);
+
111
+
112 static void createPipe(
+
113 const UEventsSender * sender,
+
114 const UEventsHandler * receiver,
+
115 const std::string & eventName);
+
116
+
117 static void removePipe(
+
118 const UEventsSender * sender,
+
119 const UEventsHandler * receiver,
+
120 const std::string & eventName);
+
121
+
122 static void removeAllPipes(const UEventsSender * sender);
+
123 static void removeNullPipes(const UEventsSender * sender);
+
124
+
125protected:
+
126
+
127 /*
+
128 * This method is used to have a reference on the
+
129 * EventsManager. When no EventsManager exists, one is
+
130 * created. There is only one instance in the application.
+
131 * See the Singleton pattern further explanation.
+
132 *
+
133 * @return the reference on the EventsManager
+
134 */
+
135 static UEventsManager* getInstance();
+
136
+
137 /*
+
138 * Called only once in getInstance(). It can't be instantiated
+
139 * by the user.
+
140 *
+
141 */
+ +
143
+
144 /*
+
145 * Only called by a Destroyer.
+
146 */
+
147 virtual ~UEventsManager();
+
148
+
149 /*
+
150 * A Destroyer is used to remove a dynamically created
+
151 * Singleton. It is friend here to have access to the
+
152 * destructor.
+
153 *
+
154 */
+
155 friend class UDestroyer<UEventsManager>;
+
156
+
160 virtual void mainLoop();
+
161
+
162private:
+
163
+
167 virtual void mainLoopKill();
+
168
+
169 /*
+
170 * This method dispatches asynchronized events to all handlers.
+
171 * FIFO (first in first out) dispatching is used.
+
172 */
+
173 virtual void dispatchEvents();
+
174
+
175 /*
+
176 * This method dispatches an event to all handlers.
+
177 */
+
178 virtual bool dispatchEvent(UEvent * event, const UEventsSender * sender);
+
179
+
180 /*
+
181 * This method is used to add an events
+
182 * handler to the list of handlers.
+
183 *
+
184 * @param handler the handler to be added.
+
185 */
+
186 void _addHandler(UEventsHandler* handler);
+
187
+
188 /*
+
189 * This method is used to remove an events
+
190 * handler from the list of handlers.
+
191 *
+
192 * @param handler the handler to be removed.
+
193 */
+
194 void _removeHandler(UEventsHandler* handler);
+
195
+
196 /*
+
197 * This method is used to post an event to
+
198 * handlers.
+
199 *
+
200 * Event can be posted asynchronously or not. In the first case,
+
201 * the event is dispatched by the UEventsManager's thread. In the
+
202 * second case, the event is handled immediately by event's
+
203 * receivers, thus in the sender thread.
+
204 *
+
205 * @param event the event to be posted.
+
206 * @param async if true, the event is dispatched by the UEventsManager thread, otherwise it's in the caller thread (synchronous).
+
207 */
+
208 void _postEvent(UEvent * event, bool async = true, const UEventsSender * sender = 0);
+
209
+
210 std::list<UEventsHandler*> getPipes(
+
211 const UEventsSender * sender,
+
212 const std::string & eventName);
+
213
+
214 void _createPipe(
+
215 const UEventsSender * sender,
+
216 const UEventsHandler * receiver,
+
217 const std::string & eventName);
+
218
+
219 void _removePipe(
+
220 const UEventsSender * sender,
+
221 const UEventsHandler * receiver,
+
222 const std::string & eventName);
+
223
+
224 void _removeAllPipes(const UEventsSender * sender);
+
225 void _removeNullPipes(const UEventsSender * sender);
+
226
+
227private:
+
228
+
229 class Pipe
+
230 {
+
231 public:
+
232 Pipe(const UEventsSender * sender, const UEventsHandler * receiver, const std::string & eventName) :
+
233 sender_(sender),
+
234 receiver_(receiver),
+
235 eventName_(eventName)
+
236 {}
+
237 const UEventsSender * sender_;
+
238 const UEventsHandler * receiver_;
+
239 const std::string eventName_;
+
240 };
+
241
+
242 static UEventsManager* instance_; /* The EventsManager instance pointer. */
+
243 static UDestroyer<UEventsManager> destroyer_; /* The EventsManager's destroyer. */
+
244 std::list<std::pair<UEvent*, const UEventsSender * > > events_; /* The events list. */
+
245 std::list<UEventsHandler*> handlers_; /* The handlers list. */
+
246 UMutex eventsMutex_; /* The mutex of the events list, */
+
247 UMutex handlersMutex_; /* The mutex of the handlers list. */
+
248 USemaphore postEventSem_; /* Semaphore used to signal when an events is posted. */
+
249 std::list<Pipe> pipes_;
+
250 UMutex pipesMutex_;
+
251};
+
+
252
+
253#endif // UEVENTSMANAGER_H
+
ULogger class and convenient macros.
+
Backward-compatible alias header for UThread.
+ + +
virtual void mainLoop()
+ + + +
static void removeHandler(UEventsHandler *handler)
+
static void addHandler(UEventsHandler *handler)
+
virtual void mainLoop()
+
static void post(UEvent *event, bool async=true, const UEventsSender *sender=0)
+ + + + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UEventsSender_8h_source.html b/preview/pr-1773/api/latest/UEventsSender_8h_source.html new file mode 100644 index 00000000..9c1a0e64 --- /dev/null +++ b/preview/pr-1773/api/latest/UEventsSender_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UEventsSender.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEventsSender.h
+
+
+
1/*
+
2 * UEventsSender.h
+
3 *
+
4 * Created on: 2013-10-14
+
5 * Author: Mathieu
+
6 */
+
7
+
8#ifndef UEVENTSSENDER_H_
+
9#define UEVENTSSENDER_H_
+
10
+
11#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
12
+
13class UEvent;
+
14
+
+
15class UTILITE_EXPORT UEventsSender
+
16{
+
17public:
+ +
19 virtual ~UEventsSender();
+
20
+
21protected:
+
22
+
27 void post(UEvent * event, bool async = true) const;
+
28};
+
+
29
+
30
+
31#endif /* UEVENTSSENDER_H_ */
+ + +
void post(UEvent *event, bool async=true) const
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UException_8h_source.html b/preview/pr-1773/api/latest/UException_8h_source.html new file mode 100644 index 00000000..1ed03558 --- /dev/null +++ b/preview/pr-1773/api/latest/UException_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UException.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UException.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UEXCEPTION_H_
+
21#define UEXCEPTION_H_
+
22
+
23#include <stdexcept>
+
24
+
+
25class UException: public std::runtime_error {
+
26public:
+
27
+
28 UException(const std::string & what) :
+
29 std::runtime_error(what)
+
30 {}
+
31};
+
+
32
+
33#endif /* UEXCEPTION_H_ */
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UFile_8h_source.html b/preview/pr-1773/api/latest/UFile_8h_source.html new file mode 100644 index 00000000..dca9ea9d --- /dev/null +++ b/preview/pr-1773/api/latest/UFile_8h_source.html @@ -0,0 +1,220 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UFile.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UFile.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef FILE_H
+
21#define FILE_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include "rtabmap/utilite/UDirectory.h"
+
26#include <string>
+
27
+
+
33class UTILITE_EXPORT UFile
+
34{
+
35public:
+
41 static bool exists(const std::string &filePath);
+
42
+
48 static long length(const std::string &filePath);
+
49
+
55 static int erase(const std::string &filePath);
+
56
+
63 static int rename(const std::string &oldFilePath,
+
64 const std::string &newFilePath);
+
65
+
71 static std::string getName(const std::string & filePath);
+
72
+
77 static std::string getExtension(const std::string &filePath);
+
78
+
84 static void copy(const std::string & from, const std::string & to);
+
85
+
86public:
+
91 UFile(const std::string & path) : path_(path) {}
+
92 ~UFile() {}
+
93
+
98 bool isValid() {return exists(path_);}
+
99
+
104 bool exists() {return exists(path_);}
+
105
+
110 long length() {return length(path_);}
+
111
+
+
116 int rename(const std::string &newName)
+
117 {
+
118 std::string ext = this->getExtension();
+
119 std::string newPath = UDirectory::getDir(path_) + std::string("/") + newName;
+
120 if(ext.size())
+
121 {
+
122 newPath += std::string(".") + getExtension(path_);
+
123 }
+
124 int result = rename(path_, newPath);
+
125 if(result == 0)
+
126 {
+
127 path_ = newPath;
+
128 }
+
129 return result;
+
130 }
+
+
135 std::string getName() {return getName(path_);}
+
140 std::string getExtension() {return getExtension(path_);}
+
141
+
146 void copy(const std::string & to) {copy(path_, to);}
+
147
+
148private:
+
149 std::string path_;
+
150};
+
+
151
+
152#endif
+
static std::string getDir(const std::string &filePath)
+
Definition UFile.h:34
+
long length()
Definition UFile.h:110
+
UFile(const std::string &path)
Definition UFile.h:91
+
static int erase(const std::string &filePath)
+
static std::string getName(const std::string &filePath)
+
int rename(const std::string &newName)
Definition UFile.h:116
+
bool exists()
Definition UFile.h:104
+
static int rename(const std::string &oldFilePath, const std::string &newFilePath)
+
void copy(const std::string &to)
Definition UFile.h:146
+
std::string getExtension()
Definition UFile.h:140
+
static void copy(const std::string &from, const std::string &to)
+
static bool exists(const std::string &filePath)
+
static std::string getExtension(const std::string &filePath)
+
bool isValid()
Definition UFile.h:98
+
static long length(const std::string &filePath)
+
std::string getName()
Definition UFile.h:135
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/ULogger_8h.html b/preview/pr-1773/api/latest/ULogger_8h.html new file mode 100644 index 00000000..6002804d --- /dev/null +++ b/preview/pr-1773/api/latest/ULogger_8h.html @@ -0,0 +1,625 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/ULogger.h File Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ULogger.h File Reference
+
+
+ +

ULogger class and convenient macros. +More...

+
#include "rtabmap/utilite/utilite_export.h"
+#include "rtabmap/utilite/UMutex.h"
+#include "rtabmap/utilite/UDestroyer.h"
+#include "rtabmap/utilite/UEvent.h"
+#include "rtabmap/utilite/UException.h"
+#include <stdio.h>
+#include <time.h>
+#include <string>
+#include <vector>
+#include <map>
+#include <set>
+#include <stdarg.h>
+
+Include dependency graph for ULogger.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

class  ULogEvent
 
class  ULogger
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define ULOGGER_LOG(level, ...)   ULogger::write(level, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__)
 
#define ULOGGER_DEBUG(...)   ULOGGER_LOG(ULogger::kDebug, __VA_ARGS__)
 
#define ULOGGER_INFO(...)   ULOGGER_LOG(ULogger::kInfo, __VA_ARGS__)
 
#define ULOGGER_WARN(...)   ULOGGER_LOG(ULogger::kWarning, __VA_ARGS__)
 
#define ULOGGER_ERROR(...)   ULOGGER_LOG(ULogger::kError, __VA_ARGS__)
 
#define ULOGGER_FATAL(...)   ULOGGER_LOG(ULogger::kFatal, __VA_ARGS__)
 
#define UDEBUG(...)   ULOGGER_DEBUG(__VA_ARGS__)
 
#define UINFO(...)   ULOGGER_INFO(__VA_ARGS__)
 
#define UWARN(...)   ULOGGER_WARN(__VA_ARGS__)
 
#define UERROR(...)   ULOGGER_ERROR(__VA_ARGS__)
 
#define UFATAL(...)   ULOGGER_FATAL(__VA_ARGS__)
 
#define UASSERT(condition)   if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, "Condition (%s) not met!", #condition)
 
#define UASSERT_MSG(condition, msg_str)   if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, "Condition (%s) not met! [%s]", #condition, msg_str)
 
+

Detailed Description

+

ULogger class and convenient macros.

+

This contains macros useful for logging a message anywhere in the application. Once the ULogger is set, use these macros like a printf to print debug messages.

+ +

Definition in file ULogger.h.

+

Macro Definition Documentation

+ +

◆ ULOGGER_LOG

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ULOGGER_LOG( level,
 ... 
)   ULogger::write(level, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__)
+
+ +

Definition at line 51 of file ULogger.h.

+ +
+
+ +

◆ ULOGGER_DEBUG

+ +
+
+ + + + + + + + +
#define ULOGGER_DEBUG( ...)   ULOGGER_LOG(ULogger::kDebug, __VA_ARGS__)
+
+ +

Definition at line 53 of file ULogger.h.

+ +
+
+ +

◆ ULOGGER_INFO

+ +
+
+ + + + + + + + +
#define ULOGGER_INFO( ...)   ULOGGER_LOG(ULogger::kInfo, __VA_ARGS__)
+
+ +

Definition at line 54 of file ULogger.h.

+ +
+
+ +

◆ ULOGGER_WARN

+ +
+
+ + + + + + + + +
#define ULOGGER_WARN( ...)   ULOGGER_LOG(ULogger::kWarning, __VA_ARGS__)
+
+ +

Definition at line 55 of file ULogger.h.

+ +
+
+ +

◆ ULOGGER_ERROR

+ +
+
+ + + + + + + + +
#define ULOGGER_ERROR( ...)   ULOGGER_LOG(ULogger::kError, __VA_ARGS__)
+
+ +

Definition at line 56 of file ULogger.h.

+ +
+
+ +

◆ ULOGGER_FATAL

+ +
+
+ + + + + + + + +
#define ULOGGER_FATAL( ...)   ULOGGER_LOG(ULogger::kFatal, __VA_ARGS__)
+
+ +

Definition at line 57 of file ULogger.h.

+ +
+
+ +

◆ UDEBUG

+ +
+
+ + + + + + + + +
#define UDEBUG( ...)   ULOGGER_DEBUG(__VA_ARGS__)
+
+

Print a debug level message in the logger. Format is the same as a printf:

UDEBUG("This is a debug message with the number %d", 42);
+
#define UDEBUG(...)
Definition ULogger.h:59
+
+

Definition at line 59 of file ULogger.h.

+ +
+
+ +

◆ UINFO

+ +
+
+ + + + + + + + +
#define UINFO( ...)   ULOGGER_INFO(__VA_ARGS__)
+
+

Print a information level message in the logger. Format is the same as a printf:

UINFO("This is a information message with the number %d", 42);
+
#define UINFO(...)
Definition ULogger.h:60
+
+

Definition at line 60 of file ULogger.h.

+ +
+
+ +

◆ UWARN

+ +
+
+ + + + + + + + +
#define UWARN( ...)   ULOGGER_WARN(__VA_ARGS__)
+
+

Print a warning level message in the logger. Format is the same as a printf:

UWARN("This is a warning message with the number %d", 42);
+
#define UWARN(...)
Definition ULogger.h:61
+
+

Definition at line 61 of file ULogger.h.

+ +
+
+ +

◆ UERROR

+ +
+
+ + + + + + + + +
#define UERROR( ...)   ULOGGER_ERROR(__VA_ARGS__)
+
+

Print an error level message in the logger. Format is the same as a printf:

UERROR("This is an error message with the number %d", 42);
+
#define UERROR(...)
Definition ULogger.h:62
+
+

Definition at line 62 of file ULogger.h.

+ +
+
+ +

◆ UFATAL

+ +
+
+ + + + + + + + +
#define UFATAL( ...)   ULOGGER_FATAL(__VA_ARGS__)
+
+

Print a fatal error level message in the logger. The application will exit on fatal error. Format is the same as a printf:

UFATAL("This is a fatal error message with the number %d", 42);
+
#define UFATAL(...)
Definition ULogger.h:63
+
+

Definition at line 63 of file ULogger.h.

+ +
+
+ +

◆ UASSERT

+ +
+
+ + + + + + + + +
#define UASSERT( condition)   if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, "Condition (%s) not met!", #condition)
+
+

Print a fatal error level message in the logger if condition is not met. The application will exit on fatal error. Format is the same as a printf:

UASSERT(a!=42, "This is a fatal error message with the number %d", 42);
+
#define UASSERT(condition)
Definition ULogger.h:66
+
+

Definition at line 66 of file ULogger.h.

+ +
+
+ +

◆ UASSERT_MSG

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define UASSERT_MSG( condition,
 msg_str 
)   if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, "Condition (%s) not met! [%s]", #condition, msg_str)
+
+ +

Definition at line 67 of file ULogger.h.

+ +
+
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/ULogger_8h.js b/preview/pr-1773/api/latest/ULogger_8h.js new file mode 100644 index 00000000..469a27b3 --- /dev/null +++ b/preview/pr-1773/api/latest/ULogger_8h.js @@ -0,0 +1,11 @@ +var ULogger_8h = +[ + [ "ULogEvent", "classULogEvent.html", "classULogEvent" ], + [ "ULogger", "classULogger.html", "classULogger" ], + [ "UDEBUG", "ULogger_8h.html#a9104cb408bf9019db2a2c4476835db4a", null ], + [ "UINFO", "ULogger_8h.html#a5b63c9a1441181723754c0c6084231a8", null ], + [ "UWARN", "ULogger_8h.html#ab5a739ad9340455e46eaa570f8223d9a", null ], + [ "UERROR", "ULogger_8h.html#a1249ddbc4c9cc43be53048c08dda129b", null ], + [ "UFATAL", "ULogger_8h.html#aabc10368a622911d56a4dd5a4b461385", null ], + [ "UASSERT", "ULogger_8h.html#ab3436168e27946669bbd4c76e4c4007e", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/ULogger_8h__dep__incl.map b/preview/pr-1773/api/latest/ULogger_8h__dep__incl.map new file mode 100644 index 00000000..4c10155c --- /dev/null +++ b/preview/pr-1773/api/latest/ULogger_8h__dep__incl.map @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/ULogger_8h__dep__incl.md5 b/preview/pr-1773/api/latest/ULogger_8h__dep__incl.md5 new file mode 100644 index 00000000..c4ccfc9a --- /dev/null +++ b/preview/pr-1773/api/latest/ULogger_8h__dep__incl.md5 @@ -0,0 +1 @@ +af7ce5b25ebe80a93a5854f029754603 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/ULogger_8h__dep__incl.png b/preview/pr-1773/api/latest/ULogger_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8c017abcd7280821544d89d2e2b0a8d82286af61 GIT binary patch literal 290590 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Į?M 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²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 rKlztYUGlYwjBgLs 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 z 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%0A6lQa(Px1`pA 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⪼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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/ULogger_8h__incl.md5 b/preview/pr-1773/api/latest/ULogger_8h__incl.md5 new file mode 100644 index 00000000..79bf8f9f --- /dev/null +++ b/preview/pr-1773/api/latest/ULogger_8h__incl.md5 @@ -0,0 +1 @@ +aef12f635afb8041f2a2d63eca233206 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/ULogger_8h__incl.png b/preview/pr-1773/api/latest/ULogger_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8e9117c2b4c7057937eb541e779e102f5e5e65 GIT binary patch literal 51207 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

|JT+Ffv^n3GC*=Akk8j4_ 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 G{(k`SpZMhf literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/ULogger_8h_source.html b/preview/pr-1773/api/latest/ULogger_8h_source.html new file mode 100644 index 00000000..5685d101 --- /dev/null +++ b/preview/pr-1773/api/latest/ULogger_8h_source.html @@ -0,0 +1,479 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/ULogger.h Source File + + + + + + + + + + + + + + + + + + + + +

+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ULogger.h
+
+
+Go to the documentation of this file.
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef ULOGGER_H
+
21#define ULOGGER_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include "rtabmap/utilite/UMutex.h"
+
26#include "rtabmap/utilite/UDestroyer.h"
+
27#include "rtabmap/utilite/UEvent.h"
+
28#include "rtabmap/utilite/UException.h"
+
29
+
30#include <stdio.h>
+
31#include <time.h>
+
32#include <string>
+
33#include <vector>
+
34#include <map>
+
35#include <set>
+
36
+
37#include <stdarg.h>
+
38
+
48/*
+
49 * Convenient macros for logging...
+
50 */
+
51#define ULOGGER_LOG(level, ...) ULogger::write(level, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__)
+
52
+
53#define ULOGGER_DEBUG(...) ULOGGER_LOG(ULogger::kDebug, __VA_ARGS__)
+
54#define ULOGGER_INFO(...) ULOGGER_LOG(ULogger::kInfo, __VA_ARGS__)
+
55#define ULOGGER_WARN(...) ULOGGER_LOG(ULogger::kWarning, __VA_ARGS__)
+
56#define ULOGGER_ERROR(...) ULOGGER_LOG(ULogger::kError, __VA_ARGS__)
+
57#define ULOGGER_FATAL(...) ULOGGER_LOG(ULogger::kFatal, __VA_ARGS__) // Throw UException
+
58
+
59#define UDEBUG(...) ULOGGER_DEBUG(__VA_ARGS__)
+
60#define UINFO(...) ULOGGER_INFO(__VA_ARGS__)
+
61#define UWARN(...) ULOGGER_WARN(__VA_ARGS__)
+
62#define UERROR(...) ULOGGER_ERROR(__VA_ARGS__)
+
63#define UFATAL(...) ULOGGER_FATAL(__VA_ARGS__) // Throw UException
+
64
+
65// Throw UException
+
66#define UASSERT(condition) if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, "Condition (%s) not met!", #condition)
+
67#define UASSERT_MSG(condition, msg_str) if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, "Condition (%s) not met! [%s]", #condition, msg_str)
+
68
+
+
121class ULogEvent : public UEvent
+
122{
+
123public:
+
+
129 ULogEvent(const std::string & msg, int level) :
+
130 UEvent(level),
+
131 msg_(msg)
+
132 {}
+
+
133 virtual ~ULogEvent() {}
+
137 const std::string & getMsg() const {return msg_;}
+
141 virtual std::string getClassName() const {return "ULogEvent";}
+
142private:
+
143 std::string msg_;
+
144};
+
+
145
+
+
229class UTILITE_EXPORT ULogger
+
230{
+
231
+
232public:
+
236 static const std::string kDefaultLogFileName;
+
237
+
244 enum Type{kTypeNoLog, kTypeConsole, kTypeFile};
+
245
+
252 enum Level{kDebug, kInfo, kWarning, kError, kFatal};
+
253
+
265 static void setType(Type type, const std::string &fileName = kDefaultLogFileName, bool append = true);
+
266 static Type type() {return type_;}
+
267
+
268 // Setters
+
273 static void setPrintTime(bool printTime) {printTime_ = printTime;}
+
274 static bool isPrintTime() {return printTime_;}
+
275
+
280 static void setPrintLevel(bool printLevel) {printLevel_ = printLevel;}
+
281 static bool isPrintLevel() {return printLevel_;}
+
282
+
287 static void setPrintEndline(bool printEndline) {printEndline_ = printEndline;}
+
288 static bool isPrintEndLine() {return printEndline_;}
+
289
+
295 static void setPrintColored(bool printColored) {printColored_ = printColored;}
+
296 static bool isPrintColored() {return printColored_;}
+
297
+
302 static void setPrintWhere(bool printWhere) {printWhere_ = printWhere;}
+
303 static bool isPrintWhere() {return printWhere_;}
+
304
+
309 static void setPrintThreadId(bool printThreadId) {printThreadID_ = printThreadId;}
+
310 static bool isPrintThreadId() {return printThreadID_;}
+
311
+
316 static void setPrintWhereFullPath(bool printWhereFullPath) {printWhereFullPath_ = printWhereFullPath;}
+
317 static bool isPrintWhereFullPath() {return printWhereFullPath_;}
+
318
+
329 static void setBuffered(bool buffered);
+
330 static bool isBuffered() {return buffered_;}
+
331
+
343 static void setLevel(ULogger::Level level) {level_ = level;}
+
344 static ULogger::Level level() {return level_;}
+
345
+
352 static void setEventLevel(ULogger::Level eventSentLevel) {eventLevel_ = eventSentLevel;}
+
353 static ULogger::Level eventLevel() {return eventLevel_;}
+
354
+
358 static void setTreadIdFilter(const std::set<unsigned long> & ids) {threadIdFilter_ = ids;}
+
359 static void setTreadIdFilter(const std::vector<std::string> & ids);
+
360 static const std::set<unsigned long> & getTreadIdFilter() {return threadIdFilter_;}
+
361
+
366 static void registerCurrentThread(const std::string & name);
+
367 static void unregisterCurrentThread();
+
368 static std::map<std::string, unsigned long> getRegisteredThreads();
+
369
+
373 static void reset();
+
374
+
379 static void flush();
+
380
+
381 /*
+
382 * Write a message to logger: use UDEBUG(), UINFO(), UWARN(), UERROR() or UFATAL() instead.
+
383 * @param level the log level of this message
+
384 * @param file the file path
+
385 * @param line the line in the file
+
386 * @param function the function name in which the message is logged
+
387 * @param msg the message to write
+
388 * @param ... the variable arguments
+
389 */
+
390 static void write(ULogger::Level level,
+
391 const char * file,
+
392 int line,
+
393 const char *function,
+
394 const char* msg,
+
395 ...)
+
396#if defined(__GNUC__) || defined(__clang__)
+
397 // Let the compiler type-check every UDEBUG/UINFO/UWARN/UERROR
+
398 // format string against its arguments. Without this, a mismatch is
+
399 // invisible until the line actually executes -- and since
+
400 // ULogger::write() returns early when the message is below the
+
401 // current log level, a bad format can sit latent for years and then
+
402 // segfault only for users running at a lower level. `msg` is the
+
403 // 5th parameter (no implicit `this`: the function is static) and
+
404 // the varargs start at 6.
+
405 __attribute__((format(printf, 5, 6)))
+
406#endif
+
407 ;
+
408
+
414 static int getTime(std::string &timeStr);
+
415
+
416protected:
+
417 /*
+
418 * This method is used to have a reference on the
+
419 * Logger. When no Logger exists, one is
+
420 * created. There is only one instance in the application.
+
421 * Must be protected by loggerMutex_.
+
422 * See the Singleton pattern for further explanation.
+
423 *
+
424 * @return the reference on the Logger
+
425 */
+
426 static ULogger* getInstance();
+
427
+
428 /*
+
429 * Called only once in getInstance(). It can't be instanciated
+
430 * by the user.
+
431 *
+
432 * @see getInstance()
+
433 */
+
434 ULogger() {}
+
435
+
436 /*
+
437 * Only called by a Destroyer.
+
438 * @see Destroyer
+
439 */
+
440 virtual ~ULogger();
+
441
+
442 /*
+
443 * Flush buffered messages
+
444 */
+
445 void _flush();
+
446
+
447 /*
+
448 * A Destroyer is used to remove a dynamicaly created
+
449 * Singleton. It is friend here to have access to the
+
450 * destructor.
+
451 *
+
452 * @see Destroyer
+
453 */
+
454 friend class UDestroyer<ULogger>;
+
455
+
456 /*
+
457 * The log file name.
+
458 */
+
459 static std::string logFileName_;
+
460
+
461 /*
+
462 * Default true, it doesn't overwrite the file.
+
463 */
+
464 static bool append_;
+
465
+
466private:
+
467 /*
+
468 * Create an instance according to type. See the Abstract factory
+
469 * pattern for further explanation.
+
470 * @see type_
+
471 * @return the reference on the new logger
+
472 */
+
473 static ULogger* createInstance();
+
474
+
475 /*
+
476 * Write a message on the output with the format :
+
477 * "A message". Inherited class
+
478 * must override this method to output the message. It
+
479 * does nothing by default.
+
480 * @param msg the message to write.
+
481 * @param arg the variable arguments
+
482 */
+
483 virtual void _write(const char*, va_list) {} // Do nothing by default
+
484 virtual void _writeStr(const char*) {} // Do nothing by default
+
485
+
486private:
+
487 /*
+
488 * The Logger instance pointer.
+
489 */
+
490 static ULogger* instance_;
+
491
+
492 /*
+
493 * The Logger's destroyer
+
494 */
+
495 static UDestroyer<ULogger> destroyer_;
+
496
+
497 /*
+
498 * If the logger prints the time for each message.
+
499 * Default is true.
+
500 */
+
501 static bool printTime_;
+
502
+
503 /*
+
504 * If the logger prints the level for each message.
+
505 * Default is true.
+
506 */
+
507 static bool printLevel_;
+
508
+
509 /*
+
510 * If the logger prints the end line for each message.
+
511 * Default is true.
+
512 */
+
513 static bool printEndline_;
+
514
+
515 /*
+
516 * If the logger prints text with color.
+
517 * Default is true.
+
518 */
+
519 static bool printColored_;
+
520
+
521 /*
+
522 * If the logger prints where the message is logged (fileName::function():line).
+
523 * Default is true.
+
524 */
+
525 static bool printWhere_;
+
526
+
527 /*
+
528 * If the logger prints the full path of the source file
+
529 * where the message is written. Only works when
+
530 * "printWhere_" is true.
+
531 * Default is false.
+
532 */
+
533 static bool printWhereFullPath_;
+
534
+
535 /*
+
536 * If the logger prints the thread ID.
+
537 * Default is false.
+
538 */
+
539 static bool printThreadID_;
+
540
+
541 /*
+
542 * If the logger limit the size of the "where" path to
+
543 * characters. If the path is over 8 characters, a "~"
+
544 * is added. Only works when "printWhereFullPath_" is false.
+
545 * Default is false.
+
546 */
+
547 static bool limitWhereLength_;
+
548
+
549 /*
+
550 * The type of the logger.
+
551 */
+
552 static Type type_;
+
553
+
554 /*
+
555 * The severity of the log.
+
556 */
+
557 static Level level_;
+
558
+
559 /*
+
560 * The severity at which the message is also sent in a ULogEvent.
+
561 */
+
562 static Level eventLevel_;
+
563
+
564 static const char * levelName_[5];
+
565
+
566 /*
+
567 * Mutex used when accessing public functions.
+
568 */
+
569 static UMutex loggerMutex_;
+
570
+
571 /*
+
572 * If the logger prints messages only when ULogger::flush() is called.
+
573 * Default is false.
+
574 */
+
575 static bool buffered_;
+
576
+
577 static std::string bufferedMsgs_;
+
578
+
579 static std::set<unsigned long> threadIdFilter_;
+
580 static std::map<std::string, unsigned long> registeredThreads_;
+
581};
+
+
582
+
583#endif // ULOGGER_H
+ + + +
const std::string & getMsg() const
Definition ULogger.h:137
+
virtual std::string getClassName() const
Definition ULogger.h:141
+
ULogEvent(const std::string &msg, int level)
Definition ULogger.h:129
+ +
static void reset()
+
static void setPrintThreadId(bool printThreadId)
Definition ULogger.h:309
+
static void setType(Type type, const std::string &fileName=kDefaultLogFileName, bool append=true)
+
static int getTime(std::string &timeStr)
+
static void setPrintTime(bool printTime)
Definition ULogger.h:273
+
static void setPrintWhereFullPath(bool printWhereFullPath)
Definition ULogger.h:316
+
static void setPrintLevel(bool printLevel)
Definition ULogger.h:280
+ +
static void flush()
+
static void setPrintColored(bool printColored)
Definition ULogger.h:295
+
static void registerCurrentThread(const std::string &name)
+
static void setPrintEndline(bool printEndline)
Definition ULogger.h:287
+ +
static void setBuffered(bool buffered)
+
static void setEventLevel(ULogger::Level eventSentLevel)
Definition ULogger.h:352
+
static const std::string kDefaultLogFileName
Definition ULogger.h:236
+
static void setLevel(ULogger::Level level)
Definition ULogger.h:343
+
static void setTreadIdFilter(const std::set< unsigned long > &ids)
Definition ULogger.h:358
+
static void setPrintWhere(bool printWhere)
Definition ULogger.h:302
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UMath_8h.html b/preview/pr-1773/api/latest/UMath_8h.html new file mode 100644 index 00000000..34b103ac --- /dev/null +++ b/preview/pr-1773/api/latest/UMath_8h.html @@ -0,0 +1,2599 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UMath.h File Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UMath.h File Reference
+
+
+ +

Basic mathematics functions. +More...

+
#include <cmath>
+#include <list>
+#include <vector>
+
+Include dependency graph for UMath.h:
+
+
+ + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Enumerations

enum  UXMatchMethod {
+  UXCorrRaw +, UXCorrBiased +, UXCorrUnbiased +, UXCorrCoeff +,
+  UXCovRaw +, UXCovBiased +, UXCovUnbiased +, UXCovCoeff +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class T >
bool uIsNan (const T &value)
 
template<class T >
bool uIsFinite (const T &value)
 
template<class T >
T uMin3 (const T &a, const T &b, const T &c)
 
template<class T >
T uMax3 (const T &a, const T &b, const T &c)
 
template<class T >
T uMax (const T *v, unsigned int size, unsigned int &index)
 
template<class T >
T uMax (const std::vector< T > &v, unsigned int &index)
 
template<class T >
T uMax (const T *v, unsigned int size)
 
template<class T >
T uMax (const std::vector< T > &v)
 
template<class T >
T uMin (const T *v, unsigned int size, unsigned int &index)
 
template<class T >
T uMin (const std::vector< T > &v, unsigned int &index)
 
template<class T >
T uMin (const T *v, unsigned int size)
 
template<class T >
T uMin (const std::vector< T > &v)
 
template<class T >
void uMinMax (const T *v, unsigned int size, T &min, T &max, unsigned int &indexMin, unsigned int &indexMax)
 
template<class T >
void uMinMax (const std::vector< T > &v, T &min, T &max, unsigned int &indexMin, unsigned int &indexMax)
 
template<class T >
void uMinMax (const T *v, unsigned int size, T &min, T &max)
 
template<class T >
void uMinMax (const std::vector< T > &v, T &min, T &max)
 
template<class T >
int uSign (const T &v)
 
template<class T >
T uSum (const std::list< T > &list)
 
template<class T >
T uSum (const T *v, unsigned int size)
 
template<class T >
T uSum (const std::vector< T > &v)
 
template<class T >
T uSumSquared (const T *v, unsigned int size, T subtract=T())
 
template<class T >
T uSumSquared (const std::vector< T > &v, T subtract=T())
 
template<class T >
T uMean (const T *v, unsigned int size)
 
template<class T >
T uMean (const std::list< T > &list)
 
template<class T >
T uMean (const std::vector< T > &v)
 
template<class T >
T uMeanSquaredError (const T *x, unsigned int sizeX, const T *y, unsigned int sizeY)
 
template<class T >
T uMeanSquaredError (const std::vector< T > &x, const std::vector< T > &y)
 
template<class T >
T uVariance (const T *v, unsigned int size, T meanV)
 
template<class T >
T uVariance (const std::list< T > &list, const T &m)
 
template<class T >
T uVariance (const T *v, unsigned int size)
 
template<class T >
T uVariance (const std::vector< T > &v, const T &m)
 
template<class T >
T uNormSquared (const std::vector< T > &v)
 
template<class T >
T uNorm (const std::vector< T > &v)
 
template<class T >
T uNormSquared (const T &x1, const T &x2)
 
template<class T >
T uNorm (const T &x1, const T &x2)
 
template<class T >
T uNormSquared (const T &x1, const T &x2, const T &x3)
 
template<class T >
T uNorm (const T &x1, const T &x2, const T &x3)
 
template<class T >
std::vector< T > uNormalize (const std::vector< T > &v)
 
template<class T >
std::list< unsigned int > uLocalMaxima (const T *v, unsigned int size)
 
template<class T >
std::list< unsigned int > uLocalMaxima (const std::vector< T > &v)
 
template<class T >
std::vector< T > uXMatch (const T *vA, const T *vB, unsigned int sizeA, unsigned int sizeB, UXMatchMethod method)
 
template<class T >
std::vector< T > uXMatch (const std::vector< T > &vA, const std::vector< T > &vB, UXMatchMethod method)
 
template<class T >
T uXMatch (const T *vA, const T *vB, unsigned int sizeA, unsigned int sizeB, unsigned int index, UXMatchMethod method)
 
template<class T >
T uXMatch (const std::vector< T > &vA, const std::vector< T > &vB, unsigned int index, UXMatchMethod method)
 
std::vector< float > uHamming (unsigned int L)
 
template<typename T >
bool uIsInBounds (const T &value, const T &low, const T &high)
 
+

Detailed Description

+

Basic mathematics functions.

+ +

Definition in file UMath.h.

+

Enumeration Type Documentation

+ +

◆ UXMatchMethod

+ +
+
+ + + + +
enum UXMatchMethod
+
+

Enum of cross matching methods (cross-correlation, cross-covariance) : UXCorrRaw, UXCorrBiased, UXCorrUnbiased, UXCorrCoeff, UXCovRaw, UXCovBiased, UXCovUnbiased, UXCovCoeff.

+ +

Definition at line 696 of file UMath.h.

+ +
+
+

Function Documentation

+ +

◆ uIsNan()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool uIsNan (const T & value)
+
+inline
+
+

Return true if the number is NAN.

+ +

Definition at line 40 of file UMath.h.

+ +
+
+ +

◆ uIsFinite()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool uIsFinite (const T & value)
+
+inline
+
+

Return true if the number is finite.

+ +

Definition at line 53 of file UMath.h.

+ +
+
+ +

◆ uMin3()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uMin3 (const T & a,
const T & b,
const T & c 
)
+
+inline
+
+

Get the minimum of the 3 values.

Returns
the minimum value
+ +

Definition at line 67 of file UMath.h.

+ +
+
+ +

◆ uMax3()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uMax3 (const T & a,
const T & b,
const T & c 
)
+
+inline
+
+

Get the maximum of the 3 values.

Returns
the maximum value
+ +

Definition at line 78 of file UMath.h.

+ +
+
+ +

◆ uMax() [1/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uMax (const T * v,
unsigned int size,
unsigned int & index 
)
+
+inline
+
+

Get the maximum of a vector.

Parameters
+ + + + +
vthe array
sizethe size of the array
indexthe index of the maximum value in the vector.
+
+
+
Returns
the maximum value of the array
+ +

Definition at line 92 of file UMath.h.

+ +
+
+ +

◆ uMax() [2/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uMax (const std::vector< T > & v,
unsigned int & index 
)
+
+inline
+
+

Get the maximum of a vector.

Parameters
+ + + +
vthe array
indexthe index of the maximum value in the vector.
+
+
+
Returns
the maximum value of the array
+ +

Definition at line 120 of file UMath.h.

+ +
+
+ +

◆ uMax() [3/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uMax (const T * v,
unsigned int size 
)
+
+inline
+
+

Get the maximum of a vector.

Parameters
+ + + +
vthe array
sizethe size of the array
+
+
+
Returns
the maximum value of the array
+ +

Definition at line 132 of file UMath.h.

+ +
+
+ +

◆ uMax() [4/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uMax (const std::vector< T > & v)
+
+inline
+
+

Get the maximum of a vector.

Parameters
+ + +
vthe array
+
+
+
Returns
the maximum value of the array
+ +

Definition at line 144 of file UMath.h.

+ +
+
+ +

◆ uMin() [1/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uMin (const T * v,
unsigned int size,
unsigned int & index 
)
+
+inline
+
+

Get the minimum of a vector.

Parameters
+ + + + +
vthe array
sizethe size of the array
indexthe index of the minimum value in the vector.
+
+
+
Returns
the minimum value of the array
+ +

Definition at line 157 of file UMath.h.

+ +
+
+ +

◆ uMin() [2/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uMin (const std::vector< T > & v,
unsigned int & index 
)
+
+inline
+
+

Get the minimum of a vector.

Parameters
+ + + +
vthe array
indexthe index of the minimum value in the vector.
+
+
+
Returns
the minimum value of the array
+ +

Definition at line 185 of file UMath.h.

+ +
+
+ +

◆ uMin() [3/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uMin (const T * v,
unsigned int size 
)
+
+inline
+
+

Get the minimum of a vector.

Parameters
+ + + +
vthe array
sizethe size of the array
+
+
+
Returns
the minimum value of the array
+ +

Definition at line 197 of file UMath.h.

+ +
+
+ +

◆ uMin() [4/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uMin (const std::vector< T > & v)
+
+inline
+
+

Get the minimum of a vector.

Parameters
+ + +
vthe array
+
+
+
Returns
the minimum value of the array
+ +

Definition at line 209 of file UMath.h.

+ +
+
+ +

◆ uMinMax() [1/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uMinMax (const T * v,
unsigned int size,
T & min,
T & max,
unsigned int & indexMin,
unsigned int & indexMax 
)
+
+inline
+
+

Get the minimum and maximum of a vector.

Parameters
+ + + + + + + +
vthe array
sizethe size of the array
minreference to output minimum
maxreference to output maximum
minreference to output minimum index
maxreference to output maximum index
+
+
+ +

Definition at line 224 of file UMath.h.

+ +
+
+ +

◆ uMinMax() [2/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uMinMax (const std::vector< T > & v,
T & min,
T & max,
unsigned int & indexMin,
unsigned int & indexMax 
)
+
+inline
+
+

Get the minimum and maximum of a vector.

Parameters
+ + + + + + +
vthe array
minreference to output minimum
maxreference to output maximum
minreference to output minimum index
maxreference to output maximum index
+
+
+ +

Definition at line 262 of file UMath.h.

+ +
+
+ +

◆ uMinMax() [3/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uMinMax (const T * v,
unsigned int size,
T & min,
T & max 
)
+
+inline
+
+

Get the minimum and maximum of a vector.

Parameters
+ + + + + +
vthe array
sizethe size of the array
minreference to output minimum
maxreference to output maximum
+
+
+ +

Definition at line 275 of file UMath.h.

+ +
+
+ +

◆ uMinMax() [4/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uMinMax (const std::vector< T > & v,
T & min,
T & max 
)
+
+inline
+
+

Get the minimum and maximum of a vector.

Parameters
+ + + + +
vthe array
minreference to output minimum
maxreference to output maximum
+
+
+ +

Definition at line 289 of file UMath.h.

+ +
+
+ +

◆ uSign()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
int uSign (const T & v)
+
+inline
+
+

Get the sign of value.

Parameters
+ + +
vthe value
+
+
+
Returns
-1 if v<0, otherwise 1
+ +

Definition at line 300 of file UMath.h.

+ +
+
+ +

◆ uSum() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uSum (const std::list< T > & list)
+
+inline
+
+

Get the sum of all values contained in a list. Provided for convenience.

Parameters
+ + +
listthe list
+
+
+
Returns
the sum of values of the list
+ +

Definition at line 318 of file UMath.h.

+ +
+
+ +

◆ uSum() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uSum (const T * v,
unsigned int size 
)
+
+inline
+
+

Get the sum of all values contained in an array: sum(x).

Parameters
+ + + +
vthe array
sizethe size of the array
+
+
+
Returns
the sum of values of the array
+ +

Definition at line 335 of file UMath.h.

+ +
+
+ +

◆ uSum() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uSum (const std::vector< T > & v)
+
+inline
+
+

Get the sum of all values contained in a vector. Provided for convenience.

Parameters
+ + +
vthe vector
+
+
+
Returns
the sum of values of the vector
+ +

Definition at line 354 of file UMath.h.

+ +
+
+ +

◆ uSumSquared() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uSumSquared (const T * v,
unsigned int size,
T subtract = T() 
)
+
+inline
+
+

Get the sum of all squared values contained in an array: sum(x.^2).

Parameters
+ + + + +
vthe array
sizethe size of the array
subtractan optional value to remove to v before squaring v: sum((x-sub).^2)
+
+
+
Returns
the sum of values of the array
+ +

Definition at line 367 of file UMath.h.

+ +
+
+ +

◆ uSumSquared() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uSumSquared (const std::vector< T > & v,
T subtract = T() 
)
+
+inline
+
+

Get the sum of all squared values contained in an array: sum(x.^2).

Parameters
+ + + +
vthe array
subtractan optional value to remove to v before squaring v: sum((x-sub).^2)
+
+
+
Returns
the sum of values of the array
+ +

Definition at line 387 of file UMath.h.

+ +
+
+ +

◆ uMean() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uMean (const T * v,
unsigned int size 
)
+
+inline
+
+

Compute the mean of an array.

Parameters
+ + + +
vthe array
sizethe size of the array
+
+
+
Returns
the mean
+ +

Definition at line 399 of file UMath.h.

+ +
+
+ +

◆ uMean() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uMean (const std::list< T > & list)
+
+inline
+
+

Get the mean of a list. Provided for convenience.

Parameters
+ + +
listthe list
+
+
+
Returns
the mean
+ +

Definition at line 419 of file UMath.h.

+ +
+
+ +

◆ uMean() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uMean (const std::vector< T > & v)
+
+inline
+
+

Get the mean of a vector. Provided for convenience.

Parameters
+ + +
vthe vector
+
+
+
Returns
the mean
+ +

Definition at line 439 of file UMath.h.

+ +
+
+ +

◆ uMeanSquaredError() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T uMeanSquaredError (const T * x,
unsigned int sizeX,
const T * y,
unsigned int sizeY 
)
+
+inline
+
+

Compute mean squared error between two arrays: mean((x-y).^2).

Parameters
+ + + + + +
xthe first array
sizeXthe size of the array x
ythe second array
sizeYthe size of the array y (must be same size as x)
+
+
+
Returns
the mean squared error (return -1 if error cannot be computed)
+ +

Definition at line 453 of file UMath.h.

+ +
+
+ +

◆ uMeanSquaredError() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uMeanSquaredError (const std::vector< T > & x,
const std::vector< T > & y 
)
+
+inline
+
+

Compute mean squared error between two arrays: mean((x-y).^2).

Parameters
+ + + +
xthe first array
ythe second array (must be same size as x)
+
+
+
Returns
the mean squared error (return -1 if error cannot be computed)
+ +

Definition at line 475 of file UMath.h.

+ +
+
+ +

◆ uVariance() [1/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uVariance (const T * v,
unsigned int size,
T meanV 
)
+
+inline
+
+

Compute the variance of an array.

Parameters
+ + + + +
vthe array
sizethe size of the array
meanVthe mean of the array
+
+
+
Returns
the variance
+
See also
mean()
+ +

Definition at line 489 of file UMath.h.

+ +
+
+ +

◆ uVariance() [2/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uVariance (const std::list< T > & list,
const T & m 
)
+
+inline
+
+

Get the variance of a list. Provided for convenience.

Parameters
+ + + +
listthe list
mthe mean of the list
+
+
+
Returns
the variance
+
See also
mean()
+ +

Definition at line 512 of file UMath.h.

+ +
+
+ +

◆ uVariance() [3/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uVariance (const T * v,
unsigned int size 
)
+
+inline
+
+

Compute the variance of an array.

Parameters
+ + + +
vthe array
sizethe size of the array
+
+
+
Returns
the variance
+ +

Definition at line 534 of file UMath.h.

+ +
+
+ +

◆ uVariance() [4/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uVariance (const std::vector< T > & v,
const T & m 
)
+
+inline
+
+

Get the variance of a vector. Provided for convenience.

Parameters
+ + + +
vthe vector
mthe mean of the vector
+
+
+
Returns
the variance
+
See also
mean()
+ +

Definition at line 548 of file UMath.h.

+ +
+
+ +

◆ uNormSquared() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uNormSquared (const std::vector< T > & v)
+
+inline
+
+

Get the squared norm of the vector : return x1*x1 + x2*x2 + x3*x3 + ...

Returns
the squared norm of the vector
+ +

Definition at line 558 of file UMath.h.

+ +
+
+ +

◆ uNorm() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T uNorm (const std::vector< T > & v)
+
+inline
+
+

Get the norm of the vector : return sqrt(x1*x1 + x2*x2 + x3*x3 + ...)

Returns
the norm of the vector
+ +

Definition at line 573 of file UMath.h.

+ +
+
+ +

◆ uNormSquared() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uNormSquared (const T & x1,
const T & x2 
)
+
+inline
+
+

Get the squared norm of the vector : return x1*x1 + x2*x2

Returns
the squared norm of the vector
+ +

Definition at line 583 of file UMath.h.

+ +
+
+ +

◆ uNorm() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T uNorm (const T & x1,
const T & x2 
)
+
+inline
+
+

Get the norm of the vector : return sqrt(x1*x1 + x2*x2 + x3*x3)

Returns
the norm of the vector
+ +

Definition at line 593 of file UMath.h.

+ +
+
+ +

◆ uNormSquared() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uNormSquared (const T & x1,
const T & x2,
const T & x3 
)
+
+inline
+
+

Get the squared norm of the vector : return x1*x1 + x2*x2 + x3*x3

Returns
the squared norm of the vector
+ +

Definition at line 603 of file UMath.h.

+ +
+
+ +

◆ uNorm() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
T uNorm (const T & x1,
const T & x2,
const T & x3 
)
+
+inline
+
+

Get the norm of the vector : return sqrt(x1*x1 + x2*x2 + x3*x3)

Returns
the norm of the vector
+ +

Definition at line 613 of file UMath.h.

+ +
+
+ +

◆ uNormalize()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
std::vector< T > uNormalize (const std::vector< T > & v)
+
+inline
+
+

Normalize the vector : [x1 x2 x3 ...] ./ uNorm([x1 x2 x3 ...])

Returns
the vector normalized
+ +

Definition at line 623 of file UMath.h.

+ +
+
+ +

◆ uLocalMaxima() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::list< unsigned int > uLocalMaxima (const T * v,
unsigned int size 
)
+
+inline
+
+

Find all local maxima.

+ +

Definition at line 645 of file UMath.h.

+ +
+
+ +

◆ uLocalMaxima() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
std::list< unsigned int > uLocalMaxima (const std::vector< T > & v)
+
+inline
+
+

Find all local maxima.

+ +

Definition at line 687 of file UMath.h.

+ +
+
+ +

◆ uXMatch() [1/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::vector< T > uXMatch (const T * vA,
const T * vB,
unsigned int sizeA,
unsigned int sizeB,
UXMatchMethod method 
)
+
+inline
+
+

Do a full cross-correlation or cross-covariance between 2 arrays.

Parameters
+ + + + + + +
vAthe first array
vBthe second array
sizeAthe size of the first array
sizeBthe size of the second array
methodsee UXMatchMethod
+
+
+
Returns
the resulting correlation/covariance vector of size = sizeA + sizeB - 1
+ +

Definition at line 708 of file UMath.h.

+ +
+
+ +

◆ uXMatch() [2/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::vector< T > uXMatch (const std::vector< T > & vA,
const std::vector< T > & vB,
UXMatchMethod method 
)
+
+inline
+
+

Do a full cross-correlation or cross-covariance between 2 arrays.

Parameters
+ + + + +
vAthe first array
vBthe second array
methodsee UXMatchMethod
+
+
+
Returns
the resulting correlation/covariance vector of size = sizeA + sizeB - 1
+ +

Definition at line 820 of file UMath.h.

+ +
+
+ +

◆ uXMatch() [3/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T uXMatch (const T * vA,
const T * vB,
unsigned int sizeA,
unsigned int sizeB,
unsigned int index,
UXMatchMethod method 
)
+
+inline
+
+

Do a cross correlation between 2 arrays at a specified index.

Parameters
+ + + + + + + +
vAthe first array
vBthe second array
sizeAthe size of the first array
sizeBthe size of the second array
indexthe index to correlate
methodsee UXMatchMethod
+
+
+
Returns
the resulting correlation value
+ +

Definition at line 836 of file UMath.h.

+ +
+
+ +

◆ uXMatch() [4/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
T uXMatch (const std::vector< T > & vA,
const std::vector< T > & vB,
unsigned int index,
UXMatchMethod method 
)
+
+inline
+
+

Do a cross correlation between 2 arrays at a specified index.

Parameters
+ + + + + + + +
vAthe first array
vBthe second array
sizeAthe size of the first array
sizeBthe size of the second array
indexthe index to correlate
methodsee UXMatchMethod
+
+
+
Returns
the resulting correlation value
+ +

Definition at line 909 of file UMath.h.

+ +
+
+ +

◆ uHamming()

+ +
+
+ + + + + +
+ + + + + + + + +
std::vector< float > uHamming (unsigned int L)
+
+inline
+
+

Return Hamming window of length L.

Parameters
+ + +
Lthe window length
+
+
+
Returns
the Hamming window (values are between 0 and 1)
+ +

Definition at line 919 of file UMath.h.

+ +
+
+ +

◆ uIsInBounds()

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool uIsInBounds (const T & value,
const T & low,
const T & high 
)
+
+ +

Definition at line 932 of file UMath.h.

+ +
+
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UMath_8h.js b/preview/pr-1773/api/latest/UMath_8h.js new file mode 100644 index 00000000..3fd639bc --- /dev/null +++ b/preview/pr-1773/api/latest/UMath_8h.js @@ -0,0 +1,58 @@ +var UMath_8h = +[ + [ "UXMatchMethod", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cba", [ + [ "UXCorrRaw", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaa2483c4b5e245cfba48d1f78410d598ff", null ], + [ "UXCorrBiased", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaad2c2d62b2b2e1b76516f85c671a79446", null ], + [ "UXCorrUnbiased", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaa7960218c620140178574ad65c1e0d3ce", null ], + [ "UXCorrCoeff", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaa10113691644078c00d8fe877d72f7e36", null ], + [ "UXCovRaw", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaaacbb3f3ddd6509eb0b654368d9e0a06c", null ], + [ "UXCovBiased", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaae635408335547815e5e17ffe41db9565", null ], + [ "UXCovUnbiased", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaa949e7911c13a3c8a188ac45ddddbdd05", null ], + [ "UXCovCoeff", "UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cbaa8ee0bdef5a35952921fc4320681db0d9", null ] + ] ], + [ "uIsNan", "UMath_8h.html#a0ce262f6e3a80f7efafc73052600d309", null ], + [ "uIsFinite", "UMath_8h.html#abc9c1a676bf1b33a7d2bc0452a04fed3", null ], + [ "uMin3", "UMath_8h.html#ad653f26bbf08ce113b5a69a49bb4e41d", null ], + [ "uMax3", "UMath_8h.html#a601a7e18acb1512a60cd8ef248271c85", null ], + [ "uMax", "UMath_8h.html#a1362990d0ce7f09ef735292cc480fa23", null ], + [ "uMax", "UMath_8h.html#a429cc62f1ca3c7a00e0062301ae60bcc", null ], + [ "uMax", "UMath_8h.html#a387b43468da220548d025010be075476", null ], + [ "uMax", "UMath_8h.html#a0aef304a0891fafcef581dcfbf3ac792", null ], + [ "uMin", "UMath_8h.html#aa37a66d04825a8834648dbe931bd57e6", null ], + [ "uMin", "UMath_8h.html#a99bd3bc365630c1760432cf810ea5831", null ], + [ "uMin", "UMath_8h.html#a68e11ea992520b98d4e688f8853b5dc4", null ], + [ "uMin", "UMath_8h.html#aeb0652d64e72d115d751f8186ac9016e", null ], + [ "uMinMax", "UMath_8h.html#af9bfdafb6da16f9c6f4691a6d951538b", null ], + [ "uMinMax", "UMath_8h.html#a23b93249fbe3eebc9d95104f4f8cafff", null ], + [ "uMinMax", "UMath_8h.html#a9cc051a73d402e69919d8fcea51c3098", null ], + [ "uMinMax", "UMath_8h.html#af5f7ebda9d440043cd3c57037e81318b", null ], + [ "uSign", "UMath_8h.html#a6e100ed2031a529679a93b9b4bf818af", null ], + [ "uSum", "UMath_8h.html#a81a1c24c0229e6c4dc8d8e09497ad114", null ], + [ "uSum", "UMath_8h.html#a86599e95ecdc91ce2d9497985d5d642b", null ], + [ "uSum", "UMath_8h.html#af15f0fa694931f0f99ba640d52539b09", null ], + [ "uSumSquared", "UMath_8h.html#aeb6a6517666687e509617e6bfaf274d3", null ], + [ "uSumSquared", "UMath_8h.html#a94be0f1c509db2f294048e6d5b16a522", null ], + [ "uMean", "UMath_8h.html#a7376638ab6047306c66a357153a47196", null ], + [ "uMean", "UMath_8h.html#aa4e1e6cf3df49d68d95bbe9981d1600e", null ], + [ "uMean", "UMath_8h.html#a8c8cd8ce7b3d8f32847bb57e9f73a625", null ], + [ "uMeanSquaredError", "UMath_8h.html#a28770817787def2a9165ed070fa17a54", null ], + [ "uMeanSquaredError", "UMath_8h.html#a319bcffddfeab66d5cbb729fa56dd361", null ], + [ "uVariance", "UMath_8h.html#add45b750bab7251ba196079289f17d7d", null ], + [ "uVariance", "UMath_8h.html#aa6ea127b567072434a5616bcc1c1f6e3", null ], + [ "uVariance", "UMath_8h.html#a0aa8de7d20731bcae07d956256e293f6", null ], + [ "uVariance", "UMath_8h.html#a8d443d065900ca7096d08c9431fef71f", null ], + [ "uNormSquared", "UMath_8h.html#aeed14782b35224f70db6b5435dce06a1", null ], + [ "uNorm", "UMath_8h.html#ab5e611c29307d8733cfaebc68bed1ac6", null ], + [ "uNormSquared", "UMath_8h.html#aea5fd5d0bd9afdb11c765584c89a5f8f", null ], + [ "uNorm", "UMath_8h.html#abe92bd5cba3860759c40c322ab1ac995", null ], + [ "uNormSquared", "UMath_8h.html#a0a3b6871504f5a745f8769492f45871c", null ], + [ "uNorm", "UMath_8h.html#a6b6fbb2032ce05eeacdb1b0bc87627e8", null ], + [ "uNormalize", "UMath_8h.html#a2f843f6f6bf0bd59b527aaa8c4731612", null ], + [ "uLocalMaxima", "UMath_8h.html#a2feb416e779b88c4a6a849d609222c99", null ], + [ "uLocalMaxima", "UMath_8h.html#a321ec84227fff8bf26aa85b0d3be5bb7", null ], + [ "uXMatch", "UMath_8h.html#a913829c5228fabff88e4918111c1d424", null ], + [ "uXMatch", "UMath_8h.html#a4694c7d40749b5cb09c596d232720192", null ], + [ "uXMatch", "UMath_8h.html#ac616ce0471d2e35fafd59d88021ccab3", null ], + [ "uXMatch", "UMath_8h.html#a726f4662efa078be30f5320bbb994c7a", null ], + [ "uHamming", "UMath_8h.html#add815f68a7ad0f18c667311826a85a52", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UMath_8h__dep__incl.map b/preview/pr-1773/api/latest/UMath_8h__dep__incl.map new file mode 100644 index 00000000..61387dc5 --- /dev/null +++ b/preview/pr-1773/api/latest/UMath_8h__dep__incl.map @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UMath_8h__dep__incl.md5 b/preview/pr-1773/api/latest/UMath_8h__dep__incl.md5 new file mode 100644 index 00000000..16951bb7 --- /dev/null +++ b/preview/pr-1773/api/latest/UMath_8h__dep__incl.md5 @@ -0,0 +1 @@ +593239fb03d335ef48b8167e41e2cd41 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UMath_8h__dep__incl.png b/preview/pr-1773/api/latest/UMath_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8513b1858b94b0e4adc5ac24d384c20cce16977e GIT binary patch literal 273128 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

E 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�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

+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UMath.h
+
+
+Go to the documentation of this file.
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UMATH_H
+
21#define UMATH_H
+
22
+
27#include <cmath>
+
28#include <list>
+
29#include <vector>
+
30
+
31#if _MSC_VER
+
32 #undef min
+
33 #undef max
+
34#endif
+
35
+
39template<class T>
+
+
40inline bool uIsNan(const T & value)
+
41{
+
42#if _MSC_VER
+
43 return _isnan(value) != 0;
+
44#else
+
45 return std::isnan(value);
+
46#endif
+
47}
+
+
48
+
52template<class T>
+
+
53inline bool uIsFinite(const T & value)
+
54{
+
55#if _MSC_VER
+
56 return _finite(value) != 0;
+
57#else
+
58 return std::isfinite(value);
+
59#endif
+
60}
+
+
61
+
66template<class T>
+
+
67inline T uMin3( const T& a, const T& b, const T& c)
+
68{
+
69 float m=a<b?a:b;
+
70 return m<c?m:c;
+
71}
+
+
72
+
77template<class T>
+
+
78inline T uMax3( const T& a, const T& b, const T& c)
+
79{
+
80 float m=a>b?a:b;
+
81 return m>c?m:c;
+
82}
+
+
83
+
91template<class T>
+
+
92inline T uMax(const T * v, unsigned int size, unsigned int & index)
+
93{
+
94 T max = 0;
+
95 index = 0;
+
96 if(!v || size == 0)
+
97 {
+
98 return max;
+
99 }
+
100 max = v[0];
+
101 for(unsigned int i=1; i<size; ++i)
+
102 {
+
103 if(uIsNan(max) || (max < v[i] && !uIsNan(v[i])))
+
104 {
+
105 max = v[i];
+
106 index = i;
+
107 }
+
108 }
+
109
+
110 return max;
+
111}
+
+
112
+
119template<class T>
+
+
120inline T uMax(const std::vector<T> & v, unsigned int & index)
+
121{
+
122 return uMax(v.data(), v.size(), index);
+
123}
+
+
124
+
131template<class T>
+
+
132inline T uMax(const T * v, unsigned int size)
+
133{
+
134 unsigned int index;
+
135 return uMax(v, size, index);
+
136}
+
+
137
+
143template<class T>
+
+
144inline T uMax(const std::vector<T> & v)
+
145{
+
146 return uMax(v.data(), v.size());
+
147}
+
+
148
+
156template<class T>
+
+
157inline T uMin(const T * v, unsigned int size, unsigned int & index)
+
158{
+
159 T min = 0;
+
160 index = 0;
+
161 if(!v || size == 0)
+
162 {
+
163 return min;
+
164 }
+
165 min = v[0];
+
166 for(unsigned int i=1; i<size; ++i)
+
167 {
+
168 if(uIsNan(min) || (min > v[i] && !uIsNan(v[i])))
+
169 {
+
170 min = v[i];
+
171 index = i;
+
172 }
+
173 }
+
174
+
175 return min;
+
176}
+
+
177
+
184template<class T>
+
+
185inline T uMin(const std::vector<T> & v, unsigned int & index)
+
186{
+
187 return uMin(v.data(), v.size(), index);
+
188}
+
+
189
+
196template<class T>
+
+
197inline T uMin(const T * v, unsigned int size)
+
198{
+
199 unsigned int index;
+
200 return uMin(v, size, index);
+
201}
+
+
202
+
208template<class T>
+
+
209inline T uMin(const std::vector<T> & v)
+
210{
+
211 return uMin(v.data(), v.size());
+
212}
+
+
213
+
223template<class T>
+
+
224inline void uMinMax(const T * v, unsigned int size, T & min, T & max, unsigned int & indexMin, unsigned int & indexMax)
+
225{
+
226 min = 0;
+
227 max = 0;
+
228 indexMin = 0;
+
229 indexMax = 0;
+
230 if(!v || size == 0)
+
231 {
+
232 return;
+
233 }
+
234 min = v[0];
+
235 max = v[0];
+
236
+
237 for(unsigned int i=1; i<size; ++i)
+
238 {
+
239 if(uIsNan(min) || (min > v[i] && !uIsNan(v[i])))
+
240 {
+
241 min = v[i];
+
242 indexMin = i;
+
243 }
+
244
+
245 if(uIsNan(max) || (max < v[i] && !uIsNan(v[i])))
+
246 {
+
247 max = v[i];
+
248 indexMax = i;
+
249 }
+
250 }
+
251}
+
+
252
+
261template<class T>
+
+
262inline void uMinMax(const std::vector<T> & v, T & min, T & max, unsigned int & indexMin, unsigned int & indexMax)
+
263{
+
264 uMinMax(v.data(), v.size(), min, max, indexMin, indexMax);
+
265}
+
+
266
+
274template<class T>
+
+
275inline void uMinMax(const T * v, unsigned int size, T & min, T & max)
+
276{
+
277 unsigned int indexMin;
+
278 unsigned int indexMax;
+
279 uMinMax(v, size, min, max, indexMin, indexMax);
+
280}
+
+
281
+
288template<class T>
+
+
289inline void uMinMax(const std::vector<T> & v, T & min, T & max)
+
290{
+
291 uMinMax(v.data(), v.size(), min, max);
+
292}
+
+
293
+
299template<class T>
+
+
300inline int uSign(const T & v)
+
301{
+
302 if(v < 0)
+
303 {
+
304 return -1;
+
305 }
+
306 else
+
307 {
+
308 return 1;
+
309 }
+
310}
+
+
311
+
317template<class T>
+
+
318inline T uSum(const std::list<T> & list)
+
319{
+
320 T sum = 0;
+
321 for(typename std::list<T>::const_iterator i=list.begin(); i!=list.end(); ++i)
+
322 {
+
323 sum += *i;
+
324 }
+
325 return sum;
+
326}
+
+
327
+
334template<class T>
+
+
335inline T uSum(const T * v, unsigned int size)
+
336{
+
337 T sum = 0;
+
338 if(v && size)
+
339 {
+
340 for(unsigned int i=0; i<size; ++i)
+
341 {
+
342 sum += v[i];
+
343 }
+
344 }
+
345 return sum;
+
346}
+
+
347
+
353template<class T>
+
+
354inline T uSum(const std::vector<T> & v)
+
355{
+
356 return uSum(v.data(), (int)v.size());
+
357}
+
+
358
+
366template<class T>
+
+
367inline T uSumSquared(const T * v, unsigned int size, T subtract = T())
+
368{
+
369 T sum = 0;
+
370 if(v && size)
+
371 {
+
372 for(unsigned int i=0; i<size; ++i)
+
373 {
+
374 sum += (v[i]-subtract)*(v[i]-subtract);
+
375 }
+
376 }
+
377 return sum;
+
378}
+
+
379
+
386template<class T>
+
+
387inline T uSumSquared(const std::vector<T> & v, T subtract = T())
+
388{
+
389 return uSumSquared(v.data(), v.size(), subtract);
+
390}
+
+
391
+
398template<class T>
+
+
399inline T uMean(const T * v, unsigned int size)
+
400{
+
401 T buf = 0;
+
402 if(v && size)
+
403 {
+
404 for(unsigned int i=0; i<size; ++i)
+
405 {
+
406 buf += v[i];
+
407 }
+
408 buf /= size;
+
409 }
+
410 return buf;
+
411}
+
+
412
+
418template<class T>
+
+
419inline T uMean(const std::list<T> & list)
+
420{
+
421 T m = 0;
+
422 if(list.size())
+
423 {
+
424 for(typename std::list<T>::const_iterator i=list.begin(); i!=list.end(); ++i)
+
425 {
+
426 m += *i;
+
427 }
+
428 m /= list.size();
+
429 }
+
430 return m;
+
431}
+
+
432
+
438template<class T>
+
+
439inline T uMean(const std::vector<T> & v)
+
440{
+
441 return uMean(v.data(), v.size());
+
442}
+
+
443
+
452template<class T>
+
+
453inline T uMeanSquaredError(const T * x, unsigned int sizeX, const T * y, unsigned int sizeY)
+
454{
+
455 T sum = 0;
+
456 if(x && y && sizeX == sizeY)
+
457 {
+
458 for(unsigned int i=0; i<sizeX; ++i)
+
459 {
+
460 T diff = x[i]-y[i];
+
461 sum += diff*diff;
+
462 }
+
463 return sum/(T)sizeX;
+
464 }
+
465 return (T)-1;
+
466}
+
+
467
+
474template<class T>
+
+
475inline T uMeanSquaredError(const std::vector<T> & x, const std::vector<T> & y)
+
476{
+
477 return uMeanSquaredError(x.data(), x.size(), y.data(), y.size());
+
478}
+
+
479
+
488template<class T>
+
+
489inline T uVariance(const T * v, unsigned int size, T meanV)
+
490{
+
491 T buf = 0;
+
492 if(v && size>1)
+
493 {
+
494 float sum = 0;
+
495 for(unsigned int i=0; i<size; ++i)
+
496 {
+
497 sum += (v[i]-meanV)*(v[i]-meanV);
+
498 }
+
499 buf = sum/(size-1);
+
500 }
+
501 return buf;
+
502}
+
+
503
+
511template<class T>
+
+
512inline T uVariance(const std::list<T> & list, const T & m)
+
513{
+
514 T buf = 0;
+
515 if(list.size()>1)
+
516 {
+
517 float sum = 0;
+
518 for(typename std::list<T>::const_iterator i=list.begin(); i!=list.end(); ++i)
+
519 {
+
520 sum += (*i-m)*(*i-m);
+
521 }
+
522 buf = sum/(list.size()-1);
+
523 }
+
524 return buf;
+
525}
+
+
526
+
533template<class T>
+
+
534inline T uVariance(const T * v, unsigned int size)
+
535{
+
536 T m = uMean(v, size);
+
537 return uVariance(v, size, m);
+
538}
+
+
539
+
547template<class T>
+
+
548inline T uVariance(const std::vector<T> & v, const T & m)
+
549{
+
550 return uVariance(v.data(), v.size(), m);
+
551}
+
+
552
+
557template<class T>
+
+
558inline T uNormSquared(const std::vector<T> & v)
+
559{
+
560 float sum = 0.0f;
+
561 for(unsigned int i=0; i<v.size(); ++i)
+
562 {
+
563 sum += v[i]*v[i];
+
564 }
+
565 return sum;
+
566}
+
+
567
+
572template<class T>
+
+
573inline T uNorm(const std::vector<T> & v)
+
574{
+
575 return std::sqrt(uNormSquared(v));
+
576}
+
+
577
+
582template<class T>
+
+
583inline T uNormSquared(const T & x1, const T & x2)
+
584{
+
585 return x1*x1 + x2*x2;
+
586}
+
+
587
+
592template<class T>
+
+
593inline T uNorm(const T & x1, const T & x2)
+
594{
+
595 return std::sqrt(uNormSquared(x1, x2));
+
596}
+
+
597
+
602template<class T>
+
+
603inline T uNormSquared(const T & x1, const T & x2, const T & x3)
+
604{
+
605 return x1*x1 + x2*x2 + x3*x3;
+
606}
+
+
607
+
612template<class T>
+
+
613inline T uNorm(const T & x1, const T & x2, const T & x3)
+
614{
+
615 return std::sqrt(uNormSquared(x1, x2, x3));
+
616}
+
+
617
+
622template<class T>
+
+
623inline std::vector<T> uNormalize(const std::vector<T> & v)
+
624{
+
625 float norm = uNorm(v);
+
626 if(norm == 0)
+
627 {
+
628 return v;
+
629 }
+
630 else
+
631 {
+
632 std::vector<T> r(v.size());
+
633 for(unsigned int i=0; i<v.size(); ++i)
+
634 {
+
635 r[i] = v[i]/norm;
+
636 }
+
637 return r;
+
638 }
+
639}
+
+
640
+
644template<class T>
+
+
645inline std::list<unsigned int> uLocalMaxima(const T * v, unsigned int size)
+
646{
+
647 std::list<unsigned int> maxima;
+
648 if(size)
+
649 {
+
650 for(unsigned int i=0; i<size; ++i)
+
651 {
+
652 if(i == 0)
+
653 {
+
654 // first item
+
655 if((i+1 < size && v[i] > v[i+1]) ||
+
656 i+1 >= size)
+
657 {
+
658 maxima.push_back(i);
+
659 }
+
660 }
+
661 else if(i == size - 1)
+
662 {
+
663 //last item
+
664 if((i >= 1 && v[i] > v[i-1]) ||
+
665 i == 0)
+
666 {
+
667 maxima.push_back(i);
+
668 }
+
669 }
+
670 else
+
671 {
+
672 //all others, check previous and next
+
673 if(v[i] > v[i-1] && v[i] > v[i+1])
+
674 {
+
675 maxima.push_back(i);
+
676 }
+
677 }
+
678 }
+
679 }
+
680 return maxima;
+
681}
+
+
682
+
686template<class T>
+
+
687inline std::list<unsigned int> uLocalMaxima(const std::vector<T> & v)
+
688{
+
689 return uLocalMaxima(v.data(), v.size());
+
690}
+
+
691
+
696enum UXMatchMethod{UXCorrRaw, UXCorrBiased, UXCorrUnbiased, UXCorrCoeff, UXCovRaw, UXCovBiased, UXCovUnbiased, UXCovCoeff};
+
697
+
707template<class T>
+
+
708inline std::vector<T> uXMatch(const T * vA, const T * vB, unsigned int sizeA, unsigned int sizeB, UXMatchMethod method)
+
709{
+
710 if(!vA || !vB || sizeA == 0 || sizeB == 0)
+
711 {
+
712 return std::vector<T>();
+
713 }
+
714
+
715 std::vector<T> result(sizeA + sizeB - 1);
+
716
+
717 T meanA = 0;
+
718 T meanB = 0;
+
719 if(method > UXCorrCoeff)
+
720 {
+
721 meanA = uMean(vA, sizeA);
+
722 meanB = uMean(vB, sizeB);
+
723 }
+
724
+
725 T den = 1;
+
726 if(method == UXCorrCoeff || method == UXCovCoeff)
+
727 {
+
728 den = std::sqrt(uSumSquared(vA, sizeA, meanA) * uSumSquared(vB, sizeB, meanB));
+
729 }
+
730 else if(method == UXCorrBiased || method == UXCovBiased)
+
731 {
+
732 den = (T)std::max(sizeA, sizeB);
+
733 }
+
734
+
735 if(sizeA == sizeB)
+
736 {
+
737 T resultA;
+
738 T resultB;
+
739
+
740 int posA;
+
741 int posB;
+
742 unsigned int j;
+
743
+
744 // Optimization, filling two results at once
+
745 for(unsigned int i=0; i<sizeA; ++i)
+
746 {
+
747 if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
748 {
+
749 den = 0;
+
750 }
+
751
+
752 posA = sizeA - i - 1;
+
753 posB = sizeB - i - 1;
+
754 resultA = 0;
+
755 resultB = 0;
+
756 for(j=0; (j + posB) < sizeB && (j + posA) < sizeA; ++j)
+
757 {
+
758 resultA += (vA[j] - meanA) * (vB[j + posB] - meanB);
+
759 resultB += (vA[j + posA] - meanA) * (vB[j] - meanB);
+
760 if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
761 {
+
762 ++den;
+
763 }
+
764 }
+
765
+
766 result[i] = resultA / den;
+
767 result[result.size()-1 -i] = resultB / den;
+
768 }
+
769 }
+
770 else
+
771 {
+
772 for(unsigned int i=0; i<result.size(); ++i)
+
773 {
+
774 if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
775 {
+
776 den = 0;
+
777 }
+
778
+
779 int posB = sizeB - i - 1;
+
780 T r = 0;
+
781 if(posB >= 0)
+
782 {
+
783 for(unsigned int j=0; (j + posB) < sizeB && j < sizeA; ++j)
+
784 {
+
785 r += (vA[j] - meanA) * (vB[j + posB] - meanB);
+
786 if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
787 {
+
788 ++den;
+
789 }
+
790 }
+
791 }
+
792 else
+
793 {
+
794 int posA = posB*-1;
+
795 for(unsigned int i=0; (i+posA) < sizeA && i < sizeB; ++i)
+
796 {
+
797 r += (vA[i+posA] - meanA) * (vB[i] - meanB);
+
798 if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
799 {
+
800 ++den;
+
801 }
+
802 }
+
803 }
+
804
+
805 result[i] = r / den;
+
806 }
+
807 }
+
808
+
809 return result;
+
810}
+
+
811
+
819template<class T>
+
+
820inline std::vector<T> uXMatch(const std::vector<T> & vA, const std::vector<T> & vB, UXMatchMethod method)
+
821{
+
822 return uXMatch(vA.data(), vB.data(), vA.size(), vB.size(), method);
+
823}
+
+
824
+
835template<class T>
+
+
836inline T uXMatch(const T * vA, const T * vB, unsigned int sizeA, unsigned int sizeB, unsigned int index, UXMatchMethod method)
+
837{
+
838 T result = 0;
+
839 if(!vA || !vB || sizeA == 0 || sizeB == 0)
+
840 {
+
841 return result;
+
842 }
+
843
+
844 T meanA = 0;
+
845 T meanB = 0;
+
846 if(method > UXCorrCoeff)
+
847 {
+
848 meanA = uMean(vA, sizeA);
+
849 meanB = uMean(vB, sizeB);
+
850 }
+
851 unsigned int size = sizeA + sizeB - 1;
+
852
+
853 T den = 1;
+
854 if(method == UXCorrCoeff || method == UXCovCoeff)
+
855 {
+
856 den = std::sqrt(uSumSquared(vA, sizeA, meanA) * uSumSquared(vB, sizeB, meanB));
+
857 }
+
858 else if(method == UXCorrBiased || method == UXCovBiased)
+
859 {
+
860 den = (T)std::max(sizeA, sizeB);
+
861 }
+
862 else if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
863 {
+
864 den = 0;
+
865 }
+
866
+
867 if(index < size)
+
868 {
+
869 int posB = sizeB - index - 1;
+
870 unsigned int i;
+
871 if(posB >= 0)
+
872 {
+
873 for(i=0; (i + posB) < sizeB && i < sizeA; ++i)
+
874 {
+
875 result += (vA[i] - meanA) * (vB[i + posB] - meanB);
+
876 if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
877 {
+
878 ++den;
+
879 }
+
880 }
+
881 }
+
882 else
+
883 {
+
884 int posA = posB*-1;
+
885 for(i=0; (i+posA) < sizeA && i < sizeB; ++i)
+
886 {
+
887 result += (vA[i+posA] - meanA) * (vB[i] - meanB);
+
888 if(method == UXCorrUnbiased || method == UXCovUnbiased)
+
889 {
+
890 ++den;
+
891 }
+
892 }
+
893 }
+
894 }
+
895 return result / den;
+
896}
+
+
897
+
908template<class T>
+
+
909inline T uXMatch(const std::vector<T> & vA, const std::vector<T> & vB, unsigned int index, UXMatchMethod method)
+
910{
+
911 return uXMatch(vA.data(), vB.data(), vA.size(), vB.size(), index, method);
+
912}
+
+
913
+
+
919inline std::vector<float> uHamming(unsigned int L)
+
920{
+
921 std::vector<float> w(L);
+
922 unsigned int N = L-1;
+
923 float pi = 3.14159265f;
+
924 for(unsigned int n=0; n<N; ++n)
+
925 {
+
926 w[n] = 0.54f-0.46f*std::cos(2.0f*pi*float(n)/float(N));
+
927 }
+
928 return w;
+
929}
+
+
930
+
931template <typename T>
+
932bool uIsInBounds(const T& value, const T& low, const T& high)
+
933{
+
934 return uIsFinite(value) && !(value < low) && !(value >= high);
+
935}
+
936
+
937#endif // UMATH_H
+
bool uIsNan(const T &value)
Definition UMath.h:40
+
T uMax(const T *v, unsigned int size, unsigned int &index)
Definition UMath.h:92
+
T uMeanSquaredError(const T *x, unsigned int sizeX, const T *y, unsigned int sizeY)
Definition UMath.h:453
+
std::vector< T > uNormalize(const std::vector< T > &v)
Definition UMath.h:623
+
std::list< unsigned int > uLocalMaxima(const T *v, unsigned int size)
Definition UMath.h:645
+
T uMax3(const T &a, const T &b, const T &c)
Definition UMath.h:78
+
int uSign(const T &v)
Definition UMath.h:300
+
T uMean(const T *v, unsigned int size)
Definition UMath.h:399
+
T uSum(const std::list< T > &list)
Definition UMath.h:318
+
std::vector< T > uXMatch(const T *vA, const T *vB, unsigned int sizeA, unsigned int sizeB, UXMatchMethod method)
Definition UMath.h:708
+
T uMin(const T *v, unsigned int size, unsigned int &index)
Definition UMath.h:157
+
T uNorm(const std::vector< T > &v)
Definition UMath.h:573
+
bool uIsFinite(const T &value)
Definition UMath.h:53
+
T uMin3(const T &a, const T &b, const T &c)
Definition UMath.h:67
+
T uVariance(const T *v, unsigned int size, T meanV)
Definition UMath.h:489
+
std::vector< float > uHamming(unsigned int L)
Definition UMath.h:919
+
UXMatchMethod
Definition UMath.h:696
+
T uSumSquared(const T *v, unsigned int size, T subtract=T())
Definition UMath.h:367
+
T uNormSquared(const std::vector< T > &v)
Definition UMath.h:558
+
void uMinMax(const T *v, unsigned int size, T &min, T &max, unsigned int &indexMin, unsigned int &indexMax)
Definition UMath.h:224
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UMutex_8h_source.html b/preview/pr-1773/api/latest/UMutex_8h_source.html new file mode 100644 index 00000000..da3e8a72 --- /dev/null +++ b/preview/pr-1773/api/latest/UMutex_8h_source.html @@ -0,0 +1,260 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UMutex.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UMutex.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UMUTEX_H
+
21#define UMUTEX_H
+
22
+
23#include <errno.h>
+
24
+
25#ifdef _WIN32
+
26 #include "rtabmap/utilite/Win32/UWin32.h"
+
27#else
+
28 #include <pthread.h>
+
29#endif
+
30
+
31
+
+
54class UMutex
+
55{
+
56
+
57public:
+
58
+
+ +
63 {
+
64#ifdef _WIN32
+
65 InitializeCriticalSection(&C);
+
66#else
+
67 pthread_mutexattr_t attr;
+
68 pthread_mutexattr_init(&attr);
+
69 pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+
70 pthread_mutex_init(&M,&attr);
+
71 pthread_mutexattr_destroy(&attr);
+
72#endif
+
73 }
+
+
74
+
75 virtual ~UMutex()
+
76 {
+
77#ifdef _WIN32
+
78 DeleteCriticalSection(&C);
+
79#else
+
80 pthread_mutex_unlock(&M); pthread_mutex_destroy(&M);
+
81#endif
+
82 }
+
83
+
+
88 int lock() const
+
89 {
+
90#ifdef _WIN32
+
91 EnterCriticalSection(&C); return 0;
+
92#else
+
93 return pthread_mutex_lock(&M);
+
94#endif
+
95 }
+
+
96
+
102#ifdef _WIN32
+
103 #if(_WIN32_WINNT >= 0x0400)
+
104 int lockTry() const
+
105 {
+
106 return (TryEnterCriticalSection(&C)?0:EBUSY);
+
107 }
+
108 #endif
+
109#else
+
+
110 int lockTry() const
+
111 {
+
112 return pthread_mutex_trylock(&M);
+
113 }
+
+
114#endif
+
115
+
+
120 int unlock() const
+
121 {
+
122#ifdef _WIN32
+
123 LeaveCriticalSection(&C); return 0;
+
124#else
+
125 return pthread_mutex_unlock(&M);
+
126#endif
+
127 }
+
+
128
+
129 private:
+
130#ifdef _WIN32
+
131 mutable CRITICAL_SECTION C;
+
132#else
+
133 mutable pthread_mutex_t M;
+
134#endif
+
135 void operator=(UMutex &) {}
+
136 UMutex( const UMutex & ) {}
+
137};
+
+
138
+
+ +
165{
+
166public:
+
167 UScopeMutex(const UMutex & mutex) :
+
168 mutex_(mutex)
+
169 {
+
170 mutex_.lock();
+
171 }
+
172 // backward compatibility
+
173 UScopeMutex(UMutex * mutex) :
+
174 mutex_(*mutex)
+
175 {
+
176 mutex_.lock();
+
177 }
+ +
179 {
+
180 mutex_.unlock();
+
181 }
+
182private:
+
183 const UMutex & mutex_;
+
184};
+
+
185
+
186#endif // UMUTEX_H
+ +
UMutex()
Definition UMutex.h:62
+
int unlock() const
Definition UMutex.h:120
+
int lockTry() const
Definition UMutex.h:110
+
int lock() const
Definition UMutex.h:88
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UObjDeletionThread_8h_source.html b/preview/pr-1773/api/latest/UObjDeletionThread_8h_source.html new file mode 100644 index 00000000..39f3ba68 --- /dev/null +++ b/preview/pr-1773/api/latest/UObjDeletionThread_8h_source.html @@ -0,0 +1,234 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UObjDeletionThread.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UObjDeletionThread.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UOBJDELETIONTHREAD_H
+
21#define UOBJDELETIONTHREAD_H
+
22
+ +
24#include "rtabmap/utilite/UEvent.h"
+
25#include "rtabmap/utilite/UEventsManager.h"
+
26
+
+ +
32{
+
33public:
+
34 UObjDeletedEvent(int objDeletionThreadId) : UEvent(objDeletionThreadId) {}
+
35 virtual ~UObjDeletedEvent() {}
+
39 virtual std::string getClassName() const {return std::string("UObjDeletedEvent");}
+
40};
+
+
41
+
47template<class T>
+
+ +
49{
+
50public:
+
+
56 UObjDeletionThread(T * obj, int id=0) :
+
57 obj_(obj),
+
58 id_(id),
+
59 waitMs_(0) {}
+
+
60
+
+ +
69 {
+
70 join(true);
+
71 if(obj_)
+
72 {
+
73 delete obj_;
+
74 }
+
75 }
+
+
76
+
81 void startDeletion(int waitMs = 0) {waitMs_ = waitMs; this->start();}
+
82
+
87 int id() const {return id_;}
+
88
+
+
93 void setObj(T * obj)
+
94 {
+
95 join();
+
96 if(obj_)
+
97 {
+
98 delete obj_;
+
99 obj_ = 0;
+
100 }
+
101 obj_ = obj;
+
102 }
+
+
103
+
104private:
+
108 virtual void mainLoop()
+
109 {
+
110 if(waitMs_)
+
111 {
+
112 uSleep(waitMs_);
+
113 }
+
114 if(obj_)
+
115 {
+
116 delete obj_;
+
117 obj_ = 0;
+
118 }
+
119 this->kill();
+
120 UEventsManager::post(new UObjDeletedEvent(id_), false);
+
121 }
+
122
+
123private:
+
124 T * obj_;
+
125 int id_;
+
126 int waitMs_;
+
127};
+
+
128
+
129#endif /* UOBJDELETIONTHREAD_H */
+
Backward-compatible alias header for UThread.
+ +
static void post(UEvent *event, bool async=true, const UEventsSender *sender=0)
+ +
virtual std::string getClassName() const
+ + +
void startDeletion(int waitMs=0)
+ + +
UObjDeletionThread(T *obj, int id=0)
+ +
void start()
+
void kill()
+
void join(bool killFirst=false)
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h.html b/preview/pr-1773/api/latest/UProcessInfo_8h.html new file mode 100644 index 00000000..801f3387 --- /dev/null +++ b/preview/pr-1773/api/latest/UProcessInfo_8h.html @@ -0,0 +1,154 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UProcessInfo.h File Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UProcessInfo.h File Reference
+
+
+ +

UProcessInfo class for getting process information. +More...

+
#include "rtabmap/utilite/utilite_export.h"
+
+Include dependency graph for UProcessInfo.h:
+
+
+ + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  UProcessInfo
 Class for getting information about the current process. More...
 
+

Detailed Description

+

UProcessInfo class for getting process information.

+

This class provides methods to retrieve information about the current process, such as memory usage.

+ +

Definition in file UProcessInfo.h.

+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h.js b/preview/pr-1773/api/latest/UProcessInfo_8h.js new file mode 100644 index 00000000..bea54529 --- /dev/null +++ b/preview/pr-1773/api/latest/UProcessInfo_8h.js @@ -0,0 +1,4 @@ +var UProcessInfo_8h = +[ + [ "UProcessInfo", "classUProcessInfo.html", "classUProcessInfo" ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.map b/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.map new file mode 100644 index 00000000..e9679168 --- /dev/null +++ b/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.md5 b/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.md5 new file mode 100644 index 00000000..b368b422 --- /dev/null +++ b/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.md5 @@ -0,0 +1 @@ +52bfde1d4653c713ebe3fa2a3c6916c6 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.png b/preview/pr-1773/api/latest/UProcessInfo_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..4de27f89312ed4e63c256825cd9c32cfa0d12ef1 GIT binary patch literal 7095 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h__incl.map b/preview/pr-1773/api/latest/UProcessInfo_8h__incl.map new file mode 100644 index 00000000..b9e98fcc --- /dev/null +++ b/preview/pr-1773/api/latest/UProcessInfo_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h__incl.md5 b/preview/pr-1773/api/latest/UProcessInfo_8h__incl.md5 new file mode 100644 index 00000000..1fb82358 --- /dev/null +++ b/preview/pr-1773/api/latest/UProcessInfo_8h__incl.md5 @@ -0,0 +1 @@ +282ce144cd678af1a9c83b752b9f6b95 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h__incl.png b/preview/pr-1773/api/latest/UProcessInfo_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b85abadcc81da81061a6dcc9e932f7e868fde4 GIT binary patch literal 6856 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/UProcessInfo_8h_source.html b/preview/pr-1773/api/latest/UProcessInfo_8h_source.html new file mode 100644 index 00000000..ae03c770 --- /dev/null +++ b/preview/pr-1773/api/latest/UProcessInfo_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UProcessInfo.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UProcessInfo.h
+
+
+Go to the documentation of this file.
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UPROCESSINFO_H
+
21#define UPROCESSINFO_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
+
47class UTILITE_EXPORT UProcessInfo {
+
48public:
+ +
53
+
57 virtual ~UProcessInfo();
+
58
+
67 static long int getMemoryUsage();
+
68};
+
+
69
+
70#endif /* UPROCESSINFO_H */
+
Class for getting information about the current process.
+
virtual ~UProcessInfo()
Virtual destructor.
+
static long int getMemoryUsage()
Get the memory used by the current process.
+
UProcessInfo()
Constructor.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/USemaphore_8h_source.html b/preview/pr-1773/api/latest/USemaphore_8h_source.html new file mode 100644 index 00000000..511d3c3a --- /dev/null +++ b/preview/pr-1773/api/latest/USemaphore_8h_source.html @@ -0,0 +1,353 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/USemaphore.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
USemaphore.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20/*
+
21 * Originally written by Phillip Sitbon
+
22 * Copyright 2003
+
23 */
+
24
+
25#ifndef USEMAPHORE_H
+
26#define USEMAPHORE_H
+
27
+
28#include <errno.h>
+
29
+
30#ifdef _WIN32
+
31#include "rtabmap/utilite/Win32/UWin32.h"
+
32#include <atomic>
+
33#define SEM_VALUE_MAX ((int) ((~0u) >> 1))
+
34#else
+
35#include <pthread.h>
+
36#include <sys/time.h>
+
37#endif
+
38
+
+ +
56{
+
57public:
+
+
62 USemaphore( int initValue = 0 )
+
63#ifdef _WIN32
+
64 : _count(initValue)
+
65#endif
+
66 {
+
67#ifdef _WIN32
+
68 S = CreateSemaphore(0,initValue,SEM_VALUE_MAX,0);
+
69#else
+
70 _available = initValue;
+
71 pthread_mutex_init(&_waitMutex, NULL);
+
72 pthread_cond_init(&_cond, NULL);
+
73#endif
+
74 }
+
+
75
+
76 virtual ~USemaphore()
+
77 {
+
78#ifdef _WIN32
+
79 CloseHandle(S);
+
80#else
+
81 pthread_cond_destroy(&_cond);
+
82 pthread_mutex_destroy(&_waitMutex);
+
83#endif
+
84 }
+
85
+
94#ifdef _WIN32
+
95 bool acquire(int n = 1, int ms = 0) const
+
96 {
+
97 int rt = 0;
+
98 while(n-- > 0 && rt==0)
+
99 {
+
100 rt = WaitForSingleObject((HANDLE)S, ms<=0?INFINITE:ms);
+
101 if(rt == 0) {
+
102 --_count;
+
103 }
+
104 }
+
105 return rt == 0;
+
106 }
+
107#else
+
+
108 bool acquire(int n = 1, int ms = 0)
+
109 {
+
110 int rt = 0;
+
111 pthread_mutex_lock(&_waitMutex);
+
112 while (n > _available && rt == 0)
+
113 {
+
114 if(ms > 0)
+
115 {
+
116 struct timespec timeToWait;
+
117 struct timeval now;
+
118
+
119 gettimeofday(&now,NULL);
+
120
+
121 timeToWait.tv_sec = now.tv_sec + ms/1000;
+
122 timeToWait.tv_nsec = (now.tv_usec+1000UL*(ms%1000))*1000UL;
+
123
+
124 rt = pthread_cond_timedwait(&_cond, &_waitMutex, &timeToWait);
+
125 }
+
126 else
+
127 {
+
128 rt = pthread_cond_wait(&_cond, &_waitMutex);
+
129 }
+
130 }
+
131 if(rt == 0)
+
132 {
+
133 // only remove them if waiting did not fail
+
134 _available -= n;
+
135 }
+
136 pthread_mutex_unlock(&_waitMutex);
+
137 return rt == 0;
+
138 }
+
+
139#endif
+
140
+
141 /*
+
142 * Try to acquire the semaphore, not a blocking call.
+
143 * @return 0 if the semaphore was acquired, EAGAIN if it couldn't be taken
+
144 * without waiting.
+
145 * @note The Windows overload takes no argument (it always acquires 1).
+
146 */
+
147#ifdef _WIN32
+
148 int acquireTry() const
+
149 {
+
150 // Non-blocking try-acquire: timeout 0, not INFINITE. INFINITE here
+
151 // turned this into a blocking acquire and hung tests when the count
+
152 // reached 0.
+
153 if(WaitForSingleObject((HANDLE)S, 0) == WAIT_OBJECT_0)
+
154 {
+
155 --_count;
+
156 return 0;
+
157 }
+
158 return EAGAIN;
+
159 }
+
160#else
+
+
164 int acquireTry(int n)
+
165 {
+
166 pthread_mutex_lock(&_waitMutex);
+
167 if(n > _available)
+
168 {
+
169 pthread_mutex_unlock(&_waitMutex);
+
170 return EAGAIN;
+
171 }
+
172 _available -= n;
+
173 pthread_mutex_unlock(&_waitMutex);
+
174 return 0;
+
175 }
+
+
176#endif
+
177
+
186#ifdef _WIN32
+
187 int release(int n = 1) const
+
188 {
+
189 if(ReleaseSemaphore((HANDLE)S, n, 0))
+
190 {
+
191 _count += n;
+
192 return 0;
+
193 }
+
194 return ERANGE;
+
195 }
+
196#else
+
+
197 int release(int n = 1)
+
198 {
+
199 pthread_mutex_lock(&_waitMutex);
+
200 _available += n;
+
201 pthread_cond_broadcast(&_cond);
+
202 pthread_mutex_unlock(&_waitMutex);
+
203 return 0;
+
204 }
+
+
205#endif
+
206
+
211#ifdef _WIN32
+
212 int value() const
+
213 {
+
214 // ReleaseSemaphore(S, 0, &V) returns FALSE on Windows (release count
+
215 // must be >= 1) and never writes V, so we mirror the count in an atomic
+
216 // instead. The value is eventually-consistent under concurrent
+
217 // acquire/release but accurate at quiescence.
+
218 return (int)_count.load();
+
219 }
+
220#else
+
+
221 int value()
+
222 {
+
223 int value = 0;
+
224 pthread_mutex_lock(&_waitMutex);
+
225 value = _available;
+
226 pthread_mutex_unlock(&_waitMutex);
+
227 return value;
+
228 }
+
+
229#endif
+
230
+
231#ifdef _WIN32
+
232 /*
+
233 * Reset the semaphore count.
+
234 * @param init the initial value
+
235 * TODO implement on posix ?
+
236 */
+
237 void reset( int init = 0 )
+
238 {
+
239 CloseHandle(S);
+
240 S = CreateSemaphore(0,init,SEM_VALUE_MAX,0);
+
241 _count = init;
+
242 }
+
243#endif
+
244
+
245private:
+
246 void operator=(const USemaphore &){}
+
247#ifdef _WIN32
+
248 USemaphore(const USemaphore &S){}
+
249 HANDLE S;
+
250 mutable std::atomic<long> _count;
+
251#else
+
252 USemaphore(const USemaphore &):_available(0){}
+
253 pthread_mutex_t _waitMutex;
+
254 pthread_cond_t _cond;
+
255 int _available;
+
256#endif
+
257};
+
+
258
+
259#endif // USEMAPHORE_H
+ +
bool acquire(int n=1, int ms=0)
Definition USemaphore.h:108
+
int acquireTry(int n)
Definition USemaphore.h:164
+
int release(int n=1)
Definition USemaphore.h:197
+
int value()
Definition USemaphore.h:221
+
USemaphore(int initValue=0)
Definition USemaphore.h:62
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UStl_8h.html b/preview/pr-1773/api/latest/UStl_8h.html new file mode 100644 index 00000000..59d9a3a1 --- /dev/null +++ b/preview/pr-1773/api/latest/UStl_8h.html @@ -0,0 +1,2098 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UStl.h File Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UStl.h File Reference
+
+
+ +

Wrappers of STL for convenient functions. +More...

+
#include <list>
+#include <map>
+#include <set>
+#include <vector>
+#include <string>
+#include <algorithm>
+#include <stdlib.h>
+
+Include dependency graph for UStl.h:
+
+
+ + + + + + + + + + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class K , class V >
std::list< K > uUniqueKeys (const std::multimap< K, V > &mm)
 
template<class K , class V >
std::vector< K > uKeys (const std::multimap< K, V > &mm)
 
template<class K , class V >
std::list< K > uKeysList (const std::multimap< K, V > &mm)
 
template<class K , class V >
std::vector< V > uValues (const std::multimap< K, V > &mm)
 
template<class K , class V >
std::list< V > uValuesList (const std::multimap< K, V > &mm)
 
template<class K , class V >
std::list< V > uValues (const std::multimap< K, V > &mm, const K &key)
 
template<class K , class V >
std::vector< K > uKeys (const std::map< K, V > &m)
 
template<class K , class V >
std::list< K > uKeysList (const std::map< K, V > &m)
 
template<class K , class V >
std::set< K > uKeysSet (const std::map< K, V > &m)
 
template<class K , class V >
std::vector< V > uValues (const std::map< K, V > &m)
 
template<class K , class V >
std::list< V > uValuesList (const std::map< K, V > &m)
 
template<class K , class V >
V uValue (const std::map< K, V > &m, const K &key, const V &defaultValue=V())
 
template<class K , class V >
V uTake (std::map< K, V > &m, const K &key, const V &defaultValue=V())
 
template<class V >
std::list< V >::iterator uIteratorAt (std::list< V > &list, const unsigned int &pos)
 
template<class V >
std::list< V >::const_iterator uIteratorAt (const std::list< V > &list, const unsigned int &pos)
 
template<class V >
std::set< V >::iterator uIteratorAt (std::set< V > &set, const unsigned int &pos)
 
template<class V >
std::set< V >::const_iterator uIteratorAt (const std::set< V > &set, const unsigned int &pos)
 
template<class V >
std::vector< V >::iterator uIteratorAt (std::vector< V > &v, const unsigned int &pos)
 
template<class V >
std::vector< V >::const_iterator uIteratorAt (const std::vector< V > &v, const unsigned int &pos)
 
template<class V >
V & uValueAt (std::list< V > &list, const unsigned int &pos)
 
template<class V >
const V & uValueAt (const std::list< V > &list, const unsigned int &pos)
 
template<class V >
bool uContains (const std::list< V > &list, const V &value)
 
template<class K , class V >
bool uContains (const std::map< K, V > &map, const K &key)
 
template<class K , class V >
bool uContains (const std::multimap< K, V > &map, const K &key)
 
template<class K , class V >
void uInsert (std::map< K, V > &map, const std::pair< K, V > &pair)
 
template<class K , class V >
void uInsert (std::map< K, V > &map, const std::map< K, V > &items)
 
template<class V >
std::vector< V > uListToVector (const std::list< V > &list)
 
template<class V >
std::list< V > uVectorToList (const std::vector< V > &v)
 
template<class K , class V >
std::map< K, V > uMultimapToMap (const std::multimap< K, V > &m)
 
template<class K , class V >
std::map< K, V > uMultimapToMapUnique (const std::multimap< K, V > &m)
 
template<class V >
void uAppend (std::list< V > &list, const std::list< V > &newItems)
 
template<class V >
int uIndexOf (const std::vector< V > &list, const V &value)
 
std::list< std::string > uSplit (const std::string &str, char separator=' ')
 
std::string uJoin (const std::list< std::string > &strings, const std::string &separator="")
 
bool uIsDigit (const char c)
 
bool uIsInteger (const std::string &str, bool checkForSign=true)
 
bool uIsNumber (const std::string &str)
 
std::list< std::string > uSplitNumChar (const std::string &str)
 
int uStrNumCmp (const std::string &a, const std::string &b)
 
bool uStrContains (const std::string &string, const std::string &substring)
 
int uCompareVersion (const std::string &version, int major, int minor=-1, int patch=-1)
 
std::string uPad (const std::string &title, int padding=20)
 
+

Detailed Description

+

Wrappers of STL for convenient functions.

+

All functions you will find here are here for the use of STL in a more convenient way.

+ +

Definition in file UStl.h.

+

Function Documentation

+ +

◆ uUniqueKeys()

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::list< K > uUniqueKeys (const std::multimap< K, V > & mm)
+
+inline
+
+

Get unique keys from a std::multimap.

Parameters
+ + +
mmthe multimap
+
+
+
Returns
the list which contains unique keys
+ +

Definition at line 46 of file UStl.h.

+ +
+
+ +

◆ uKeys() [1/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::vector< K > uKeys (const std::multimap< K, V > & mm)
+
+inline
+
+

Get all keys from a std::multimap.

Parameters
+ + +
mmthe multimap
+
+
+
Returns
the vector which contains all keys (may contains duplicated keys)
+ +

Definition at line 67 of file UStl.h.

+ +
+
+ +

◆ uKeysList() [1/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::list< K > uKeysList (const std::multimap< K, V > & mm)
+
+inline
+
+

Get all keys from a std::multimap.

Parameters
+ + +
mmthe multimap
+
+
+
Returns
the list which contains all keys (may contains duplicated keys)
+ +

Definition at line 84 of file UStl.h.

+ +
+
+ +

◆ uValues() [1/3]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::vector< V > uValues (const std::multimap< K, V > & mm)
+
+inline
+
+

Get all values from a std::multimap.

Parameters
+ + +
mmthe multimap
+
+
+
Returns
the vector which contains all values (contains values from duplicated keys)
+ +

Definition at line 100 of file UStl.h.

+ +
+
+ +

◆ uValuesList() [1/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::list< V > uValuesList (const std::multimap< K, V > & mm)
+
+inline
+
+

Get all values from a std::multimap.

Parameters
+ + +
mmthe multimap
+
+
+
Returns
the list which contains all values (contains values from duplicated keys)
+ +

Definition at line 117 of file UStl.h.

+ +
+
+ +

◆ uValues() [2/3]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::list< V > uValues (const std::multimap< K, V > & mm,
const K & key 
)
+
+inline
+
+

Get values for a specified key from a std::multimap.

Parameters
+ + + +
mmthe multimap
keythe key
+
+
+
Returns
the list which contains the values of the key
+ +

Definition at line 134 of file UStl.h.

+ +
+
+ +

◆ uKeys() [2/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::vector< K > uKeys (const std::map< K, V > & m)
+
+inline
+
+

Get all keys from a std::map.

Parameters
+ + +
mthe map
+
+
+
Returns
the vector of keys
+ +

Definition at line 152 of file UStl.h.

+ +
+
+ +

◆ uKeysList() [2/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::list< K > uKeysList (const std::map< K, V > & m)
+
+inline
+
+

Get all keys from a std::map.

Parameters
+ + +
mthe map
+
+
+
Returns
the list of keys
+ +

Definition at line 170 of file UStl.h.

+ +
+
+ +

◆ uKeysSet()

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::set< K > uKeysSet (const std::map< K, V > & m)
+
+inline
+
+

Get all keys from a std::map.

Parameters
+ + +
mthe map
+
+
+
Returns
the set of keys
+ +

Definition at line 186 of file UStl.h.

+ +
+
+ +

◆ uValues() [3/3]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::vector< V > uValues (const std::map< K, V > & m)
+
+inline
+
+

Get all values from a std::map.

Parameters
+ + +
mthe map
+
+
+
Returns
the vector of values
+ +

Definition at line 202 of file UStl.h.

+ +
+
+ +

◆ uValuesList() [2/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::list< V > uValuesList (const std::map< K, V > & m)
+
+inline
+
+

Get all values from a std::map.

Parameters
+ + +
mthe map
+
+
+
Returns
the list of values
+ +

Definition at line 220 of file UStl.h.

+ +
+
+ +

◆ uValue()

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
V uValue (const std::map< K, V > & m,
const K & key,
const V & defaultValue = V() 
)
+
+inline
+
+

Get the value of a specified key from a std::map.

Parameters
+ + + + +
mthe map
keythe key
defaultValuethe default value used if the key is not found
+
+
+
Returns
the value
+ +

Definition at line 238 of file UStl.h.

+ +
+
+ +

◆ uTake()

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
V uTake (std::map< K, V > & m,
const K & key,
const V & defaultValue = V() 
)
+
+inline
+
+

Get the value of a specified key from a std::map. This will remove the value from the map;

Parameters
+ + + + +
mthe map
keythe key
defaultValuethe default value used if the key is not found
+
+
+
Returns
the value
+ +

Definition at line 258 of file UStl.h.

+ +
+
+ +

◆ uIteratorAt() [1/6]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::list< V >::iterator uIteratorAt (std::list< V > & list,
const unsigned int & pos 
)
+
+inline
+
+

Get the iterator at a specified position in a std::list. If the position is out of range, the result is the end iterator of the list.

Parameters
+ + + +
listthe list
posthe index position in the list
+
+
+
Returns
the iterator at the specified index
+ +

Definition at line 282 of file UStl.h.

+ +
+
+ +

◆ uIteratorAt() [2/6]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::list< V >::const_iterator uIteratorAt (const std::list< V > & list,
const unsigned int & pos 
)
+
+inline
+
+

Get the iterator at a specified position in a std::list. If the position is out of range, the result is the end iterator of the list.

Parameters
+ + + +
listthe list
posthe index position in the list
+
+
+
Returns
the iterator at the specified index
+ +

Definition at line 300 of file UStl.h.

+ +
+
+ +

◆ uIteratorAt() [3/6]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::set< V >::iterator uIteratorAt (std::set< V > & set,
const unsigned int & pos 
)
+
+inline
+
+

Get the iterator at a specified position in a std::set. If the position is out of range, the result is the end iterator of the set.

Parameters
+ + + +
setthe set
posthe index position in the set
+
+
+
Returns
the iterator at the specified index
+ +

Definition at line 318 of file UStl.h.

+ +
+
+ +

◆ uIteratorAt() [4/6]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::set< V >::const_iterator uIteratorAt (const std::set< V > & set,
const unsigned int & pos 
)
+
+inline
+
+

Get the iterator at a specified position in a std::set. If the position is out of range, the result is the end iterator of the set.

Parameters
+ + + +
setthe set
posthe index position in the set
+
+
+
Returns
the iterator at the specified index
+ +

Definition at line 336 of file UStl.h.

+ +
+
+ +

◆ uIteratorAt() [5/6]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::vector< V >::iterator uIteratorAt (std::vector< V > & v,
const unsigned int & pos 
)
+
+inline
+
+

Get the iterator at a specified position in a std::vector. If the position is out of range, the result is the end iterator of the vector.

Parameters
+ + + +
vthe vector
posthe index position in the vector
+
+
+
Returns
the iterator at the specified index
+ +

Definition at line 354 of file UStl.h.

+ +
+
+ +

◆ uIteratorAt() [6/6]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::vector< V >::const_iterator uIteratorAt (const std::vector< V > & v,
const unsigned int & pos 
)
+
+inline
+
+

Get the iterator at a specified position in a std::vector. If the position is out of range, the result is the end iterator of the vector.

Parameters
+ + + +
vthe vector
posthe index position in the vector
+
+
+
Returns
the iterator at the specified index
+ +

Definition at line 367 of file UStl.h.

+ +
+
+ +

◆ uValueAt() [1/2]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
V & uValueAt (std::list< V > & list,
const unsigned int & pos 
)
+
+inline
+
+

Get the value at a specified position in a std::list. If the position is out of range, the result is undefined.

Parameters
+ + + +
listthe list
posthe index position in the list
+
+
+
Returns
the value at the specified index
+ +

Definition at line 380 of file UStl.h.

+ +
+
+ +

◆ uValueAt() [2/2]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const V & uValueAt (const std::list< V > & list,
const unsigned int & pos 
)
+
+inline
+
+

Get the value at a specified position in a std::list. If the position is out of range, the result is undefined.

Parameters
+ + + +
listthe list
posthe index position in the list
+
+
+
Returns
the value at the specified index
+ +

Definition at line 394 of file UStl.h.

+ +
+
+ +

◆ uContains() [1/3]

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool uContains (const std::list< V > & list,
const V & value 
)
+
+inline
+
+

Check if the list contains the specified value.

Parameters
+ + + +
listthe list
valuethe value
+
+
+
Returns
true if the value is found in the list, otherwise false
+ +

Definition at line 407 of file UStl.h.

+ +
+
+ +

◆ uContains() [2/3]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool uContains (const std::map< K, V > & map,
const K & key 
)
+
+inline
+
+

Check if the map contains the specified key.

Parameters
+ + + +
mapthe map
keythe key
+
+
+
Returns
true if the value is found in the map, otherwise false
+ +

Definition at line 419 of file UStl.h.

+ +
+
+ +

◆ uContains() [3/3]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool uContains (const std::multimap< K, V > & map,
const K & key 
)
+
+inline
+
+

Check if the multimap contains the specified key.

Parameters
+ + + +
mapthe map
keythe key
+
+
+
Returns
true if the value is found in the map, otherwise false
+ +

Definition at line 431 of file UStl.h.

+ +
+
+ +

◆ uInsert() [1/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void uInsert (std::map< K, V > & map,
const std::pair< K, V > & pair 
)
+
+inline
+
+

Insert an item in the map. Contrary to the insert in the STL, if the key already exists, the value will be replaced by the new one.

+ +

Definition at line 441 of file UStl.h.

+ +
+
+ +

◆ uInsert() [2/2]

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void uInsert (std::map< K, V > & map,
const std::map< K, V > & items 
)
+
+inline
+
+

Insert items in the map. Contrary to the insert in the STL, if the key already exists, the value will be replaced by the new one.

+ +

Definition at line 455 of file UStl.h.

+ +
+
+ +

◆ uListToVector()

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + +
std::vector< V > uListToVector (const std::list< V > & list)
+
+inline
+
+

Convert a std::list to a std::vector.

Parameters
+ + +
listthe list
+
+
+
Returns
the vector
+ +

Definition at line 473 of file UStl.h.

+ +
+
+ +

◆ uVectorToList()

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + +
std::list< V > uVectorToList (const std::vector< V > & v)
+
+inline
+
+

Convert a std::vector to a std::list.

Parameters
+ + +
vthe vector
+
+
+
Returns
the list
+ +

Definition at line 484 of file UStl.h.

+ +
+
+ +

◆ uMultimapToMap()

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::map< K, V > uMultimapToMap (const std::multimap< K, V > & m)
+
+inline
+
+

Convert a std::multimap to a std::map

See also
uMultimapToMapUnique to keep only unique keys
+ +

Definition at line 494 of file UStl.h.

+ +
+
+ +

◆ uMultimapToMapUnique()

+ +
+
+
+template<class K , class V >
+ + + + + +
+ + + + + + + + +
std::map< K, V > uMultimapToMapUnique (const std::multimap< K, V > & m)
+
+inline
+
+

Convert a std::multimap to a std::map, keeping only unique keys!

+ +

Definition at line 503 of file UStl.h.

+ +
+
+ +

◆ uAppend()

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void uAppend (std::list< V > & list,
const std::list< V > & newItems 
)
+
+inline
+
+

Append a list to another list.

Parameters
+ + + +
listthe list on which the other list will be appended
newItemsthe list of items to be appended
+
+
+ +

Definition at line 524 of file UStl.h.

+ +
+
+ +

◆ uIndexOf()

+ +
+
+
+template<class V >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int uIndexOf (const std::vector< V > & list,
const V & value 
)
+
+inline
+
+

Get the index in the list of the specified value. S negative index is returned if the value is not found.

Parameters
+ + + +
listthe list
valuethe value
+
+
+
Returns
the index of the value in the list
+ +

Definition at line 537 of file UStl.h.

+ +
+
+ +

◆ uSplit()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::list< std::string > uSplit (const std::string & str,
char separator = ' ' 
)
+
+inline
+
+

Split a string into multiple string around the specified separator. Example:

std::list<std::string> v = split("Hello the world!", ' ');
+

The list v will contain {"Hello", "the", "world!"}

Parameters
+ + + +
strthe string
separatorthe separator character
+
+
+
Returns
the list of strings
+ +

Definition at line 564 of file UStl.h.

+ +
+
+ +

◆ uJoin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::string uJoin (const std::list< std::string > & strings,
const std::string & separator = "" 
)
+
+inline
+
+

Join multiple strings into one string with optional separator. Example:

std::list<std::string> v;
+
v.push_back("Hello");
+
v.push_back("world!");
+
std::string joined = uJoin(v, " ");
+
std::string uJoin(const std::list< std::string > &strings, const std::string &separator="")
Definition UStl.h:601
+

The output string is "Hello world!"

Parameters
+ + + +
stringsa list of strings
separatorthe separator string
+
+
+
Returns
the joined string
+ +

Definition at line 601 of file UStl.h.

+ +
+
+ +

◆ uIsDigit()

+ +
+
+ + + + + +
+ + + + + + + + +
bool uIsDigit (const char c)
+
+inline
+
+

Check if a character is a digit.

Parameters
+ + +
cthe character
+
+
+
Returns
true if the character is a digit (if c >= '0' && c <= '9')
+ +

Definition at line 620 of file UStl.h.

+ +
+
+ +

◆ uIsInteger()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool uIsInteger (const std::string & str,
bool checkForSign = true 
)
+
+inline
+
+

Check if a string is a integer number.

Parameters
+ + +
strthe string
+
+
+
Returns
true if the string is a integer number
+ +

Definition at line 630 of file UStl.h.

+ +
+
+ +

◆ uIsNumber()

+ +
+
+ + + + + +
+ + + + + + + + +
bool uIsNumber (const std::string & str)
+
+inline
+
+

Check if a string is a number (integer or float).

Parameters
+ + +
strthe string
+
+
+
Returns
true if the string is a number
+ +

Definition at line 645 of file UStl.h.

+ +
+
+ +

◆ uSplitNumChar()

+ +
+
+ + + + + +
+ + + + + + + + +
std::list< std::string > uSplitNumChar (const std::string & str)
+
+inline
+
+

Split a string into number and character strings. Example:

std::list<std::string> v = uSplit("Hello 03 my 65 world!");
+
std::list< std::string > uSplit(const std::string &str, char separator=' ')
Definition UStl.h:564
+

The list v will contain {"Hello ", "03", " my ", "65", " world!"}

Parameters
+ + +
strthe string
+
+
+
Returns
the list of strings
+ +

Definition at line 670 of file UStl.h.

+ +
+
+ +

◆ uStrNumCmp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int uStrNumCmp (const std::string & a,
const std::string & b 
)
+
+inline
+
+

Compare two alphanumeric strings. Useful to sort filenames (human-like sorting). Example:

std::string a = "Image9.jpg";
+
std::string b = "Image10.jpg";
+
int r = uStrNumCmp(a, b); // r returns -1 (a is smaller than b). In contrast, std::strcmp(a, b) would return 1.
+
int uStrNumCmp(const std::string &a, const std::string &b)
Definition UStl.h:717
+
Parameters
+ + + +
athe first string
bthe second string
+
+
+
Returns
-1 if a<b, 0 if a=b and 1 if a>b
+ +

Definition at line 717 of file UStl.h.

+ +
+
+ +

◆ uStrContains()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool uStrContains (const std::string & string,
const std::string & substring 
)
+
+inline
+
+

Check if a string contains a specified substring.

+ +

Definition at line 785 of file UStl.h.

+ +
+
+ +

◆ uCompareVersion()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int uCompareVersion (const std::string & version,
int major,
int minor = -1,
int patch = -1 
)
+
+inline
+
+ +

Definition at line 790 of file UStl.h.

+ +
+
+ +

◆ uPad()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::string uPad (const std::string & title,
int padding = 20 
)
+
+inline
+
+ +

Definition at line 812 of file UStl.h.

+ +
+
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UStl_8h.js b/preview/pr-1773/api/latest/UStl_8h.js new file mode 100644 index 00000000..a07b7710 --- /dev/null +++ b/preview/pr-1773/api/latest/UStl_8h.js @@ -0,0 +1,43 @@ +var UStl_8h = +[ + [ "uUniqueKeys", "UStl_8h.html#a62335030b4c0d80f80e7c4a21721c05e", null ], + [ "uKeys", "UStl_8h.html#aa67c880cc8f27c9270c7bd4bdce62ca7", null ], + [ "uKeysList", "UStl_8h.html#ae6db6e3e229492a7d62f310705eda986", null ], + [ "uValues", "UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314", null ], + [ "uValuesList", "UStl_8h.html#a9419324b5c47549d954313582e69dc5c", null ], + [ "uValues", "UStl_8h.html#a3514dc64eabe675042a4d1b7d8770910", null ], + [ "uKeys", "UStl_8h.html#a1f58dc31a71daf05032ea06518098021", null ], + [ "uKeysList", "UStl_8h.html#a07de105144c60cbf3d96725c2587ab61", null ], + [ "uKeysSet", "UStl_8h.html#adc7941aec77b49687c0cb79be23eb539", null ], + [ "uValues", "UStl_8h.html#a081a7dd08a9962ee1651eb4ddb01729e", null ], + [ "uValuesList", "UStl_8h.html#ab5ea404864ed672cca3a05435786f4be", null ], + [ "uValue", "UStl_8h.html#a155cd26667d2f88ee05dd3d819ae8182", null ], + [ "uTake", "UStl_8h.html#a6242bd5879bd7f06b8de6498650aa3b7", null ], + [ "uIteratorAt", "UStl_8h.html#aa8bd447989a2ac6dbd4537cabdb9b8a2", null ], + [ "uIteratorAt", "UStl_8h.html#a89bf42f074b0882296f02e7b7e7f03ce", null ], + [ "uIteratorAt", "UStl_8h.html#a14d41e1a496b95a083f98d1b6c3d829b", null ], + [ "uIteratorAt", "UStl_8h.html#a06a98a13ef2041e0553e6c8a61c81b9e", null ], + [ "uIteratorAt", "UStl_8h.html#aee9c8ca5f61ce7b0d778a092e4dd7d16", null ], + [ "uIteratorAt", "UStl_8h.html#aca319f475b50c21cd5a1ad7e13b45d68", null ], + [ "uValueAt", "UStl_8h.html#a27a0f94be07c53df9827b082eb107337", null ], + [ "uValueAt", "UStl_8h.html#af9a13d96ccaf6094128eb350d0253d22", null ], + [ "uContains", "UStl_8h.html#a4cad7064de642559152c873f2ca9a471", null ], + [ "uContains", "UStl_8h.html#a601d3abba756f3a7a666d463080d159c", null ], + [ "uContains", "UStl_8h.html#a078a72c8c7cf5821d67140f3d38f27e0", null ], + [ "uInsert", "UStl_8h.html#ac9c9d1520c7facb601ae56cab3762b41", null ], + [ "uInsert", "UStl_8h.html#af516369e4f6b3977e543dfadbc50dc31", null ], + [ "uListToVector", "UStl_8h.html#a85cf086e57dd289775cf2fd7c82a6ffe", null ], + [ "uVectorToList", "UStl_8h.html#a5a5fb7b34b8c3adb63d641358b7a7e1b", null ], + [ "uMultimapToMap", "UStl_8h.html#af9a778651477107bcba607087c3e02ea", null ], + [ "uMultimapToMapUnique", "UStl_8h.html#ac65e613c42858a01f5d4f29446f53cd6", null ], + [ "uAppend", "UStl_8h.html#a472c2e123cd6eb04165b2d3461a634d3", null ], + [ "uIndexOf", "UStl_8h.html#ad3918a32500de71ba8bb7aab99dccf46", null ], + [ "uSplit", "UStl_8h.html#ab1862437019327ce8419569e3c2ea90f", null ], + [ "uJoin", "UStl_8h.html#a2a1ab992e6cc8d3057000847eea5b2e0", null ], + [ "uIsDigit", "UStl_8h.html#ad24f845084c84b60614bb789e0d1966a", null ], + [ "uIsInteger", "UStl_8h.html#afa021f46be20f6e6c2e5210eced0ae0e", null ], + [ "uIsNumber", "UStl_8h.html#a5ed24437c4b893ed09886ea64ea33ba0", null ], + [ "uSplitNumChar", "UStl_8h.html#a4045d74e1a84cde1489a754375c1d55e", null ], + [ "uStrNumCmp", "UStl_8h.html#af48fdad882d4429e4044372589503da1", null ], + [ "uStrContains", "UStl_8h.html#ab4e2c55d7930e99514a2315a2c6b4f82", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UStl_8h__dep__incl.map b/preview/pr-1773/api/latest/UStl_8h__dep__incl.map new file mode 100644 index 00000000..e25cb9cd --- /dev/null +++ b/preview/pr-1773/api/latest/UStl_8h__dep__incl.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UStl_8h__dep__incl.md5 b/preview/pr-1773/api/latest/UStl_8h__dep__incl.md5 new file mode 100644 index 00000000..d00412ef --- /dev/null +++ b/preview/pr-1773/api/latest/UStl_8h__dep__incl.md5 @@ -0,0 +1 @@ +9ac14c861abfdc0354d9263102a95873 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UStl_8h__dep__incl.png b/preview/pr-1773/api/latest/UStl_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..620e90494d1e97c3eddaed75286e88048ade08c9 GIT binary patch literal 34503 zcmZ_01yojB)Hb^5h8GD@X_PVuK@g;o?go{RkZzQcE|pS18cAsp0SQ4$>247bK{}O? z=FWZo@4x>Y4e)nE`tr^dJ<}-Pwp(am8e32MI5HdvtSuF&?VL%WpQ9^w9 zNzL}!OZX4|LuGkc!7Q~zp zYnWI6{t+zPA|eXuy}ad@(Z0y{FH6IgdCGZN#RRW{QrFkeX89A`i1`%P^^!B>%WzZUfpo#ZJS_oUK(JL zm6uNyC5;=sTfaJ1Dx;*N#Bf*VCJ_C>Ev+F^M@vro6`+1c6Quzj#kQKX z9ZYvTF}I**ewx+hXv+^>Q9s}j(@<>zi%}36&Ux+5YeKXsdX{H$}P%{)L z7Znkio&EZvqqq0#k55mojtqXQc=R$Ui4bviagqAB@q;Y-6+OIgX`)jaN0uvJxTzq`#8;LlGTDpj?O-9PZ`uaNA zLMNSh6lDyYv;ob~@UY9~v{<@B$^r5EWR*-fIm68Sd}wSeCL|;T?x=rIT)*dMZgaoh zld}8u_25sRM2}BSG>wd&$4H#g<>lpRiF9^$E)C`oSnwN$-T_M>36%~^6>@sGG>~OI zU4Q#Ek4ZFa8Pep`coNnxenhIKrbZ|3D+~sOp`p=T7eN9{{7+~u-LjWVyzyXWaWNd; zp6%*YWs#5UmYST@HGU@|VWby=U`4?mBUv&8%O3C$%Jb*LYifkkh1Ju91LNbVNf|__ z`}+F!*DCsBU%q4+9n28(fe(Rjsx5teHHCJ%KZhkIp3m?<^+F`ej2lo3yWi-?aB{fY`tHFe-p6YOxC8|7-G3XU!$bwq z6B7n1X~LAJr>98QoBh*&jb{ydmNwr$T(RoUxZVIe^G-v)H$_mU!m8KZ*lFTD7W@(U zzR>@Mf&~}u5!KV9@}<4qye;wq60o=a-TZK8840-Ypl${ZfbO>IWqh)WxJXB5XY=xK zeja6RT}K>W+r>+$PbcBAvgYRHp|39dWFxIoOjPvV#a_-EH`=P~#xbp-$5WH1QeOvLfukW2)xs`=QQ+vDoKpv7&1Z-#?b}Z??2Z zUuI{Y9V@-Z$;la@RVe%T@vRYCL5mN6n~xu_Pf8K8q|eRG1(Te=p-^`3qdnIN+>YF} z_Wq;PoE$b{5|UK`bqGfG{{mt-cK)>`Tqgn{7-wharlvp~kIy|g z^K5L$*3o8T&eNkkXLt7!O+RvSa(FQB@_yHfBq5fMk54+!f^0~3cD7N%-EBN$QLCqR zVpB!f>B$f=_Q-I#{K*E^DX&wHFlqd=AVH2kGeUZv8XY4%Qc=v|SW=`>#bLpI!TZwi-&wCO5PH zXU?F`ooj7<{nzX)>kkoJ#Lv$U!ZVZj;S!sG%@FRdU%y8CS~V{A-`OU;>7sh#{HUr%*@P-iFSW~cN#SMiB0<*IaJzzJ6Bs~@p`kBhVkoAjrc}i9OG-#ld!uJy__eVS z4f!h5YkR?ZvXU#{uVzqWBx(HX*V)?nY8_o&L0X0J8L1Gm8k9^fDap9KP?wUz+JLAd zBqUT*Q-dJjc41_fZp{Q!h{yJgtKYnNlS(%Cro=CB7c?O(^Zs5~m_0o?vi?ygXz$<< z)uyk@0LPM>pWiw*M$5>^SmUuuJN4s-$Lp_xRoB8E3hBw;zI_{ga%$?Olv@tZVRZ^e z0?VGBp3Gum410Tf&QG3{3B0+g|E{UKn*{z}WOw-81JUKAuD?^CpNc+zfyRH*V6PNz zNG3v#Q%yy>#rqX0d{(>r6ku?Jg^KyDLu->&B$k$zNg^IawK9cOVLG&kR=$kSd}+#z z8Ua}4ukXdMX~bmo!Wxfon^OdHKk!0kj1&c1wF;fAv@zentfeV5%{L~$eXN6ngQS~}qAS;z^WVJNp+7kZ8!B*2gOlat;%aUQCGpsUxOdUD zmVSGo7f0hXw)w%Q$G_ITRiNP@Kc7P`>SCx=FuoL_X0ZW0)({^}=6qK(yZ8M@cg79R^^LvoO#BY6SoNlaLc~_47zcb}b>f*D%-2@ZwEn%CC9!+3&cm+c z!6({{jg2H>m+VUa<)OSJeoJET&~pDXKcuPLyd6P)`fig^6XUtMy5LguV`5{0*n0H~5i6m%vY)IFYQ!a@@Y0KWGX z6|DhSI0J>+9BE=cdLnPxUBv%QxzPzbGw-c^3l^I8#Mx~4$N2E!!%VG0TN-S2ieiJL(C*GoDJ!eDeGV!y7b#h;UL|??@?}J1F`+7)$N5-KIAuV4e2Tr?k!cQ!wNSC zqxq7joJiVs+j&OP!qSq3ogE(!4-d>*5=B?j4aLLD2IUX&)H3co1AN1opme{^od_Pd z_2&;??VZNc!>h*L%Xt?Q6ZzTOP()yW?3p+^WXwim6!w;6-?_zxLlg;62%#4uwdR;W~Z3Nmad(tZ2>wJ;b>GQof0gVuhbCwYOq`SRE~4)EUX8T7@`GQ*%@79tsZ z0H-l_L7fKuv0mB#qYSz8GL3I+iDuGE^4*QlG$pefZY;?K@@Imqwk+XBRs_j))cjh> zqV#Cd@xSUEc%z{+?N2I_&&;nbSE-bSXe3C#;|{y8OKNCH`MZdSheQL6ppk$S6_BATX@@U1qp zXY7Kl7geeMo<`@IB!x-wZ`I6K-({{>hflUK+SW2CSdj#gBF&4(k=jEG>1(DG}_KPg|#0F33Js%k-;|EIksR z%6!@o@z+k7&cE$VhvL`utBs@nnecq}<9O{hgB&5AurQ)PnNi`pcd_}i+8TBC_Kyx< zX4gyy6^DNN^V{)WSTb`xZr}|>G9>#0zxyN|>rfBF8!oG>1yKIHBg7&=5EeY_pIi>_ zz2>Z6S}tsHC!Lqs#`3+6YmZE%cp7mL`BvVNtT&0tf@oxj9_ZN8-OI7P>F1_6GHrC* ziLtIwejxPpbI4Tir2eBTFN@phNYTc5!Hk?p1&^6c@b zJmK>>m-6^qUf2bFS&(Na?eM#Si>m25wg^%~!mNjRsN_)I zf6j>sl0ypWVt|NW= zc}+}PlHeS=IH{EL>Yw>(XI#cly<=9PJ_)55MI3z z?=R)szA7wU{e{PO`{B}0X;Vtls6K19f{~Ev)wX9pnN%%y%^d|i5{WMBdl#QWFe8^+ ztL<>U*u`)P#D%mCQnSjQn_)gpvv{XBnHjoQ&{iVs`T>Ya6L~7>GtP|HT!;7v~CW6uIQYkF#kBn=VPx;*t|GGjhx73u^I6gnhmoIF5@D z-jAnzTSiVz`zd<4RdMbU9)^(3O%qq+t=?Q})!Y{oMiE__^QD@?36YXE)q1aqcVpm!% zMLaAtu?4SlwYdELi*X$uGBqPdmcHR!*RHqT87P+mZQ4KQBw>Wx;pd z4!qW*bbp%e^XXk-4YDW<{u73XU!Gxl890lh-9LH>??U+ByEq%tGv^uc%pwi>|65ku z3zre;!nQcvNLp+bvB@%QI zn}iML>%|H@1B!*OL)cg)i2LiD>ugwgNVY4J>03c}y2UmviF<)9x>&PXs>22tWw8;- z_kQj7Fxkw(4|@&L7Ep7#f+FLdhyTSKt$nE|%sE2*0Sd`y2ssso2Y2?;c4ARtc7b6b znIG@gqKIDuuyF)pNiRB6q#!z$ntT}PA8AtN1wgUZ?bazk%;V=~-#6s>% z)~HF=BeR9n<#rs;@3^(wI8tnG$6(JC;Y*Lj2QGZ%o%QJSpO^w9M5*lB+d?Qs<&+XTLZ~F^<+maUQ-v(AM zvMBVEh_MD3BmnlaO5#}px@Zhi>*k~17w$62(5hUb~Js`jo^Vs}gKJ6Xhf z_NBRuRUhzG(qIoi+d7BFhtM<50rRQ=Or&H)i zGX(=kkt0cs4u|*suNIrZ5}8oo7Lzt@d#4pk0BcJW!NdCFRV!>w_V0IUYrR1VJCy+i zv!34bh_~ljXDi3(>>b zl+O-a_Adp*D9+ezn(x23A};zR8}n?ypk5w(6MO#}KjO4~e);*%WWH5km^*SLr9n+K z`!SNL)`~oi&uSjc)5UHOj;BUxo^l_*D%!Qj@@x69Y#jBLJ(Rx$e=7~4g(LZyBFb(D z8@oUfcqTcMKSkha)-IrFv5|BwVULrLkOf1BElJi=HpHnApuqnm?SCx8Ae}HO|8?#c z!uT_-i=>$s0xro;@C0}o-_EyMXn&Q8nNSSz3*vpM8XIxziOQI@@wF)0CUWGw10H)R zAtrety7OWPSBH#c@JkALDR#sfuk>**i70QI%2%*DgQy-wW*6 zrOoYor*|v$7TUGs5lv)m#1^;g5{I7<+}yrTeC4vfIS-+$S@4XY`IozH?G~z)^1M}Y zQc51L-!I(ir@I-1R)cZN*B@OXY%(!B7faFyIlw(;rPAoIhGx=aj{lqnwqnvoPAXEYL%TFANPdORZVElP;jDj><&=m$l7@v*m#mK>IHymBQMwua zjrXK>a>(cMmXmQ-5u;71{nz5a(T4ML1)*9|98A$cA&94n4|VP{v4@{8asBOO;4ohs zL|rQ?ZBJG+nRM>iKv;kZODt!A=LM;9ZjEEJ4dF|5;a7D^@p$pD&0b}r&;AvZULk5Wn;vL(9%D5a~x+1MK1@rfPg&9SQ$14_M+|am-;rp$Vu01h% z8puzqi9*|;+w~*wEtBff*X}=fpAv8Zp_Rvf?u0I#=B4DV>KA+l@i75QXP)P-B$}Tu z%V>Nv|soIsful~NqX+zj>bYVSbOgc&onUtAX?m%1y;9fJ%oq@VC& zZzQsXI4zc|WV!stG3{y9jFm+C?hv;mS)x`=dzm%Rej~m`-Ra7C8p1|tNfz8$uiN)l zsV>SiC`w{w>bz~)ADz4Vyw?2TTaqX?Ce}5)8E#zm5+aP^LiDo>LL7l>mRIQZoE`5G z25cb2gbJ}locm+iZ9TydFOrk3u=iU{mfZF2u>Mcl>$J7P_8dtmZ6NTM<3EG7i(#XHE1pFbX~rcb z7{E1Zto(D*M%F#De))+ zf_n=~m^IOSrHF4f5VpN4M~qmyNfyf;FP1Fu4IZY9Ho{0$@3?=;h2N?a0-XT^IL7aH z@0QHnZ{L%S|5qjqRLlsN-Du7?Vq0@N5TP@GRAn=@ z|GKWNz3EPaguIleMJit~`Vv=mUK^1jGuaJk4pcs0e1)`rr;4gsiQg$q!m9U_G=D2Z z%uf^`RJpK~kYLt-_=oie`udLGe=6N5Xum?r_c4t%fhF20)ePZz(?vRG`6_vuvx5+E z-8vR;gC|S`8LVXC2QjH3Oju3$Msavvow9FZn5f&iTPZ>;E}~h8obIkIu3f2x=XvZ# z3`>#X1?n>*+J9&Uh{1j$Vvs}imYE`fOzs@75qqmAYh`mQ1y%;8qv+g4d2!hZk|te3 zl^L%)J+T9HE2`MUNFF~;TNxvd78v(U3G*E0APn9GYP+^sfe>bhr3OzSMA>asCRX6F z;9|=l1z2fw5<4X#(m6KojlzClDrlL~swWrU=Yu!}%iR*8b&M z_#S7(0s${Jf2brYW%h{b`*8VA1DTd|@-gP#Z_1?>u8}m@&CHQlTS|2sN$=RPSe+bQ8Vb%_+DhD|05+KaRJ<9z!bau-{;tNYuB$)OUByVyT} zi#5Gs7!K)zfOb{-vb6ahMxy$wgiIwwUyhFFU+RLN*9LA;W92a27@kfEP{I20$1O9d z3Q|;sk$3ku)V2Rl$p6g9p#-*5VT_i)#Uy%Eyf{s>9g=^dzz4?c{H}#!?~^yF=~DF= zN@!81in3cV?8r$SYo4A&$x9{aLM*Gem@;o4B}S=-_oajcQwRZGkaXL;ldLHQ!SBG$ zxW~Yp4QEl|m*pZ5Mkq?SA2pIx>6lhy2RrPM%%HyUQ7O_}nD`ua6O|->z*A<<{XH|Q zLa>}`djEHAHD=Ve*MA*H{`&vc0_^rdu+&p;$u1053Tu$gTL0ZZ%8iawKP$#|4md*$6x3U!Tu;6x(87We5^d;lB zpeZ%|4<8w;xoaa`_Fdg~IJ!Uk={>&wtNyS#J*cirnLRG=-Tm6X1`qP`9e%Zh%8b}n z=|9cwU3n=_puf8{-Wc+M^8x+6KeZioL)M$A3wxUW9Sy_g0>8fsnXV2fJ+}UKZt7E8 zqsqMt%Jxhv?USD(qS=mOKRGe|S{h8XaD5a{^YiZMkDE304A(!!ed%tl5RsRaA1^U< z%P*R<-w`5Y2_t6tII3VZVfbkHL%-1XSM|i9H z&W))0JOc&-U7zNdN5`vMh|MDr;wslGD_h)Wzfljn#py(OC&0+d}S4X zCfQs0>3mm$f>O~>yi#CJ!$V2VkJ&LsjuJRB#SHm^vZ1Jx`+NJ&la(9S+Zc=b1i6db zh5w@-;a?E2{v#aA4^aU9KZN9mF17aTyD#29*)+~Ml97>t2EwU4-Qb&|=cU}=zJ1&J z_pd#eVBtZ>mo$$K#wg&X_m7U)u3zt+IXyo1h0k*vKjhEo0*fBr{0c-r?~{!wk;tOM z9>egG$2Ct!BpjJu=iPW$EdT6#;BGlQ3VO1C+L`>{9lkxgdp1(2-O!QQ*kHznY_03_pm-&Sphu&H@q>5?J{7D6d?3D>l+_L*o68dGRx7 z2B+Qe`Y={LBImIhYe??Mv>Wq1+-un+PWQp~?#o9G&Z6(d^}a0+oWFSSx!=j*=u-V~ zzWVsSuW~l1C7>fKYj3~C79C-D3I0G&qN%sH)M#;je%=ha8ydx zlWMXCRkk$Hunv3l<|!?7Glp;TK-cBdlTA5USzKVjouO62)o|X}6Dy8gwdK5tujcZ) zT$p1FHz#M4=w^K|5f!^>=c_9^4=S80Nt zm&?(fLtIy})5=Jph@IEZ2A}iL(eLQ*C(!T<^!xMmd=jr2Htltz5VTXFkW*AQaN~vF z(?c+rzw_PuzvI+rHaBDLzM#cI&|WJTk~uspN%YALa>hFbEI+$ecwyz=tDV}>bPvg}jEZ9xdf?-VWkq+uYX1zYOXwbc7IcT^0;+SU=ofzh-KAe& zo>2{buCKoXCu`agLX;%rl%aNFvq2>0GK*{Mvo09PAW92XuECwKKi+s6TBw~rd$9PX z9hxfE0#4?w)8p?Rw1Ri=nzi8io*pc6UcEZ}txSUxbMBnhFJDy^MMXu=-BEo?diuyG zKcAit4Gm>a(7$J7bP?<%ORF%~;ppF{ytQ?~jtDf4lwV(K4k4m?@4l=>O}!*uGaX+y z5dT%&)z%N9;1Kw*^teVX-d52DV_c|L0)LTB6XYU zy451fn?mvU8Vz>g-?6H37*JgmEiJ9wXgRFw@6JvxNK{@!7wB%k*gyL9Zx!JY5yrlM z?yd}E;W&Kz5PHjTN@03>dIxq(S7f}uKL)fSa%abj5?tcq8T|bGoUE)tzE7XpfQ+Wn z=bz)>fB*798>F~MdQl)kugutCr|QicrrV;T!#7jAMTZZBoVgQT1Zg)LWI%;av8xwdKajgx#g0)CAM?SRIS{ z=ZF59R>^tQdz%f~=!df}coecU24&GPq|k-`k#rRy9Uj8IYUFk zTpjL0{W4<#P{bTUCwU2s_KLi`{BqqV|1)u{OpqsOT3B4Za{01`iwj>A{q0wB(e#QE zr~7QsH+=?@0{OFpe*cJwf`WnwWB}v^q@Txfm)F--i}lOig7!eO+VO`qh$ck%(CwS= zPK?R`w|rs*dWQ9>+Bj%M%7GX{_qD!6DKzRah!%H()^zGEhgXx9Ha1+KC`xBnOH)7( zB_e{*)x{-?QOp}d`O>KLUFD6P?uP~9IXO8*2uRiv&Ye5A1nZHNb>EtiQiAOTO^;E% zCtsEIU=TE+Rf}ZSMW7*1gO@pfUBm9?v{j~&{E%iVmGnxOdrZyyBl z%d?J3wf5tK?Y!|TSFZeCURJzU?U-N;8ZvDoqm;qzGms@Imu*hfvU%WgUoFe3r@bmfQqRArP^ zRTDmno$L(nO#5t(8fJL(4v7mq-keqikyG3xzUBc_C#2QMa&v;(PoI>>FKBu#K4}WT zlHFNkiUl2k;!#d^b^%069RmYShZoV&>`qQjto$d+qY&tGx8vgC6bV@#ILSxTXMvIH zd!K^xCU;xNY5LkpU|C81=n3yPxV4wJ_lmnlYfDRReNhp~$p^Zkeh7=$lAy)N?1Jb! z3?`~lB-4Akzwc>t_VaX42;w?b;ixSu_ZhSMlPCG0gcIo;)0)&qfI(Q~izj(5Z6b4d^;Qg!Ch_OvK`R@YiyGe?N(O98^zvXWzel%Yv(F zKox{AgGdq;9YKBr1Fy2vUp|BOFA@L^XbTGqy6a9J4{BZUK!dXMts=kDVIWg#=uEYc zM87D6Y89!I7`F zZQs%NMuI{@LIU(&O5Z^%gB5Q=0-15FwhtBL`Jb$sh}c*+{)2D=T9B7vK3JJGHFTgd zkpr|4f?@xfcapKQGD-pxEd@nIDOhu!*+SP+^_5;hO+&A$@OD*~<)JG(%fs@EjNj3= zcgIUMr05+90Rcg(~#BnLs5Gh7QTXqiPiNC%20jn_RuY3c1Bg7I7{ zZ+D;6a`;=awwZBdZm)SA2mH#$)_Z+v?(u-|q*SRW12nclSmp^H8#+qJ=(ENLX8R9>h{vDylT8{6qhfZB?)LCZ}HMm zQ(;Mc*u=!d(iB_%)3Z#7o*?njynp{%g085e_DYL}Vdd(uhT-4sZ9exUjh+-i5)^8I zsHXf;KO?>9W0l34u9X3ex`d|+D?{*@%r<@LaI`KS;_SaSIfjzYrDF-a?e()ugHu?@11t7VDsLmT|X4i ziDr|JHXX`UjEIP6is#avnVAXr_tU?z^aXjWF`RXb&mg#4;sduH_2F?IdJMi)Ne ztE|iFw`p7yYOfXiEI5aQ5@xQ@v z2BAC~P>!7ZwL16ZAkdu70qpSn+sW|@APy?E1dJvk_M@oeUbR|L4+z<2e|N^w-LxV_ zn7O%&x{RNwcG*GbqabGxx!hpf;9a$I1_G`YkZS;xA<+1|P`StB_I4zc%hJWeHw3E(n14ipt~hf)euLZh9}H)TSoM`?aojADIP-`RvVr&WldW zTL9I#fpa7C{tAr;3zyPOEOtOTz;gXM8DJ)WZh-W|AvfPJ`Fuai+$b5+hfJv+4syC% z=AQ*=cWJso)N#80S!JaF$TUj&x{J#o>sk-xJ{x%r62@|`Z7Z9zBtCOg{Yfw8O^tx4 z7e`i3PU)z)h(x<(aqHFrc__Q=qkmQDhhqHl72B1WZ^DpU8x2RDw)g(4`<)-!E z@8Mh*?T!$QWkJ)W6ChG;M!r^QU-&N-jCkkD+(?{jJUih*<))zh&9dx%4KRHl&cGD3 zGoXY<^`H}=IfFC|8qCLQ6IjVT&i?Z7H4uO_fvTk3c9gr)@yEsSGL!Za!wTlaZq?{w zI6w3aL0IkbXZEfyq-RvLhx$G$*I9Jc(KD8r_F806Nf96dP;%GUIHS+O@Z-mi6YtG% zGQ1WpfHZ^>_LEM;y`a;>%+?TH-!1AyVh*Bnj@x2i&C{b>-n%QhX1zA% z9tKno>fF74dl_9~Vq&tNuD`(Zd7pLK|LiG-vhK-dG#sS+`Xmi#g9S7E4sG0*2CzUK z32}`>{B(bgdpPyxBXUqtnmRefKq2J2Gblg$T)9-Qb$t9hXcQIH)!P9kBCzkA)Wo1m z(p@D)#`&AV!sbYFsokGpqXim>V)iV0CaxiSb<>@tiZj6JQ%EfN4dJ zpb%V!5@YAPQ{%GA77MG0*Wb%|`T3VrwgKI_|NX6){%v1Y7SQ(&m_q-Ooob4gmlr63 zxM0&VDmUMp9dj%v_D>v4S}H3j3?$#TD5*cRp-fOe6$jk^qroQ;q7@eli&Q=%m@bHs zo&j(bi3N ze*6!VCV}8?tp$-Mh|gAkdmZn)*xdb8^mjxBqoS%RnDoDp8Lu8Kl<(ig zi|X(ze?sl)Vm_XH>Z4+Dh~|2;Dx7Tjdhdj)3wJ!jJqSFryDdnZ3Uh>l>zm zHeTh?$IpUrGqbTpNc|wzO0I1!pn`Ao@C)SH6|p3QiW!kDPueJ0@+HcRFN2J}rdFol zCR~6xgFw(Nyh-Kv+FD6PeFb_KtS)_5R#vz0!2-emzKl1s_lFZc=CdT=@tTMhfFqXJ z!a24<9n-@g7d)7+&Xi8WMOWdDs>h&ot8F#y;db`1p$C&;327QF*6(F_ez&W$6ZF)O z8~C1ZdVq=)-Y*Q~exx8_y<-TgpJcFRp}5ZvbuEAk2&!!^M%3I*L0mp+KBy5IlodjX`v zR-YDCCC;|CoG~x^8bQ0AdgWsshKefqS8F&bTNn1+Vn$WyD8&GIVt-NM%w}UNiH4OG z25!dprIJ0;{o(yHH8`DNE@L?fU~m>}i`BCj!5gnf7-@NoBSFi~!p%(#Ga;>@C60}a z4S?91eC1Y~0O;P)nS&SpZ=bQN^~QZkwk)Vn3zyDnf_-L*>x@lJeE|ytaEajk+h2Udh) zE)aG`LgjFww~-sY_~+T_6H+E|dVo|*<7G_I^tV~p#~T}pisp*B<30n6LCC@!*Es{T z01%fo9!baeF#vHx^MdwzOTE|j78If=kN}J&*&fZn=QMo>g$yFqMRojnr-|1LgV61R zavIH4ekZ&7=nxOoeW3uqK)mSA*rjcl0qmAMuuKbm=_D+;_!Nxx?;|0(qXJMhF%%br z_?KqdF0(%FHVn^zSR92i=rq&dp;Z`^Ld`Il0H7hnsI(1~?k}JMZ2I=?0t^X#1p`9j zV{X+SZF~ag69~`D@Lu6cH;F<|1ESJHFnep5;y~E~4CUve4N>>aX$C+JU%`H3laj0j z{1K2;ODZT3f*kuQ!!|@|0(kQxjF0Xz;3~Q}4)rz^s{Q(frLL|HnHe9HoH8KM{k60d zk)PpB4DoH~_UQHe#zu*?wYAucj2jF<5DtRQJh<_60Tk__=Zz%+EdN?we%3E>Hud}8 z^HB+9TM8(RnnA}L0P5IQ5afgXeT7@8yP~5MX$0LkX5_W(9Or zXG_Z_cHwSl!GLaD1SOmE$)QJFx8)z(!?b7^cNhS>k(8AM3N90X%0t8|MGHjY@oOS+%`T3VGUXU<|`x=NWpz8xD6ukMSx?1SuaJ5WF zLqihOyeuf+Fku48Kwpez3i$9m6PQ4d~JxwvM>`^XcL0P74VS-F0Q4 z$3jCw27ol-7F+BU`k8y-rj#_`-}&zSQQl&or8lffl^wA;VPQx%TXws>`4WYxwznu5^GEqc5Bs&++n)TKMA&&mxTd4lI|03uEf8$^F zfb+)6ghD_^_#=PR9~qf@jeaM`|Ckrd;nySm=ny+U~s)064ZMME&Gl@I*A!Vy%& z3O5q9-Q6oI9d=hn1)$#HMXVDexkOZKZjJ_$KY*Vnd` zzs@eNqJWSIj2jdaOqyUu zR??glENxaR!uEzHCJ89f(L?KwSQc4Xt5tV&9dp)wud*!i1 ziW=mqSCtNMzY!P;4Q@|W_7Gw4aP`quQ6Yt(jQ{A-qp5l?DwwQcfWpf8KG-!-e*>SN z`q-pe5poL(>P{}KuU|hgxhe4dt?DHk1AUN!2np$@WagwdhGpGmK*tIEpx#WM09N|y zgV#M1f8M@U{2t99I#6aJA>c4cElmjdT)*SqCvqra$TNK(#<%q(-;|P_X!LKaEQQo7 zsHf^DdGMPP;H>cN+spP>xw-kd`n#+XDG{{4fld`bD1(_o0$5rkd5rDP#m$)+1kq9{ zv4uEX<2p|a?EooRwD1FhKE_zfub zVBH@pRo%`~6B83FRS8*68Ub3t3?%fRj6>Bz*!xoiaC;Liqaau1KpY+wpB~}2fi=$5 zE@rfT+WhD zoRlUJ` zOPo~!aFs}(9-<8>Kr0Wyz(p8-ujHCMfV0pz4Rvb{!b8VlV2CsnLO^}X)McxKYqeq% zlas6f_*qz3gnjpUkyd~0M{ox$9Q+v|aGKQcY1Og@Hj;)5j#u%%JJ!S|$# zRuA3TU4^+3-Go~ezOo?zn3dkFhWV{^_w>Y{I(6;p(a6}KQ<(4|ZVPAC5GzrDRS=xp&m z>Z1o@HS_&@42OEg7bs6P!9H00wMzkJK|2#2<%FJNAnc_nbb3a`Ki64u!|4IOChAdlwMX zzO>uu;87sd4J;fS1Wun1*b&p?{XcTU{_9oaTM*w-G8U#|rC|%FeYaKVg`JyBPbbsT z(*EPN?%o|0K1nH1yp6?t?HVZniuUI;S93L^!DL$7+TOO6znAYGnrywMqgpPIrLuq>OcYf$kbaXUK z!Z(9?*&hG4ld(a=1ypC~z$|R$e{Uf#Zw~qj{JHo}3$*)+a!+aEPcNcNbz2~Xj)fRR zLju>@`o7sxhc(HA9~=BW8NP^Ub&>k7CVij4Ev*w`~L?GG!9q`!R* zc@GE%4YFXKa*#^~Aw~mHRz7qG`iK!gawci36GzXpDR-mK^&YwSj&F}-Ry2Ocl z-aG+J^D?8qC;+-`U#ZmZV8P#_)A2y{2>Tt^D0=ArFi_Ri&G0|^{u9bl90CG@Wtrh5 zNKZ2Cab~|eUdoOCwW`wA(Fp-SfCs-DA@1YJJdc0#C8zqpL=!(lBQ7gwk01ds8}|@m zMUt=!E6ftR9PZexeXpi~>Q8Q)kba%i5?R%oeLH&4fvA?JF+;2RJ+pJLjOy#tTUQc-_fgMp80BaZz8- zNjI_LV{$x_XIOv4p0E{x$1FfDU=JT=dHq6j*p>U>S-qmLJ?aGjPD?9)) z0qTWs#Gj(oE6r8CnFM`fJ~|ErtwB*S0nlFPkRn zA*IoDh0hk9uZZJHnDSD7Z!Rv%!{dvp=L~yk&YzEi4ghoutERVYBdM^SxpRCIY&%|U zg&boI=D9$gqbB%z&un9LaO&X9-{&7A({{oc#jywb`Ey?cbui~Vu0I@{J<`7P0^{Le zQ_Ly#KEA-Q`lIfp2j6{OXkE$jP_)zCmDARVvn{r}TAuenG{Ei||OD_Imn5wfN{rCH+xEoZZ zb>a?2n}>ym5rk-L04n-dAOYimXqr)Ry>{w~^vUQt5UlO!@M|lD#1aFsZs7E$e8Vb7 zQ3nj(KHP3&>ieQQThi?)x~!n2R1__I|D#`#I3Q`D)QM0@gt6p?q^72(N8Ra)fa`As z-=p>F{Z*5*=btv}lsBCVhgwgNWC>p5+;9XQSyD zss3j&`cYM=qK8FsSy@>VH5&dAvcU&dR_;(m0!sAHZR$Ak|9;}i$qv9ywkmSaca@3q zWyO0h7B5hYsJ2Pz%mLYGmrEXf#q};dQveY@bsueD(l|t5$n@KbHi@hnr;t|~aRzs8w3=iU5Fr!N7Fe(tB zJLJI~T+4joxw=mj#F#ky@i7!UO|3^`{TXBd-cihq)77uNM#AZ?pA1W9(tem^`YgBAi8ZV^BeJe=Q%rqxO)Pr7mhz(qtHsi z(TyeYm~Rxp+Z0ZdDEO%9O#pSYj<(f$oCETfNW;2jS49gCPY7}RxJM}&KO;|p6Xryh z^=|BbrS8oudcG@{oXG-Q-GZG)oD;I1sL&)=n;2c}-Iu2JF8V8xn#9b@g~x}Zgq4AO zbYd)IEG;y6R$%L?3VS?yLCK5^;cU_l@YdLpy-h?Az=}uTcYbP>n1}!wxoKLDJw-F4 zXVD_uFjw9lM!90!aJcWUgyF!}zMWbp_2clz$!lk%sV*hrWrQOIdR9d@Z$)W5Q*tKd z{1@!NM}_+)b;WG|Q%?N0Nyi_Fn66SM7sNEBuYAJc1e1`S9IA)Ugh3Iro@6Ouo?< zS;>-X-W8;|=fO+2rO`Rgiah7l%y%xb7!U5M^a@EKnBn2%`J>Sxh)9_ozGo@_mtGifOvS z^I`gqRs(Lcc{a0#!)vTy4Cnhv2pP=IYUg>zO#)= zrMG-`s1Q$VYzm;kc*Yx9>JWDeMQQM?z@a47s)upSP~mw#58}KjK1p44P3;QFcaEp= zrtg{qY*;y|Lrd{Zci&R3)Em1{4W98X0~=&ywy?;raN#{+5E1eYXTnzC;rd5D?$OD; zUq|z2JwdI+H8!`Hf3IWahhqFQ8ch7o-K;Z8{e~yJyQeT(x{y;Oev?8$BKQIUuC=Yk zzJFd^$HVPCW#t@Z(k5TTfd<1t>|{^gY|N?q=j*cUZw&gf9hSWjiHBj>cdRw`;|RU6 z6{u&({?SfQj;dd{I_VF`B8l5y&rqZ`E?Gl<^N3`bojv}{z%eugtEl3gR+)ct^ zrkBLw^es~Hd^*hOA-g%T!|U_r_(1?iAb-9d%~jm3u7#JjhGb#$0xc8@PH{y3I>g#o z)X!%AulBw?n#=WX_YtL1hBA~)eWj6-EeTP4sZ3Fb%tD4#$eh?zl&H+20Vx?WlME?D zG@9ZoLnx)l5XscJZu|GX>wVv|&N*wHbN)GN9j(3E+x`yEb3ga}xj&!lx<1z}yvQS? zQ`%(quEz3%l*6H=Co{Hv)MuK^z2SC(WcXgi%Nl@=GT5~Ud~zQcM>{zBaop-$I=emmJ`-wjub zESg#Ae_+$MgQL8~Zv7ix4ca?&}FqFu(nwEH*}uQi_ST+bQx(Bmw51aW*yvV+Ft~29F8k6e;&L#S!3(rJ;D@ccWku_^TbJ^#EB;Bv#(En z?r&JQ=;e_BBkCosb#1_oA6E{2G8a{$M?E7;EFmcPMzOF;)U$*x+-VZay9+{wB~G!A z6Fod1TD6?>5~jWvci%X<$$3DZ#h-oY*dGxV9^p=_JJz7J0s1$o#u) zpEG^!vwbd3xiU4eX4hLk+hRO)SZP4uh6dig`-8SuIstK%NWia1CP&lRmP)$! z`~%;S_R>6jVSgg$!a1>GhUC{&v%^-^HTBCmLM*oXpRDex8fn@>o8C@lKfmtG(^ul2 zCQPQkpT2UAJtKQD^L*QvFs;(h!Kr8GCu^d5LQ+zPV6E22&@a~ql)P&UjJJP1U1~Jl zr%mNKe;aZz>wfSz{gV}WvdypSsvjL^Ix#A)++>{GtaY<8eLVI|Q^Ja!dktB-w|27p zT`M;qRGl&uN8*YEGo3Z%&RF!izqv@u2;onD_)SpgdS~nzPOf)Oz055MY!U3fQJ&d0 zvi^&xPQLDfqJ3$-azSc$*UW#07)Ega>fq@}i|dpM)66o9yaz%uCs!vmjE7}yJ=XA1 z;B$>eiYS+SC8Y`ruAW|q+mra#n>dG&E4555KyM0{xj?< zh9WuccD;yA1#R(q>d`$G-Sto7F-PA23=2(NPa+4c zD%U_{XU=u8^@6V*|5mDu!+!C_0>a zk!k;e>~bB;#tE*?`+iK4L3({kt+Z(;clX|f3QTwSJO_B1UFHMj6|d=(6kX0m7K;9b z3K!}MB)^`Pz}k4sZjt^jxS;)cs$SVK(X_4Pwfk2V9-P|v)FhCpk*>3Gsqrh@491GI z@bR$F?=^QTcf3*%Ik#x#=ip}xC`FygDk>vPD6zazUM8u%8Y>_*EdFP?=alp_*%Zlr z{+0_84pl7LDVmi0Jk_MEHyJbdBZK$3dYJ&T(4mSI)Lv>ul(OFS4TVmtlSaw-ZYEE$ zSvQYEeaoh2%P2M~pG$YpBR`FLV3S5%(>{4=c+yY{t|Up+~U<9XyEDU z&2I<;v2D{SS#4K#seja^ekWyX@q8SA_3Htfca2(e;DLREe;vP_FT?iv^0Tv4XyWjt z#Yvq)57^1z?wwyLK(SelM6XIo&ptn777GD zdwylviLUWGb&c|hG~@aATK%OMA&;uSbdxyuQ^5si*)5j;kvm$l{cGwP^;_Oz6Vf>mqOuH})4*q7wFMJpHCCQol>&I=clbfrUkY_oJxU9Ty0R+PcMt2$j@1=s8nUN5M3E8DkW-;&S# z%VO6DDC@R5$Q)~q)``mSIHBi5rk{(|UrI51>-<$YHL25r6$Z&%jzyum4=}v15q;W@ zb)K`g=RVIA%W)@jK@a_7=&QA@^@p=kAJ4y6>aU)Z@CG9a^@D+4=Sg@u|V4^mWuXM1TDaWZ7z4{cAI_knz8$GpQFhJatcZ zAQ+3r5ksNRb8e4!yyj%`q1dH&_Otvsz0*R!X|bF7kJj1(^3@GSmky^6v7XjnlC(_K zkZ*^Y>3ew@7cEV>FYd2?EAz)|#xiv~Q-fG89b3t_$;Aq9Th7Kd61+Zbaz6(!oa95u7e#U2YYk|em$g#P>niDd9ltp-8-RH^E zB1Ku|W#fT|j(8c*SS{>hHi5C>|q=(`U1iRn$z)}T-PG9cPK8Cs{*}*AGgJ1zT@X# zg%h3Lr-R5ekP0(6*xiZl*wH*N1yB_K-V15V4gsU;oHo&|TiGFgX1$ii86R0i zfvdfhZq8?A&71^;$=f&Pwaru8uw>lR#_R?WAyi@KfdrM*rH3(>WwxgEfMT2q)@y25Yl3!r)|=4a__S;huKbAi6L3$JcG5|pKlK@1aok1Kjg5IPk^ivG*HC$(6wuiVZbYM5ucT*&*&TFrQwcV`$3o{1kOWM^Dc>=Nx_s z6`f|>Y{)TKYF0roL{v-S=H&vgZF4Uuy4%#GhnuLhma?xepX_0Kd26?^k8khu_V!G^uoSKz!>M5X4V&ohDouS`028 zGWkPy)ARJ4d)G_UB) zj}8t7G{1xbz;>nieYFjmFf_mpeg9B=7~s!(Oi14CMRxC$fjT?6{(*iGq=RuEh9MHI z2L~|MFAPeUwg5zA@n03HmN^7)T|-CbT5vFCk~$D|8%R>2cD%jc+WIbJ6}6@w9bz;Z z=G%wzjUBv>v#Zyv*+N-^fLb9eybWqI9GF z0k6nCR>MwyM|80OuGjlae7_EA`w&Dr_oBQ?+!&7FX;%mdm51~O_9mY(mR0=cPhIbq zk-hX3J@*FEVR9EziSS#u9!hKx7mviUY%6e#kv`RF0(E%48}2azliEmNBQXkenuRzZ z1%yj@e0;h@NN6Yz8ZfwW{2HJnEGhg0nH+tS*no$0fcEe-%a0DAZ_+olXR>>e^W$Xp1>C1f)$bbCtgj+2D@aQ~ zKtRCTN6yEb;$R0$bwk@l&{u$v1#Zl&>{W;n5_MlXN{S}NaP2xeI(K|C*(lJsk32_c zqobpDB6GJq^cgDNH(iVeGCVq}49y6Tr2MRi`bJ2q2m3LrM0f8ldo~e0!~a1D+9GA} z%o49t2Ehlh3o9c(%MAXUL+}z}1Un$FB#u10T z1|>2dnPPD=-iW;^cEUW3o7?pJaZ)*zQIulschs>4EdF*7q7bTD^;BKL9X$hxU-uy` zr&KZDz};)5H{22(WED^JPNvSunJ%AS!p-K#^+%LlXdAWzmm@}X^6uZ?M*BiD`p9c+ zJ!s2|AcuM&45Us9O1{rDK0Xo?(|||cq)c)z|W%G3Egg!9c6))Q0EJxoQ=3(2LJsy!Z@CCU7(2d0Cl?8B2E$oLNNT(L^_< z*~ZY`UcaA0!ZY^*YY(unu!z9x4U@4F;~_#LmxN}NOMvXH(Ax9p&)oDo5Vm*k-Ae*x z<@xaf-)8YsV8x*fBF!Gokkt`ARn+DB6EdQpzLxV#R{+!>dCDqW(b%{W>v^x8on6X$ z5ubMBv)Nld<6?m+Ti^i^*)8!wB>th;GAc5&y3M^l@epe`XhSOTA@9&^u}(~^t(k8k zUv<+3fXt+I>`Oxm+da*=0C=TSqJMzq(bI-UcXn)#2eotzy0I119FP5jMKP4re=`%ymq z5Nl{_x}k$Z+PZb?_G@d0kxe&DXtzVo9Hcto*RF|xK1Pox&u{2R1_weKoHk`Cq1izK zzK9Jy5{O+@RdjMa$O3*t=bZ1xGoD!B4L!HW2JM9GRI*zgVr-S^3+i-I90u;r{`_H{o%68RNjII5`6*=jXr5I1s4)j zoV*X>LuC08o08NWn^L)^e*MVuSk;^)Q?T%n+kJknck)-{GG)r{I~+Eq!Z?oW#CIOX zC;0c)us%WJo35w;9a^gNXC|*RkrM#xQIa>sVy`EXzU*wBUsK?UIa0VI581V5uO*JfVj9ui@NO+= zz2E1K-k*KgRC8SWwd30(j~LkF7eT?@ujPMaOcaKHLumhN4k3BK><@;u;8z}4VW_n) zfQ@`_)s78=F!EC@>RUw>6iPp|_qOQGLb9DSacct7HaxIlC^(Hj^h_M|n_6l6GB(jT zqdCReSYr;hzeb@=KQd-(?*^uZwUu~m1Gs*sq~HDPloIxz;Kd+o15#5rVqz0o6+yY6 zHOsRE9@0G!1XV&8M}+n1?Rt8=*LNUpsCj!oKG|;<^H7OKTR;oI9pi!ot}0HYHnVzh zwb5w7p`q2#XD1}hfeJ%A7py_uz8MhLQ24JliOKBSa?J`?xydB9#20 z$8UKp0t0S`c{?|9)lUQlwcthUy2^KBqY8iyrx%H(%(rbX+S}KlS<)X<58E%*{V_;b z&B}@ply@SZLE=bJ=|ztgrt)XH>rW5j!3DH;pf4e?GKj;t3M|-) z59og+(-WGpFw#Wi3Cj6xp_8%n$q%bAC^?hg&ZxRg40Wu*(B!|8%iQHVB|SGBqy+zI zR|-AVi$_1!NOw6s;5fGr13fbaP_l1=vEagqua z!k(+a!87P&jL}V2JAnPiq|{RvU28NOP7Yr4?R*rGAE7QDLNN}|FyLWE`bZvuc?NN9@D=4~zgCmCc zN#oN#IM)b{Vi!DOd@}{jG?$({c`^geGaRjbM#U~EP}3cHX`2_?W%9~3YJ>>)yikLo z@`gZ^57MRIqxIXw;F`}aAS(g_JiO4_H-|W@!)rgIWt)|}E|fnjJUl!?1}VEg3JMA&HRYXdJse%|NMnN_ zrb$nKKM{Z=Vq&37sOR(Ndt$OY1&v1q#dxv~YHBt``%Zoga_PV6akRs1+r!bsw8yx` zOGQORDDUcERw3TGQtT$InW4=~ zS0{dUhmVJRP?u9L?}vib2KfPRPGrm(Zt~m|e!f*t2{+uz7v$nvi@Gzf^*+D@-WMsswZ6YPHju^8JZ0|rabd_W zY0B$!+;Q=VqW;QJB%%^?8+o|6EVpL`2fvKpc@Q$Xj7(v9_l&}aFkXf_W1WnQfibV3 zpak=xWvPX7nFT!l@Icp~(_6C4w;|ten7Aq9bYmX2FxBlsGh{7xbn%v71I-#Jx9C-K zcauw{PO=KK@2B(Lmq9B}FVdLv@$trSgAiUJ>tCD_S@<2lqpPc5u69Qs0OJj+P@=i4 zR&_;6vlBVswWuildvl{ixP^esTYow0{YEfYJG;&XqPgmaCv*qtdIm2ZX&{VNLgg`x z&!Z@!#la4dgduV-%1e@??x1*Pyn&JxDzEfxi9XreesjC90M5gV>1sciu zDp&))!it*st~;Eok&xiKOiAs2?FYy&{y{n$7%q%V#uU)nG4Fh=l{Ot?&^wDLVV(W zdA;~`#I4DG@J1MRyag1dz!hkt5R>4}Y}8ujvlC#Ly+_xA=wmFY42462HhPO9*puXx z>BDWuZ`%t`$)EY+kCAK}2#Uqce?&7GZ@&#Ht2YeRA68-!;gCQjV~}jvb7=t>>8J-? z(Wp<(4nJijoruljsE>()lk_T+Pq{K>}*M*QzG`<*bFb?KTF!}PYL#!sIRYr z&es2hb*?va0KP9VHMO=U@X*Nk9>NMA{#6IIxem|ss8hBcL>3wsb!2+rA7_M`vee ziPD$I!=Nc7XYAlEwqw@^XcPIM>jqHQZc?|*A!TqZDgpSnLpwn>(YNAFeSKit2{pu3 zf+~>CYS>`d)G^TdO3-PP%cWBT>1fUmul6aGN=tr?)Z-W$WA)Q+pJ+!GQtjgaW$e6q z32rym$B*{{9Pvc{#YFvO`?7+#4G1Wm6F?d0Iq={#Jvr`lqWpokOWVDrLiu+fXXhIR1{l4mA0lBD zJw0xmLqrZoK<>C4FE7fwUzc`C4u%NBNYBwpR@cK}yrKk150{cS-_UK zRRJ25mL6$PtN5)NtbujF9&k{J)0IHb0rP(H|5-(Vfxi4FbL?f%jl>}u;Ld`tvLIF zluCF*A`*DJ#(Sae?^hd>MNh<+aM+PBE}RF>VGq-ke&mhAYzudnSmtEY6D6dQdL3S%$-8Xg;)mt!M)e%YfJQTH}kJI&C{OsITn zV9OQ$9qPst=!NM8N=&qj`SLtim`kW^tQdvK?!Z+$PYRGI@V#|AM79*NFPU$obDsz( zA<^X`5>YHbqAW$-^d48aOhA?s#Z(QEes;I)Tm~KT@c4N1(Bph$zQDc(@foYOTb*xa z8HX%ykBNx@d0J4L^&snij>f9A1~*Da!c9o&TKehCpXOJX2+##IS-&+dHT` z+|wHw27dmlj_+S|6uiz~70u!Q>o4l(@Erzd$*O+v;67#LfKJOM_5YyR8;rbl%S_bm z^x11$dL~ahB`68hw@gBD(YNQ{ReH$=QXH{tl%&9=mR&2-fTPjcK|KYH1t~^$GI4V0 zw?rC_JUCUcgQ|PAyj-_Z|6=EMF0Siiy)%izW{rF4Tkqdu>gDNvNEOjmKL0An0SaT$ zYvCzE5D`|b%!KWk3OLBte$S#sf0RRaT_;x)sk zLs>zAZ2fyIXpVetz0M+qrGF`8WQSaj7eAqGpd}rW^^;wQ2-CNMC3dOdtV3z+2A0OP z&(>JObm!t&kSh_qXrFS=fN3O0#a-?zEptqgdlLu0zj^70)5LYNwxUJJvi$Jll-=GSrjGad#JkO>=^4?l5v z`1#KiCKg_BZ6fZK%&Y4vgqtQmLI2D@I-Q+pD9De%Wg_Om&;MZZk=Ojc`ayN3Kd4}b zbOa1`>G)TJKf{s>rH-50vr;JZI0ghYoNOdl9fF8`@*qg*G)Fv1-hPgnJQ+VI99%f_ z+Dhr0cIf_)b=dMBxoD~QSHe{6T@L}e+j6|RXXc}4%V!SE0QM$S9_aQs@Gb*+c@nI|87#^o_SF;T~@{iTjpAE z@eKatG=<&M*Me(xakXYx;&{Z(y2#J~TPh<``{%L_poABYJF^(Iw|mqPK~`_$9Q|sr z5=d6wwTFFj*DK_>6l}tTYfldyW5twSKmi93#nD%&6Vsc{A*WruWXa!cCmuG;y}tWM z0&QeAEx&f;@iZ9i*#xsWk)gk6z@dvjFq-uA>`G^^}VyK z-L|8!yi?IX;}L5Rw2? zxp;UMQj3=_S49f|;NWaHp_rh@Q?r;5XScB9ek9m0+9|VPiiUI4$niU{xvC)yHM$W) zM(fh^9=$|97CG%Bn#8y;#!3e0|Fg^gx7cNkn5QawHO_P0Gf#g927fnbJJ1_(Q1Ln# zX?4Kwg&80lma?(gz$CB%?Y}^3-nAf~(nKDA-1*Mrm*lJY<3O0BfH|w5kX zRIBC=978hCm;-&onG%UbdpWokL}Uu8qfbMA=u>j~6C1l~aF3ap&lY)m0tq0=mB6B8 zOaU~qbJK6)OCfU!-XARf323jaTPYwQ4$!9{og?Hu4*AkC{sT(|BRRK$b+&m%^pjei zXiADf-sbS2(JVna_-7^7;68)^NYt-KOaf`=;^saNG}Eyjpbte6x;M+Ltb1@UGjk0N z&mzu!x@t&Z3vQFMCP73EI+{{2d#pi0Ok879B2Aq;kc%|PE`&u&b4d-uS~%&wC~+Db}KmbTOB59gOb z#qWL+ShbT-P$6@?*zA_V!B3G24u^eJS;du1|G9XE6f`(%6BU%yCofOWR^Kq&7vA7n z(bJsOTmq*m*e^W%FzckH{i&cRzsH@2hsRziMxnnD{x>#L_xrwGo?4LINf_`x{(N-m?a{VRT3?#=H*hrzB`BTfozb0jGvL{_ZiCATtlcUI zE3%m6@6jnJDv|~|iu|5~oC!yX?A*zRj#0)G<{YFd zOkKXe1St_5_eHAsmLpBzRlyIgK}x+}L!&YJrmXXVzyAiv9J~isizH14pf5Ge7^qA` zl23CvnV=-=*Q)a4cVHL9RF?oYR#jD5be4LNR!BMvaZCV}_7187!ahOoqXb`oVDNR= zRG4wRobrWFuTYXAVNW%GqDZ)3*lLv@a*lgt3sg1<$UUjW6(_ryK{Hu_=|RNIY+|uK zUS3D?`dKzi4T`vVN!MvJqsH zj;7`EE#TdkU`bk`v_I)Wd|8wqhe>xJ0~I zhfs~{GlhqZVfrbKdMkb^-Y#4q4)LQtT) zvB_!{o69;_7r`#A4<9i)`>U(H8R6iNncpo%-=nC8HyWz zg9k7XWYn1pwC@cibz@%^(bg#8CRs zVmL$^qMsBK{oS3t%pZX9wt|?8Yv0C5Kl9RWs_{0wRIjK<;T*uf0Z-6GL`c253NA?Q z+q`Hr#{}m&Vsr9uT(H35bQhB|GC+8KURnLu^GyRB zOP2-&i$L{QhKxP#B)3@ver?E7~!I zIC4E0W#)7gB>{9j(jG(tBFlJb`xj|-`{4H8l(415Pk3&|i}HVGR|WEyU>n#$j^W5- z-h;fRa04YOKJ)|5^R4JFrn6wI_dzfAF56OtxFlnUa*g~B02u}_u^g;b5FF(!k(ssSOqRRL-A{VQf@}I>8M@`lr_&FAil?oG~rr|XVQ02>q;=EU<9Mqqef|M+sU^uouc1xdl zp9K}v(%xn0-aK}7_eF4%q$kxAM{xruw<+ifv9Yza!j}MSP=(BBq;5-A>xbxI2R;le zw$5Sjy+Xub1{oezG2uM&pZQRwd~~k=AM&A$< z2D8AJ8X+G|I^E1~)@@{LECP*&he(_N;yDVi(!PBmST5wZgdrRy6qcX|PSabxnnqgz zYD0Zf8ySJqw|6+U>?g$8E*Cnub87$q*pQDo9~=rFe=_`xZ3Q>C-umZ2nVnr-BXF8- z`b&2t8L;Ho25h*o?t!LJOV2src-D21n;42<8H(U)tnMSo$F~6?fN**9)Fw9O7epzD zX6!f!yz(>?h$IimLLC%6pO8aI;b>ka5s2z?`Hy{lPv|?%+ln1Ynm*@*t08x?hV$+U zPR=_8c?4@AoEl6))j`e@51*c)p{>w4JB<5RUbTA1wZ`1~7v_Mhv+cR0|?#>we!-Qc_ZnEmaK1MWZjbx}(Ds z$@?etMTbX6uSc35h4ciJW%azT5d^M>ZB=VNr%iZxZ9gJ?TwmsSUH8mhy~;E>d!lEQ zzqXKtWk1N^W)O0Y$DM~|_(L0@witYoiU}$Oqu~%=Y>*p?a;Q2NZc7I{J$sj@kGHFH z)9IL;)-W((xKrYD2<83fII)xG6I?DtMe7pf_jKOixG}e%FxEFz#gBEraIGzT0 zT4;9P+j{G?DJL-2W$E^vr>fQyKi`v78LB z3@cWyJmxBFENjpC^?u>VmBz;uwMg>-eXrh2;f*`C5fqSj`bgv%AOlM0Okg*ZQU;5Y zYmh1&J@FUJtm0tQUU&}G8RIePOfq{A{+x_36w6jg-eC-g8<;idcIFhP&6=9MN129=S&l+7XO@m=0?1jeHiegFk9QYdVQ;D+PhYhjiw!s2d>j?-KZ%8huM z@wP|Jv_T_CDBfz-le7T1$Yo;aeglPNf;4@t%0)xdE?m{i+e*SPv3Tk?H+EY+Mqlcr zBT>r$zdnXl?1^fec%S0QGdf;h9>9KBffR7N?aNi9jaf(i>6vi zb{HKr>ia>Ya`Z~Ix=;vHH<%YYYzr5BtwV&|q7B;Swr=}85Su6PH>9O2!A)?eT@}hK zGt0JMnwxt61jm#US7_o%N7~-03hc5n(344wi!LS;EFv z2_QQN+cu5>*H63IqA*;+Oe|!8C!n4RLMrvWql6Dx14SX~2_o4b7N^%BXGFzyWKu%= z0JICw;kk7^BI1}w0&$STcVEJcg@%$DJ5wcIS5T6ORJ@|2qhn}QaO#B1=ikY#$Qgv&L1qEr)dd zj&QrGx<(6)u^!(-+dwWCCT2?^DJU%bj#4rR6B7Pj{&->^|IGdPlP_;eOadSoL%pQ} zb9};cLGS}9Q;jV+buO~5h#-d$iQuSl;5zS6*)Oy7apnq4sKm&Ck`j3cb1s7U6_JzU zhXN+|vEaO#3CavGZK^~QV;a4i7zQC%MdwBj?jxtpi0pq1SdSr` z-*1>zr5D8Hy%tWvx#a&wNd)0J8}8nUWFEK2Md~2JK49h%;*0kadDy`rA(bSUkdene zEd{R?-A{9k$*(W#Nh|4bj}5*yqW39p_F3DFvhe6<<$@b`J!T)KVo+ta)w#NrUQ5`o zl%SLVvA}t-M;bpQO%{=g(q-c84%7H=K$p|rO;2We%=YnvBDfv_T?a@6xaBv0@ttWY zIp?w*s>$FqVhZXV1Q46O5O!{5DycmG3qs)^OxJVmuItP&WJUG3mq3;hyLX%Z;0zv+ zel6UWcH$N3WD&sJcZDD@q0 + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UStl_8h__incl.md5 b/preview/pr-1773/api/latest/UStl_8h__incl.md5 new file mode 100644 index 00000000..e40f0dbb --- /dev/null +++ b/preview/pr-1773/api/latest/UStl_8h__incl.md5 @@ -0,0 +1 @@ +56245e3a31ad99d849fb5663ec7fc79f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UStl_8h__incl.png b/preview/pr-1773/api/latest/UStl_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..2c80f09316a9eb72be6d79b777a8ec4a358485e9 GIT binary patch literal 15554 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 + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UStl.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UStl.h
+
+
+Go to the documentation of this file.
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef USTL_H
+
21#define USTL_H
+
22
+
23#include <list>
+
24#include <map>
+
25#include <set>
+
26#include <vector>
+
27#include <string>
+
28#include <algorithm>
+
29#include <stdlib.h>
+
30
+
45template<class K, class V>
+
+
46inline std::list<K> uUniqueKeys(const std::multimap<K, V> & mm)
+
47{
+
48 std::list<K> l;
+
49 typename std::list<K>::reverse_iterator lastValue;
+
50 for(typename std::multimap<K, V>::const_iterator iter = mm.begin(); iter!=mm.end(); ++iter)
+
51 {
+
52 if(iter == mm.begin() || (iter != mm.begin() && *lastValue != iter->first))
+
53 {
+
54 l.push_back(iter->first);
+
55 lastValue = l.rbegin();
+
56 }
+
57 }
+
58 return l;
+
59}
+
+
60
+
66template<class K, class V>
+
+
67inline std::vector<K> uKeys(const std::multimap<K, V> & mm)
+
68{
+
69 std::vector<K> v(mm.size());
+
70 int i=0;
+
71 for(typename std::multimap<K, V>::const_iterator iter = mm.begin(); iter!=mm.end(); ++iter)
+
72 {
+
73 v[i++] = iter->first;
+
74 }
+
75 return v;
+
76}
+
+
77
+
83template<class K, class V>
+
+
84inline std::list<K> uKeysList(const std::multimap<K, V> & mm)
+
85{
+
86 std::list<K> l;
+
87 for(typename std::multimap<K, V>::const_iterator iter = mm.begin(); iter!=mm.end(); ++iter)
+
88 {
+
89 l.push_back(iter->first);
+
90 }
+
91 return l;
+
92}
+
+
93
+
99template<class K, class V>
+
+
100inline std::vector<V> uValues(const std::multimap<K, V> & mm)
+
101{
+
102 std::vector<V> v(mm.size());
+
103 int i=0;
+
104 for(typename std::multimap<K, V>::const_iterator iter = mm.begin(); iter!=mm.end(); ++iter)
+
105 {
+
106 v[i++] = iter->second;
+
107 }
+
108 return v;
+
109}
+
+
110
+
116template<class K, class V>
+
+
117inline std::list<V> uValuesList(const std::multimap<K, V> & mm)
+
118{
+
119 std::list<V> l;
+
120 for(typename std::multimap<K, V>::const_iterator iter = mm.begin(); iter!=mm.end(); ++iter)
+
121 {
+
122 l.push_back(iter->second);
+
123 }
+
124 return l;
+
125}
+
+
126
+
133template<class K, class V>
+
+
134inline std::list<V> uValues(const std::multimap<K, V> & mm, const K & key)
+
135{
+
136 std::list<V> l;
+
137 std::pair<typename std::multimap<K, V>::const_iterator, typename std::multimap<K, V>::const_iterator> range;
+
138 range = mm.equal_range(key);
+
139 for(typename std::multimap<K, V>::const_iterator iter = range.first; iter!=range.second; ++iter)
+
140 {
+
141 l.push_back(iter->second);
+
142 }
+
143 return l;
+
144}
+
+
145
+
151template<class K, class V>
+
+
152inline std::vector<K> uKeys(const std::map<K, V> & m)
+
153{
+
154 std::vector<K> v(m.size());
+
155 int i=0;
+
156 for(typename std::map<K, V>::const_iterator iter = m.begin(); iter!=m.end(); ++iter)
+
157 {
+
158 v[i] = iter->first;
+
159 ++i;
+
160 }
+
161 return v;
+
162}
+
+
163
+
169template<class K, class V>
+
+
170inline std::list<K> uKeysList(const std::map<K, V> & m)
+
171{
+
172 std::list<K> l;
+
173 for(typename std::map<K, V>::const_iterator iter = m.begin(); iter!=m.end(); ++iter)
+
174 {
+
175 l.push_back(iter->first);
+
176 }
+
177 return l;
+
178}
+
+
179
+
185template<class K, class V>
+
+
186inline std::set<K> uKeysSet(const std::map<K, V> & m)
+
187{
+
188 std::set<K> s;
+
189 for(typename std::map<K, V>::const_iterator iter = m.begin(); iter!=m.end(); ++iter)
+
190 {
+
191 s.insert(s.end(), iter->first);
+
192 }
+
193 return s;
+
194}
+
+
195
+
201template<class K, class V>
+
+
202inline std::vector<V> uValues(const std::map<K, V> & m)
+
203{
+
204 std::vector<V> v(m.size());
+
205 int i=0;
+
206 for(typename std::map<K, V>::const_iterator iter = m.begin(); iter!=m.end(); ++iter)
+
207 {
+
208 v[i] = iter->second;
+
209 ++i;
+
210 }
+
211 return v;
+
212}
+
+
213
+
219template<class K, class V>
+
+
220inline std::list<V> uValuesList(const std::map<K, V> & m)
+
221{
+
222 std::list<V> l;
+
223 for(typename std::map<K, V>::const_iterator iter = m.begin(); iter!=m.end(); ++iter)
+
224 {
+
225 l.push_back(iter->second);
+
226 }
+
227 return l;
+
228}
+
+
229
+
237template<class K, class V>
+
+
238inline V uValue(const std::map<K, V> & m, const K & key, const V & defaultValue = V())
+
239{
+
240 V v = defaultValue;
+
241 typename std::map<K, V>::const_iterator i = m.find(key);
+
242 if(i != m.end())
+
243 {
+
244 v = i->second;
+
245 }
+
246 return v;
+
247}
+
+
248
+
257template<class K, class V>
+
+
258inline V uTake(std::map<K, V> & m, const K & key, const V & defaultValue = V())
+
259{
+
260 V v;
+
261 typename std::map<K, V>::iterator i = m.find(key);
+
262 if(i != m.end())
+
263 {
+
264 v = i->second;
+
265 m.erase(i);
+
266 }
+
267 else
+
268 {
+
269 v = defaultValue;
+
270 }
+
271 return v;
+
272}
+
+
273
+
281template<class V>
+
+
282inline typename std::list<V>::iterator uIteratorAt(std::list<V> & list, const unsigned int & pos)
+
283{
+
284 typename std::list<V>::iterator iter = list.begin();
+
285 for(unsigned int i = 0; i<pos && iter != list.end(); ++i )
+
286 {
+
287 ++iter;
+
288 }
+
289 return iter;
+
290}
+
+
291
+
299template<class V>
+
+
300inline typename std::list<V>::const_iterator uIteratorAt(const std::list<V> & list, const unsigned int & pos)
+
301{
+
302 typename std::list<V>::const_iterator iter = list.begin();
+
303 for(unsigned int i = 0; i<pos && iter != list.end(); ++i )
+
304 {
+
305 ++iter;
+
306 }
+
307 return iter;
+
308}
+
+
309
+
317template<class V>
+
+
318inline typename std::set<V>::iterator uIteratorAt(std::set<V> & set, const unsigned int & pos)
+
319{
+
320 typename std::set<V>::iterator iter = set.begin();
+
321 for(unsigned int i = 0; i<pos && iter != set.end(); ++i )
+
322 {
+
323 ++iter;
+
324 }
+
325 return iter;
+
326}
+
+
327
+
335template<class V>
+
+
336inline typename std::set<V>::const_iterator uIteratorAt(const std::set<V> & set, const unsigned int & pos)
+
337{
+
338 typename std::set<V>::const_iterator iter = set.begin();
+
339 for(unsigned int i = 0; i<pos && iter != set.end(); ++i )
+
340 {
+
341 ++iter;
+
342 }
+
343 return iter;
+
344}
+
+
345
+
353template<class V>
+
+
354inline typename std::vector<V>::iterator uIteratorAt(std::vector<V> & v, const unsigned int & pos)
+
355{
+
356 return v.begin() + pos;
+
357}
+
+
358
+
366template<class V>
+
+
367inline typename std::vector<V>::const_iterator uIteratorAt(const std::vector<V> & v, const unsigned int & pos)
+
368{
+
369 return v.begin() + pos;
+
370}
+
+
371
+
379template<class V>
+
+
380inline V & uValueAt(std::list<V> & list, const unsigned int & pos)
+
381{
+
382 typename std::list<V>::iterator iter = uIteratorAt(list, pos);
+
383 return *iter;
+
384}
+
+
385
+
393template<class V>
+
+
394inline const V & uValueAt(const std::list<V> & list, const unsigned int & pos)
+
395{
+
396 typename std::list<V>::const_iterator iter = uIteratorAt(list, pos);
+
397 return *iter;
+
398}
+
+
399
+
406template<class V>
+
+
407inline bool uContains(const std::list<V> & list, const V & value)
+
408{
+
409 return std::find(list.begin(), list.end(), value) != list.end();
+
410}
+
+
411
+
418template<class K, class V>
+
+
419inline bool uContains(const std::map<K, V> & map, const K & key)
+
420{
+
421 return map.find(key) != map.end();
+
422}
+
+
423
+
430template<class K, class V>
+
+
431inline bool uContains(const std::multimap<K, V> & map, const K & key)
+
432{
+
433 return map.find(key) != map.end();
+
434}
+
+
435
+
440template<class K, class V>
+
+
441inline void uInsert(std::map<K, V> & map, const std::pair<K, V> & pair)
+
442{
+
443 std::pair<typename std::map<K, V>::iterator, bool> inserted = map.insert(pair);
+
444 if(inserted.second == false)
+
445 {
+
446 inserted.first->second = pair.second;
+
447 }
+
448}
+
+
449
+
454template<class K, class V>
+
+
455inline void uInsert(std::map<K, V> & map, const std::map<K, V> & items)
+
456{
+
457 for(typename std::map<K, V>::const_iterator iter=items.begin(); iter!=items.end(); ++iter)
+
458 {
+
459 std::pair<typename std::map<K, V>::iterator, bool> inserted = map.insert(*iter);
+
460 if(inserted.second == false)
+
461 {
+
462 inserted.first->second = iter->second;
+
463 }
+
464 }
+
465}
+
+
466
+
472template<class V>
+
+
473inline std::vector<V> uListToVector(const std::list<V> & list)
+
474{
+
475 return std::vector<V>(list.begin(), list.end());
+
476}
+
+
477
+
483template<class V>
+
+
484inline std::list<V> uVectorToList(const std::vector<V> & v)
+
485{
+
486 return std::list<V>(v.begin(), v.end());
+
487}
+
+
488
+
493template<class K, class V>
+
+
494inline std::map<K, V> uMultimapToMap(const std::multimap<K, V> & m)
+
495{
+
496 return std::map<K, V>(m.begin(), m.end());
+
497}
+
+
498
+
502template<class K, class V>
+
+
503inline std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V> & m)
+
504{
+
505 std::map<K, V> mapOut;
+
506 std::list<K> uniqueKeys = uUniqueKeys(m);
+
507 for(typename std::list<K>::const_iterator iter = uniqueKeys.begin(); iter!=uniqueKeys.end(); ++iter)
+
508 {
+
509 if(m.count(*iter) == 1)
+
510 {
+
511 typename std::multimap<K, V>::const_iterator jter=m.find(*iter);
+
512 mapOut.insert(mapOut.end(), std::pair<K,V>(jter->first, jter->second));
+
513 }
+
514 }
+
515 return mapOut;
+
516}
+
+
517
+
523template<class V>
+
+
524inline void uAppend(std::list<V> & list, const std::list<V> & newItems)
+
525{
+
526 list.insert(list.end(), newItems.begin(), newItems.end());
+
527}
+
+
528
+
536template<class V>
+
+
537inline int uIndexOf(const std::vector<V> & list, const V & value)
+
538{
+
539 int index=-1;
+
540 int i=0;
+
541 for(typename std::vector<V>::const_iterator iter = list.begin(); iter!=list.end(); ++iter)
+
542 {
+
543 if(*iter == value)
+
544 {
+
545 index = i;
+
546 break;
+
547 }
+
548 ++i;
+
549 }
+
550 return index;
+
551}
+
+
552
+
+
564inline std::list<std::string> uSplit(const std::string & str, char separator = ' ')
+
565{
+
566 std::list<std::string> v;
+
567 std::string buf;
+
568 for(unsigned int i=0; i<str.size(); ++i)
+
569 {
+
570 if(str[i] != separator)
+
571 {
+
572 buf += str[i];
+
573 }
+
574 else if(buf.size())
+
575 {
+
576 v.push_back(buf);
+
577 buf = "";
+
578 }
+
579 }
+
580 if(buf.size())
+
581 {
+
582 v.push_back(buf);
+
583 }
+
584 return v;
+
585}
+
+
586
+
+
601inline std::string uJoin(const std::list<std::string> & strings, const std::string & separator = "")
+
602{
+
603 std::string out;
+
604 for(std::list<std::string>::const_iterator iter = strings.begin(); iter!=strings.end(); ++iter)
+
605 {
+
606 if(iter!=strings.begin() && !separator.empty())
+
607 {
+
608 out += separator;
+
609 }
+
610 out+=*iter;
+
611 }
+
612 return out;
+
613}
+
+
614
+
+
620inline bool uIsDigit(const char c)
+
621{
+
622 return c >= '0' && c <= '9';
+
623}
+
+
624
+
+
630inline bool uIsInteger(const std::string & str, bool checkForSign = true)
+
631{
+
632 bool isInteger = str.size()!=0;
+
633 for(unsigned int i=0; i<str.size() && isInteger; ++i)
+
634 {
+
635 isInteger = (checkForSign && i==0 && str[i]=='-') || uIsDigit(str[i]);
+
636 }
+
637 return isInteger;
+
638}
+
+
639
+
+
645inline bool uIsNumber(const std::string & str)
+
646{
+
647 std::list<std::string> list = uSplit(str, '.');
+
648 if(list.size() == 1)
+
649 {
+
650 return uIsInteger(str);
+
651 }
+
652 else if(list.size() == 2)
+
653 {
+
654 return uIsInteger(list.front()) && uIsInteger(list.back(), false);
+
655 }
+
656 return false;
+
657}
+
+
658
+
659
+
+
670inline std::list<std::string> uSplitNumChar(const std::string & str)
+
671{
+
672 std::list<std::string> list;
+
673 std::string buf;
+
674 bool num = false;
+
675 for(unsigned int i=0; i<str.size(); ++i)
+
676 {
+
677 if(uIsDigit(str[i]))
+
678 {
+
679 if(!num && buf.size())
+
680 {
+
681 list.push_back(buf);
+
682 buf.clear();
+
683 }
+
684 buf += str[i];
+
685 num = true;
+
686 }
+
687 else
+
688 {
+
689 if(num)
+
690 {
+
691 list.push_back(buf);
+
692 buf.clear();
+
693 }
+
694 buf += str[i];
+
695 num = false;
+
696 }
+
697 }
+
698 if(buf.size())
+
699 {
+
700 list.push_back(buf);
+
701 }
+
702 return list;
+
703}
+
+
704
+
+
717inline int uStrNumCmp(const std::string & a, const std::string & b)
+
718{
+
719 std::vector<std::string> listA;
+
720 std::vector<std::string> listB;
+
721
+
722 listA = uListToVector(uSplitNumChar(a));
+
723 listB = uListToVector(uSplitNumChar(b));
+
724
+
725 unsigned int i;
+
726 int result = 0;
+
727 for(i=0; i<listA.size() && i<listB.size(); ++i)
+
728 {
+
729 if(uIsDigit(listA[i].at(0)) && uIsDigit(listB[i].at(0)))
+
730 {
+
731 //padding if zeros at the beginning
+
732 if(listA[i].at(0) == '0' && listB[i].size() < listA[i].size())
+
733 {
+
734 while(listB[i].size() < listA[i].size())
+
735 {
+
736 listB[i] += '0';
+
737 }
+
738 }
+
739 else if(listB[i].at(0) == '0' && listA[i].size() < listB[i].size())
+
740 {
+
741 while(listA[i].size() < listB[i].size())
+
742 {
+
743 listA[i] += '0';
+
744 }
+
745 }
+
746
+
747 if(listB[i].size() < listA[i].size())
+
748 {
+
749 result = 1;
+
750 }
+
751 else if(listB[i].size() > listA[i].size())
+
752 {
+
753 result = -1;
+
754 }
+
755 else
+
756 {
+
757 result = listA[i].compare(listB[i]);
+
758 }
+
759 }
+
760 else if(uIsDigit(listA[i].at(0)))
+
761 {
+
762 result = -1;
+
763 }
+
764 else if(uIsDigit(listB[i].at(0)))
+
765 {
+
766 result = 1;
+
767 }
+
768 else
+
769 {
+
770 result = listA[i].compare(listB[i]);
+
771 }
+
772
+
773 if(result != 0)
+
774 {
+
775 break;
+
776 }
+
777 }
+
778
+
779 return result;
+
780}
+
+
781
+
+
785inline bool uStrContains(const std::string & string, const std::string & substring)
+
786{
+
787 return string.find(substring) != std::string::npos;
+
788}
+
+
789
+
790inline int uCompareVersion(const std::string & version, int major, int minor=-1, int patch=-1)
+
791{
+
792 std::vector<std::string> v = uListToVector(uSplit(version, '.'));
+
793 if(v.size() == 3)
+
794 {
+
795 int vMajor = atoi(v[0].c_str());
+
796 int vMinor = atoi(v[1].c_str());
+
797 int vPatch = atoi(v[2].c_str());
+
798 if(vMajor > major ||
+
799 (vMajor == major && minor!=-1 && vMinor > minor) ||
+
800 (vMajor == major && minor!=-1 && vMinor == minor && patch!=-1 && vPatch > patch))
+
801 {
+
802 return 1;
+
803 }
+
804 else if(vMajor == major && (minor == -1 || (vMinor == minor && (patch == -1 || vPatch == patch))))
+
805 {
+
806 return 0;
+
807 }
+
808 }
+
809 return -1;
+
810}
+
811
+
812inline std::string uPad(const std::string & title, int padding = 20)
+
813{
+
814 int emptySize = padding - (int)title.size();
+
815 if(emptySize>0)
+
816 {
+
817 return title + std::string(emptySize, ' ');
+
818 }
+
819 return title;
+
820}
+
821
+
822#endif /* USTL_H */
+
V uValue(const std::map< K, V > &m, const K &key, const V &defaultValue=V())
Definition UStl.h:238
+
V & uValueAt(std::list< V > &list, const unsigned int &pos)
Definition UStl.h:380
+
std::string uJoin(const std::list< std::string > &strings, const std::string &separator="")
Definition UStl.h:601
+
std::list< std::string > uSplitNumChar(const std::string &str)
Definition UStl.h:670
+
void uAppend(std::list< V > &list, const std::list< V > &newItems)
Definition UStl.h:524
+
bool uContains(const std::list< V > &list, const V &value)
Definition UStl.h:407
+
std::list< V > uVectorToList(const std::vector< V > &v)
Definition UStl.h:484
+
bool uIsNumber(const std::string &str)
Definition UStl.h:645
+
std::list< K > uUniqueKeys(const std::multimap< K, V > &mm)
Definition UStl.h:46
+
V uTake(std::map< K, V > &m, const K &key, const V &defaultValue=V())
Definition UStl.h:258
+
std::vector< V > uValues(const std::multimap< K, V > &mm)
Definition UStl.h:100
+
std::vector< V > uListToVector(const std::list< V > &list)
Definition UStl.h:473
+
std::list< V > uValuesList(const std::multimap< K, V > &mm)
Definition UStl.h:117
+
std::vector< K > uKeys(const std::multimap< K, V > &mm)
Definition UStl.h:67
+
std::list< V >::iterator uIteratorAt(std::list< V > &list, const unsigned int &pos)
Definition UStl.h:282
+
std::list< std::string > uSplit(const std::string &str, char separator=' ')
Definition UStl.h:564
+
bool uStrContains(const std::string &string, const std::string &substring)
Definition UStl.h:785
+
std::map< K, V > uMultimapToMapUnique(const std::multimap< K, V > &m)
Definition UStl.h:503
+
void uInsert(std::map< K, V > &map, const std::pair< K, V > &pair)
Definition UStl.h:441
+
bool uIsDigit(const char c)
Definition UStl.h:620
+
int uIndexOf(const std::vector< V > &list, const V &value)
Definition UStl.h:537
+
std::set< K > uKeysSet(const std::map< K, V > &m)
Definition UStl.h:186
+
std::list< K > uKeysList(const std::multimap< K, V > &mm)
Definition UStl.h:84
+
int uStrNumCmp(const std::string &a, const std::string &b)
Definition UStl.h:717
+
std::map< K, V > uMultimapToMap(const std::multimap< K, V > &m)
Definition UStl.h:494
+
bool uIsInteger(const std::string &str, bool checkForSign=true)
Definition UStl.h:630
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UThreadC_8h_source.html b/preview/pr-1773/api/latest/UThreadC_8h_source.html new file mode 100644 index 00000000..08283609 --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadC_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UThreadC.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThreadC.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UTHREADC_H
+
21#define UTHREADC_H
+
22
+
23#include <errno.h>
+
24
+
25/*
+
26 * Use of StateThread is safer. The Thread class in his
+
27 * base form is not supported.
+
28 * @see StateThread
+
29 */
+
30#ifdef _WIN32
+
31 #include "rtabmap/utilite/Win32/UThreadC.h"
+
32#else
+
33 #include "rtabmap/utilite/Posix/UThreadC.h"
+
34#endif
+
35
+
36#endif // UTHREADC_H
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UThreadNode_8h.html b/preview/pr-1773/api/latest/UThreadNode_8h.html new file mode 100644 index 00000000..655bada4 --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadNode_8h.html @@ -0,0 +1,204 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UThreadNode.h File Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UThreadNode.h File Reference
+
+
+ +

Backward-compatible alias header for UThread. +More...

+
#include "rtabmap/utilite/UThread.h"
+
+Include dependency graph for UThreadNode.h:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef UThread UThreadNode
 Alias for UThread, kept for backward compatibility.
 
+

Detailed Description

+

Backward-compatible alias header for UThread.

+ +

Definition in file UThreadNode.h.

+

Typedef Documentation

+ +

◆ UThreadNode

+ +
+
+ + + + +
typedef UThread UThreadNode
+
+ +

Alias for UThread, kept for backward compatibility.

+ +

Definition at line 31 of file UThreadNode.h.

+ +
+
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UThreadNode_8h.js b/preview/pr-1773/api/latest/UThreadNode_8h.js new file mode 100644 index 00000000..c534a7c5 --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadNode_8h.js @@ -0,0 +1,4 @@ +var UThreadNode_8h = +[ + [ "UThreadNode", "UThreadNode_8h.html#a82fc8ffe23f95d50f934eb27afd351d6", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.map b/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.map new file mode 100644 index 00000000..094f19b1 --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.md5 b/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.md5 new file mode 100644 index 00000000..83efb377 --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.md5 @@ -0,0 +1 @@ +7929548905256604130c7df3c928cfd4 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.png b/preview/pr-1773/api/latest/UThreadNode_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..cd050c80724d0d43c4afa2d0087026d6b5e85ce5 GIT binary patch literal 32989 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şRECc!)4BWKv>R$oapj-q; zY-7b{?0;M|DSOU8vgn6QJQ}&$5!9gsdUx0HSv*pNy_T_thp8%)-^33)G#*YB6X8}d zn8Tnz>&mLC=RhIQhz7cMBJS8h^b76lAly*f5nc!dUoFZWh)RPiDinyc6J;g^Q+PZ^ zbaixU8yo3s6WQ=C>gsR~VjLJ9l00A?S9@-kz!lMeOdgxc(w=Cj!YBrGhn7HN@T9!F zybAucM)9KR#y)}(5;PP3I#STY9BO;;sH2FM}jkZ zEkxwCh}lP6UBjWm6@cBgwA_>TonmWnFbObF-RswDQTJ-&ZNf+P;e$3eGZ6#RFpv`w zeL6on@qQ0V5Q#;T4up|LV%4zv^{5m90Bhj{a>7sHX?{oPM_*O;9OEJ}YA+m{;lRD~ zbKj$2PN;<>8CrAxy+LYtiq^Rc$lYN+kcunrDKE|`I(e@dcPcSllz6yAO$motBqL#y zc!c>y^=K9I7U|mTco#dYl?833m$vjiLoG!dZ1@FDN6vQl_720tS&!5{*OkCaL+M$F zH2uSe4+D58CA&fbdK4d|y1p7V_AF?%Ir5?@to7RRHS=S*st3l#n7O$VclILns>dVJ zVsyWW`xQr^^U>)uXOdQk;h4~cc5XW})>E+s+`|>vjq+BabMo`E0jYWrHWnODAlI~n zBNm{adFcavszWO9L~4Ra0w5c*|4!2HiC*gk=S(AbqlhYusOBr-P{J!8Iet6_Z8Stt zra=q3<>v^YElz$^D&9k_f~%20E`YZXRVWfL`y*8wMXnKZDse4-D;z=v=lZ|(nZ!2( zk_z( zEIWe=SUJTcB(x{;m;r>Lo~Y^!iVl|x*qPMnA79zUJ&3WsIICnK%NnpAox!CBoCpvKg+h7=IjNtZuA1|*f zd0{;Npd`2{Kf3W5tCF(v^VhG9CbaU0E?&QW9d;cP)EdO(VRU%19uAO~mq*74VKiV32@Y2^msX^_^6rUmT(ShiNVX<(s&K1T8?@FnA0J+ylOAY%W^I z3)A!jvW0Ua^Sb+SSs4;@Uf4^w1!@+{w!#@lfV@N&2DgGYI$sdD!h~!Xk@_xve<<@y zn6i*Jd%*%|9?_bv^1`17yH2U>-feC72}v;FRspVCaQ05>OMf5)==v!nq;iH4)uk4K zBoOqi4(1jrt#TCV0QeK4J)Ji!n=Y=d$fe2XCrR*HITPy3v*vx3-n2x1i{j6FbtMq3 z`q)7;gu**b*q1yPflg3B%2ZxlRfpZB41J`Kqkw~gL4zpv2{Ap)euV8m19uJbobs2C zy7E?O$>b@NGDFCOJWhW?*C!iydk=lriE6wKcoIfnQiMz7$J5_wJuB#kp#$t4W!oj# zMc}BS{qyHf+roeOH>`Rair#!^5_V`=wB+#g^-S#FH}I@H_KBd(;x53IJ4uooCoHun=~A<7gL_}Yl1&AM3D z6PTGe=KBFr(M4ifelmX(9%WMNZT#&lfKYJEYQv_G1{w*$*$LDTVf4cukAi!gL}YFU zp8z_q1JA<*%ozA#ew)(y*>8kHf|!3y+)IGCLx5H6M-eE$CiNsUTtcxpzy$sehX))# zR;m0!hGnAgtn}rLKnA}0u|=#;{^I)Q4bQP($GYsZLRRh}48*nv2_E}k3 z^{h&b+PF^GRrzd0$3GGtBidjPR&S5RH%Rda5*1Sm*8;?V@g)CXgZ7=zCWnL)cUG_wO%gQ?HivTaNewULqT3^QG{L@F>lJhxV2h#j+?EiNw2k z^6THG=437DNx999JTc9gU+3&|xS)=|_ji^!AS?G{CW}>{oh~D zY_PTd=Aw15d6B*A5qN@^c6%u$Cy_cN_lX_TomBEXabjR}Gz#r#ZHJv+@xKUEJKkbC zRI(-Z>lkfb1v2zv2b(5-ibC#eVk<{lJL{nPvxjj4wEm#csJ4kU1OcQT27(=3;6I$C;$Ke literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/UThreadNode_8h__incl.map b/preview/pr-1773/api/latest/UThreadNode_8h__incl.map new file mode 100644 index 00000000..cb11ee4e --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadNode_8h__incl.map @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UThreadNode_8h__incl.md5 b/preview/pr-1773/api/latest/UThreadNode_8h__incl.md5 new file mode 100644 index 00000000..4692a86c --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadNode_8h__incl.md5 @@ -0,0 +1 @@ +ed63a4dbe31851bcf14edcdc8127199f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UThreadNode_8h__incl.png b/preview/pr-1773/api/latest/UThreadNode_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..050481f12f322612eb3295f5aae19c2baaa468bc GIT binary patch literal 41997 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%0Ds%qQLuc7jzVuxFl1 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/UThreadNode_8h_source.html b/preview/pr-1773/api/latest/UThreadNode_8h_source.html new file mode 100644 index 00000000..9a4ba4bd --- /dev/null +++ b/preview/pr-1773/api/latest/UThreadNode_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UThreadNode.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThreadNode.h
+
+
+Go to the documentation of this file.
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UTHREADNODE_H_
+
21#define UTHREADNODE_H_
+
22
+
23#include "rtabmap/utilite/UThread.h"
+
24
+ +
32
+
33
+
34#endif /* UTHREADNODE_H_ */
+
UThread UThreadNode
Alias for UThread, kept for backward compatibility.
Definition UThreadNode.h:31
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UThread_8h_source.html b/preview/pr-1773/api/latest/UThread_8h_source.html new file mode 100644 index 00000000..d42b032a --- /dev/null +++ b/preview/pr-1773/api/latest/UThread_8h_source.html @@ -0,0 +1,266 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UThread.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThread.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UTHREADNODE_H
+
21#define UTHREADNODE_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#include "rtabmap/utilite/UThreadC.h"
+
26
+
+
86class UTILITE_EXPORT UThread : public UThreadC<void>
+
87{
+
88public:
+
92 enum Priority{kPLow, kPBelowNormal, kPNormal, kPAboveNormal, kPRealTime};
+
93
+
94public:
+
95 //return caller thread id
+
96 static unsigned long currentThreadId() {return (unsigned long)UThreadC<void>::Self();}
+
97
+
98public:
+
104 UThread(Priority priority = kPNormal);
+
105
+
112 virtual ~UThread();
+
113
+
119 void start();
+
120
+
127 void kill();
+
128
+
135 void join(bool killFirst = false);
+
136
+
141 void setPriority(Priority priority);
+
142
+
149 void setAffinity(int cpu = 0);
+
150
+
154 bool isCreating() const;
+
155
+
159 bool isRunning() const;
+
160
+
164 bool isIdle() const;
+
165
+
169 bool isKilled() const;
+
170
+
171 Handle getThreadHandle() const {return handle_;}
+
172 unsigned long getThreadId() const {return threadId_;}
+
173
+
174protected:
+
175
+
176private:
+
183 virtual void mainLoopBegin() {}
+
184
+
194 virtual void mainLoop() = 0;
+
195
+
203 virtual void mainLoopKill() {}
+
204
+
211 virtual void mainLoopEnd() {}
+
212
+
213 /*
+
214 * Inherited method ThreadMain() from Thread.
+
215 * @see Thread<void>
+
216 */
+
217 void ThreadMain();
+
218
+
219 /*
+
220 * Apply thread priority. This is called when starting the thread.
+
221 * *@todo : Support pthread
+
222 */
+
223 void applyPriority();
+
224
+
225 /*
+
226 * Apply cpu affinity. This is called when starting the thread.
+
227 * *@todo : Support Windows
+
228 */
+
229 void applyAffinity();
+
230
+
231 /*
+
232 * Inherited method Create() from Thread.
+
233 * Here we force this function to be private so the
+
234 * inherited class can't have access to it.
+
235 * @see Thread<void>
+
236 */
+
237 int Create(
+
238 Handle * const & H = 0,
+
239 const bool & CreateDetached = false,
+
240 const unsigned int & StackSize = 0,
+
241 const bool & CancelEnable = false, // UNUSED
+
242 const bool & CancelAsync = false // UNUSED
+
243 ) const;
+
244
+
245 //Methods from UThread<void> class hided
+
246 static int Join( Handle H )
+
247 { return UThreadC<void>::Join(H); }
+
248#ifndef ANDROID
+
249 static int Kill( Handle H )
+
250 { return UThreadC<void>::Kill(H); }
+
251#endif
+
252 static int Detach( Handle H )
+
253 { return UThreadC<void>::Detach(H); }
+
254
+
255private:
+
256 void operator=(UThread &) {}
+
257 UThread( const UThread &) : state_(kSIdle) {}
+
258
+
259private:
+
260 enum State{kSIdle, kSCreating, kSRunning, kSKilled}; /* Enum of states. */
+
261 State state_; /* The thread state. */
+
262 Priority priority_; /* The thread priority. */
+
263 Handle handle_; /* The thread handle. */
+
264 unsigned long threadId_; /* The thread id. */
+
265 int cpuAffinity_; /* The cpu affinity. */
+
266 UMutex killSafelyMutex_; /* Mutex used to protect the kill() method. */
+
267 UMutex runningMutex_; /* Mutex used to notify the join method when the thread has finished. */
+
268};
+
+
269
+
270#endif // UTHREADNODE_H
+ + + +
void start()
+
UThread(Priority priority=kPNormal)
+
bool isIdle() const
+
bool isRunning() const
+
bool isKilled() const
+
virtual ~UThread()
+ +
void setPriority(Priority priority)
+
void kill()
+
void setAffinity(int cpu=0)
+
bool isCreating() const
+
void join(bool killFirst=false)
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UTimer_8h_source.html b/preview/pr-1773/api/latest/UTimer_8h_source.html new file mode 100644 index 00000000..91bdc141 --- /dev/null +++ b/preview/pr-1773/api/latest/UTimer_8h_source.html @@ -0,0 +1,189 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UTimer.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UTimer.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UTIMER_H
+
21#define UTIMER_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24
+
25#ifdef _WIN32
+
26#include <windows.h>
+
27#else
+
28#include <sys/time.h>
+
29#include <time.h>
+
30#endif
+
31
+
+
46class UTILITE_EXPORT UTimer
+
47{
+
48public:
+
49 UTimer();
+
50 ~UTimer();
+
51
+
57 static double now();
+
58
+
62 void start();
+
63
+
67 void stop();
+
68
+
75 double elapsed() {return getElapsedTime();}
+
76 double getElapsedTime();
+
77
+
86 double restart() {return ticks();}
+
87 double ticks();
+
88
+
89private:
+
90#ifdef _WIN32
+
91 LARGE_INTEGER startTimeRecorded_; /* When we start the timer, timeRecorded is copied over lastTimeRecorded.*/
+
92 LARGE_INTEGER stopTimeRecorded_; /* When we stop the timer. */
+
93
+
94 LARGE_INTEGER frequency_; /* Keep the frequency of the counter */
+
95#else
+
96 struct timeval startTimeRecorded_; /* When we start the timer, timeRecorded is copied over lastTimeRecorded.*/
+
97 struct timeval stopTimeRecorded_; /* When we stop the timer. */
+
98#endif
+
99};
+
+
100
+
101#endif //UTIMER_H
+ +
void start()
+
double elapsed()
Definition UTimer.h:75
+
void stop()
+
double restart()
Definition UTimer.h:86
+
static double now()
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UVariant_8h.html b/preview/pr-1773/api/latest/UVariant_8h.html new file mode 100644 index 00000000..6ce3e736 --- /dev/null +++ b/preview/pr-1773/api/latest/UVariant_8h.html @@ -0,0 +1,170 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UVariant.h File Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UVariant.h File Reference
+
+
+ +

UVariant class for storing and converting between different data types. +More...

+
#include "rtabmap/utilite/utilite_export.h"
+#include <string>
+#include <vector>
+
+Include dependency graph for UVariant.h:
+
+
+ + + + + + + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  UVariant
 A variant type that can hold values of different types. More...
 
+

Detailed Description

+

UVariant class for storing and converting between different data types.

+

This class provides a type-safe way to store values of different types and convert between them. It supports basic types (bool, char, int, float, etc.) and arrays of these types.

+

Example:

UVariant v(42);
+
if(v.isInt())
+
{
+
int value = v.toInt();
+
}
+
A variant type that can hold values of different types.
Definition UVariant.h:54
+
+

Definition in file UVariant.h.

+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UVariant_8h.js b/preview/pr-1773/api/latest/UVariant_8h.js new file mode 100644 index 00000000..1a35af49 --- /dev/null +++ b/preview/pr-1773/api/latest/UVariant_8h.js @@ -0,0 +1,4 @@ +var UVariant_8h = +[ + [ "UVariant", "classUVariant.html", "classUVariant" ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UVariant_8h__dep__incl.map b/preview/pr-1773/api/latest/UVariant_8h__dep__incl.map new file mode 100644 index 00000000..2d0b0580 --- /dev/null +++ b/preview/pr-1773/api/latest/UVariant_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UVariant_8h__dep__incl.md5 b/preview/pr-1773/api/latest/UVariant_8h__dep__incl.md5 new file mode 100644 index 00000000..76b53d37 --- /dev/null +++ b/preview/pr-1773/api/latest/UVariant_8h__dep__incl.md5 @@ -0,0 +1 @@ +90af80d92178df8d8c21353824e86972 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UVariant_8h__dep__incl.png b/preview/pr-1773/api/latest/UVariant_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3b88067461a21cfbf4025aacf60ec18f63a58ee2 GIT binary patch literal 15445 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 + + + + + + + + diff --git a/preview/pr-1773/api/latest/UVariant_8h__incl.md5 b/preview/pr-1773/api/latest/UVariant_8h__incl.md5 new file mode 100644 index 00000000..7f6eb6e9 --- /dev/null +++ b/preview/pr-1773/api/latest/UVariant_8h__incl.md5 @@ -0,0 +1 @@ +50852576dd9a1a6241433eaa176fa167 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UVariant_8h__incl.png b/preview/pr-1773/api/latest/UVariant_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..cd85a22fd72899862a2c1dcfe3bb1d806b8ac1f2 GIT binary patch literal 10406 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 + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UVariant.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVariant.h
+
+
+Go to the documentation of this file.
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UVARIANT_H
+
21#define UVARIANT_H
+
22
+
23#include "rtabmap/utilite/utilite_export.h" // DLL export/import defines
+
24#include <string>
+
25#include <vector>
+
26
+
+
53class UTILITE_EXPORT UVariant
+
54{
+
55public:
+ +
81public:
+ +
87
+
92 UVariant(const bool & value);
+
93
+
98 UVariant(const signed char & value);
+
99
+
104 UVariant(const unsigned char & value);
+
105
+
110 UVariant(const short & value);
+
111
+
116 UVariant(const unsigned short & value);
+
117
+
122 UVariant(const int & value);
+
123
+
128 UVariant(const unsigned int & value);
+
129
+
134 UVariant(const float & value);
+
135
+
140 UVariant(const double & value);
+
141
+
146 UVariant(const char * value);
+
147
+
152 UVariant(const std::string & value);
+
153
+
158 UVariant(const std::vector<signed char> & value);
+
159
+
164 UVariant(const std::vector<unsigned char> & value);
+
165
+
170 UVariant(const std::vector<short> & value);
+
171
+
176 UVariant(const std::vector<unsigned short> & value);
+
177
+
182 UVariant(const std::vector<int> & value);
+
183
+
188 UVariant(const std::vector<unsigned int> & value);
+
189
+
194 UVariant(const std::vector<float> & value);
+
195
+
200 UVariant(const std::vector<double> & value);
+
201
+
206 Type type() const {return type_;}
+
207
+
212 bool isUndef() const {return type_ == kUndef;}
+
213
+
218 bool isBool() const {return type_ == kBool;}
+
219
+
224 bool isChar() const {return type_ == kChar;}
+
225
+
230 bool isUChar() const {return type_ == kUChar;}
+
231
+
236 bool isShort() const {return type_ == kShort;}
+
237
+
242 bool isUShort() const {return type_ == kUShort;}
+
243
+
248 bool isInt() const {return type_ == kInt;}
+
249
+
254 bool isUInt() const {return type_ == kUInt;}
+
255
+
260 bool isFloat() const {return type_ == kFloat;}
+
261
+
266 bool isDouble() const {return type_ == kDouble;}
+
267
+
272 bool isStr() const {return type_ == kStr;}
+
273
+
278 bool isCharArray() const {return type_ == kCharArray;}
+
279
+
284 bool isUCharArray() const {return type_ == kUCharArray;}
+
285
+
290 bool isShortArray() const {return type_ == kShortArray;}
+
291
+
296 bool isUShortArray() const {return type_ == kUShortArray;}
+
297
+
302 bool isIntArray() const {return type_ == kIntArray;}
+
303
+
308 bool isUIntArray() const {return type_ == kUIntArray;}
+
309
+
314 bool isFloatArray() const {return type_ == kFloatArray;}
+
315
+
320 bool isDoubleArray() const {return type_ == kDoubleArray;}
+
321
+
326 bool toBool() const;
+
327
+
333 signed char toChar(bool * ok = 0) const;
+
334
+
340 unsigned char toUChar(bool * ok = 0) const;
+
341
+
347 short toShort(bool * ok = 0) const;
+
348
+
354 unsigned short toUShort(bool * ok = 0) const;
+
355
+
361 int toInt(bool * ok = 0) const;
+
362
+
368 unsigned int toUInt(bool * ok = 0) const;
+
369
+
375 float toFloat(bool * ok = 0) const;
+
376
+
382 double toDouble(bool * ok = 0) const;
+
383
+
389 std::string toStr(bool * ok = 0) const;
+
390
+
396 std::vector<signed char> toCharArray(bool * ok = 0) const;
+
397
+
403 std::vector<unsigned char> toUCharArray(bool * ok = 0) const;
+
404
+
410 std::vector<short> toShortArray(bool * ok = 0) const;
+
411
+
417 std::vector<unsigned short> toUShortArray(bool * ok = 0) const;
+
418
+
424 std::vector<int> toIntArray(bool * ok = 0) const;
+
425
+
431 std::vector<unsigned int> toUIntArray(bool * ok = 0) const;
+
432
+
438 std::vector<float> toFloatArray(bool * ok = 0) const;
+
439
+
445 std::vector<double> toDoubleArray(bool * ok = 0) const;
+
446
+
450 virtual ~UVariant() {}
+
451
+
452private:
+
453 Type type_;
+
454 std::vector<unsigned char> data_;
+
455};
+
+
456
+
457#endif /* UVARIANT_H */
+
A variant type that can hold values of different types.
Definition UVariant.h:54
+
bool isUShortArray() const
Check if the variant is an array of unsigned short.
Definition UVariant.h:296
+
UVariant(const char *value)
Constructor from C string.
+
UVariant(const std::string &value)
Constructor from std::string.
+
unsigned char toUChar(bool *ok=0) const
Convert the variant to unsigned char.
+
UVariant(const double &value)
Constructor from double.
+
float toFloat(bool *ok=0) const
Convert the variant to float.
+
bool isBool() const
Check if the variant is a bool.
Definition UVariant.h:218
+
UVariant(const std::vector< int > &value)
Constructor from array of int.
+
std::vector< double > toDoubleArray(bool *ok=0) const
Convert the variant to array of double.
+
bool isFloat() const
Check if the variant is a float.
Definition UVariant.h:260
+
UVariant(const unsigned int &value)
Constructor from unsigned int.
+
bool isDouble() const
Check if the variant is a double.
Definition UVariant.h:266
+
Type
Enumeration of supported data types.
Definition UVariant.h:60
+ +
@ kFloatArray
Definition UVariant.h:77
+ +
@ kUIntArray
Definition UVariant.h:76
+
@ kDouble
Definition UVariant.h:69
+
@ kUShortArray
Definition UVariant.h:74
+
@ kShortArray
Definition UVariant.h:73
+ + +
@ kUShort
Definition UVariant.h:65
+
@ kDoubleArray
Definition UVariant.h:78
+
@ kIntArray
Definition UVariant.h:75
+
@ kUCharArray
Definition UVariant.h:72
+ + + + +
@ kCharArray
Definition UVariant.h:71
+
UVariant(const unsigned short &value)
Constructor from unsigned short.
+
std::vector< unsigned short > toUShortArray(bool *ok=0) const
Convert the variant to array of unsigned short.
+
bool isInt() const
Check if the variant is an int.
Definition UVariant.h:248
+
double toDouble(bool *ok=0) const
Convert the variant to double.
+
Type type() const
Get the type of the stored value.
Definition UVariant.h:206
+
UVariant(const short &value)
Constructor from short.
+
unsigned short toUShort(bool *ok=0) const
Convert the variant to unsigned short.
+
bool isShort() const
Check if the variant is a short.
Definition UVariant.h:236
+
bool isChar() const
Check if the variant is a signed char.
Definition UVariant.h:224
+
UVariant(const std::vector< unsigned short > &value)
Constructor from array of unsigned short.
+
bool isUCharArray() const
Check if the variant is an array of unsigned char.
Definition UVariant.h:284
+
UVariant(const unsigned char &value)
Constructor from unsigned char.
+
bool isShortArray() const
Check if the variant is an array of short.
Definition UVariant.h:290
+
std::string toStr(bool *ok=0) const
Convert the variant to string.
+
UVariant(const std::vector< unsigned char > &value)
Constructor from array of unsigned char.
+
UVariant(const std::vector< signed char > &value)
Constructor from array of signed char.
+
UVariant(const std::vector< short > &value)
Constructor from array of short.
+
bool isUShort() const
Check if the variant is an unsigned short.
Definition UVariant.h:242
+
UVariant(const int &value)
Constructor from int.
+
std::vector< int > toIntArray(bool *ok=0) const
Convert the variant to array of int.
+
bool isFloatArray() const
Check if the variant is an array of float.
Definition UVariant.h:314
+
UVariant(const bool &value)
Constructor from bool.
+
bool isIntArray() const
Check if the variant is an array of int.
Definition UVariant.h:302
+
bool isDoubleArray() const
Check if the variant is an array of double.
Definition UVariant.h:320
+
unsigned int toUInt(bool *ok=0) const
Convert the variant to unsigned int.
+
signed char toChar(bool *ok=0) const
Convert the variant to signed char.
+
bool isUndef() const
Check if the variant is undefined.
Definition UVariant.h:212
+
int toInt(bool *ok=0) const
Convert the variant to int.
+
UVariant(const float &value)
Constructor from float.
+
bool isCharArray() const
Check if the variant is an array of signed char.
Definition UVariant.h:278
+
std::vector< unsigned char > toUCharArray(bool *ok=0) const
Convert the variant to array of unsigned char.
+
std::vector< short > toShortArray(bool *ok=0) const
Convert the variant to array of short.
+
UVariant(const std::vector< float > &value)
Constructor from array of float.
+
short toShort(bool *ok=0) const
Convert the variant to short.
+
std::vector< float > toFloatArray(bool *ok=0) const
Convert the variant to array of float.
+
std::vector< unsigned int > toUIntArray(bool *ok=0) const
Convert the variant to array of unsigned int.
+
UVariant(const std::vector< double > &value)
Constructor from array of double.
+
UVariant(const std::vector< unsigned int > &value)
Constructor from array of unsigned int.
+
UVariant(const signed char &value)
Constructor from signed char.
+
std::vector< signed char > toCharArray(bool *ok=0) const
Convert the variant to array of signed char.
+
bool isUInt() const
Check if the variant is an unsigned int.
Definition UVariant.h:254
+
virtual ~UVariant()
Virtual destructor.
Definition UVariant.h:450
+
bool toBool() const
Convert the variant to bool.
+
UVariant()
Default constructor Creates an undefined variant.
+
bool isUIntArray() const
Check if the variant is an array of unsigned int.
Definition UVariant.h:308
+
bool isStr() const
Check if the variant is a string.
Definition UVariant.h:272
+
bool isUChar() const
Check if the variant is an unsigned char.
Definition UVariant.h:230
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UWin32_8h_source.html b/preview/pr-1773/api/latest/UWin32_8h_source.html new file mode 100644 index 00000000..a5d90305 --- /dev/null +++ b/preview/pr-1773/api/latest/UWin32_8h_source.html @@ -0,0 +1,180 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/Win32/UWin32.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UWin32.h
+
+
+
1
+
2// Written by Phillip Sitbon
+
3// Copyright 2003
+
4//
+
5// Win32.h
+
6// - Windows includes
+
7//
+
9#ifndef _U_Win32_
+
10#define _U_Win32_
+
11
+
12 #if !defined(_WINDOWS_)
+
13 // WIN32 Excludes
+
14 #ifdef WIN32_LEAN_AND_MEAN
+
15 # define VC_EXTRALEAN
+
16 # define WIN32_LEAN_AND_MEAN
+
17 # define _PRSHT_H_
+
18 # define NOGDICAPMASKS // CC_*, LC_*, PC_*, CP_*, TC_*, RC_
+
19 # define NOVIRTUALKEYCODES // VK_*
+
20 # define NOWINMESSAGES // WM_*, EM_*, LB_*, CB_*
+
21 # define NOWINSTYLES // WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
+
22 # define NOSYSMETRICS // SM_*
+
23 # define NOMENUS // MF_*
+
24 # define NOICONS // IDI_*
+
25 # define NOKEYSTATES // MK_*
+
26 # define NOSYSCOMMANDS // SC_*
+
27 # define NORASTEROPS // Binary and Tertiary raster ops
+
28 # define NOSHOWWINDOW // SW_*
+
29 # define OEMRESOURCE // OEM Resource values
+
30 # define NOATOM // Atom Manager routines
+
31 # define NOCLIPBOARD // Clipboard routines
+
32 # define NOCOLOR // Screen colors
+
33 # define NOCTLMGR // Control and Dialog routines
+
34 # define NODRAWTEXT // DrawText() and DT_*
+
35 # define NOGDI // All GDI defines and routines
+
36 # define NOKERNEL // All KERNEL defines and routines
+
37 # define NOUSER // All USER defines and routines
+
38 # define NONLS // All NLS defines and routines
+
39 # define NOMB // MB_* and MessageBox()
+
40 # define NOMEMMGR // GMEM_*, LMEM_*, GHND, LHND, associated routines
+
41 # define NOMETAFILE // typedef METAFILEPICT
+
42 # define NOMINMAX // Macros min(a,b) and max(a,b)
+
43 # define NOMSG // typedef MSG and associated routines
+
44 # define NOOPENFILE // OpenFile(), OemToAnsi, AnsiToOem, and OF_*
+
45 # define NOSCROLL // SB_* and scrolling routines
+
46 # define NOSERVICE // All Service Controller routines, SERVICE_ equates, etc.
+
47 # define NOSOUND // Sound driver routines
+
48 # define NOTEXTMETRIC // typedef TEXTMETRIC and associated routines
+
49 # define NOWH // SetWindowsHook and WH_*
+
50 # define NOWINOFFSETS // GWL_*, GCL_*, associated routines
+
51 # define NOCOMM // COMM driver routines
+
52 # define NOKANJI // Kanji support stuff.
+
53 # define NOHELP // Help engine interface.
+
54 # define NOPROFILER // Profiler interface.
+
55 # define NODEFERWINDOWPOS // DeferWindowPos routines
+
56 # define NOMCX // Modem Configuration Extensions
+
57 #endif // WIN32_LEAN_AND_MEAN
+
58 //
+
59 # include <windows.h>
+
60 #endif
+
61
+
62#endif // !_U_Win32_
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/UserDataEvent_8h_source.html b/preview/pr-1773/api/latest/UserDataEvent_8h_source.html new file mode 100644 index 00000000..e4d564b4 --- /dev/null +++ b/preview/pr-1773/api/latest/UserDataEvent_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/UserDataEvent.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UserDataEvent.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef USERDATAEVENT_H_
+
29#define USERDATAEVENT_H_
+
30
+
31#include <opencv2/opencv.hpp>
+
32#include <rtabmap/utilite/UEvent.h>
+
33
+
34namespace rtabmap
+
35{
+
36
+
+
40class UserDataEvent : public UEvent
+
41{
+
42public:
+
43 UserDataEvent(const cv::Mat & data) :
+
44 UEvent(0),
+
45 data_(data)
+
46 {}
+ +
48 virtual std::string getClassName() const {return "UserDataEvent";}
+
49
+
50 const cv::Mat & data() const {return data_;}
+
51
+
52private:
+
53 cv::Mat data_;
+
54};
+
+
55
+
56}
+
57
+
58#endif /* USERDATAEVENT_H_ */
+
59
+ + +
virtual std::string getClassName() const
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/UtiLite_8h_source.html b/preview/pr-1773/api/latest/UtiLite_8h_source.html new file mode 100644 index 00000000..49b92e77 --- /dev/null +++ b/preview/pr-1773/api/latest/UtiLite_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UtiLite.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UtiLite.h
+
+
+
1/*
+
2* utilite is a cross-platform library with
+
3* useful utilities for fast and small developing.
+
4* Copyright (C) 2010 Mathieu Labbe
+
5*
+
6* utilite is free library: you can redistribute it and/or modify
+
7* it under the terms of the GNU Lesser General Public License as published by
+
8* the Free Software Foundation, either version 3 of the License, or
+
9* (at your option) any later version.
+
10*
+
11* utilite is distributed in the hope that it will be useful,
+
12* but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14* GNU Lesser General Public License for more details.
+
15*
+
16* You should have received a copy of the GNU Lesser General Public License
+
17* along with this program. If not, see <http://www.gnu.org/licenses/>.
+
18*/
+
19
+
20#ifndef UTILITE_H
+
21#define UTILITE_H
+
22
+
203#include "rtabmap/utilite/UStl.h"
+ +
205#include "rtabmap/utilite/UDirectory.h"
+
206#include "rtabmap/utilite/UFile.h"
+ +
208#include "rtabmap/utilite/UEventsManager.h"
+
209#include "rtabmap/utilite/UEventsHandler.h"
+
210#include "rtabmap/utilite/UEvent.h"
+ +
212#include "rtabmap/utilite/UMutex.h"
+
213#include "rtabmap/utilite/USemaphore.h"
+ +
215#include "rtabmap/utilite/UTimer.h"
+ + +
218
+
219#endif /* UTILITE_H */
+
Some conversion functions.
+
ULogger class and convenient macros.
+
Basic mathematics functions.
+
UProcessInfo class for getting process information.
+
Wrappers of STL for convenient functions.
+
Backward-compatible alias header for UThread.
+
UVariant class for storing and converting between different data types.
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/VWDictionary_8h_source.html b/preview/pr-1773/api/latest/VWDictionary_8h_source.html new file mode 100644 index 00000000..ad35f77f --- /dev/null +++ b/preview/pr-1773/api/latest/VWDictionary_8h_source.html @@ -0,0 +1,416 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/VWDictionary.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VWDictionary.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31
+
32#include <opencv2/highgui/highgui.hpp>
+
33#include <opencv2/core/core.hpp>
+
34#if CV_MAJOR_VERSION < 5
+
35#include <opencv2/features2d/features2d.hpp>
+
36#else
+
37#include <opencv2/features.hpp>
+
38#endif
+
39#include <list>
+
40#include <set>
+
41#include "rtabmap/core/Parameters.h"
+
42
+
43namespace rtabmap
+
44{
+
45
+
46class DBDriver;
+
47class VisualWord;
+
48class FlannIndex;
+
49
+
+
65class RTABMAP_CORE_EXPORT VWDictionary
+
66{
+
67public:
+ +
87
+
91 static const int ID_START;
+
92
+
96 static const int ID_INVALID;
+
97
+
+
103 static std::string nnStrategyName(NNStrategy strategy)
+
104 {
+
105 switch(strategy) {
+
106 case kNNFlannNaive:
+
107 return "FLANN NAIVE";
+
108 case kNNFlannKdTree:
+
109 return "FLANN KD-TREE";
+
110 case kNNFlannLSH:
+
111 return "FLANN LSH";
+
112 case kNNBruteForce:
+
113 return "BRUTE FORCE";
+
114 case kNNBruteForceGPU:
+
115 return "BRUTE FORCE GPU";
+
116 case kNNNanoFlannKdTree:
+
117 return "NANOFLANN KD-TREE";
+
118 case kNNFlannKdTreeSingle:
+
119 return "FLANN KD-TREE SINGLE";
+
120 default:
+
121 return "Unknown";
+
122 }
+
123 }
+
+
124
+
125
+
126
+
127public:
+
132 VWDictionary(const ParametersMap & parameters = ParametersMap());
+
133
+
139 virtual ~VWDictionary();
+
140
+
145 virtual void parseParameters(const ParametersMap & parameters);
+
146
+
153 virtual void update();
+
154
+
169 virtual std::list<int> addNewWords(
+
170 const cv::Mat & descriptors,
+
171 int signatureId);
+
172
+
179 virtual void addWord(VisualWord * vw);
+
180
+
190 std::vector<int> findNN(const std::list<VisualWord *> & vws) const;
+
191
+
201 std::vector<int> findNN(const cv::Mat & descriptors) const;
+
202
+
212 bool addWordRef(int wordId, int signatureId);
+
213
+
222 void removeAllWordRef(int wordId, int signatureId);
+
223
+
229 const VisualWord * getWord(int id) const;
+
230
+
239 VisualWord * getUnusedWord(int id) const;
+
240
+
245 void setLastWordId(int id) {_lastWordId = id;}
+
246
+
251 const std::map<int, VisualWord *> & getVisualWords() const {return _visualWords;}
+
252
+
264 float getNndrRatio() const {return _nndrRatio;}
+
265
+
270 unsigned int getNotIndexedWordsCount() const {return (int)_notIndexedWords.size();}
+
271
+ +
277
+
282 int getTotalActiveReferences() const {return _totalActiveReferences;}
+
283
+
288 unsigned int getIndexedWordsCount() const;
+
289
+
294 unsigned int getIndexMemoryUsed() const; // KB
+
295
+
300 unsigned long getMemoryUsed() const; //Bytes
+
301
+
309 bool setNNStrategy(NNStrategy strategy);
+
310
+
315 NNStrategy getNNStrategy() const {return _strategy;}
+
316
+
321 bool isIncremental() const {return _incrementalDictionary;}
+
322
+
327 bool isIncrementalFlann() const {return _incrementalFlann;}
+
328
+ +
336
+
345 void setFixedDictionary(const std::string & dictionaryPath);
+
346
+
351 bool isModified() const;
+
352 // Re-index all the words from scratch. The index then contains the words in
+
353 // the same order than the one built by update() on a dictionary freshly
+
354 // loaded from a database, which is required to serialize it (the serialized
+
355 // index is matched against the words in that order when deserialized).
+
356 void rebuildIndex();
+
357
+
362 std::vector<unsigned char> serializeIndex() const;
+
363
+
369 bool deserializeIndex(const std::vector<unsigned char> & data);
+
370
+
377 bool deserializeIndex(const unsigned char * data, size_t size);
+
378
+
386 void exportDictionary(const char * fileNameReferences, const char * fileNameDescriptors) const;
+
387
+
394 void clear(bool printWarningsIfNotEmpty = true);
+
395
+
405 std::vector<VisualWord *> getUnusedWords() const;
+
406
+
411 std::vector<int> getUnusedWordIds() const;
+
412
+
417 unsigned int getUnusedWordsSize() const {return (int)_unusedWords.size();}
+
418
+
425 void removeWords(const std::vector<VisualWord*> & words); // caller must delete the words
+
426
+ +
433
+
434public:
+
446 static cv::Mat convertBinTo32F(const cv::Mat & descriptorsIn, bool byteToFloat = true);
+
447
+
460 static cv::Mat convert32FToBin(const cv::Mat & descriptorsIn, bool byteToFloat = true);
+
461
+
462protected:
+ +
468
+
469protected:
+
474 std::map<int, VisualWord *> _visualWords; //<id,VisualWord*>
+
475
+ +
481
+
482private:
+
486 bool _incrementalDictionary;
+
487
+
491 bool _incrementalFlann;
+
492
+
496 float _rebalancingFactor;
+
497
+
501 int _flannThreads;
+
502
+
506 bool _byteToFloat;
+
507
+
514 float _nndrRatio;
+
515
+
519 std::string _dictionaryPath; // a pre-computed dictionary (.txt or .db)
+
520
+
524 std::string _newDictionaryPath; // a pre-computed dictionary (.txt or .db)
+
525
+
529 bool _newWordsComparedTogether;
+
530
+
534 bool _serializeWithChecksum;
+
535
+
539 int _lastWordId;
+
540
+
544 bool useDistanceL1_;
+
545
+
549 FlannIndex * _flannIndex;
+
550
+
554 cv::Mat _dataTree;
+
555
+
559 bool _modified;
+
560
+
564 NNStrategy _strategy;
+
565
+
569 std::map<int ,int> _mapIndexId;
+
570
+
574 std::map<int ,int> _mapIdIndex;
+
575
+
580 std::map<int, VisualWord*> _unusedWords; //<id,VisualWord*>
+
584 std::set<int> _notIndexedWords;
+
585
+
589 std::set<int> _removedIndexedWords;
+
590};
+
+
591
+
592} // namespace rtabmap
+
Nearest neighbor index over a set of features.
Definition FlannIndex.h:56
+
Manages a dictionary of visual words for visual place recognition and loop closure detection.
+
int getNextId()
Get the next available visual word ID.
+
bool deserializeIndex(const unsigned char *data, size_t size)
Deserialize the search index from raw bytes.
+
unsigned int getUnusedWordsSize() const
Get the count of unused visual words.
+
void exportDictionary(const char *fileNameReferences, const char *fileNameDescriptors) const
Export the dictionary to files.
+
std::vector< unsigned char > serializeIndex() const
Serialize the search index to a byte vector.
+
unsigned int getNotIndexedWordsCount() const
Get the count of words not yet indexed in the search tree.
+
virtual std::list< int > addNewWords(const cv::Mat &descriptors, int signatureId)
Add new visual words from descriptors.
+
static const int ID_START
Starting ID for visual words (typically 1)
+
void deleteUnusedWords()
Delete all unused visual words.
+
bool deserializeIndex(const std::vector< unsigned char > &data)
Deserialize the search index from a byte vector.
+
float getNndrRatio() const
Get the Nearest Neighbor Distance Ratio (NNDR) threshold.
+
int _totalActiveReferences
Total count of active word-to-signature references.
+
void clear(bool printWarningsIfNotEmpty=true)
Clear all visual words and reset the dictionary.
+
const VisualWord * getWord(int id) const
Get a visual word by ID.
+
void setFixedDictionary(const std::string &dictionaryPath)
Set the dictionary to fixed mode and load from file.
+
unsigned int getIndexMemoryUsed() const
Get the memory used by the search index.
+
std::vector< int > getUnusedWordIds() const
Get IDs of all unused visual words.
+
int getLastIndexedWordId() const
Get the ID of the last indexed word.
+
unsigned int getIndexedWordsCount() const
Get the count of words currently indexed in the search tree.
+
const std::map< int, VisualWord * > & getVisualWords() const
Get all visual words.
+
bool isIncremental() const
Check if the dictionary is in incremental mode.
+
static std::string nnStrategyName(NNStrategy strategy)
Get the name of a nearest neighbor strategy.
+
static cv::Mat convertBinTo32F(const cv::Mat &descriptorsIn, bool byteToFloat=true)
Convert binary descriptors to 32-bit float format.
+
void removeWords(const std::vector< VisualWord * > &words)
Remove words from the dictionary.
+
static const int ID_INVALID
Invalid visual word ID (typically 0)
+
virtual void update()
Update the search index with newly added words.
+
virtual void parseParameters(const ParametersMap &parameters)
Parse and apply parameters from a parameters map.
+
NNStrategy
Nearest neighbor search strategies for descriptor matching.
+
@ kNNBruteForce
Brute force CPU search.
+
@ kNNNanoFlannKdTree
nanoflann kd-tree index (float descriptors only, incremental)
+
@ kNNBruteForceGPU
Brute force GPU-accelerated search (requires CUDA)
+
@ kNNFlannLSH
FLANN Locality-Sensitive Hashing (ideal for binary descriptors)
+
@ kNNFlannKdTreeSingle
FLANN single exact kd-tree index (rebuilt whenever a word is added, for an index built once)
+
@ kNNFlannKdTree
FLANN kd-tree index (fast for high-dimensional descriptors)
+
@ kNNFlannNaive
FLANN naive search (exhaustive)
+
int getTotalActiveReferences() const
Get the total number of active word-to-signature references.
+
bool isIncrementalFlann() const
Check if FLANN index is updated incrementally.
+
bool isModified() const
Check if the dictionary has been modified since last save.
+
std::vector< int > findNN(const cv::Mat &descriptors) const
Find nearest neighbor visual word IDs for descriptors.
+
void setIncrementalDictionary()
Set the dictionary to incremental mode.
+
NNStrategy getNNStrategy() const
Get the current nearest neighbor search strategy.
+
std::vector< VisualWord * > getUnusedWords() const
Get all unused visual words.
+
VisualWord * getUnusedWord(int id) const
Get an unused visual word by ID.
+
std::vector< int > findNN(const std::list< VisualWord * > &vws) const
Find nearest neighbor visual word IDs for a list of visual words.
+
void removeAllWordRef(int wordId, int signatureId)
Remove all references from a visual word to a signature.
+
unsigned long getMemoryUsed() const
Get the total memory used by the dictionary.
+
static cv::Mat convert32FToBin(const cv::Mat &descriptorsIn, bool byteToFloat=true)
Convert 32-bit float descriptors to binary format.
+
virtual void addWord(VisualWord *vw)
Add an existing visual word to the dictionary.
+
VWDictionary(const ParametersMap &parameters=ParametersMap())
Constructor.
+
std::map< int, VisualWord * > _visualWords
Map of visual word ID to VisualWord pointer.
+
bool addWordRef(int wordId, int signatureId)
Add a reference from a visual word to a signature.
+
void setLastWordId(int id)
Set the last word ID (used when loading from database)
+
bool setNNStrategy(NNStrategy strategy)
Set the nearest neighbor search strategy.
+
virtual ~VWDictionary()
Destructor.
+
Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model.
Definition VisualWord.h:50
+ +
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/Version_8h_source.html b/preview/pr-1773/api/latest/Version_8h_source.html new file mode 100644 index 00000000..1069d393 --- /dev/null +++ b/preview/pr-1773/api/latest/Version_8h_source.html @@ -0,0 +1,231 @@ + + + + + + + + +RTAB-Map: build-docs/corelib/src/include/rtabmap/core/Version.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Version.h
+
+
+
1/*
+
2Copyright (c) 2010-2014, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL UNIVERTY DE SHERBROOKE BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#ifndef VERSION_H_
+
29#define VERSION_H_
+
30
+
31// This is auto-generated!
+
32#define RTABMAP_VERSION "0.23.12"
+
33
+
34#define RTABMAP_VERSION_MAJOR 0
+
35#define RTABMAP_VERSION_MINOR 23
+
36#define RTABMAP_VERSION_PATCH 12
+
37
+
38#define RTABMAP_VERSION_COMPARE(OP, MAJOR, MINOR, PATCH) (RTABMAP_VERSION_MAJOR*10000+RTABMAP_VERSION_MINOR*100+RTABMAP_VERSION_PATCH OP MAJOR*10000+MINOR*100+PATCH)
+
39
+
40//#define RTABMAP_NONFREE
+
41#define RTABMAP_TORO
+
42//#define RTABMAP_G2O
+
43//#define RTABMAP_G2O_CPP11
+
44#define RTABMAP_G2O_WITH_SBA_UTILS
+
45//#define RTABMAP_GTSAM
+
46//#define RTABMAP_CERES
+
47//#define RTABMAP_MRPT
+
48//#define RTABMAP_VERTIGO
+
49//#define RTABMAP_OPENNI
+
50#define RTABMAP_OPENNI2
+
51//#define RTABMAP_FREENECT
+
52//#define RTABMAP_FREENECT2
+
53//#define RTABMAP_K4W2
+
54//#define RTABMAP_K4A
+
55//#define RTABMAP_CVSBA
+
56//#define RTABMAP_POINTMATCHER
+
57//#define RTABMAP_CCCORELIB
+
58//#define RTABMAP_OPEN3D
+
59//#define RTABMAP_FASTCV
+
60//#define RTABMAP_OPENGV
+
61//#define RTABMAP_PDAL
+
62//#define RTABMAP_LIBLAS
+
63//#define RTABMAP_CUDASIFT
+
64//#define RTABMAP_LOAM
+
65//#define RTABMAP_FLOAM
+
66//#define RTABMAP_LIOSAM
+
67#define RTABMAP_DC1394
+
68//#define RTABMAP_FLYCAPTURE2
+
69//#define RTABMAP_ZED
+
70//#define RTABMAP_ZEDOC
+
71//#define RTABMAP_REALSENSE
+
72//#define RTABMAP_REALSENSE_SLAM
+
73//#define RTABMAP_REALSENSE2
+
74//#define RTABMAP_MYNTEYE
+
75//#define RTABMAP_DEPTHAI
+
76//#define RTABMAP_XVSDK
+
77//#define RTABMAP_ORBBEC_SDK
+
78//#define RTABMAP_OCTOMAP
+
79//#define RTABMAP_GRIDMAP
+
80//#define RTABMAP_CPUTSDF
+
81//#define RTABMAP_ALICE_VISION
+
82//#define RTABMAP_OPENCHISEL
+
83//#define RTABMAP_FOVIS
+
84//#define RTABMAP_VISO2
+
85//#define RTABMAP_DVO
+
86//#define RTABMAP_OKVIS
+
87//#define RTABMAP_MSCKF_VIO
+
88//#define RTABMAP_VINS_FUSION
+
89//#define RTABMAP_OPENVINS
+
90//#define RTABMAP_CUVSLAM
+
91//#define RTABMAP_ORB_SLAM
+
92#define RTABMAP_ORB_OCTREE
+
93//#define RTABMAP_TORCH
+
94//#define RTABMAP_PYTHON
+
95#define RTABMAP_MADGWICK
+
96//#define RTABMAP_APRILTAG
+
97//#define RTABMAP_APRILTAG_WITH_ARUCO
+
98
+
99#include <pcl/pcl_config.h>
+
100
+
101#if PCL_VERSION_COMPARE(>, 1, 11, 1)
+
102#include <pcl/types.h>
+
103#define RTABMAP_PCL_INDEX pcl::index_t
+
104#elif PCL_VERSION_COMPARE(>=, 1, 10, 0)
+
105#define RTABMAP_PCL_INDEX std::uint32_t
+
106#else
+
107#include <pcl/pcl_macros.h>
+
108#define RTABMAP_PCL_INDEX pcl::uint32_t
+
109#endif
+
110
+
111#endif /* VERSION_H_ */
+
112
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/VisualWord_8h_source.html b/preview/pr-1773/api/latest/VisualWord_8h_source.html new file mode 100644 index 00000000..1ef65d9e --- /dev/null +++ b/preview/pr-1773/api/latest/VisualWord_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/VisualWord.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VisualWord.h
+
+
+
1/*
+
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
+
3All rights reserved.
+
4
+
5Redistribution and use in source and binary forms, with or without
+
6modification, are permitted provided that the following conditions are met:
+
7 * Redistributions of source code must retain the above copyright
+
8 notice, this list of conditions and the following disclaimer.
+
9 * Redistributions in binary form must reproduce the above copyright
+
10 notice, this list of conditions and the following disclaimer in the
+
11 documentation and/or other materials provided with the distribution.
+
12 * Neither the name of the Universite de Sherbrooke nor the
+
13 names of its contributors may be used to endorse or promote products
+
14 derived from this software without specific prior written permission.
+
15
+
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
26*/
+
27
+
28#pragma once
+
29
+
30#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
+
31
+
32#include <opencv2/core/core.hpp>
+
33#include <map>
+
34
+
35namespace rtabmap
+
36{
+
37
+
+
49class RTABMAP_CORE_EXPORT VisualWord
+
50{
+
51public:
+
58 VisualWord(int id, const cv::Mat & descriptor, int signatureId = 0);
+
59
+ +
64
+
69 void addRef(int signatureId);
+
70
+
76 int removeAllRef(int signatureId);
+
77
+
82 unsigned long getMemoryUsed() const;
+
83
+
88 int getTotalReferences() const {return _totalReferences;}
+
89
+
94 int id() const {return _id;}
+
95
+
100 const cv::Mat & getDescriptor() const {return _descriptor;}
+
101
+
106 const std::map<int, int> & getReferences() const {return _references;}
+
107
+
112 bool isSaved() const {return _saved;}
+
113
+
118 void setSaved(bool saved) {_saved = saved;}
+
119
+
120private:
+
121 int _id;
+
122 cv::Mat _descriptor;
+
123 bool _saved;
+
124
+
125 int _totalReferences;
+
126 std::map<int, int> _references;
+
127};
+
+
128
+
129} // namespace rtabmap
+
Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model.
Definition VisualWord.h:50
+
const cv::Mat & getDescriptor() const
Returns the feature descriptor of this word.
Definition VisualWord.h:100
+
int getTotalReferences() const
Returns the total number of references (across all signatures).
Definition VisualWord.h:88
+
bool isSaved() const
Checks if the word has been saved to the database.
Definition VisualWord.h:112
+
void addRef(int signatureId)
Adds a reference to this word for the given signature ID.
+
void setSaved(bool saved)
Sets the saved flag for the word.
Definition VisualWord.h:118
+
int removeAllRef(int signatureId)
Removes all references to this word for the given signature ID.
+
VisualWord(int id, const cv::Mat &descriptor, int signatureId=0)
Constructor.
+
int id() const
Returns the ID of this visual word.
Definition VisualWord.h:94
+
unsigned long getMemoryUsed() const
Estimates the memory used by this visual word in bytes.
+
~VisualWord()
Destructor.
+
const std::map< int, int > & getReferences() const
Returns the references of this word.
Definition VisualWord.h:106
+ +
+
+ + + + diff --git a/preview/pr-1773/api/latest/Win32_2UThreadC_8h_source.html b/preview/pr-1773/api/latest/Win32_2UThreadC_8h_source.html new file mode 100644 index 00000000..6700afe0 --- /dev/null +++ b/preview/pr-1773/api/latest/Win32_2UThreadC_8h_source.html @@ -0,0 +1,505 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/Win32/UThreadC.h Source File + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThreadC.h
+
+
+
1
+
2// Written by Phillip Sitbon
+
3// Copyright 2003
+
4//
+
5// Modified by Mathieu Labbe
+
6//
+
7// Win32/Thread.h
+
8// - Windows thread
+
9//
+
10// - From CreateThread Platform SDK Documentation:
+
11//
+
12// "A thread that uses functions from the static C run-time
+
13// libraries should use the beginthread and endthread C run-time
+
14// functions for thread management rather than CreateThread and
+
15// ExitThread. Failure to do so results in small memory leaks
+
16// when ExitThread is called. Note that this is not a problem
+
17// with the C run-time in a DLL."
+
18//
+
19// With regards to this, I have decided to use the CreateThread
+
20// API, unless you define _CRT_ in which case there are two
+
21// possibilities:
+
22//
+
23// 1. Define _USE_BEGINTHREAD: Uses _beginthread/_endthread
+
24// (said to be *unreliable* in the SDK docs)
+
25//
+
26// 2. Don't - Uses _beginthreaded/_endthreadex
+
27//
+
28// A note about _endthread:
+
29//
+
30// It will call CloseHandle() on exit, and if it was already
+
31// closed then you will get an exception. To prevent this, I
+
32// removed the CloseHandle() functionality - this means that
+
33// a Join() WILL wait on a Detach()'ed thread.
+
34//
+
36#ifndef _U_Thread_Win32_
+
37#define _U_Thread_Win32_
+
38
+
39#include "rtabmap/utilite/utilite_export.h"
+
40#include "rtabmap/utilite/Win32/UWin32.h"
+
41#include "rtabmap/utilite/USemaphore.h"
+
42#include "rtabmap/utilite/UMutex.h"
+
43
+
44inline void uSleep(unsigned int ms)
+
45{
+
46 Sleep(ms);
+
47}
+
48
+
49#ifdef _CRT_
+
50# include <process.h>
+
51# ifdef _USE_BEGINTHREAD
+
52# define THREAD_CALL __cdecl
+
53# define THREAD_HANDLE uintptr_t
+
54# define THREAD_RET_T void
+
55# define CREATE_THREAD_FAILED (-1L)
+
56# define CREATE_THREAD_ERROR (errno)
+
57# define CREATE_THREAD(_S,_F,_P) ((Handle)_beginthread((void (__cdecl *)(void *))_F,_S,(void *)_P))
+
58# define EXIT_THREAD _endthread()
+
59# define CLOSE_HANDLE(x) 1
+
60# define THREAD_RETURN(x) return
+
61# else
+
62# define THREAD_CALL WINAPI
+
63# define THREAD_HANDLE HANDLE
+
64# define THREAD_RET_T UINT
+
65# define CREATE_THREAD_FAILED (0L)
+
66# define CREATE_THREAD_ERROR (errno)
+
67# define CREATE_THREAD(_S,_F,_P) ((Handle)_beginthreadex(0,_S,(UINT (WINAPI *)(void *))_F,(void *)_P,0,0))
+
68# define EXIT_THREAD _endthreadex(0)
+
69# define CLOSE_HANDLE(x) CloseHandle(x)
+
70# define THREAD_RETURN(x) return(x)
+
71# endif
+
72#else
+
73# define THREAD_CALL WINAPI
+
74# define THREAD_HANDLE HANDLE
+
75# define THREAD_RET_T DWORD
+
76# define CREATE_THREAD_FAILED (0L)
+
77# define CREATE_THREAD_ERROR GetLastError()
+
78# define CREATE_THREAD(_S,_F,_P) ((Handle)CreateThread(0,_S,(DWORD (WINAPI *)(void *))_F,(void *)_P,0,0))
+
79# define CREATE_THREAD2(_S,_F,_P,_ID) ((Handle)CreateThread(0,_S,(DWORD (WINAPI *)(void *))_F,(void *)_P,0,_ID))
+
80# define EXIT_THREAD ExitThread(0)
+
81# define CLOSE_HANDLE(x) CloseHandle(x)
+
82# define THREAD_RETURN(x) return(x)
+
83#endif
+
84
+
85#define InvalidHandle 0
+
86
+
87template
+
88<
+
89 typename Thread_T
+
90>
+
91class UTILITE_EXPORT UThreadC
+
92{
+
93 private:
+
94 struct Instance;
+
95
+
96 public:
+
97 typedef Thread_T & Thread_R;
+
98 typedef const Thread_T & Thread_C_R;
+
99
+
100 typedef THREAD_HANDLE Handle;
+
101 typedef void (* Handler)( Thread_R );
+
102
+
103 protected:
+
104 UThreadC() {}
+
105
+
106 virtual void ThreadMain( Thread_R ) = 0;
+
107
+
108 static void Exit()
+
109 { EXIT_THREAD; }
+
110
+
111 static void TestCancel()
+
112 { Sleep(0); }
+
113
+
114 static int Self()
+
115 {
+
116 Handle Hnd = InvalidHandle;
+
117 DuplicateHandle(GetCurrentProcess(),GetCurrentThread(),GetCurrentProcess(),(LPHANDLE)&Hnd,NULL,0,NULL);
+
118 return Hnd;
+
119
+
120 // only a pseudo-handle!
+
121 //return (Handle)GetCurrentThread();
+
122 }
+
123
+
124 public:
+
125
+
126 static int Create(
+
127 const Handler & Function,
+
128 Thread_C_R Param,
+
129 Handle * const & H = 0,
+
130 const bool & CreateDetached = false,
+
131 const unsigned int & StackSize = 0,
+
132 const bool & CancelEnable = false, // UNUSED
+
133 const bool & CancelAsync = false // UNUSED
+
134 )
+
135 {
+
136 M_Create().lock();
+
137
+
138 Instance I(Param,0,Function);
+
139
+
140 Handle Hnd(CREATE_THREAD(StackSize,ThreadMainHandler,&I));
+
141
+
142 if ( Hnd == CREATE_THREAD_FAILED )
+
143 {
+
144 if ( H ) *H = InvalidHandle;
+
145 M_Create().unlock();
+
146 return CREATE_THREAD_ERROR;
+
147 }
+
148
+
149 if ( H ) *H = Hnd;
+
150
+
151 S_Create().Wait();
+
152 M_Create().unlock();
+
153
+
154 if ( CreateDetached ) CLOSE_HANDLE(Hnd);
+
155 return 0;
+
156 }
+
157
+
158 int Create(
+
159 Thread_C_R Param,
+
160 Handle * const & H = 0,
+
161 const bool & CreateDetached = false,
+
162 const unsigned int & StackSize = 0,
+
163 const bool & CancelEnable = false, // UNUSED
+
164 const bool & CancelAsync = false // UNUSED
+
165 ) const
+
166 {
+
167 M_Create().lock();
+
168
+
169 Instance I(Param,const_cast<UThreadC *>(this));
+
170
+
171 Handle Hnd(CREATE_THREAD(StackSize,ThreadMainHandler,&I));
+
172
+
173 if ( Hnd == CREATE_THREAD_FAILED )
+
174 {
+
175 if ( H ) *H = InvalidHandle;
+
176 M_Create().unlock();
+
177 return CREATE_THREAD_ERROR;
+
178 }
+
179
+
180 if ( H ) *H = Hnd;
+
181
+
182 S_Create().Wait();
+
183 M_Create().unlock();
+
184
+
185 if ( CreateDetached ) CLOSE_HANDLE(Hnd);
+
186 return 0;
+
187 }
+
188
+
189 static int Join( const Handle &H )
+
190 {
+
191 DWORD R = WaitForSingleObject((HANDLE)H,INFINITE);
+
192
+
193 if ( (R == WAIT_OBJECT_0) || (R == WAIT_ABANDONED) )
+
194 {
+
195 CLOSE_HANDLE(H);
+
196 return 0;
+
197 }
+
198
+
199 if ( R == WAIT_TIMEOUT ) return EAGAIN;
+
200 return EINVAL;
+
201 }
+
202
+
203 static int Kill( const Handle &H )
+
204 { return TerminateThread((HANDLE)H,0) ? 0 : EINVAL; }
+
205
+
206 static int Detach( const Handle &H )
+
207 { return (CLOSE_HANDLE(H)?0:EINVAL); }
+
208
+
209 private:
+
210
+
211 static const UMutex &M_Create() { static UMutex M; return M; }
+
212 static const USemaphore &S_Create() { static USemaphore S; return S; }
+
213
+
214 static THREAD_RET_T THREAD_CALL ThreadMainHandler( Instance *Param )
+
215 {
+
216 Instance I(*Param);
+
217 Thread_T Data(I.Data);
+
218 S_Create().Post();
+
219
+
220 if ( I.Owner )
+
221 I.Owner->ThreadMain(Data);
+
222 else
+
223 I.pFN(Data);
+
224
+
225 Exit();
+
226 THREAD_RETURN(0);
+
227 }
+
228
+
229 struct Instance
+
230 {
+
231 Instance( Thread_C_R P, UThreadC<Thread_T> *const &O, const typename UThreadC<Thread_T>::Handler &pH = 0 )
+
232 : pFN(pH), Data(P), Owner(O) {}
+
233
+
234 typename UThreadC<Thread_T>::Handler pFN;
+
235 typename UThreadC<Thread_T>::Thread_C_R Data;
+
236 UThreadC<Thread_T> * Owner;
+
237
+
238 };
+
239};
+
240
+
242// Explicit Specialization of void
+
243//
+
244template<>
+
245class UTILITE_EXPORT UThreadC<void>
+
246{
+
247 private:
+
248 struct Instance;
+
249
+
250 public:
+
251 typedef THREAD_HANDLE Handle;
+
252 typedef void ( *Handler)();
+
253
+
254 virtual ~UThreadC<void>() {}
+
255
+
256 protected:
+
257 UThreadC<void>() {}
+
258
+
259 virtual void ThreadMain() = 0;
+
260
+
261 static void Exit()
+
262 { EXIT_THREAD; }
+
263
+
264 static void TestCancel()
+
265 { Sleep(0); }
+
266
+
267 static int Self()
+
268 {
+
269 return (int)GetCurrentThreadId();
+
270 //Handle Hnd = InvalidHandle;
+
271 //DuplicateHandle(GetCurrentProcess(),GetCurrentThread(),GetCurrentProcess(),(LPHANDLE)&Hnd,NULL,0,NULL);
+
272 //return Hnd;
+
273
+
274 // only a pseudo-handle!
+
275 //return (Handle)GetCurrentThread();
+
276 }
+
277
+
278 public:
+
279
+
280 static int Create(
+
281 const Handler & Function,
+
282 Handle * const & H = 0,
+
283 const bool & CreateDetached = false,
+
284 const unsigned int & StackSize = 0,
+
285 const bool & CancelEnable = false, // UNUSED
+
286 const bool & CancelAsync = false // UNUSED
+
287 )
+
288 {
+
289 Handle Hnd(CREATE_THREAD(StackSize,ThreadMainHandler_S,Function));
+
290
+
291 if ( Hnd == CREATE_THREAD_FAILED )
+
292 {
+
293 if ( H ) *H = InvalidHandle;
+
294 return (int)CREATE_THREAD_ERROR;
+
295 }
+
296
+
297 if ( H ) *H = Hnd;
+
298 if ( CreateDetached ) CLOSE_HANDLE(Hnd);
+
299 return 0;
+
300 }
+
301
+
302 int Create(
+
303 Handle * const & H = 0,
+
304 const bool & CreateDetached = false,
+
305 const unsigned int & StackSize = 0,
+
306 const bool & CancelEnable = false, // UNUSED
+
307 const bool & CancelAsync = false // UNUSED
+
308 ) const
+
309 {
+
310 Handle Hnd(CREATE_THREAD(StackSize,ThreadMainHandler,this));
+
311
+
312 if ( Hnd == CREATE_THREAD_FAILED )
+
313 {
+
314 if ( H ) *H = InvalidHandle;
+
315 return (int)CREATE_THREAD_ERROR;
+
316 }
+
317
+
318 if ( H ) *H = Hnd;
+
319 if ( CreateDetached ) CLOSE_HANDLE(Hnd);
+
320 Self();
+
321 return 0;
+
322 }
+
323
+
324 int Create(
+
325 unsigned long & ThreadId,
+
326 Handle * const & H = 0,
+
327 const bool & CreateDetached = false,
+
328 const unsigned int & StackSize = 0,
+
329 const bool & CancelEnable = false, // UNUSED
+
330 const bool & CancelAsync = false // UNUSED
+
331 ) const
+
332 {
+
333 *H = InvalidHandle;
+
334 int id;
+
335 *H = CREATE_THREAD2(StackSize,ThreadMainHandler,this, (LPDWORD)&id);
+
336 ThreadId = (unsigned long)id;
+
337
+
338 if ( *H == CREATE_THREAD_FAILED )
+
339 {
+
340 *H = InvalidHandle;
+
341 return (int)CREATE_THREAD_ERROR;
+
342 }
+
343
+
344 if ( CreateDetached ) CLOSE_HANDLE(*H);
+
345 return 0;
+
346 }
+
347
+
348 static int Join( const Handle &H )
+
349 {
+
350 DWORD R = WaitForSingleObject((HANDLE)H,INFINITE);
+
351
+
352 if ( (R == WAIT_OBJECT_0) || (R == WAIT_ABANDONED) )
+
353 {
+
354 CLOSE_HANDLE(H);
+
355 return 0;
+
356 }
+
357
+
358 if ( R == WAIT_TIMEOUT ) return EAGAIN;
+
359 return EINVAL;
+
360 }
+
361
+
362 static int Kill( const Handle &H )
+
363 { return TerminateThread((HANDLE)H,0) ? 0 : EINVAL; }
+
364
+
365 static int Detach( const Handle &H )
+
366 { return (CLOSE_HANDLE(H)?0:EINVAL); }
+
367
+
368 private:
+
369
+
370 static THREAD_RET_T THREAD_CALL ThreadMainHandler( UThreadC<void> *Param )
+
371 {
+
372 Param->ThreadMain();
+
373 Exit();
+
374 THREAD_RETURN(0);
+
375 }
+
376
+
377 static THREAD_RET_T THREAD_CALL ThreadMainHandler_S( Handler Param )
+
378 {
+
379 Param();
+
380 Exit();
+
381 THREAD_RETURN(0);
+
382 }
+
383};
+
384
+
385#endif // !_U_Thread_Win32_
+ + + +
+
+ + + + diff --git a/preview/pr-1773/api/latest/_formulas.tex b/preview/pr-1773/api/latest/_formulas.tex new file mode 100644 index 00000000..58482652 --- /dev/null +++ b/preview/pr-1773/api/latest/_formulas.tex @@ -0,0 +1,59 @@ +\documentclass{article} +\usepackage{ifthen} +\usepackage{epsfig} +\usepackage[utf8]{inputenc} +\usepackage{xcolor} +\usepackage{newunicodechar} + \makeatletter + \def\doxynewunicodechar#1#2{% + \@tempswafalse + \edef\nuc@tempa{\detokenize{#1}}% + \if\relax\nuc@tempa\relax + \nuc@emptyargerr + \else + \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% + \nuc@check + \if@tempswa + \@namedef{u8:\nuc@tempa}{#2}% + \fi + \fi + } + \makeatother + \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus + \doxynewunicodechar{²}{${}^{2}$}% Superscript two + \doxynewunicodechar{³}{${}^{3}$}% Superscript three + +\pagestyle{empty} +\begin{document} +\[ +\text{FoV}_x = 2 \cdot \tan^{-1}\left(\frac{\text{image width}}{2 \cdot f_x}\right) +\] +\pagebreak + +\[ +\text{FoV}_y = 2 \cdot \tan^{-1}\left(\frac{\text{image height}}{2 \cdot f_y}\right) +\] +\pagebreak + +\[ + \text{depth} = \frac{\text{baseline} \times f_x}{\text{disparity} + (c_{x_{right}} - c_{x_{left}})} +\] +\pagebreak + +\[ + \text{disparity} = \frac{\text{baseline} \times f_x}{\text{depth}} - (c_{x_{right}} - c_{x_{left}}) +\] +\pagebreak + +\[ + \text{disparity} = \frac{\text{baseline} \times f_x}{\text{depth (meters)}} - (c_{x_{right}} - c_{x_{left}}) +\] +\pagebreak + +\[ \text{depth} = \frac{\text{baseline} \times \text{focal length}}{\text{disparity}} \] +\pagebreak + +\[ Z = \frac{baseline \times f}{disparity + (cx1 - cx0)} \] +\pagebreak + +\end{document} diff --git a/preview/pr-1773/api/latest/annotated.html b/preview/pr-1773/api/latest/annotated.html new file mode 100644 index 00000000..b9c8158d --- /dev/null +++ b/preview/pr-1773/api/latest/annotated.html @@ -0,0 +1,295 @@ + + + + + + + + +RTAB-Map: Class List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 ►Nclams
 ►Nrtabmap
 CUDestroyer
 CUDirectory
 CUEvent
 CUEventDispatcher
 CUEventsHandler
 CUEventsManager
 CUEventsSender
 CUException
 CUFile
 CULogEvent
 CULogger
 CUMutex
 CUObjDeletedEvent
 CUObjDeletionThread
 CUProcessInfoClass for getting information about the current process
 CUScopeMutex
 CUSemaphore
 CUThread
 CUThreadC
 CUThreadC< void >
 CUTimer
 CUVariantA variant type that can hold values of different types
+
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/annotated_dup.js b/preview/pr-1773/api/latest/annotated_dup.js new file mode 100644 index 00000000..73f03d07 --- /dev/null +++ b/preview/pr-1773/api/latest/annotated_dup.js @@ -0,0 +1,183 @@ +var annotated_dup = +[ + [ "clams", null, [ + [ "DiscreteDepthDistortionModel", "classclams_1_1DiscreteDepthDistortionModel.html", "classclams_1_1DiscreteDepthDistortionModel" ], + [ "DiscreteFrustum", "classclams_1_1DiscreteFrustum.html", "classclams_1_1DiscreteFrustum" ], + [ "FrameProjector", "classclams_1_1FrameProjector.html", "classclams_1_1FrameProjector" ], + [ "ProjectivePoint", "classclams_1_1ProjectivePoint.html", null ] + ] ], + [ "rtabmap", "namespacertabmap.html", [ + [ "graph", "namespacertabmap_1_1graph.html", [ + [ "MaxGraphErrors", "structrtabmap_1_1graph_1_1MaxGraphErrors.html", "structrtabmap_1_1graph_1_1MaxGraphErrors" ] + ] ], + [ "BayesFilter", "classrtabmap_1_1BayesFilter.html", "classrtabmap_1_1BayesFilter" ], + [ "BRISK", "classrtabmap_1_1BRISK.html", null ], + [ "Camera", "classrtabmap_1_1Camera.html", "classrtabmap_1_1Camera" ], + [ "CameraDepthAI", "classrtabmap_1_1CameraDepthAI.html", "classrtabmap_1_1CameraDepthAI" ], + [ "CameraFreenect", "classrtabmap_1_1CameraFreenect.html", "classrtabmap_1_1CameraFreenect" ], + [ "CameraFreenect2", "classrtabmap_1_1CameraFreenect2.html", "classrtabmap_1_1CameraFreenect2" ], + [ "CameraImages", "classrtabmap_1_1CameraImages.html", "classrtabmap_1_1CameraImages" ], + [ "CameraK4A", "classrtabmap_1_1CameraK4A.html", "classrtabmap_1_1CameraK4A" ], + [ "CameraK4W2", "classrtabmap_1_1CameraK4W2.html", "classrtabmap_1_1CameraK4W2" ], + [ "CameraModel", "classrtabmap_1_1CameraModel.html", "classrtabmap_1_1CameraModel" ], + [ "CameraMyntEye", "classrtabmap_1_1CameraMyntEye.html", "classrtabmap_1_1CameraMyntEye" ], + [ "CameraOpenni", "classrtabmap_1_1CameraOpenni.html", "classrtabmap_1_1CameraOpenni" ], + [ "CameraOpenNI2", "classrtabmap_1_1CameraOpenNI2.html", "classrtabmap_1_1CameraOpenNI2" ], + [ "CameraOpenNICV", "classrtabmap_1_1CameraOpenNICV.html", "classrtabmap_1_1CameraOpenNICV" ], + [ "CameraOrbbecSDK", "classrtabmap_1_1CameraOrbbecSDK.html", "classrtabmap_1_1CameraOrbbecSDK" ], + [ "CameraRealSense", "classrtabmap_1_1CameraRealSense.html", "classrtabmap_1_1CameraRealSense" ], + [ "CameraRealSense2", "classrtabmap_1_1CameraRealSense2.html", "classrtabmap_1_1CameraRealSense2" ], + [ "CameraRGBDImages", "classrtabmap_1_1CameraRGBDImages.html", "classrtabmap_1_1CameraRGBDImages" ], + [ "CameraSeerSense", "classrtabmap_1_1CameraSeerSense.html", "classrtabmap_1_1CameraSeerSense" ], + [ "CameraStereoDC1394", "classrtabmap_1_1CameraStereoDC1394.html", "classrtabmap_1_1CameraStereoDC1394" ], + [ "CameraStereoFlyCapture2", "classrtabmap_1_1CameraStereoFlyCapture2.html", "classrtabmap_1_1CameraStereoFlyCapture2" ], + [ "CameraStereoImages", "classrtabmap_1_1CameraStereoImages.html", "classrtabmap_1_1CameraStereoImages" ], + [ "CameraStereoTara", "classrtabmap_1_1CameraStereoTara.html", "classrtabmap_1_1CameraStereoTara" ], + [ "CameraStereoVideo", "classrtabmap_1_1CameraStereoVideo.html", "classrtabmap_1_1CameraStereoVideo" ], + [ "CameraStereoZed", "classrtabmap_1_1CameraStereoZed.html", "classrtabmap_1_1CameraStereoZed" ], + [ "CameraStereoZedOC", "classrtabmap_1_1CameraStereoZedOC.html", "classrtabmap_1_1CameraStereoZedOC" ], + [ "CameraVideo", "classrtabmap_1_1CameraVideo.html", "classrtabmap_1_1CameraVideo" ], + [ "CloudMap", "classrtabmap_1_1CloudMap.html", "classrtabmap_1_1CloudMap" ], + [ "CompressionThread", "classrtabmap_1_1CompressionThread.html", "classrtabmap_1_1CompressionThread" ], + [ "DBDriver", "classrtabmap_1_1DBDriver.html", "classrtabmap_1_1DBDriver" ], + [ "DBDriverSqlite3", "classrtabmap_1_1DBDriverSqlite3.html", "classrtabmap_1_1DBDriverSqlite3" ], + [ "DBReader", "classrtabmap_1_1DBReader.html", "classrtabmap_1_1DBReader" ], + [ "EnvSensor", "classrtabmap_1_1EnvSensor.html", "classrtabmap_1_1EnvSensor" ], + [ "EpipolarGeometry", "classrtabmap_1_1EpipolarGeometry.html", null ], + [ "FAST", "classrtabmap_1_1FAST.html", "classrtabmap_1_1FAST" ], + [ "FAST_BRIEF", "classrtabmap_1_1FAST__BRIEF.html", null ], + [ "FAST_FREAK", "classrtabmap_1_1FAST__FREAK.html", null ], + [ "Feature2D", "classrtabmap_1_1Feature2D.html", "classrtabmap_1_1Feature2D" ], + [ "FeatureBA", "classrtabmap_1_1FeatureBA.html", "classrtabmap_1_1FeatureBA" ], + [ "FlannIndex", "classrtabmap_1_1FlannIndex.html", "classrtabmap_1_1FlannIndex" ], + [ "GainCompensator", "classrtabmap_1_1GainCompensator.html", null ], + [ "GeodeticCoords", "classrtabmap_1_1GeodeticCoords.html", "classrtabmap_1_1GeodeticCoords" ], + [ "GFTT", "classrtabmap_1_1GFTT.html", "classrtabmap_1_1GFTT" ], + [ "GFTT_BRIEF", "classrtabmap_1_1GFTT__BRIEF.html", null ], + [ "GFTT_DAISY", "classrtabmap_1_1GFTT__DAISY.html", null ], + [ "GFTT_FREAK", "classrtabmap_1_1GFTT__FREAK.html", null ], + [ "GFTT_ORB", "classrtabmap_1_1GFTT__ORB.html", null ], + [ "GlobalDescriptor", "classrtabmap_1_1GlobalDescriptor.html", null ], + [ "GlobalDescriptorExtractor", "classrtabmap_1_1GlobalDescriptorExtractor.html", null ], + [ "GlobalMap", "classrtabmap_1_1GlobalMap.html", "classrtabmap_1_1GlobalMap" ], + [ "GPS", "classrtabmap_1_1GPS.html", "classrtabmap_1_1GPS" ], + [ "GridMap", "classrtabmap_1_1GridMap.html", "classrtabmap_1_1GridMap" ], + [ "IMU", "classrtabmap_1_1IMU.html", "classrtabmap_1_1IMU" ], + [ "IMUEvent", "classrtabmap_1_1IMUEvent.html", "classrtabmap_1_1IMUEvent" ], + [ "IMUFilter", "classrtabmap_1_1IMUFilter.html", "classrtabmap_1_1IMUFilter" ], + [ "IMUThread", "classrtabmap_1_1IMUThread.html", "classrtabmap_1_1IMUThread" ], + [ "KAZE", "classrtabmap_1_1KAZE.html", null ], + [ "Landmark", "classrtabmap_1_1Landmark.html", "classrtabmap_1_1Landmark" ], + [ "LaserScan", "classrtabmap_1_1LaserScan.html", "classrtabmap_1_1LaserScan" ], + [ "Lidar", "classrtabmap_1_1Lidar.html", "classrtabmap_1_1Lidar" ], + [ "LidarVLP16", "classrtabmap_1_1LidarVLP16.html", "classrtabmap_1_1LidarVLP16" ], + [ "Link", "classrtabmap_1_1Link.html", "classrtabmap_1_1Link" ], + [ "LocalGrid", "classrtabmap_1_1LocalGrid.html", "classrtabmap_1_1LocalGrid" ], + [ "LocalGridCache", "classrtabmap_1_1LocalGridCache.html", "classrtabmap_1_1LocalGridCache" ], + [ "LocalGridMaker", "classrtabmap_1_1LocalGridMaker.html", "classrtabmap_1_1LocalGridMaker" ], + [ "MarkerDetector", "classrtabmap_1_1MarkerDetector.html", null ], + [ "MarkerInfo", "classrtabmap_1_1MarkerInfo.html", null ], + [ "Memory", "classrtabmap_1_1Memory.html", "classrtabmap_1_1Memory" ], + [ "OccupancyGrid", "classrtabmap_1_1OccupancyGrid.html", "classrtabmap_1_1OccupancyGrid" ], + [ "OctoMap", "classrtabmap_1_1OctoMap.html", "classrtabmap_1_1OctoMap" ], + [ "Odometry", "classrtabmap_1_1Odometry.html", "classrtabmap_1_1Odometry" ], + [ "OdometryCuVSLAM", "classrtabmap_1_1OdometryCuVSLAM.html", "classrtabmap_1_1OdometryCuVSLAM" ], + [ "OdometryDVO", "classrtabmap_1_1OdometryDVO.html", "classrtabmap_1_1OdometryDVO" ], + [ "OdometryEvent", "classrtabmap_1_1OdometryEvent.html", "classrtabmap_1_1OdometryEvent" ], + [ "OdometryF2F", "classrtabmap_1_1OdometryF2F.html", "classrtabmap_1_1OdometryF2F" ], + [ "OdometryF2M", "classrtabmap_1_1OdometryF2M.html", "classrtabmap_1_1OdometryF2M" ], + [ "OdometryFLOAM", "classrtabmap_1_1OdometryFLOAM.html", "classrtabmap_1_1OdometryFLOAM" ], + [ "OdometryFovis", "classrtabmap_1_1OdometryFovis.html", "classrtabmap_1_1OdometryFovis" ], + [ "OdometryInfo", "classrtabmap_1_1OdometryInfo.html", "classrtabmap_1_1OdometryInfo" ], + [ "OdometryLIOSAM", "classrtabmap_1_1OdometryLIOSAM.html", "classrtabmap_1_1OdometryLIOSAM" ], + [ "OdometryLOAM", "classrtabmap_1_1OdometryLOAM.html", "classrtabmap_1_1OdometryLOAM" ], + [ "OdometryMono", "classrtabmap_1_1OdometryMono.html", "classrtabmap_1_1OdometryMono" ], + [ "OdometryMSCKF", "classrtabmap_1_1OdometryMSCKF.html", "classrtabmap_1_1OdometryMSCKF" ], + [ "OdometryOkvis", "classrtabmap_1_1OdometryOkvis.html", "classrtabmap_1_1OdometryOkvis" ], + [ "OdometryOpen3D", "classrtabmap_1_1OdometryOpen3D.html", "classrtabmap_1_1OdometryOpen3D" ], + [ "OdometryOpenVINS", "classrtabmap_1_1OdometryOpenVINS.html", "classrtabmap_1_1OdometryOpenVINS" ], + [ "OdometryORBSLAM2", "classrtabmap_1_1OdometryORBSLAM2.html", "classrtabmap_1_1OdometryORBSLAM2" ], + [ "OdometryORBSLAM3", "classrtabmap_1_1OdometryORBSLAM3.html", "classrtabmap_1_1OdometryORBSLAM3" ], + [ "OdometryResetEvent", "classrtabmap_1_1OdometryResetEvent.html", "classrtabmap_1_1OdometryResetEvent" ], + [ "OdometryThread", "classrtabmap_1_1OdometryThread.html", "classrtabmap_1_1OdometryThread" ], + [ "OdometryVINSFusion", "classrtabmap_1_1OdometryVINSFusion.html", "classrtabmap_1_1OdometryVINSFusion" ], + [ "OdometryViso2", "classrtabmap_1_1OdometryViso2.html", "classrtabmap_1_1OdometryViso2" ], + [ "Optimizer", "classrtabmap_1_1Optimizer.html", "classrtabmap_1_1Optimizer" ], + [ "OptimizerCeres", "classrtabmap_1_1OptimizerCeres.html", "classrtabmap_1_1OptimizerCeres" ], + [ "OptimizerCVSBA", "classrtabmap_1_1OptimizerCVSBA.html", "classrtabmap_1_1OptimizerCVSBA" ], + [ "OptimizerG2O", "classrtabmap_1_1OptimizerG2O.html", "classrtabmap_1_1OptimizerG2O" ], + [ "OptimizerGTSAM", "classrtabmap_1_1OptimizerGTSAM.html", "classrtabmap_1_1OptimizerGTSAM" ], + [ "OptimizerTORO", "classrtabmap_1_1OptimizerTORO.html", "classrtabmap_1_1OptimizerTORO" ], + [ "ORB", "classrtabmap_1_1ORB.html", "classrtabmap_1_1ORB" ], + [ "ORBOctree", "classrtabmap_1_1ORBOctree.html", null ], + [ "Parameters", "classrtabmap_1_1Parameters.html", null ], + [ "ParamEvent", "classrtabmap_1_1ParamEvent.html", "classrtabmap_1_1ParamEvent" ], + [ "ParticleFilter", "classrtabmap_1_1ParticleFilter.html", null ], + [ "PointXYZIRT", "structrtabmap_1_1PointXYZIRT.html", null ], + [ "PointXYZIT", "structrtabmap_1_1PointXYZIT.html", null ], + [ "ProgressState", "classrtabmap_1_1ProgressState.html", null ], + [ "PythonInterface", "classrtabmap_1_1PythonInterface.html", null ], + [ "Registration", "classrtabmap_1_1Registration.html", "classrtabmap_1_1Registration" ], + [ "RegistrationIcp", "classrtabmap_1_1RegistrationIcp.html", "classrtabmap_1_1RegistrationIcp" ], + [ "RegistrationInfo", "classrtabmap_1_1RegistrationInfo.html", "classrtabmap_1_1RegistrationInfo" ], + [ "RegistrationVis", "classrtabmap_1_1RegistrationVis.html", "classrtabmap_1_1RegistrationVis" ], + [ "Rtabmap", "classrtabmap_1_1Rtabmap.html", "classrtabmap_1_1Rtabmap" ], + [ "RtabmapColorOcTree", "classrtabmap_1_1RtabmapColorOcTree.html", "classrtabmap_1_1RtabmapColorOcTree" ], + [ "RtabmapColorOcTreeNode", "classrtabmap_1_1RtabmapColorOcTreeNode.html", null ], + [ "RtabmapEvent", "classrtabmap_1_1RtabmapEvent.html", "classrtabmap_1_1RtabmapEvent" ], + [ "RtabmapEvent3DMap", "classrtabmap_1_1RtabmapEvent3DMap.html", "classrtabmap_1_1RtabmapEvent3DMap" ], + [ "RtabmapEventCmd", "classrtabmap_1_1RtabmapEventCmd.html", "classrtabmap_1_1RtabmapEventCmd" ], + [ "RtabmapEventInit", "classrtabmap_1_1RtabmapEventInit.html", "classrtabmap_1_1RtabmapEventInit" ], + [ "RtabmapGlobalPathEvent", "classrtabmap_1_1RtabmapGlobalPathEvent.html", "classrtabmap_1_1RtabmapGlobalPathEvent" ], + [ "RtabmapGoalStatusEvent", "classrtabmap_1_1RtabmapGoalStatusEvent.html", "classrtabmap_1_1RtabmapGoalStatusEvent" ], + [ "RtabmapLabelErrorEvent", "classrtabmap_1_1RtabmapLabelErrorEvent.html", "classrtabmap_1_1RtabmapLabelErrorEvent" ], + [ "RtabmapThread", "classrtabmap_1_1RtabmapThread.html", "classrtabmap_1_1RtabmapThread" ], + [ "RvlCodec", "classrtabmap_1_1RvlCodec.html", null ], + [ "SensorCapture", "classrtabmap_1_1SensorCapture.html", "classrtabmap_1_1SensorCapture" ], + [ "SensorCaptureInfo", "classrtabmap_1_1SensorCaptureInfo.html", "classrtabmap_1_1SensorCaptureInfo" ], + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html", "classrtabmap_1_1SensorCaptureThread" ], + [ "SensorData", "classrtabmap_1_1SensorData.html", "classrtabmap_1_1SensorData" ], + [ "SensorEvent", "classrtabmap_1_1SensorEvent.html", "classrtabmap_1_1SensorEvent" ], + [ "SIFT", "classrtabmap_1_1SIFT.html", "classrtabmap_1_1SIFT" ], + [ "Signature", "classrtabmap_1_1Signature.html", "classrtabmap_1_1Signature" ], + [ "Statistics", "classrtabmap_1_1Statistics.html", "classrtabmap_1_1Statistics" ], + [ "Stereo", "classrtabmap_1_1Stereo.html", "classrtabmap_1_1Stereo" ], + [ "StereoBM", "classrtabmap_1_1StereoBM.html", "classrtabmap_1_1StereoBM" ], + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html", "classrtabmap_1_1StereoCameraModel" ], + [ "StereoDense", "classrtabmap_1_1StereoDense.html", "classrtabmap_1_1StereoDense" ], + [ "StereoOpticalFlow", "classrtabmap_1_1StereoOpticalFlow.html", "classrtabmap_1_1StereoOpticalFlow" ], + [ "StereoSGBM", "classrtabmap_1_1StereoSGBM.html", "classrtabmap_1_1StereoSGBM" ], + [ "SuperPointRpautrat", "classrtabmap_1_1SuperPointRpautrat.html", "classrtabmap_1_1SuperPointRpautrat" ], + [ "SuperPointTorch", "classrtabmap_1_1SuperPointTorch.html", "classrtabmap_1_1SuperPointTorch" ], + [ "SURF", "classrtabmap_1_1SURF.html", "classrtabmap_1_1SURF" ], + [ "SURF_DAISY", "classrtabmap_1_1SURF__DAISY.html", null ], + [ "SURF_FREAK", "classrtabmap_1_1SURF__FREAK.html", null ], + [ "Transform", "classrtabmap_1_1Transform.html", "classrtabmap_1_1Transform" ], + [ "TransformStamped", "classrtabmap_1_1TransformStamped.html", null ], + [ "UserDataEvent", "classrtabmap_1_1UserDataEvent.html", "classrtabmap_1_1UserDataEvent" ], + [ "VisualWord", "classrtabmap_1_1VisualWord.html", "classrtabmap_1_1VisualWord" ], + [ "VWDictionary", "classrtabmap_1_1VWDictionary.html", "classrtabmap_1_1VWDictionary" ] + ] ], + [ "UDestroyer", "classUDestroyer.html", "classUDestroyer" ], + [ "UDirectory", "classUDirectory.html", "classUDirectory" ], + [ "UEvent", "classUEvent.html", "classUEvent" ], + [ "UEventDispatcher", "classUEventDispatcher.html", "classUEventDispatcher" ], + [ "UEventsHandler", "classUEventsHandler.html", "classUEventsHandler" ], + [ "UEventsManager", "classUEventsManager.html", "classUEventsManager" ], + [ "UEventsSender", "classUEventsSender.html", "classUEventsSender" ], + [ "UException", "classUException.html", null ], + [ "UFile", "classUFile.html", "classUFile" ], + [ "ULogEvent", "classULogEvent.html", "classULogEvent" ], + [ "ULogger", "classULogger.html", "classULogger" ], + [ "UMutex", "classUMutex.html", "classUMutex" ], + [ "UObjDeletedEvent", "classUObjDeletedEvent.html", "classUObjDeletedEvent" ], + [ "UObjDeletionThread", "classUObjDeletionThread.html", "classUObjDeletionThread" ], + [ "UProcessInfo", "classUProcessInfo.html", "classUProcessInfo" ], + [ "UScopeMutex", "classUScopeMutex.html", null ], + [ "USemaphore", "classUSemaphore.html", "classUSemaphore" ], + [ "UThread", "classUThread.html", "classUThread" ], + [ "UThreadC", "classUThreadC.html", null ], + [ "UThreadC< void >", "classUThreadC_3_01void_01_4.html", null ], + [ "UTimer", "classUTimer.html", "classUTimer" ], + [ "UVariant", "classUVariant.html", "classUVariant" ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/bc_s.png b/preview/pr-1773/api/latest/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/bc_sd.png b/preview/pr-1773/api/latest/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUDestroyer-members.html b/preview/pr-1773/api/latest/classUDestroyer-members.html new file mode 100644 index 00000000..01ec20c1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUDestroyer-members.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UDestroyer< T > Member List
+
+
+ +

This is the complete list of members for UDestroyer< T >, including all inherited members.

+ + + + +
setDoomed(T *doomed)UDestroyer< T >inline
UDestroyer(T *doomed=0)UDestroyer< T >inline
~UDestroyer() (defined in UDestroyer< T >)UDestroyer< T >inline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUDestroyer.html b/preview/pr-1773/api/latest/classUDestroyer.html new file mode 100644 index 00000000..1e995526 --- /dev/null +++ b/preview/pr-1773/api/latest/classUDestroyer.html @@ -0,0 +1,234 @@ + + + + + + + + +RTAB-Map: UDestroyer< T > Class Template Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UDestroyer< T > Class Template Reference
+
+
+ +

#include <UDestroyer.h>

+ + + + + + +

+Public Member Functions

 UDestroyer (T *doomed=0)
 
bool setDoomed (T *doomed)
 
+

Detailed Description

+
template<class T>
+class UDestroyer< T >

This class is used to delete a dynamically created objects. It was mainly designed to remove dynamically created Singleton. Created on the stack of a Singleton, when the application is finished, his destructor make sure that the Singleton is deleted.

+ +

Definition at line 32 of file UDestroyer.h.

+

Constructor & Destructor Documentation

+ +

◆ UDestroyer()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
UDestroyer< T >::UDestroyer (T * doomed = 0)
+
+inline
+
+

The constructor. Set the doomed object (take ownership of the object). The object is deleted when this object is deleted.

+ +

Definition at line 39 of file UDestroyer.h.

+ +
+
+ +

◆ ~UDestroyer()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
UDestroyer< T >::~UDestroyer ()
+
+inline
+
+ +

Definition at line 41 of file UDestroyer.h.

+ +
+
+

Member Function Documentation

+ +

◆ setDoomed()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool UDestroyer< T >::setDoomed (T * doomed)
+
+inline
+
+

Set the doomed object. If a doomed object is already set, the function returns false.

Parameters
+ + +
doomedthe doomed object
+
+
+
Returns
false if an object is already set and the new object is not null, otherwise true
+ +

Definition at line 55 of file UDestroyer.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUDestroyer.js b/preview/pr-1773/api/latest/classUDestroyer.js new file mode 100644 index 00000000..774dafa4 --- /dev/null +++ b/preview/pr-1773/api/latest/classUDestroyer.js @@ -0,0 +1,5 @@ +var classUDestroyer = +[ + [ "UDestroyer", "classUDestroyer.html#abbc66cb8c688f1c93e87ea9aa46e58ee", null ], + [ "setDoomed", "classUDestroyer.html#aa3f030225d28ac7ad7059b9b64bde837", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUDirectory-members.html b/preview/pr-1773/api/latest/classUDirectory-members.html new file mode 100644 index 00000000..85543a9d --- /dev/null +++ b/preview/pr-1773/api/latest/classUDirectory-members.html @@ -0,0 +1,134 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UDirectory Member List
+
+
+ +

This is the complete list of members for UDirectory, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
currentDir(bool trailingSeparator=false)UDirectorystatic
exists(const std::string &dirPath)UDirectorystatic
getDir(const std::string &filePath)UDirectorystatic
getFileNames() constUDirectoryinline
getNextFileName()UDirectory
getNextFilePath()UDirectory
homeDir()UDirectorystatic
isValid()UDirectory
makeDir(const std::string &dirPath)UDirectorystatic
operator=(const UDirectory &dir) (defined in UDirectory)UDirectory
removeDir(const std::string &dirPath)UDirectorystatic
rewind()UDirectory
separator()UDirectorystatic
setPath(const std::string &path, const std::string &extensions="")UDirectory
UDirectory(const std::string &path="", const std::string &extensions="")UDirectory
UDirectory(const UDirectory &dir) (defined in UDirectory)UDirectory
update()UDirectory
~UDirectory() (defined in UDirectory)UDirectory
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUDirectory.html b/preview/pr-1773/api/latest/classUDirectory.html new file mode 100644 index 00000000..3b8f3af8 --- /dev/null +++ b/preview/pr-1773/api/latest/classUDirectory.html @@ -0,0 +1,578 @@ + + + + + + + + +RTAB-Map: UDirectory Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <UDirectory.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 UDirectory (const std::string &path="", const std::string &extensions="")
 
+ UDirectory (const UDirectory &dir)
 
+UDirectory & operator= (const UDirectory &dir)
 
void setPath (const std::string &path, const std::string &extensions="")
 
void update ()
 
bool isValid ()
 
std::string getNextFileName ()
 
std::string getNextFilePath ()
 
const std::list< std::string > & getFileNames () const
 
void rewind ()
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool exists (const std::string &dirPath)
 
static std::string getDir (const std::string &filePath)
 
static std::string currentDir (bool trailingSeparator=false)
 
static bool makeDir (const std::string &dirPath)
 
static bool removeDir (const std::string &dirPath)
 
static std::string homeDir ()
 
static std::string separator ()
 
+

Detailed Description

+

Class UDirectory.

+

This class can be used to get file names in a directory.

+ +

Definition at line 34 of file UDirectory.h.

+

Constructor & Destructor Documentation

+ +

◆ UDirectory()

+ +
+
+ + + + + + + + + + + + + + + + + + +
UDirectory::UDirectory (const std::string & path = "",
const std::string & extensions = "" 
)
+
+

Create a UDirectory object with path initialized to an existing "path" and with filter "extensions".

Parameters
+ + + +
paththe path to an existing directory
extensionsfilter to get only file names with the extensions specified, format is a list of extensions separated by a space: "jpg bmp" get only file names finishing by jpg or bmp.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ exists()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool UDirectory::exists (const std::string & dirPath)
+
+static
+
+

Check if a directory exists.

Parameters
+ + +
dirPaththe directory path
+
+
+
Returns
true if the directory exists
+ +
+
+ +

◆ getDir()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string UDirectory::getDir (const std::string & filePath)
+
+static
+
+

Get the directory path of a file path.

Parameters
+ + +
filePaththe file path
+
+
+
Returns
the directory path of the file
+ +
+
+ +

◆ currentDir()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string UDirectory::currentDir (bool trailingSeparator = false)
+
+static
+
+

Get the current directory.

Parameters
+ + +
trailingSeparatorIf true, a '/' is added to the path.
+
+
+
Returns
the current directory
+ +
+
+ +

◆ makeDir()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool UDirectory::makeDir (const std::string & dirPath)
+
+static
+
+

Make a directory.

Parameters
+ + +
dirPaththe directory path
+
+
+
Returns
true on success, false otherwise.
+ +
+
+ +

◆ removeDir()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool UDirectory::removeDir (const std::string & dirPath)
+
+static
+
+

Remove a directory.

Parameters
+ + +
dirPaththe directory path
+
+
+
Returns
true on success, false otherwise.
+ +
+
+ +

◆ homeDir()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string UDirectory::homeDir ()
+
+static
+
+

Return the "home" directory.

Returns
the directory path.
+ +
+
+ +

◆ separator()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string UDirectory::separator ()
+
+static
+
+

Return \ (Win32) or / (Unix) depending of the platform.

+ +
+
+ +

◆ setPath()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void UDirectory::setPath (const std::string & path,
const std::string & extensions = "" 
)
+
+

Set path of the directory.

Parameters
+ + +
paththe new directory path.
+
+
+ +
+
+ +

◆ update()

+ +
+
+ + + + + + + +
void UDirectory::update ()
+
+

Update indexed file names (if the directory changed).

+ +
+
+ +

◆ isValid()

+ +
+
+ + + + + + + +
bool UDirectory::isValid ()
+
+

Check is the directory exists.

Returns
if directory exists.
+ +
+
+ +

◆ getNextFileName()

+ +
+
+ + + + + + + +
std::string UDirectory::getNextFileName ()
+
+

Get the next file name.

Returns
the next file name
+ +
+
+ +

◆ getNextFilePath()

+ +
+
+ + + + + + + +
std::string UDirectory::getNextFilePath ()
+
+

Get the next file path.

Returns
the next file path
+ +
+
+ +

◆ getFileNames()

+ +
+
+ + + + + +
+ + + + + + + +
const std::list< std::string > & UDirectory::getFileNames () const
+
+inline
+
+

Get all file names.

See also
UDirectory()
+
Returns
all the file names in directory matching the set extensions.
+ +

Definition at line 129 of file UDirectory.h.

+ +
+
+ +

◆ rewind()

+ +
+
+ + + + + + + +
void UDirectory::rewind ()
+
+

Return the pointer of file names to beginning.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUDirectory.js b/preview/pr-1773/api/latest/classUDirectory.js new file mode 100644 index 00000000..b83fe3d0 --- /dev/null +++ b/preview/pr-1773/api/latest/classUDirectory.js @@ -0,0 +1,11 @@ +var classUDirectory = +[ + [ "UDirectory", "classUDirectory.html#ac2063a33161b07a0c9e841cc1ee5fcaf", null ], + [ "setPath", "classUDirectory.html#aadfc0f6dfedc74bb6ef67dc87d6441f4", null ], + [ "update", "classUDirectory.html#ab738cea12207aea77c7a0581c57d6008", null ], + [ "isValid", "classUDirectory.html#a8d471f3c9ff7391d25a52eab24255e64", null ], + [ "getNextFileName", "classUDirectory.html#a89ff08bf6044f2a0dc61f0dbbdc9d2cc", null ], + [ "getNextFilePath", "classUDirectory.html#a2e435d2c98e54a8119c2fc3b388c03e9", null ], + [ "getFileNames", "classUDirectory.html#aa16e64be3cc238eec871bddaf6dbc289", null ], + [ "rewind", "classUDirectory.html#aba596118c893215cf1a2981196864dca", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEvent-members.html b/preview/pr-1773/api/latest/classUEvent-members.html new file mode 100644 index 00000000..20304eac --- /dev/null +++ b/preview/pr-1773/api/latest/classUEvent-members.html @@ -0,0 +1,120 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEvent Member List
+
+
+ +

This is the complete list of members for UEvent, including all inherited members.

+ + + + + +
getClassName() const =0UEventpure virtual
getCode() constUEventinline
UEvent(int code=0)UEventinlineprotected
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEvent.html b/preview/pr-1773/api/latest/classUEvent.html new file mode 100644 index 00000000..525f0241 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEvent.html @@ -0,0 +1,318 @@ + + + + + + + + +RTAB-Map: UEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UEvent Class Referenceabstract
+
+
+ +

#include <UEvent.h>

+
+Inheritance diagram for UEvent:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + +

+Public Member Functions

virtual std::string getClassName () const =0
 
int getCode () const
 
+ + + +

+Protected Member Functions

 UEvent (int code=0)
 
+

Detailed Description

+

This is the base class for all events used with the UEventsManager. Inherited classes must redefined the virtual method getClassName() to return their class name.

+

Example:

class MyEvent : public UEvent
+
{
+
public:
+
MyEvent() {}
+
virtual ~MyEvent() {}
+
std::string getClassName() const {return "MyEvent";}
+
};
+
+
int main(int argc, char * argv[])
+
{
+
...
+
UEventsManager::post(new MyEvent()); // UEventsManager take ownership of the event (deleted by UEventsManager).
+
...
+
}
+ +
static void post(UEvent *event, bool async=true, const UEventsSender *sender=0)
+
See also
UEventsManager
+
+UEventsHandler
+
+getClassName()
+ +

Definition at line 57 of file UEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ ~UEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UEvent::~UEvent ()
+
+inlinevirtual
+
+ +

Definition at line 59 of file UEvent.h.

+ +
+
+ +

◆ UEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
UEvent::UEvent (int code = 0)
+
+inlineprotected
+
+
Parameters
+ + +
codethe event code. TODO : Remove the code, not required for most of all implemented events
+
+
+ +

Definition at line 81 of file UEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string UEvent::getClassName () const
+
+pure virtual
+
+
+ +

◆ getCode()

+ +
+
+ + + + + +
+ + + + + + + +
int UEvent::getCode () const
+
+inline
+
+

Get event's code.

Returns
the code
+ +

Definition at line 74 of file UEvent.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/UEvent.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEvent.js b/preview/pr-1773/api/latest/classUEvent.js new file mode 100644 index 00000000..0848eee4 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEvent.js @@ -0,0 +1,6 @@ +var classUEvent = +[ + [ "UEvent", "classUEvent.html#a662b610c2e9ebaae5e91ed5ea1dcef34", null ], + [ "getClassName", "classUEvent.html#a2c7d278240ad4b7d88a2c534cc5f47b4", null ], + [ "getCode", "classUEvent.html#a7356350719dfd5ba2d28368d1fdcd143", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventDispatcher-members.html b/preview/pr-1773/api/latest/classUEventDispatcher-members.html new file mode 100644 index 00000000..1f8d5d40 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventDispatcher-members.html @@ -0,0 +1,159 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEventDispatcher Member List
+
+
+ +

This is the complete list of members for UEventDispatcher, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
join(bool killFirst=false)UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
mainLoop()UEventDispatcherprotectedvirtual
Priority enum nameUThread
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setPriority(Priority priority)UThread
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UEventDispatcher() (defined in UEventDispatcher)UEventDispatcherprotected
UEventsManager (defined in UEventDispatcher)UEventDispatcherfriend
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~UEventDispatcher() (defined in UEventDispatcher)UEventDispatchervirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventDispatcher.html b/preview/pr-1773/api/latest/classUEventDispatcher.html new file mode 100644 index 00000000..a8830c66 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventDispatcher.html @@ -0,0 +1,308 @@ + + + + + + + + +RTAB-Map: UEventDispatcher Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UEventDispatcher Class Reference
+
+
+
+Inheritance diagram for UEventDispatcher:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for UEventDispatcher:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Protected Member Functions

virtual void mainLoop ()
 
+ + + +

+Friends

class UEventsManager
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+
+

Definition at line 34 of file UEventsManager.h.

+

Member Function Documentation

+ +

◆ mainLoop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void UEventDispatcher::mainLoop ()
+
+protectedvirtual
+
+

Pure virtual method mainLoop(). The inner loop of the thread. This method is called repetitively until the thread is killed. Note that if kill() is called in mainLoopBegin(), mainLoop() is not called, terminating immediately the thread.

+
See also
mainLoop()
+
+kill()
+ +

Implements UThread.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ UEventsManager

+ +
+
+ + + + + +
+ + + + +
friend class UEventsManager
+
+friend
+
+ +

Definition at line 39 of file UEventsManager.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventDispatcher.js b/preview/pr-1773/api/latest/classUEventDispatcher.js new file mode 100644 index 00000000..749804cc --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventDispatcher.js @@ -0,0 +1,4 @@ +var classUEventDispatcher = +[ + [ "mainLoop", "classUEventDispatcher.html#ad1aa4dc2ee29a9bfe5ee0422ad1c97f0", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.map b/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.map new file mode 100644 index 00000000..93f3f5d2 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.md5 b/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.md5 new file mode 100644 index 00000000..756fa290 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.md5 @@ -0,0 +1 @@ +53e0fc90c95d48f533cb4c4c567dc622 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.png b/preview/pr-1773/api/latest/classUEventDispatcher__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2667612115d21ecf1d8a5d942d19659b8231ac68 GIT binary patch literal 6156 zcmcJTXH-+q+QkDZ1eK1oAc}~f(joLBU8MJp^bP^(9qAweB?!_L1QZCpBO=8B(tGbs zq!a1w4*$E}5BFW`e!L-YvXa9&nVDyv{o6ZARauVkChbiK1VSkPTv{C*Q^9XF6c7Bp zLCo3&4tQn?a?+5?tDlbzc_;{ks!3j2Lend4bK2KX)BU1tca+A88AxbhWSyoD;Eo#Pq}~r=qJ}t8_E2J%?$@^Fa^glNqUDtv9bH1P;H83SN9k36D8p-9=#=|E%dfb>XQkXnJU`a+Gu~; z_xA4sFcxDEhucf!^KI2k-$X~7U0$49q31`?2Df2+F$)W38l#pDp+J>C=yIQVQ^!U!+QTyK4H(TRtzS5XJTFT4?C???(%_qTjrs5%J>0u5?S~ z4dRq|?V1e?4D{LXx~&a_ebvb0wrD3=#A@m2VDrS!qgo<}!T0U>ERRzBlPu)^WV+td zdiJ}&4X=2t&`MXbl)St=@}!`kV7xI<+@Q+A^l)qX==78v1~XXq7_W1GYHMp-XjDHk zrmd+dt*c9&%8$skA1#71jMca>c64;GL^qfBiggZs)j$sRW{9Tt^{GlqNx>?`h+lbl zSRL;zcclrUb{E^oX=pk$R77)ni00Od8;Qi7=Ynja*^TNVEA2-|Y&<bN&9o=H%!cUweBy$t_A&lC7<+EV(%P2ag`fE-ft$3HRnG zB!z~Bh1K}%=a)L3pX@h}j*cFAjTGuNx3$Un?R7AlbtbZ9xvussyw@@2I>5hiBiUi` zWF$|_x;Nv_8%j2^bYV|Qqk4}!3Q6pDsMrl{oEz>XBqcEu(Fxqwml;cB)id+++yA45 zB3xcwWnSq{wccoSUr+2?b9*2vI(@YW4_VpR*3YCk45}0r(}lF446Xa?qhYeyq_cil zWNF~~2pY30;`aM3q&4sYo9QzecyV@&OM-f&M8>R=QRq2=FS(^%c ze}*L^>jMRlvW&5Jg{?MJl$9y<(b^Pu?hr62wv6;kVFvOCHwU06E5e-fbM=6 zT8}837KsN0IXc$x{{wTd2iLOmQ+`9FE4yiRngHm!Q(fmYgFQJpRPo~d8q{`AqpAO{wx_dUNxxEPZbpj zb8{x(zEQEUn30jh)>dh-5o54PNl6;U#!hLCU%s^0#4u<2k@@=i#-mWXSZqOgF6eOF zZogHXX1;Y;XZmAO;PxN5%<)W3O%*dllIL3@Mvt>#;sGL!=bH$5B_$>XhSy+EO-)bZ zIJ>!h&d-k?7*OBX+{9sFW#v5({qkx5E7G_aOuuMrTN^4Np*0BST4YSj(i@KNKYDtK zX1r7L^@_?xPdCaPrt99Xj~2rwLA8dUP~_*Qhltp`FIsW*qC5Nh%dJu5x9=y^l&&@q^a$*PN&T3Sb0QxD9$q&fD;2;uvxG|1WP8Zs}INiSHdDyz$aF|ir z2&($(ysQm$l6G2+=Bz#(ujp#=e_yP+NkY zTXgtDbS4uOw%zm<`l4MQ&{Y>3Yl<|e#%)azZ4Zwf`V@zAJ;ou zplT$!E9^nhD}s%I-n_}(6Sy-cF~6|zz|Y@bCW+ms6-=Fdj0>1n#StOSK6yB|L%iMp3GX{olqO@#0ZFV8kLL}vM*23AUc^iFC%1l_L33=2&&w@C z5o2t0jb<^esRjj;7L?R9)=WQy{A3HI5VrrD)xT}jzjD@y&r=i~<>$iJRAwoO5`JqB zox0pD7=(#~Z-Zb)bb#r1^XpxO}Rlq*GF;qOfCajz*-1pm56UpFzy)s?ni z!N=`@?fl9~Zvbt*`l%v1R0WR**I1^fbjS`u(>Syc=C$a7p3UKXsTpC9DABFQef`)iS}u+QT(|y%e8peG6Kb8ySz2zQ8V=5 zXjc9u!KwbqXZ-dOcyLh1v+nIDxHoOkcQQ0;KWoc}qj5L_9;fw@WIaQV4uw9WX8lm; zVT68n+u+(?A&mJKQ5y)0E(@M)&q;){Mrq+c{~*apkkeGX&zf(N_T)yT8Mnj!hbk4f z>v)5ahi}777P5<4d7xKBYZ;>GP2MRqvy(vf)bV$p5}1|ML?D&9;B>yRLL4 z9uptZiIAq_eN3CS+#OB`wY4duv-%2jIFvKRlmKv~cmAHN-p*#nTBEx|9hZN-2SPA1 z1_KoIao8>@?w^KWVQGo8GwnI+0@N@#I5=jo$f#a>I3>_&LUD}N97r!_b`)*U=DXd{ z))azopI%j0mx5jG%^tQ}>(7oTJqO69siU*FxYz<@q@<)|E{Zt=a$j6L^QlfzAKHMQ z?(SVAc4=iLK0O_o#ZpsS+uz{pS)o6ugy5tW0PSUDWCUzT_@aI_op?bBd?f4^)eaWh zGBJ^omPQvG5+bjtD6K{Tc(x577Yhr^kC~Z_$VjMF*N3LRYlC2rO>J!vZ>Tu-PS%UD ze+r6m-=?Je0(1fa?C?YqN=8nOj5q@%wY&cEG6jGPXdN!@?l~0|Lk{bgU)oECA3S~f z=I>v(I*-j40Rdv*K_~bsltC&S@-{iS15hZ^w?fc$MO9b#IcU;+e0+YVo7I2UN8|D` z15!W-Bqt@6kd_X0Ilj_F@8$P8W98PwkjB&LZ9u4VN4tx^-Gmkv7Cyl36HlIAM0S+- z>jRXI2D6Mix3VG&RH412gKMpkiZ=)_%avj&rwKHHsXpEgyzE4&h{?Zr5$%!!sCTEE zf7bbTAA_Ht-*W{8o`cQt@(6G2%BR8Uh8yRg^Osg5d_8dyJidH@s`vKx>?)EH6BpLj z#y?wDB4%fnO0^4e^7DTkjg60wAJvn9#m4p6oRE3-s;tyVjl#jv5$EV=F)o=O0oa{h zKv+0?bp0_qdu~=1u7ZMs)9iOgZj1)S4Sf8FN5fOJ70D$4Y2E-aQq$9m%E@7Z_%vj6 zbty_pO45&GpF~S$iup$ZJ94lwj`3i)ZfR)=VKx5tfe^+=O`P-i@#7deK{AHxpjtsS zC})Ut067h+xBfL+WaMiBPgO`In7qaD?Z={mWUO`qC4^Y|_SOS3@EPg4@&BIe#US7a;z8EL&^a{C| z;WS;BZ1@KPg+hO{v}E^OynRa&OD8C4Y)lVOkP$G^;cQ^0L4%f-bN8WAxFD8*`=PyL!zPugQJ505`%PIp>} zf5y=8RHdFGbdvbWtx@`7|4nkfUy8fx^a)k|?i>Ph%C@y`>vIeCeUmedxhT+fOWp41 zU=q=7B-xlDV z52oe9(T^z}kp2$v($qs+X6dclT3U?J+D;hH<4-j*murTKB=CjZHeh_rN!lmgw*hxA zhH}b@Ude(v^b_QriAd;0pK^|DyOgbYM+v<7@A>s>ckSI+bhCDvfhIb&$-aesB@O*F zBK2GJ?uBqr-cVs)WxT2VkFsl$r!8JeI&BYqWaho$_I7A++qVWy&wtcr$h$>1hwe^> z=IFyKwYeP#eKYEaKS7{3gnfPKr;{`$p)^%Kih}nGDX0~uBUB+2ud~|A2kSrUY|eYzZu4TM*$T;l)HIne(*3l(Oc>*r82!N(?9O}-w^OWR~*Kc z|96Z1nfDw*LMN6XO`NJ|GyO335PF`!G=n;*zkldmlLo-rrodfXT-;}Z%VsV`Y&og% zs_aL%_(31*eyL}#6@TNa-rUk(7&tW^co9=h>Z)tRRD2K^3*>+-_xDp!Ql``==!4aIXI#uIB$RS?<_E6yhj(3xA5gt+nFRsj`|+c@!WUj` zt$>NKE2#)F80<}IDh$HW@Rv+WOADS@YTAOwn<95g`{m0QldY-RLfukaDk>`T({niR ztVG}?;6EC;9R(2)5#-;^l-|~#aClrld7p@b$H^>4<)n#N{F!BJwOhH8z0eF0VUVNsM84iE{`SZg>j+e1nEK}dSQI3;U?|?#u zh26lx!2#CO)YeuW3=){rx#QK$)w!k+3JQw8T372_#pK|Ef~UY&-Z1HiXM%`eyLiC) z$wPfbM#A438j|7ml$}W&*1+Eb#r`z9p3Gw%>%w6K+!3%LvQ}1)hKGlbPENQ@o3C$d zY{a-rOG`T+?U;f_wl;!>y?gf##1*)lo?C`bo;(41`eS-J9hmaD)m3~|>vVpnDH8y` z7S`54fC&f)Oj{#KF%!LMf*R{S*N_uV}4)=wGCXTQp1_+$F_4PN}1xhzPRm6vyPcJd_477Q<} zuF4e~Hyj-{UK&}mB_}6?geH`L+}YXrM}PmjogHVC>QLp3(zw&%L1_0^J>qOiN=nEh z--ka0evjBGWfm22rOIYAu&_i94QZYnY%189nt<05)y#t$^y=PLP^}VXVQTpp;o_N5?dn>DqzKc zac%AHMuI8_W|`&56K*GFV&XU<`&w`8BQT=<4C&#@8RWE6PtX2z=ixluehkPZ2tbyW zm#-Y1xi6q0ee{TcvTY2IwOugTY9JUWHE&ZSa%X2}_ww=C!@v+jLI^#*b5C>41RwDY zvn=472lG@03v`NwlHjkFp3BD4MFHCkO7;wRG*f`F7+cU8Vyx$@5wlll0b(YQy&bKJ zUv?;PG_;z>iH0lZ{ezuU_Kxm#b#<@){#Ltj!5`ZZ;rGoR&VQ&W@Q@p6)3 z?W-FN#wvizqN1X1(+QNw!`i@h0dZG}WhdpY&d#;T>f+Mg+1bppGH#Gs0VXB@&UAib zyd20pzukCZVj@^$l<6H83y-VC%AQ9b^UQYURMdz}tA& zKnNzt#KZ(TP&vR76qkWfz(0dIcW^s9+6B4WF4!Pynwp{6*^F1)hnKekQvvGyOTWh@ zJO_jyAVi_zbNJA~F!t+LG(hAs`%!i?bMvqH`B@-&1+Vil!af}1xNdIK+bKn8Ji zbj0bpq6opeP5t8-yBdW=%0MNyXBq$rtAx0JKiliv7%L62>`c7skk6k(4-O6pw~|xL z>(43n=~V!hmri$dtnu$L$`Y^64 z?nyFn6R6GbjGQCk5=f%|!_U!*NPNl9UjX!PH}s&=g)kglQBl#OBJ%tyI{)W6AaxuV YMLp{F+}A7+#QP9=8D;4rNt57z0V#|gzW@LL literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.map b/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.map new file mode 100644 index 00000000..93f3f5d2 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.md5 b/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.md5 new file mode 100644 index 00000000..756fa290 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.md5 @@ -0,0 +1 @@ +53e0fc90c95d48f533cb4c4c567dc622 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.png b/preview/pr-1773/api/latest/classUEventDispatcher__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2667612115d21ecf1d8a5d942d19659b8231ac68 GIT binary patch literal 6156 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 YMLp{F+}A7+#QP9=8D;4rNt57z0V#|gzW@LL literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUEvent__inherit__graph.map b/preview/pr-1773/api/latest/classUEvent__inherit__graph.map new file mode 100644 index 00000000..72118a91 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEvent__inherit__graph.map @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classUEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classUEvent__inherit__graph.md5 new file mode 100644 index 00000000..71ec1d46 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEvent__inherit__graph.md5 @@ -0,0 +1 @@ +9dc3ae81c19dbedbd4022acf7b944093 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEvent__inherit__graph.png b/preview/pr-1773/api/latest/classUEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1786be398bbc4db271b43bd29d3095479771be GIT binary patch literal 67499 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 bb#3z + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEventsHandler Member List
+
+
+ +

This is the complete list of members for UEventsHandler, including all inherited members.

+ + + + + + + + + + +
handleEvent(UEvent *event)=0UEventsHandlerprotectedpure virtual
post(UEvent *event, bool async=true) constUEventsSenderprotected
registerToEventsManager() (defined in UEventsHandler)UEventsHandler
UEventsHandler()UEventsHandlerinlineprotected
UEventsManagerUEventsHandlerfriend
UEventsSender() (defined in UEventsSender)UEventsSenderinline
unregisterFromEventsManager() (defined in UEventsHandler)UEventsHandler
~UEventsHandler()UEventsHandlerprotectedvirtual
~UEventsSender() (defined in UEventsSender)UEventsSendervirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventsHandler.html b/preview/pr-1773/api/latest/classUEventsHandler.html new file mode 100644 index 00000000..78051bcc --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsHandler.html @@ -0,0 +1,381 @@ + + + + + + + + +RTAB-Map: UEventsHandler Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UEventsHandler Class Referenceabstract
+
+
+ +

#include <UEventsHandler.h>

+
+Inheritance diagram for UEventsHandler:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for UEventsHandler:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + +

+Public Member Functions

+void registerToEventsManager ()
 
+void unregisterFromEventsManager ()
 
+ + + + + + + + + + +

+Protected Member Functions

virtual bool handleEvent (UEvent *event)=0
 
 UEventsHandler ()
 
virtual ~UEventsHandler ()
 
- Protected Member Functions inherited from UEventsSender
void post (UEvent *event, bool async=true) const
 
+ + + +

+Friends

class UEventsManager
 
+

Detailed Description

+

The class UEventsHandler is an abstract class for handling events.

+

Inherited classes must implement handleEvent() function, which is called by the UEventsManager when an event is dispatched. Once the handler is created, it must be added to events manager with UEventsManager::addHandler() function. Note that it is not safe to automatically add the handler to UEventsManager in the handler's constructor.

+

Note for multi-threading: the handleEvent() method is called inside the UEventsManager thread. If the inherited class also inherits from UThreadNode, handleEvent() is done as well outside the thread's main loop, so be careful to protect private data of the thread used in its main loop.

+

Example for a useful combination of an UEventsHandler and a UThreadNode, with safe data modification while not blocking the handleEvent() call on a mutex:

+
#include "utilite/UEventsHandler.h"
+
#include "utilite/UEventsManager.h"
+
#include "utilite/UEvent.h"
+
+
// Implement a simple event
+
class ResetEvent : public UEvent {
+
public:
+
ResetEvent() {}
+
virtual ~ResetEvent() {}
+
virtual std::string getClassName() const {return "ResetEvent";} // Must be implemented
+
};
+
+
// There is the thread counting indefinitely, the count can be reseted by sending a ResetEvent.
+
class CounterThread : public UThreadNode, public UEventsHandler {
+
public:
+
CounterThread() : state_(0), count_(0) {}
+
virtual ~CounterThread() {this->join(true);}
+
+
protected:
+
virtual void mainLoop() {
+
if(state_ == 1) {
+
state_ = 0;
+
// Do a long initialization, reset memory or other special long works... here
+
// we reset the count. This could be done in the handleEvent() but
+
// with many objects, it is more safe to do it here (in the thread's loop). A safe
+
// way could be also to use a UMutex to protect this initialization in
+
// the handleEvent(), but it is not recommended to do long works in handleEvent()
+
// because this will add latency in the UEventsManager dispatching events loop.
+
count_ = 0; // Reset the count
+
printf("Reset!\n");
+
}
+
+
// Do some works...
+
printf("count=%d\n", count_++);
+
uSleep(100); // wait 100 ms
+
}
+
virtual void handleEvent(UEvent * event) {
+
if(event->getClassName().compare("ResetEvent") == 0) {
+
state_ = 1;
+
}
+
}
+
private:
+
int state_;
+
int count_;
+
};
+
+
int main(int argc, char * argv[])
+
{
+
CounterThread counter;
+
counter.start();
+ +
+
uSleep(500); // wait 500 ms before sending a reset event
+
UEventsManager::post(new ResetEvent());
+
uSleep(500); // wait 500 ms before termination
+
+ +
counter.join(true); // Kill and wait to finish
+
return 0;
+
}
+
Backward-compatible alias header for UThread.
+ +
virtual std::string getClassName() const =0
+ +
static void removeHandler(UEventsHandler *handler)
+
static void addHandler(UEventsHandler *handler)
+
static void post(UEvent *event, bool async=true, const UEventsSender *sender=0)
+ +

The output is:

count=0
+
count=1
+
count=2
+
count=3
+
count=4
+
Reset!
+
count=0
+
count=1
+
count=2
+
count=3
+
count=4
+
See also
UEventsManager
+
+UEvent
+
+UThreadNode
+ +

Definition at line 128 of file UEventsHandler.h.

+

Constructor & Destructor Documentation

+ +

◆ UEventsHandler()

+ +
+
+ + + + + +
+ + + + + + + +
UEventsHandler::UEventsHandler ()
+
+inlineprotected
+
+

UEventsHandler constructor.

+

Note : You can call EventsManager::addHandler(this) at the end of the constructor of the inherited class where the virtual method handleEvent(...) is defined. If so, the UEventsHandler doesn't need to be manually added to the EventsManager where the handler is instantiated. We decided to not include UEventsManager::addHandler(this) in this abstract class constructor because an event can be handled (calling the pure virtual method) while the concrete class is constructed.

+ +

Definition at line 172 of file UEventsHandler.h.

+ +
+
+ +

◆ ~UEventsHandler()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UEventsHandler::~UEventsHandler ()
+
+protectedvirtual
+
+

UEventsHandler destructor.

+

By default, it removes the handler reference from the UEventsManager. To be thread-safe, the inherited class must remove itself from the UEventsManager before it is deleted because an event can be handled (calling the pure virtual method handleEvent()) after the concrete class is deleted.

+ +
+
+

Member Function Documentation

+ +

◆ handleEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool UEventsHandler::handleEvent (UEvent * event)
+
+protectedpure virtual
+
+

Method called by the UEventsManager to handle an event. Important : this method must do a minimum of work because the faster the dispatching loop is done; the faster the events are received. If a handling function takes too much time, the events list can grow faster than it is emptied. The event can be modified.

Returns
"true" to notify UEventsManager that this handler took ownership of the event (meaning it must delete it). The event will not be dispatched to next handlers.
+
+"false" to let event be dispatched to next handlers (default behavior). UEventsManager will take care of deleting the event.
+ +

Implemented in rtabmap::RtabmapThread, and rtabmap::OdometryThread.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ UEventsManager

+ +
+
+ + + + + +
+ + + + +
friend class UEventsManager
+
+friend
+
+

Only the UEventsManager has access to the handleEvent() method.

+ +

Definition at line 140 of file UEventsHandler.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventsHandler.js b/preview/pr-1773/api/latest/classUEventsHandler.js new file mode 100644 index 00000000..f69173e7 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsHandler.js @@ -0,0 +1,7 @@ +var classUEventsHandler = +[ + [ "UEventsHandler", "classUEventsHandler.html#abfe2ba3d1fb92e59aff1978cbc21d134", null ], + [ "~UEventsHandler", "classUEventsHandler.html#a15ac2bf243e938c411fac0dff7db2f51", null ], + [ "handleEvent", "classUEventsHandler.html#a0d43b582c19f01196a513f66d3618d8d", null ], + [ "UEventsManager", "classUEventsHandler.html#a977152b27d4c918d79a2db23ed85bfa6", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.map b/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.map new file mode 100644 index 00000000..b817bb3b --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.md5 b/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.md5 new file mode 100644 index 00000000..ee98892d --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.md5 @@ -0,0 +1 @@ +1c87383052669c2c204d5e153c3d17db \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.png b/preview/pr-1773/api/latest/classUEventsHandler__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..65b98880d4b144acf8c5f9c7cf0008223fa54695 GIT binary patch literal 4186 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.map b/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.map new file mode 100644 index 00000000..2104b8fa --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.md5 b/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.md5 new file mode 100644 index 00000000..b9ae54d9 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.md5 @@ -0,0 +1 @@ +1fb714597e4c452d80eae808cd731525 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.png b/preview/pr-1773/api/latest/classUEventsHandler__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..796fad2d89419b7d88d44f24157c36e9c16f795a GIT binary patch literal 10091 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEventsManager Member List
+
+
+ +

This is the complete list of members for UEventsManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addHandler(UEventsHandler *handler)UEventsManagerstatic
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
createPipe(const UEventsSender *sender, const UEventsHandler *receiver, const std::string &eventName) (defined in UEventsManager)UEventsManagerstatic
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getInstance() (defined in UEventsManager)UEventsManagerprotectedstatic
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
join(bool killFirst=false)UThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
mainLoop()UEventsManagerprotectedvirtual
post(UEvent *event, bool async=true, const UEventsSender *sender=0)UEventsManagerstatic
Priority enum nameUThread
removeAllPipes(const UEventsSender *sender) (defined in UEventsManager)UEventsManagerstatic
removeHandler(UEventsHandler *handler)UEventsManagerstatic
removeNullPipes(const UEventsSender *sender) (defined in UEventsManager)UEventsManagerstatic
removePipe(const UEventsSender *sender, const UEventsHandler *receiver, const std::string &eventName) (defined in UEventsManager)UEventsManagerstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setPriority(Priority priority)UThread
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UDestroyer< UEventsManager > (defined in UEventsManager)UEventsManagerfriend
UEventsManager() (defined in UEventsManager)UEventsManagerprotected
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~UEventsManager() (defined in UEventsManager)UEventsManagerprotectedvirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventsManager.html b/preview/pr-1773/api/latest/classUEventsManager.html new file mode 100644 index 00000000..d9cea010 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsManager.html @@ -0,0 +1,469 @@ + + + + + + + + +RTAB-Map: UEventsManager Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <UEventsManager.h>

+
+Inheritance diagram for UEventsManager:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for UEventsManager:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void addHandler (UEventsHandler *handler)
 
static void removeHandler (UEventsHandler *handler)
 
static void post (UEvent *event, bool async=true, const UEventsSender *sender=0)
 
+static void createPipe (const UEventsSender *sender, const UEventsHandler *receiver, const std::string &eventName)
 
+static void removePipe (const UEventsSender *sender, const UEventsHandler *receiver, const std::string &eventName)
 
+static void removeAllPipes (const UEventsSender *sender)
 
+static void removeNullPipes (const UEventsSender *sender)
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
+ + + +

+Protected Member Functions

virtual void mainLoop ()
 
+ + + + + + + + + + + + + + + + +

+Static Protected Member Functions

+static UEventsManager * getInstance ()
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+ + + +

+Friends

class UDestroyer< UEventsManager >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+

Detailed Description

+

This class is used to post events between threads in the application. It is Thread-Safe and the events are sent to receivers in the same order they are posted (FIFO). It works like the design pattern Mediator. It is also a Singleton, so it can be used anywhere in the application.

+

To send an event, use UEventsManager::post(). Events are automatically deleted after they are posted.

+

The EventsManager have a list of handlers to which it sends posted events. To add an handler, use UEventsManager::addHandler(). To remove, use UEventsManager::removeHandler().

+
// Anywhere in the code:
+
UEventsManager::post(new MyEvent()); // where MyEvent is an implemented UEvent
+
static void post(UEvent *event, bool async=true, const UEventsSender *sender=0)
+
See also
UEvent
+
+UEventsHandler
+
+post()
+
+addHandler()
+
+removeHandler()
+ +

Definition at line 78 of file UEventsManager.h.

+

Member Function Documentation

+ +

◆ addHandler()

+ +
+
+ + + + + +
+ + + + + + + + +
static void UEventsManager::addHandler (UEventsHandler * handler)
+
+static
+
+

This method is used to add an events handler to the list of handlers.

+
Parameters
+ + +
handlerthe handler to be added.
+
+
+ +
+
+ +

◆ removeHandler()

+ +
+
+ + + + + +
+ + + + + + + + +
static void UEventsManager::removeHandler (UEventsHandler * handler)
+
+static
+
+

This method is used to remove an events handler from the list of handlers.

+
Parameters
+ + +
handlerthe handler to be removed.
+
+
+ +
+
+ +

◆ post()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void UEventsManager::post (UEvent * event,
bool async = true,
const UEventsSender * sender = 0 
)
+
+static
+
+

This method is used to post an event to handlers.

+

Event can be posted asynchronously or not. In the first case, the event is dispatched by the UEventsManager's thread. In the second case, the event is handled immediately by event's receivers, thus in the sender thread.

+
Parameters
+ + + +
eventthe event to be posted.
asyncif true, the event is dispatched by the UEventsManager thread, otherwise it's in the caller thread (synchronous).
+
+
+ +
+
+ +

◆ mainLoop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void UEventsManager::mainLoop ()
+
+protectedvirtual
+
+

The UEventsManager's main loop.

+ +

Implements UThread.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ UDestroyer< UEventsManager >

+ +
+
+ + + + + +
+ + + + +
friend class UDestroyer< UEventsManager >
+
+friend
+
+ +

Definition at line 147 of file UEventsManager.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventsManager.js b/preview/pr-1773/api/latest/classUEventsManager.js new file mode 100644 index 00000000..9e6ac6a7 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsManager.js @@ -0,0 +1,4 @@ +var classUEventsManager = +[ + [ "mainLoop", "classUEventsManager.html#a7eec8b7a675e7093064f147a9f62bfb9", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsManager__coll__graph.map b/preview/pr-1773/api/latest/classUEventsManager__coll__graph.map new file mode 100644 index 00000000..f44b9743 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsManager__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classUEventsManager__coll__graph.md5 b/preview/pr-1773/api/latest/classUEventsManager__coll__graph.md5 new file mode 100644 index 00000000..198fd67e --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsManager__coll__graph.md5 @@ -0,0 +1 @@ +fcda036a66518a2e853a9b55fad0d084 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsManager__coll__graph.png b/preview/pr-1773/api/latest/classUEventsManager__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aade4d2213f2f90ab1f47ae927d45e2c9de8400d GIT binary patch literal 6027 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.map b/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.map new file mode 100644 index 00000000..f44b9743 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.md5 b/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.md5 new file mode 100644 index 00000000..198fd67e --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.md5 @@ -0,0 +1 @@ +fcda036a66518a2e853a9b55fad0d084 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.png b/preview/pr-1773/api/latest/classUEventsManager__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aade4d2213f2f90ab1f47ae927d45e2c9de8400d GIT binary patch literal 6027 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUEventsSender-members.html b/preview/pr-1773/api/latest/classUEventsSender-members.html new file mode 100644 index 00000000..604ff855 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsSender-members.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UEventsSender Member List
+
+
+ +

This is the complete list of members for UEventsSender, including all inherited members.

+ + + + +
post(UEvent *event, bool async=true) constUEventsSenderprotected
UEventsSender() (defined in UEventsSender)UEventsSenderinline
~UEventsSender() (defined in UEventsSender)UEventsSendervirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventsSender.html b/preview/pr-1773/api/latest/classUEventsSender.html new file mode 100644 index 00000000..5458901d --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsSender.html @@ -0,0 +1,213 @@ + + + + + + + + +RTAB-Map: UEventsSender Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UEventsSender Class Reference
+
+
+
+Inheritance diagram for UEventsSender:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + +

+Protected Member Functions

void post (UEvent *event, bool async=true) const
 
+

Detailed Description

+
+

Definition at line 15 of file UEventsSender.h.

+

Constructor & Destructor Documentation

+ +

◆ UEventsSender()

+ +
+
+ + + + + +
+ + + + + + + +
UEventsSender::UEventsSender ()
+
+inline
+
+ +

Definition at line 18 of file UEventsSender.h.

+ +
+
+

Member Function Documentation

+ +

◆ post()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void UEventsSender::post (UEvent * event,
bool async = true 
) const
+
+protected
+
+

For convenience to post an event. This is the same than calling UEventsManager::post() with the sender reference.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUEventsSender.js b/preview/pr-1773/api/latest/classUEventsSender.js new file mode 100644 index 00000000..0349104c --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsSender.js @@ -0,0 +1,4 @@ +var classUEventsSender = +[ + [ "post", "classUEventsSender.html#ab03886c42164f2f9bf89fd3da641526f", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.map b/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.map new file mode 100644 index 00000000..c24a1dab --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.md5 b/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.md5 new file mode 100644 index 00000000..f0eff366 --- /dev/null +++ b/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.md5 @@ -0,0 +1 @@ +0cb71d81149c33c809a2273b83a8e2e1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.png b/preview/pr-1773/api/latest/classUEventsSender__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e06c9e2fd7e909bc77ce503b6f0fb6275094bd GIT binary patch literal 16354 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUException-members.html b/preview/pr-1773/api/latest/classUException-members.html new file mode 100644 index 00000000..0873358f --- /dev/null +++ b/preview/pr-1773/api/latest/classUException-members.html @@ -0,0 +1,117 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/preview/pr-1773/api/latest/classUException.html b/preview/pr-1773/api/latest/classUException.html new file mode 100644 index 00000000..3b8b43c1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUException.html @@ -0,0 +1,178 @@ + + + + + + + + +RTAB-Map: UException Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UException Class Reference
+
+
+
+Inheritance diagram for UException:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for UException:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + +

+Public Member Functions

 UException (const std::string &what)
 
+

Detailed Description

+
+

Definition at line 25 of file UException.h.

+

Constructor & Destructor Documentation

+ +

◆ UException()

+ +
+
+ + + + + +
+ + + + + + + + +
UException::UException (const std::string & what)
+
+inline
+
+ +

Definition at line 28 of file UException.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUException__coll__graph.map b/preview/pr-1773/api/latest/classUException__coll__graph.map new file mode 100644 index 00000000..00f629b1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUException__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classUException__coll__graph.md5 b/preview/pr-1773/api/latest/classUException__coll__graph.md5 new file mode 100644 index 00000000..6732013e --- /dev/null +++ b/preview/pr-1773/api/latest/classUException__coll__graph.md5 @@ -0,0 +1 @@ +bfaf32ec3fc5e809b5d0b97f507628eb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUException__coll__graph.png b/preview/pr-1773/api/latest/classUException__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..66f94200aa95e749de8db12dc8e555a53d5270e9 GIT binary patch literal 4024 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 + + + + diff --git a/preview/pr-1773/api/latest/classUException__inherit__graph.md5 b/preview/pr-1773/api/latest/classUException__inherit__graph.md5 new file mode 100644 index 00000000..6732013e --- /dev/null +++ b/preview/pr-1773/api/latest/classUException__inherit__graph.md5 @@ -0,0 +1 @@ +bfaf32ec3fc5e809b5d0b97f507628eb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUException__inherit__graph.png b/preview/pr-1773/api/latest/classUException__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..66f94200aa95e749de8db12dc8e555a53d5270e9 GIT binary patch literal 4024 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UFile Member List
+
+
+ +

This is the complete list of members for UFile, including all inherited members.

+ + + + + + + + + + + + + + + + + +
copy(const std::string &from, const std::string &to)UFilestatic
copy(const std::string &to)UFileinline
erase(const std::string &filePath)UFilestatic
exists(const std::string &filePath)UFilestatic
exists()UFileinline
getExtension(const std::string &filePath)UFilestatic
getExtension()UFileinline
getName(const std::string &filePath)UFilestatic
getName()UFileinline
isValid()UFileinline
length(const std::string &filePath)UFilestatic
length()UFileinline
rename(const std::string &oldFilePath, const std::string &newFilePath)UFilestatic
rename(const std::string &newName)UFileinline
UFile(const std::string &path)UFileinline
~UFile() (defined in UFile)UFileinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUFile.html b/preview/pr-1773/api/latest/classUFile.html new file mode 100644 index 00000000..042b29a1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUFile.html @@ -0,0 +1,682 @@ + + + + + + + + +RTAB-Map: UFile Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <UFile.h>

+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 UFile (const std::string &path)
 
bool isValid ()
 
bool exists ()
 
long length ()
 
int rename (const std::string &newName)
 
std::string getName ()
 
std::string getExtension ()
 
void copy (const std::string &to)
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool exists (const std::string &filePath)
 
static long length (const std::string &filePath)
 
static int erase (const std::string &filePath)
 
static int rename (const std::string &oldFilePath, const std::string &newFilePath)
 
static std::string getName (const std::string &filePath)
 
static std::string getExtension (const std::string &filePath)
 
static void copy (const std::string &from, const std::string &to)
 
+

Detailed Description

+

Class UFile.

+

This class can be used to modify/erase files on hard drive.

+ +

Definition at line 33 of file UFile.h.

+

Constructor & Destructor Documentation

+ +

◆ UFile()

+ +
+
+ + + + + +
+ + + + + + + + +
UFile::UFile (const std::string & path)
+
+inline
+
+

Create a UFile object with path initialized to an existing file .

Parameters
+ + +
paththe path to an existing file
+
+
+ +

Definition at line 91 of file UFile.h.

+ +
+
+ +

◆ ~UFile()

+ +
+
+ + + + + +
+ + + + + + + +
UFile::~UFile ()
+
+inline
+
+ +

Definition at line 92 of file UFile.h.

+ +
+
+

Member Function Documentation

+ +

◆ exists() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static bool UFile::exists (const std::string & filePath)
+
+static
+
+

Check if a file exists.

Parameters
+ + +
filePaththe file path
+
+
+
Returns
true if the file exists, otherwise false.
+ +
+
+ +

◆ length() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static long UFile::length (const std::string & filePath)
+
+static
+
+

Get the file length.

Parameters
+ + +
filePaththe file path
+
+
+
Returns
long the length of the file in bytes. Return -1 if the file doesn't exist.
+ +
+
+ +

◆ erase()

+ +
+
+ + + + + +
+ + + + + + + + +
static int UFile::erase (const std::string & filePath)
+
+static
+
+

Erase a file.

Parameters
+ + +
filePaththe file path
+
+
+
Returns
0 if success.
+ +
+
+ +

◆ rename() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int UFile::rename (const std::string & oldFilePath,
const std::string & newFilePath 
)
+
+static
+
+

Rename a file.

Parameters
+ + + +
oldFilePaththe old file path
newFilePaththe new file path
+
+
+
Returns
0 if success.
+ +
+
+ +

◆ getName() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string UFile::getName (const std::string & filePath)
+
+static
+
+

Get the file name from a file path (with extension).

Parameters
+ + +
filePaththe file path
+
+
+
Returns
the file name.
+ +
+
+ +

◆ getExtension() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string UFile::getExtension (const std::string & filePath)
+
+static
+
+

Get the file extension.

Returns
the file extension
+ +
+
+ +

◆ copy() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void UFile::copy (const std::string & from,
const std::string & to 
)
+
+static
+
+

Copy a file.

Parameters
+ + + +
fromthe file path
todestination file path
+
+
+ +
+
+ +

◆ isValid()

+ +
+
+ + + + + +
+ + + + + + + +
bool UFile::isValid ()
+
+inline
+
+

Check if the file exists. Same as exists().

Returns
true if the path exits
+ +

Definition at line 98 of file UFile.h.

+ +
+
+ +

◆ exists() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
bool UFile::exists ()
+
+inline
+
+

Check if the file exists.

Returns
true if the path exits
+ +

Definition at line 104 of file UFile.h.

+ +
+
+ +

◆ length() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
long UFile::length ()
+
+inline
+
+

Get the length of the file.

Returns
long the length of the file in bytes. Return -1 if the file doesn't exist.
+ +

Definition at line 110 of file UFile.h.

+ +
+
+ +

◆ rename() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
int UFile::rename (const std::string & newName)
+
+inline
+
+

Rename the file name. The path stays the same.

Parameters
+ + +
thenew name
+
+
+ +

Definition at line 116 of file UFile.h.

+ +
+
+ +

◆ getName() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
std::string UFile::getName ()
+
+inline
+
+

Get the file name without the path.

Returns
the file name
+ +

Definition at line 135 of file UFile.h.

+ +
+
+ +

◆ getExtension() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
std::string UFile::getExtension ()
+
+inline
+
+

Get the file extension.

Returns
the file extension
+ +

Definition at line 140 of file UFile.h.

+ +
+
+ +

◆ copy() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void UFile::copy (const std::string & to)
+
+inline
+
+

Copy a file.

Parameters
+ + +
todestination file path
+
+
+ +

Definition at line 146 of file UFile.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/UFile.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUFile.js b/preview/pr-1773/api/latest/classUFile.js new file mode 100644 index 00000000..ec7a04e1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUFile.js @@ -0,0 +1,11 @@ +var classUFile = +[ + [ "UFile", "classUFile.html#a19572c749b383b5fc15aca3615cdc682", null ], + [ "isValid", "classUFile.html#ad0ecde61a088d9fc3d034a513133341d", null ], + [ "exists", "classUFile.html#a4963afa70289718a3bd1ca50b6adb420", null ], + [ "length", "classUFile.html#a0c42f32c914b349d13103d0397c1b3c1", null ], + [ "rename", "classUFile.html#a4918a111f92f2fdb7406fbd1661a1587", null ], + [ "getName", "classUFile.html#af7e7f5995b05cda098037ca1cdcd63f4", null ], + [ "getExtension", "classUFile.html#aa937b9f20ef2e51091845c5108ded154", null ], + [ "copy", "classUFile.html#aa02141310fab62290721deee433f6314", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classULogEvent-members.html b/preview/pr-1773/api/latest/classULogEvent-members.html new file mode 100644 index 00000000..a9fe899b --- /dev/null +++ b/preview/pr-1773/api/latest/classULogEvent-members.html @@ -0,0 +1,123 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ULogEvent Member List
+
+
+ +

This is the complete list of members for ULogEvent, including all inherited members.

+ + + + + + + + +
getClassName() constULogEventinlinevirtual
getCode() constUEventinline
getMsg() constULogEventinline
UEvent(int code=0)UEventinlineprotected
ULogEvent(const std::string &msg, int level)ULogEventinline
~UEvent() (defined in UEvent)UEventinlinevirtual
~ULogEvent() (defined in ULogEvent)ULogEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classULogEvent.html b/preview/pr-1773/api/latest/classULogEvent.html new file mode 100644 index 00000000..556ce857 --- /dev/null +++ b/preview/pr-1773/api/latest/classULogEvent.html @@ -0,0 +1,298 @@ + + + + + + + + +RTAB-Map: ULogEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ULogEvent Class Reference
+
+
+ +

#include <ULogger.h>

+
+Inheritance diagram for ULogEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for ULogEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

 ULogEvent (const std::string &msg, int level)
 
const std::string & getMsg () const
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

This class is used by the ULogger to send logged messages like events. Messages with level over the event level set in ULogger::setEventLevel() are sent like ULogEvent with the message and its level. The default event level of ULogger is kFatal (see ULogger::Level).

+ +

Definition at line 121 of file ULogger.h.

+

Constructor & Destructor Documentation

+ +

◆ ULogEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ULogEvent::ULogEvent (const std::string & msg,
int level 
)
+
+inline
+
+

ULogEvent constructor. Note that to retrieve the message level, use UEvent::getCode().

Parameters
+ + + +
msgthe message already formatted to a full string.
levelthe severity of the message,
+
+
+
See also
ULogger::Level.
+ +

Definition at line 129 of file ULogger.h.

+ +
+
+ +

◆ ~ULogEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ULogEvent::~ULogEvent ()
+
+inlinevirtual
+
+ +

Definition at line 133 of file ULogger.h.

+ +
+
+

Member Function Documentation

+ +

◆ getMsg()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & ULogEvent::getMsg () const
+
+inline
+
+

Get the message from the event.

+ +

Definition at line 137 of file ULogger.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ULogEvent::getClassName () const
+
+inlinevirtual
+
+
Returns
string "ULogEvent"
+ +

Implements UEvent.

+ +

Definition at line 141 of file ULogger.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/ULogger.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classULogEvent.js b/preview/pr-1773/api/latest/classULogEvent.js new file mode 100644 index 00000000..734ef3fe --- /dev/null +++ b/preview/pr-1773/api/latest/classULogEvent.js @@ -0,0 +1,6 @@ +var classULogEvent = +[ + [ "ULogEvent", "classULogEvent.html#aa403fb381a5bfd2986f08c10f0b1b24e", null ], + [ "getMsg", "classULogEvent.html#a460976b037ecf8357fc3fa3f613e5817", null ], + [ "getClassName", "classULogEvent.html#a70ec329f7f43a18805469302ffddc610", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classULogEvent__coll__graph.map b/preview/pr-1773/api/latest/classULogEvent__coll__graph.map new file mode 100644 index 00000000..325155c5 --- /dev/null +++ b/preview/pr-1773/api/latest/classULogEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classULogEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classULogEvent__coll__graph.md5 new file mode 100644 index 00000000..cf137fed --- /dev/null +++ b/preview/pr-1773/api/latest/classULogEvent__coll__graph.md5 @@ -0,0 +1 @@ +d1048a72a7ec5cf7d0d3e17af660cf04 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classULogEvent__coll__graph.png b/preview/pr-1773/api/latest/classULogEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b7aa40b89c347a3bfd25619cdc950f82c61d62c2 GIT binary patch literal 3109 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 Nv7xC!%?;<+e*s0m^)~ + + + + diff --git a/preview/pr-1773/api/latest/classULogEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classULogEvent__inherit__graph.md5 new file mode 100644 index 00000000..cf137fed --- /dev/null +++ b/preview/pr-1773/api/latest/classULogEvent__inherit__graph.md5 @@ -0,0 +1 @@ +d1048a72a7ec5cf7d0d3e17af660cf04 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classULogEvent__inherit__graph.png b/preview/pr-1773/api/latest/classULogEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b7aa40b89c347a3bfd25619cdc950f82c61d62c2 GIT binary patch literal 3109 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 Nv7xC!%?;<+e*s0m^)~ + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ULogger Member List
+
+
+ +

This is the complete list of members for ULogger, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_flush() (defined in ULogger)ULoggerprotected
append_ (defined in ULogger)ULoggerprotectedstatic
eventLevel() (defined in ULogger)ULoggerinlinestatic
flush()ULoggerstatic
getInstance() (defined in ULogger)ULoggerprotectedstatic
getRegisteredThreads() (defined in ULogger)ULoggerstatic
getTime(std::string &timeStr)ULoggerstatic
getTreadIdFilter() (defined in ULogger)ULoggerinlinestatic
isBuffered() (defined in ULogger)ULoggerinlinestatic
isPrintColored() (defined in ULogger)ULoggerinlinestatic
isPrintEndLine() (defined in ULogger)ULoggerinlinestatic
isPrintLevel() (defined in ULogger)ULoggerinlinestatic
isPrintThreadId() (defined in ULogger)ULoggerinlinestatic
isPrintTime() (defined in ULogger)ULoggerinlinestatic
isPrintWhere() (defined in ULogger)ULoggerinlinestatic
isPrintWhereFullPath() (defined in ULogger)ULoggerinlinestatic
kDebug enum value (defined in ULogger)ULogger
kDefaultLogFileNameULoggerstatic
kError enum value (defined in ULogger)ULogger
kFatal enum value (defined in ULogger)ULogger
kInfo enum value (defined in ULogger)ULogger
kTypeConsole enum value (defined in ULogger)ULogger
kTypeFile enum value (defined in ULogger)ULogger
kTypeNoLog enum value (defined in ULogger)ULogger
kWarning enum value (defined in ULogger)ULogger
level() (defined in ULogger)ULoggerinlinestatic
Level enum nameULogger
logFileName_ (defined in ULogger)ULoggerprotectedstatic
registerCurrentThread(const std::string &name)ULoggerstatic
reset()ULoggerstatic
setBuffered(bool buffered)ULoggerstatic
setEventLevel(ULogger::Level eventSentLevel)ULoggerinlinestatic
setLevel(ULogger::Level level)ULoggerinlinestatic
setPrintColored(bool printColored)ULoggerinlinestatic
setPrintEndline(bool printEndline)ULoggerinlinestatic
setPrintLevel(bool printLevel)ULoggerinlinestatic
setPrintThreadId(bool printThreadId)ULoggerinlinestatic
setPrintTime(bool printTime)ULoggerinlinestatic
setPrintWhere(bool printWhere)ULoggerinlinestatic
setPrintWhereFullPath(bool printWhereFullPath)ULoggerinlinestatic
setTreadIdFilter(const std::set< unsigned long > &ids)ULoggerinlinestatic
setTreadIdFilter(const std::vector< std::string > &ids) (defined in ULogger)ULoggerstatic
setType(Type type, const std::string &fileName=kDefaultLogFileName, bool append=true)ULoggerstatic
Type enum nameULogger
type() (defined in ULogger)ULoggerinlinestatic
UDestroyer< ULogger > (defined in ULogger)ULoggerfriend
ULogger() (defined in ULogger)ULoggerinlineprotected
unregisterCurrentThread() (defined in ULogger)ULoggerstatic
write(ULogger::Level level, const char *file, int line, const char *function, const char *msg,...) (defined in ULogger)ULoggerstatic
~ULogger() (defined in ULogger)ULoggerprotectedvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classULogger.html b/preview/pr-1773/api/latest/classULogger.html new file mode 100644 index 00000000..78e6d8c6 --- /dev/null +++ b/preview/pr-1773/api/latest/classULogger.html @@ -0,0 +1,1336 @@ + + + + + + + + +RTAB-Map: ULogger Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <ULogger.h>

+ + + + + + +

+Public Types

enum  Type { kTypeNoLog +, kTypeConsole +, kTypeFile + }
 
enum  Level {
+  kDebug +, kInfo +, kWarning +, kError +,
+  kFatal +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void setType (Type type, const std::string &fileName=kDefaultLogFileName, bool append=true)
 
static Type type ()
 
static void setPrintTime (bool printTime)
 
static bool isPrintTime ()
 
static void setPrintLevel (bool printLevel)
 
static bool isPrintLevel ()
 
static void setPrintEndline (bool printEndline)
 
static bool isPrintEndLine ()
 
static void setPrintColored (bool printColored)
 
static bool isPrintColored ()
 
static void setPrintWhere (bool printWhere)
 
static bool isPrintWhere ()
 
static void setPrintThreadId (bool printThreadId)
 
static bool isPrintThreadId ()
 
static void setPrintWhereFullPath (bool printWhereFullPath)
 
static bool isPrintWhereFullPath ()
 
static void setBuffered (bool buffered)
 
static bool isBuffered ()
 
static void setLevel (ULogger::Level level)
 
static ULogger::Level level ()
 
static void setEventLevel (ULogger::Level eventSentLevel)
 
static ULogger::Level eventLevel ()
 
static void setTreadIdFilter (const std::set< unsigned long > &ids)
 
+static void setTreadIdFilter (const std::vector< std::string > &ids)
 
static const std::set< unsigned long > & getTreadIdFilter ()
 
static void registerCurrentThread (const std::string &name)
 
+static void unregisterCurrentThread ()
 
+static std::map< std::string, unsigned long > getRegisteredThreads ()
 
static void reset ()
 
static void flush ()
 
+static void write (ULogger::Level level, const char *file, int line, const char *function, const char *msg,...)
 
static int getTime (std::string &timeStr)
 
+ + + +

+Static Public Attributes

static const std::string kDefaultLogFileName
 
+ + + +

+Protected Member Functions

+void _flush ()
 
+ + + +

+Static Protected Member Functions

+static ULogger * getInstance ()
 
+ + + + + +

+Static Protected Attributes

static std::string logFileName_
 
static bool append_
 
+ + + +

+Friends

class UDestroyer< ULogger >
 
+

Detailed Description

+

This class is used to log messages with time on a console, in a file and/or with an event. At the start of the application, call ULogger::setType() with the type of the logger you want (see ULogger::Type, the type of the output can be changed at the run-time.). To use it, simply call the convenient macros UDEBUG(), UINFO(), UWARN(), UERROR(), UFATAL() depending of the severity of the message. You can disable some messages by setting the logger level ULogger::setLevel() to severity you want, defined by ULogger::Level. A fatal message will make the application to exit, printing the message on console (whatever the logger type) and posting a ULogEvent (synchronously... see UEventsManager::post()) before exiting.

+

The display of the logged messages can be modified:

+

When using a file logger (kTypeLogger), it can be useful in some application to buffer messages before writing them to hard drive (avoiding hard drive latencies). You can set ULogger::setBuffered() to true to do that. When the buffered messages will be written to file on appllciation exit (ULogger destructor) or when ULogger::flush() is called.

+

If you want the application to exit on a lower severity level than kFatal, you can set ULogger::setExitLevel() to any ULogger::Type you want.

+

Example:

+
int main(int argc, char * argv[])
+
{
+
// Set the logger type. The choices are kTypeConsole,
+
// kTypeFile or kTypeNoLog (nothing is logged).
+
ULogger::setType(ULogger::kTypeConsole);
+
+
// Set the logger severity level (kDebug, kInfo, kWarning, kError, kFatal).
+
// All log entries under the severity level are not logged. Here,
+
// only debug messages are not logged.
+
ULogger::setLevel(ULogger::kInfo);
+
+
// Use a predefined Macro to easy logging. It can be
+
// called anywhere in the application as the logger is
+
// a Singleton.
+
UDEBUG("This message won't be logged because the "
+
"severity level of the logger is set to kInfo.");
+
+
UINFO("This message is logged.");
+
+
UWARN("A warning message...");
+
+
UERROR("An error message with code %d.", 42);
+
+
return 0;
+
}
+
ULogger class and convenient macros.
+
#define UERROR(...)
Definition ULogger.h:62
+
#define UINFO(...)
Definition ULogger.h:60
+
#define UDEBUG(...)
Definition ULogger.h:59
+
#define UWARN(...)
Definition ULogger.h:61
+
static void setType(Type type, const std::string &fileName=kDefaultLogFileName, bool append=true)
+
static void setLevel(ULogger::Level level)
Definition ULogger.h:343
+

Output:

[ INFO] (2010-09-25 18:08:20) main.cpp:18::main() This message is logged.
+
[ WARN] (2010-09-25 18:08:20) main.cpp:20::main() A warning message...
+
[ERROR] (2010-09-25 18:08:20) main.cpp:22::main() An error message with code 42.
+

Another useful form of the ULogger is to use it with the UTimer class. Here an example:

+
#include <utilite/UTimer.h>
+
...
+
UTimer timer; // automatically starts
+
// do some works for part A
+
UINFO("Time for part A = %f s", timer.ticks());
+
// do some works for part B
+
UINFO("Time for part B = %f s", timer.ticks());
+
// do some works for part C
+
UINFO("Time for part C = %f s", timer.ticks());
+
...
+
See also
setType()
+
+setLevel()
+
+UDEBUG(), UINFO(), UWARN(), UERROR(), UFATAL()
+ +

Definition at line 229 of file ULogger.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum ULogger::Type
+
+

Loggers available:

kTypeNoLog, kTypeConsole, kTypeFile
+
+

Definition at line 244 of file ULogger.h.

+ +
+
+ +

◆ Level

+ +
+
+ + + + +
enum ULogger::Level
+
+

Logger levels, from lowest severity to highest:

kDebug, kInfo, kWarning, kError, kFatal
+
+

Definition at line 252 of file ULogger.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ULogger()

+ +
+
+ + + + + +
+ + + + + + + +
ULogger::ULogger ()
+
+inlineprotected
+
+ +

Definition at line 434 of file ULogger.h.

+ +
+
+

Member Function Documentation

+ +

◆ setType()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void ULogger::setType (Type type,
const std::string & fileName = kDefaultLogFileName,
bool append = true 
)
+
+static
+
+

Set the type of the logger. When using kTypeFile, the parameter "fileName" would be changed (default is "./ULog.txt"), and optionally "append" if we want the logger to append messages to file or to overwrite the file.

Parameters
+ + + + +
typethe ULogger::Type of the logger.
fileNamefile name used with a file logger type.
appendif true, the file isn't overwritten, otherwise it is.
+
+
+

TODO : Can it be useful to have 2 or more types at the same time ? Print in console and file at the same time.

+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
static Type ULogger::type ()
+
+inlinestatic
+
+ +

Definition at line 266 of file ULogger.h.

+ +
+
+ +

◆ setPrintTime()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setPrintTime (bool printTime)
+
+inlinestatic
+
+

Print time: default true.

Parameters
+ + +
printTimetrue to print time, otherwise set to false.
+
+
+ +

Definition at line 273 of file ULogger.h.

+ +
+
+ +

◆ isPrintTime()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isPrintTime ()
+
+inlinestatic
+
+ +

Definition at line 274 of file ULogger.h.

+ +
+
+ +

◆ setPrintLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setPrintLevel (bool printLevel)
+
+inlinestatic
+
+

Print level: default true.

Parameters
+ + +
printLeveltrue to print level, otherwise set to false.
+
+
+ +

Definition at line 280 of file ULogger.h.

+ +
+
+ +

◆ isPrintLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isPrintLevel ()
+
+inlinestatic
+
+ +

Definition at line 281 of file ULogger.h.

+ +
+
+ +

◆ setPrintEndline()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setPrintEndline (bool printEndline)
+
+inlinestatic
+
+

Print end of line: default true.

Parameters
+ + +
printLeveltrue to print end of line, otherwise set to false.
+
+
+ +

Definition at line 287 of file ULogger.h.

+ +
+
+ +

◆ isPrintEndLine()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isPrintEndLine ()
+
+inlinestatic
+
+ +

Definition at line 288 of file ULogger.h.

+ +
+
+ +

◆ setPrintColored()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setPrintColored (bool printColored)
+
+inlinestatic
+
+

Print text with color: default true. Dark green for Debug, white for Info, yellow for Warning, red for Error and Fatal.

Parameters
+ + +
printColoredtrue to print text with color, otherwise set to false.
+
+
+ +

Definition at line 295 of file ULogger.h.

+ +
+
+ +

◆ isPrintColored()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isPrintColored ()
+
+inlinestatic
+
+ +

Definition at line 296 of file ULogger.h.

+ +
+
+ +

◆ setPrintWhere()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setPrintWhere (bool printWhere)
+
+inlinestatic
+
+

Print where is this message in source code: default true.

Parameters
+ + +
printWheretrue to print where, otherwise set to false.
+
+
+ +

Definition at line 302 of file ULogger.h.

+ +
+
+ +

◆ isPrintWhere()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isPrintWhere ()
+
+inlinestatic
+
+ +

Definition at line 303 of file ULogger.h.

+ +
+
+ +

◆ setPrintThreadId()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setPrintThreadId (bool printThreadId)
+
+inlinestatic
+
+

Print thread ID: default false.

Parameters
+ + +
printThreadIdtrue to print where, otherwise set to false.
+
+
+ +

Definition at line 309 of file ULogger.h.

+ +
+
+ +

◆ isPrintThreadId()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isPrintThreadId ()
+
+inlinestatic
+
+ +

Definition at line 310 of file ULogger.h.

+ +
+
+ +

◆ setPrintWhereFullPath()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setPrintWhereFullPath (bool printWhereFullPath)
+
+inlinestatic
+
+

Print the full path: default true. ULogger::setPrintWhere() must be true to have path printed.

Parameters
+ + +
printWhereFullPathtrue to print the full path, otherwise set to false.
+
+
+ +

Definition at line 316 of file ULogger.h.

+ +
+
+ +

◆ isPrintWhereFullPath()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isPrintWhereFullPath ()
+
+inlinestatic
+
+ +

Definition at line 317 of file ULogger.h.

+ +
+
+ +

◆ setBuffered()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setBuffered (bool buffered)
+
+static
+
+

Set is the logger buffers messages, default false. When true, the messages are buffered until the application is closed or ULogger::flush() is called.

+

Note that if logging to a file, flush doesn't mean that messages are written to file right away. To write everything on disk, set logger type to kTypeNoLog.

+
See also
ULogger::flush()
+
Parameters
+ + +
bufferedtrue to buffer messages, otherwise set to false.
+
+
+ +
+
+ +

◆ isBuffered()

+ +
+
+ + + + + +
+ + + + + + + +
static bool ULogger::isBuffered ()
+
+inlinestatic
+
+ +

Definition at line 330 of file ULogger.h.

+ +
+
+ +

◆ setLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setLevel (ULogger::Level level)
+
+inlinestatic
+
+

Set logger level: default kInfo. All messages over the severity set are printed, other are ignored. The severity is from the lowest to highest:

    +
  • kDebug
  • +
  • kInfo
  • +
  • kWarning
  • +
  • kError
  • +
  • kFatal
    Parameters
    + + +
    levelthe minimum level of the messages printed.
    +
    +
    +
  • +
+ +

Definition at line 343 of file ULogger.h.

+ +
+
+ +

◆ level()

+ +
+
+ + + + + +
+ + + + + + + +
static ULogger::Level ULogger::level ()
+
+inlinestatic
+
+ +

Definition at line 344 of file ULogger.h.

+ +
+
+ +

◆ setEventLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setEventLevel (ULogger::Level eventSentLevel)
+
+inlinestatic
+
+

An ULogEvent is sent on each message logged at the specified level. Note : On message with level >= exitLevel, the event is sent synchronously (see UEventsManager::post()).

See also
ULogEvent
+
+setExitLevel()
+ +

Definition at line 352 of file ULogger.h.

+ +
+
+ +

◆ eventLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static ULogger::Level ULogger::eventLevel ()
+
+inlinestatic
+
+ +

Definition at line 353 of file ULogger.h.

+ +
+
+ +

◆ setTreadIdFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::setTreadIdFilter (const std::set< unsigned long > & ids)
+
+inlinestatic
+
+

If not empty, only show log messages from threads included in this list.

+ +

Definition at line 358 of file ULogger.h.

+ +
+
+ +

◆ getTreadIdFilter()

+ +
+
+ + + + + +
+ + + + + + + +
static const std::set< unsigned long > & ULogger::getTreadIdFilter ()
+
+inlinestatic
+
+ +

Definition at line 360 of file ULogger.h.

+ +
+
+ +

◆ registerCurrentThread()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ULogger::registerCurrentThread (const std::string & name)
+
+static
+
+

Threads can register to this list. If name is empty, it will clear the thread in the list. Should be called from the thread itself.

+ +
+
+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + +
static void ULogger::reset ()
+
+static
+
+

Reset to default parameters.

+ +
+
+ +

◆ flush()

+ +
+
+ + + + + +
+ + + + + + + +
static void ULogger::flush ()
+
+static
+
+

Flush buffered messages.

See also
setBuffered()
+ +
+
+ +

◆ getTime()

+ +
+
+ + + + + +
+ + + + + + + + +
static int ULogger::getTime (std::string & timeStr)
+
+static
+
+

Get the time in the format "2008-7-13 12:23:44".

Parameters
+ + +
timeStrstring were the time will be copied.
+
+
+
Returns
the number of characters written, or 0 if an error occurred.
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ UDestroyer< ULogger >

+ +
+
+ + + + + +
+ + + + +
friend class UDestroyer< ULogger >
+
+friend
+
+ +

Definition at line 445 of file ULogger.h.

+ +
+
+

Member Data Documentation

+ +

◆ kDefaultLogFileName

+ +
+
+ + + + + +
+ + + + +
const std::string ULogger::kDefaultLogFileName
+
+static
+
+

The default log file name.

+ +

Definition at line 236 of file ULogger.h.

+ +
+
+ +

◆ logFileName_

+ +
+
+ + + + + +
+ + + + +
std::string ULogger::logFileName_
+
+staticprotected
+
+ +

Definition at line 459 of file ULogger.h.

+ +
+
+ +

◆ append_

+ +
+
+ + + + + +
+ + + + +
bool ULogger::append_
+
+staticprotected
+
+ +

Definition at line 464 of file ULogger.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/ULogger.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classULogger.js b/preview/pr-1773/api/latest/classULogger.js new file mode 100644 index 00000000..ec1a1af6 --- /dev/null +++ b/preview/pr-1773/api/latest/classULogger.js @@ -0,0 +1,15 @@ +var classULogger = +[ + [ "Type", "classULogger.html#aab74fc95f6494a3a2137d9094fe100d8", [ + [ "kTypeNoLog", "classULogger.html#aab74fc95f6494a3a2137d9094fe100d8a2e17d294d42d0cfaacfa863b9ef84bf5", null ], + [ "kTypeConsole", "classULogger.html#aab74fc95f6494a3a2137d9094fe100d8a9a6ea5167dc1fb0842a553ae22a74bb0", null ], + [ "kTypeFile", "classULogger.html#aab74fc95f6494a3a2137d9094fe100d8a9df20d908118340ceed68dbf99e85564", null ] + ] ], + [ "Level", "classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218", [ + [ "kDebug", "classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218a25a2b152e69d9527367a883a73a60cb9", null ], + [ "kInfo", "classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218ac1ca6cafcdc2f968bf4771f736cddb38", null ], + [ "kWarning", "classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218a6f4906714e01c697bc1dd9ee16ebbbdc", null ], + [ "kError", "classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218a64a5ff26dee3272bb1d4e9688992d9c3", null ], + [ "kFatal", "classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218aa265a12c47a839957f0fb52ac64f5c23", null ] + ] ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUMutex-members.html b/preview/pr-1773/api/latest/classUMutex-members.html new file mode 100644 index 00000000..7f39f3ea --- /dev/null +++ b/preview/pr-1773/api/latest/classUMutex-members.html @@ -0,0 +1,121 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UMutex Member List
+
+
+ +

This is the complete list of members for UMutex, including all inherited members.

+ + + + + + +
lock() constUMutexinline
lockTry() constUMutexinline
UMutex()UMutexinline
unlock() constUMutexinline
~UMutex() (defined in UMutex)UMutexinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUMutex.html b/preview/pr-1773/api/latest/classUMutex.html new file mode 100644 index 00000000..94557502 --- /dev/null +++ b/preview/pr-1773/api/latest/classUMutex.html @@ -0,0 +1,291 @@ + + + + + + + + +RTAB-Map: UMutex Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UMutex Class Reference
+
+
+ +

#include <UMutex.h>

+ + + + + + + + + + +

+Public Member Functions

 UMutex ()
 
int lock () const
 
int lockTry () const
 
int unlock () const
 
+

Detailed Description

+

A mutex class.

+

On a lock() call, the calling thread is blocked if the UMutex was previously locked by another thread. It is unblocked when unlock() is called.

+

On Unix (not yet tested on Windows), UMutex is recursive: the same thread can call multiple times lock() without being blocked.

+

Example:

UMutex m; // Mutex shared with another thread(s).
+
...
+
m.lock();
+
// Data is protected here from the second thread
+
//(assuming the second one protects also with the same mutex the same data).
+
m.unlock();
+ +
int unlock() const
Definition UMutex.h:120
+
int lock() const
Definition UMutex.h:88
+
See also
USemaphore
+ +

Definition at line 54 of file UMutex.h.

+

Constructor & Destructor Documentation

+ +

◆ UMutex()

+ +
+
+ + + + + +
+ + + + + + + +
UMutex::UMutex ()
+
+inline
+
+

The constructor.

+ +

Definition at line 62 of file UMutex.h.

+ +
+
+ +

◆ ~UMutex()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UMutex::~UMutex ()
+
+inlinevirtual
+
+ +

Definition at line 75 of file UMutex.h.

+ +
+
+

Member Function Documentation

+ +

◆ lock()

+ +
+
+ + + + + +
+ + + + + + + +
int UMutex::lock () const
+
+inline
+
+

Lock the mutex.

Returns
0 on success, an error code otherwise.
+ +

Definition at line 88 of file UMutex.h.

+ +
+
+ +

◆ lockTry()

+ +
+
+ + + + + +
+ + + + + + + +
int UMutex::lockTry () const
+
+inline
+
+

Try locking the mutex.

Returns
0 if the mutex has been locked by this call, EBUSY (or another error code) otherwise.
+ +

Definition at line 110 of file UMutex.h.

+ +
+
+ +

◆ unlock()

+ +
+
+ + + + + +
+ + + + + + + +
int UMutex::unlock () const
+
+inline
+
+

Unlock the mutex.

Returns
0 on success, an error code otherwise.
+ +

Definition at line 120 of file UMutex.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/UMutex.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUMutex.js b/preview/pr-1773/api/latest/classUMutex.js new file mode 100644 index 00000000..fdf75726 --- /dev/null +++ b/preview/pr-1773/api/latest/classUMutex.js @@ -0,0 +1,7 @@ +var classUMutex = +[ + [ "UMutex", "classUMutex.html#a292198fffdbd7d0d5a550946f156f70e", null ], + [ "lock", "classUMutex.html#af42d27a9379e6872e8cf2e5e171e820c", null ], + [ "lockTry", "classUMutex.html#a6237fbb3142023f92c11989b13207c32", null ], + [ "unlock", "classUMutex.html#a4c5b4e04ad4e2f0eda2e8d4325d45d38", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent-members.html b/preview/pr-1773/api/latest/classUObjDeletedEvent-members.html new file mode 100644 index 00000000..937133ad --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletedEvent-members.html @@ -0,0 +1,122 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UObjDeletedEvent Member List
+
+
+ +

This is the complete list of members for UObjDeletedEvent, including all inherited members.

+ + + + + + + +
getClassName() constUObjDeletedEventinlinevirtual
getCode() constUEventinline
UEvent(int code=0)UEventinlineprotected
UObjDeletedEvent(int objDeletionThreadId) (defined in UObjDeletedEvent)UObjDeletedEventinline
~UEvent() (defined in UEvent)UEventinlinevirtual
~UObjDeletedEvent() (defined in UObjDeletedEvent)UObjDeletedEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent.html b/preview/pr-1773/api/latest/classUObjDeletedEvent.html new file mode 100644 index 00000000..e53b1b2f --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletedEvent.html @@ -0,0 +1,250 @@ + + + + + + + + +RTAB-Map: UObjDeletedEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UObjDeletedEvent Class Reference
+
+
+ +

#include <UObjDeletionThread.h>

+
+Inheritance diagram for UObjDeletedEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for UObjDeletedEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

 UObjDeletedEvent (int objDeletionThreadId)
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

Event used by UObjDeletionThread to notify when its object is deleted. It contains the object id used for deletion (can be retrieved by UEvent::getCode()).

+ +

Definition at line 31 of file UObjDeletionThread.h.

+

Constructor & Destructor Documentation

+ +

◆ UObjDeletedEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
UObjDeletedEvent::UObjDeletedEvent (int objDeletionThreadId)
+
+inline
+
+ +

Definition at line 34 of file UObjDeletionThread.h.

+ +
+
+ +

◆ ~UObjDeletedEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UObjDeletedEvent::~UObjDeletedEvent ()
+
+inlinevirtual
+
+ +

Definition at line 35 of file UObjDeletionThread.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string UObjDeletedEvent::getClassName () const
+
+inlinevirtual
+
+
Returns
string "UObjDeletedEvent"
+ +

Implements UEvent.

+ +

Definition at line 39 of file UObjDeletionThread.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent.js b/preview/pr-1773/api/latest/classUObjDeletedEvent.js new file mode 100644 index 00000000..91a5ee10 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletedEvent.js @@ -0,0 +1,4 @@ +var classUObjDeletedEvent = +[ + [ "getClassName", "classUObjDeletedEvent.html#adb1ad42f6258d12eee9da77d6f129633", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.map b/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.map new file mode 100644 index 00000000..b1ed124f --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.md5 new file mode 100644 index 00000000..49e8faf9 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.md5 @@ -0,0 +1 @@ +a400393b3b1d41227f91bc4849588c6a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.png b/preview/pr-1773/api/latest/classUObjDeletedEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..363abcb946e2255e6c95c4f72e13b00e0efa6f00 GIT binary patch literal 3870 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.map b/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.map new file mode 100644 index 00000000..b1ed124f --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.md5 new file mode 100644 index 00000000..49e8faf9 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.md5 @@ -0,0 +1 @@ +a400393b3b1d41227f91bc4849588c6a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.png b/preview/pr-1773/api/latest/classUObjDeletedEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..363abcb946e2255e6c95c4f72e13b00e0efa6f00 GIT binary patch literal 3870 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread-members.html b/preview/pr-1773/api/latest/classUObjDeletionThread-members.html new file mode 100644 index 00000000..7a67f63c --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletionThread-members.html @@ -0,0 +1,160 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UObjDeletionThread< T > Member List
+
+
+ +

This is the complete list of members for UObjDeletionThread< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
id() constUObjDeletionThread< T >inline
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
join(bool killFirst=false)UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
Priority enum nameUThread
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setObj(T *obj)UObjDeletionThread< T >inline
setPriority(Priority priority)UThread
start()UThread
startDeletion(int waitMs=0)UObjDeletionThread< T >inline
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UObjDeletionThread(T *obj, int id=0)UObjDeletionThread< T >inline
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~UObjDeletionThread()UObjDeletionThread< T >inlinevirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread.html b/preview/pr-1773/api/latest/classUObjDeletionThread.html new file mode 100644 index 00000000..2405b05d --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletionThread.html @@ -0,0 +1,444 @@ + + + + + + + + +RTAB-Map: UObjDeletionThread< T > Class Template Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UObjDeletionThread< T > Class Template Reference
+
+
+ +

#include <UObjDeletionThread.h>

+
+Inheritance diagram for UObjDeletionThread< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for UObjDeletionThread< T >:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 UObjDeletionThread (T *obj, int id=0)
 
virtual ~UObjDeletionThread ()
 
void startDeletion (int waitMs=0)
 
int id () const
 
void setObj (T *obj)
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+
template<class T>
+class UObjDeletionThread< T >

This class can be used to delete a dynamically created object in another thread. Give the dynamic reference to object to it and it will notify with a UObjDeletedEvent when the object is deleted. The deletion can be delayed on startDeletion(), the thread will wait the time given before deleting the object.

+ +

Definition at line 48 of file UObjDeletionThread.h.

+

Constructor & Destructor Documentation

+ +

◆ UObjDeletionThread()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UObjDeletionThread< T >::UObjDeletionThread (T * obj,
int id = 0 
)
+
+inline
+
+

The constructor.

Parameters
+ + + +
objthe object to delete
idthe custom id which will be sent in a event UObjDeletedEvent after the object is deleted
+
+
+ +

Definition at line 56 of file UObjDeletionThread.h.

+ +
+
+ +

◆ ~UObjDeletionThread()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
virtual UObjDeletionThread< T >::~UObjDeletionThread ()
+
+inlinevirtual
+
+

The destructor. If this thread is not started but with an object set, the object is deleted. If the thread has not finished to delete the object, the calling thread will wait (on a UThreadNode::join()) until the object is deleted.

Parameters
+ + + +
objthe object to delete
idthe custom id which will be sent in a event UObjDeletedEvent after the object is deleted
+
+
+ +

Definition at line 68 of file UObjDeletionThread.h.

+ +
+
+

Member Function Documentation

+ +

◆ startDeletion()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void UObjDeletionThread< T >::startDeletion (int waitMs = 0)
+
+inline
+
+

Start the thread after optional delay.

Parameters
+ + +
waitMsthe delay before deletion
+
+
+ +

Definition at line 81 of file UObjDeletionThread.h.

+ +
+
+ +

◆ id()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
int UObjDeletionThread< T >::id () const
+
+inline
+
+

Get id of the deleted object.

Returns
the id
+ +

Definition at line 87 of file UObjDeletionThread.h.

+ +
+
+ +

◆ setObj()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
void UObjDeletionThread< T >::setObj (T * obj)
+
+inline
+
+

Set a new object, if one was already set, the old one is deleted.

Parameters
+ + +
objthe object to delete
+
+
+ +

Definition at line 93 of file UObjDeletionThread.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread.js b/preview/pr-1773/api/latest/classUObjDeletionThread.js new file mode 100644 index 00000000..4521d203 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletionThread.js @@ -0,0 +1,8 @@ +var classUObjDeletionThread = +[ + [ "UObjDeletionThread", "classUObjDeletionThread.html#a860499bd0467d2cc0fb467b124d085e0", null ], + [ "~UObjDeletionThread", "classUObjDeletionThread.html#a44e27bada40a7fdb67ebad9270da8192", null ], + [ "startDeletion", "classUObjDeletionThread.html#a2b4e12d9f11684b1378bb77a1a3c54b3", null ], + [ "id", "classUObjDeletionThread.html#a027f81f93f7b78c442a094d944136f20", null ], + [ "setObj", "classUObjDeletionThread.html#a3a54e762b9f21750fe724bf78b48c653", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.map b/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.map new file mode 100644 index 00000000..0b70dcf0 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.md5 b/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.md5 new file mode 100644 index 00000000..afb01428 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.md5 @@ -0,0 +1 @@ +6f3a8a87a98d9cf20edc6c46c9d9ffb4 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.png b/preview/pr-1773/api/latest/classUObjDeletionThread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..17988c40b9efd8a72839d4283443cfa5899be2ea GIT binary patch literal 6769 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.map b/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.map new file mode 100644 index 00000000..0b70dcf0 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.md5 b/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.md5 new file mode 100644 index 00000000..afb01428 --- /dev/null +++ b/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.md5 @@ -0,0 +1 @@ +6f3a8a87a98d9cf20edc6c46c9d9ffb4 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.png b/preview/pr-1773/api/latest/classUObjDeletionThread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..17988c40b9efd8a72839d4283443cfa5899be2ea GIT binary patch literal 6769 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUProcessInfo-members.html b/preview/pr-1773/api/latest/classUProcessInfo-members.html new file mode 100644 index 00000000..e0ea3c75 --- /dev/null +++ b/preview/pr-1773/api/latest/classUProcessInfo-members.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UProcessInfo Member List
+
+
+ +

This is the complete list of members for UProcessInfo, including all inherited members.

+ + + + +
getMemoryUsage()UProcessInfostatic
UProcessInfo()UProcessInfo
~UProcessInfo()UProcessInfovirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUProcessInfo.html b/preview/pr-1773/api/latest/classUProcessInfo.html new file mode 100644 index 00000000..7f4d15fe --- /dev/null +++ b/preview/pr-1773/api/latest/classUProcessInfo.html @@ -0,0 +1,182 @@ + + + + + + + + +RTAB-Map: UProcessInfo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Class for getting information about the current process. + More...

+ +

#include <UProcessInfo.h>

+ + + + + + + + +

+Public Member Functions

+ UProcessInfo ()
 Constructor.
 
+virtual ~UProcessInfo ()
 Virtual destructor.
 
+ + + + +

+Static Public Member Functions

static long int getMemoryUsage ()
 Get the memory used by the current process.
 
+

Detailed Description

+

Class for getting information about the current process.

+

This class provides static methods to retrieve information about the current process, such as memory usage. The information is retrieved from the operating system.

+

Example:

long int memory = UProcessInfo::getMemoryUsage();
+
std::cout << "Memory usage: " << memory << " bytes" << std::endl;
+
static long int getMemoryUsage()
Get the memory used by the current process.
+
+

Definition at line 47 of file UProcessInfo.h.

+

Member Function Documentation

+ +

◆ getMemoryUsage()

+ +
+
+ + + + + +
+ + + + + + + +
static long int UProcessInfo::getMemoryUsage ()
+
+static
+
+ +

Get the memory used by the current process.

+

This method returns the amount of memory currently used by the process. The exact meaning of "memory used" may vary between operating systems.

+
Returns
the number of bytes used by the current process, or -1 on error
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUProcessInfo.js b/preview/pr-1773/api/latest/classUProcessInfo.js new file mode 100644 index 00000000..43f1f4b1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUProcessInfo.js @@ -0,0 +1,5 @@ +var classUProcessInfo = +[ + [ "UProcessInfo", "classUProcessInfo.html#a9786bfe4f14bb80ddf206904f12d8f9b", null ], + [ "~UProcessInfo", "classUProcessInfo.html#a4b4a0da3c612692790191b914e37b1a4", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUScopeMutex-members.html b/preview/pr-1773/api/latest/classUScopeMutex-members.html new file mode 100644 index 00000000..fbb33a17 --- /dev/null +++ b/preview/pr-1773/api/latest/classUScopeMutex-members.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UScopeMutex Member List
+
+
+ +

This is the complete list of members for UScopeMutex, including all inherited members.

+ + + + +
UScopeMutex(const UMutex &mutex) (defined in UScopeMutex)UScopeMutexinline
UScopeMutex(UMutex *mutex) (defined in UScopeMutex)UScopeMutexinline
~UScopeMutex() (defined in UScopeMutex)UScopeMutexinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUScopeMutex.html b/preview/pr-1773/api/latest/classUScopeMutex.html new file mode 100644 index 00000000..b921480a --- /dev/null +++ b/preview/pr-1773/api/latest/classUScopeMutex.html @@ -0,0 +1,236 @@ + + + + + + + + +RTAB-Map: UScopeMutex Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UScopeMutex Class Reference
+
+
+ +

#include <UMutex.h>

+ + + + + + +

+Public Member Functions

 UScopeMutex (const UMutex &mutex)
 
 UScopeMutex (UMutex *mutex)
 
+

Detailed Description

+

Automatically lock the referenced mutex on constructor and unlock mutex on destructor.

+

Example:

UMutex m; // Mutex shared with another thread(s).
+
...
+
int myMethod()
+
{
+
UScopeMutex sm(m); // automatically lock the mutex m
+
if(cond1)
+
{
+
return 1; // automatically unlock the mutex m
+
}
+
else if(cond2)
+
{
+
return 2; // automatically unlock the mutex m
+
}
+
return 0; // automatically unlock the mutex m
+
}
+ + +
See also
UMutex
+ +

Definition at line 164 of file UMutex.h.

+

Constructor & Destructor Documentation

+ +

◆ UScopeMutex() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
UScopeMutex::UScopeMutex (const UMutex & mutex)
+
+inline
+
+ +

Definition at line 167 of file UMutex.h.

+ +
+
+ +

◆ UScopeMutex() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
UScopeMutex::UScopeMutex (UMutex * mutex)
+
+inline
+
+ +

Definition at line 173 of file UMutex.h.

+ +
+
+ +

◆ ~UScopeMutex()

+ +
+
+ + + + + +
+ + + + + + + +
UScopeMutex::~UScopeMutex ()
+
+inline
+
+ +

Definition at line 178 of file UMutex.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/UMutex.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUSemaphore-members.html b/preview/pr-1773/api/latest/classUSemaphore-members.html new file mode 100644 index 00000000..136acada --- /dev/null +++ b/preview/pr-1773/api/latest/classUSemaphore-members.html @@ -0,0 +1,122 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
USemaphore Member List
+
+
+ +

This is the complete list of members for USemaphore, including all inherited members.

+ + + + + + + +
acquire(int n=1, int ms=0)USemaphoreinline
acquireTry(int n)USemaphoreinline
release(int n=1)USemaphoreinline
USemaphore(int initValue=0)USemaphoreinline
value()USemaphoreinline
~USemaphore() (defined in USemaphore)USemaphoreinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUSemaphore.html b/preview/pr-1773/api/latest/classUSemaphore.html new file mode 100644 index 00000000..d2c92510 --- /dev/null +++ b/preview/pr-1773/api/latest/classUSemaphore.html @@ -0,0 +1,353 @@ + + + + + + + + +RTAB-Map: USemaphore Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
USemaphore Class Reference
+
+
+ +

#include <USemaphore.h>

+ + + + + + + + + + + + +

+Public Member Functions

 USemaphore (int initValue=0)
 
bool acquire (int n=1, int ms=0)
 
int acquireTry (int n)
 
int release (int n=1)
 
int value ()
 
+

Detailed Description

+

A semaphore class.

+

On an acquire() call, the calling thread is blocked if the USemaphore's value is <= 0. It is unblocked when release() is called. The function acquire() decreases by 1 (default) the semaphore's value and release() increases it by 1 (default).

+

Example:

+
s.acquire(); // Will wait until s.release() is called by another thread.
+ +
bool acquire(int n=1, int ms=0)
Definition USemaphore.h:108
+
See also
UMutex
+ +

Definition at line 55 of file USemaphore.h.

+

Constructor & Destructor Documentation

+ +

◆ USemaphore()

+ +
+
+ + + + + +
+ + + + + + + + +
USemaphore::USemaphore (int initValue = 0)
+
+inline
+
+

The constructor. The semaphore waits on acquire() when its value is <= 0.

Parameters
+ + +
nnumber to initialize
+
+
+ +

Definition at line 62 of file USemaphore.h.

+ +
+
+ +

◆ ~USemaphore()

+ +
+
+ + + + + +
+ + + + + + + +
virtual USemaphore::~USemaphore ()
+
+inlinevirtual
+
+ +

Definition at line 76 of file USemaphore.h.

+ +
+
+

Member Function Documentation

+ +

◆ acquire()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool USemaphore::acquire (int n = 1,
int ms = 0 
)
+
+inline
+
+

Acquire the semaphore. If semaphore's value is <=0, the calling thread will wait until the count acquired is released.

See also
release()
+
Parameters
+ + + +
nnumber to acquire
ttime to wait (ms), a value <=0 means infinite
+
+
+
Returns
true on success, false on error/timeout
+ +

Definition at line 108 of file USemaphore.h.

+ +
+
+ +

◆ acquireTry()

+ +
+
+ + + + + +
+ + + + + + + + +
int USemaphore::acquireTry (int n)
+
+inline
+
+
Parameters
+ + +
nthe number to acquire.
+
+
+ +

Definition at line 164 of file USemaphore.h.

+ +
+
+ +

◆ release()

+ +
+
+ + + + + +
+ + + + + + + + +
int USemaphore::release (int n = 1)
+
+inline
+
+

Release the semaphore, increasing its value by n and signaling waiting threads (which called acquire()).

Parameters
+ + +
nthe number to release.
+
+
+
Returns
0 on success, ERANGE if the release would push the semaphore over SEM_VALUE_MAX (the count is then left unchanged). The Unix implementation cannot fail and always returns 0.
+ +

Definition at line 197 of file USemaphore.h.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
int USemaphore::value ()
+
+inline
+
+

Get the USempahore's value.

Returns
the semaphore's value
+ +

Definition at line 221 of file USemaphore.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUSemaphore.js b/preview/pr-1773/api/latest/classUSemaphore.js new file mode 100644 index 00000000..45763643 --- /dev/null +++ b/preview/pr-1773/api/latest/classUSemaphore.js @@ -0,0 +1,8 @@ +var classUSemaphore = +[ + [ "USemaphore", "classUSemaphore.html#ad991738e68e0a2baaec46ab27296cbe6", null ], + [ "acquire", "classUSemaphore.html#a1128f81a47324e6de3946a7719c24223", null ], + [ "acquireTry", "classUSemaphore.html#a51a925279a04a54aea3583c4399a744b", null ], + [ "release", "classUSemaphore.html#a693b35a08fd5363b14f3a220081814b5", null ], + [ "value", "classUSemaphore.html#a840fadefd8bc873c8bdf34c90d180a3b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUThread-members.html b/preview/pr-1773/api/latest/classUThread-members.html new file mode 100644 index 00000000..a276f3f6 --- /dev/null +++ b/preview/pr-1773/api/latest/classUThread-members.html @@ -0,0 +1,155 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThread Member List
+
+
+ +

This is the complete list of members for UThread, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
join(bool killFirst=false)UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
Priority enum nameUThread
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setPriority(Priority priority)UThread
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUThread.html b/preview/pr-1773/api/latest/classUThread.html new file mode 100644 index 00000000..64c36da2 --- /dev/null +++ b/preview/pr-1773/api/latest/classUThread.html @@ -0,0 +1,644 @@ + + + + + + + + +RTAB-Map: UThread Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <UThread.h>

+
+Inheritance diagram for UThread:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for UThread:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + +

+Public Types

enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

The class UThread is an abstract class for creating thread objects. A UThread provides methods to create threads as an object-style fashion.

+

For most of inherited classes, only mainLoop() needs to be implemented, then only start() needs to be called from the outside. The main loop is called until the thread itself calls kill() or another thread calls kill() or join() (with parameter to true) on this thread. Unlike kill(), join() is a blocking call: the calling thread will wait until this thread has finished, thus join() must not be called inside the mainLoop().

+

If inside the mainLoop(), at some time, the thread needs to wait on a mutex/semaphore (like for the acquisition of a resource), the function mainLoopKill() should be implemented to release the mutex/semaphore when the thread is killed, to avoid a deadlock. The function killCleanup() is called after the thread's state is set to kSKilled. After the mutex/semaphore is released in killCleanup(), on wake up, the thread can know if it needs to stop by calling isKilled().

+

To do an initialization process (executed by the worker thread) just one time before entering the mainLoop(), mainLoopBegin() can be implemented.

+

Example:

#include "utilite/UThread.h"
+
class SimpleThread : public UThread
+
{
+
public:
+
SimpleThread() {}
+
virtual ~SimpleThread() {
+
// The calling thread will wait until this thread has finished.
+
this->join(true);
+
}
+
+
protected:
+
virtual void mainLoop() {
+
// Do some works...
+
+
// This will stop the thread, otherwise the mainLoop() is recalled.
+
this->kill();
+
}
+
};
+
+
int main(int argc, char * argv[])
+
{
+
SimpleThread t;
+
t.start();
+
t.join(); // Wait until the thread has finished.
+
return 0;
+
}
+ +
See also
start()
+
+kill()
+
+join()
+
+mainLoopBegin()
+
+mainLoopKill()
+
+mainLoop()
+ +

Definition at line 86 of file UThread.h.

+

Member Enumeration Documentation

+ +

◆ Priority

+ +
+
+ + + + +
enum UThread::Priority
+
+

Enum of priorities : kPLow, kPBelowNormal, kPNormal, kPAboveNormal, kPRealTime.

+ +

Definition at line 92 of file UThread.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ UThread()

+ +
+
+ + + + + + + + +
UThread::UThread (Priority priority = kPNormal)
+
+

The constructor.

See also
Priority
+
Parameters
+ + +
prioritythe thread priority
+
+
+ +
+
+ +

◆ ~UThread()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UThread::~UThread ()
+
+virtual
+
+

The destructor. Inherited classes must call join(true) inside their destructor to avoid memory leaks where the underlying c-thread is still running.

+

Note: not safe to delete a thread while other threads are joining it.

+ +
+
+

Member Function Documentation

+ +

◆ currentThreadId()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned long UThread::currentThreadId ()
+
+inlinestatic
+
+ +

Definition at line 96 of file UThread.h.

+ +
+
+ +

◆ start()

+ +
+
+ + + + + + + +
void UThread::start ()
+
+

Start the thread. Once the thread is started, subsequent calls to start() are ignored until the thread is killed.

See also
kill()
+ +
+
+ +

◆ kill()

+ +
+
+ + + + + + + +
void UThread::kill ()
+
+

Kill the thread. This functions does nothing if the thread is not started or is killed.

+

Note : not a blocking call

+ +
+
+ +

◆ join()

+ +
+
+ + + + + + + + +
void UThread::join (bool killFirst = false)
+
+

The caller thread will wait until the thread has finished.

+

Note : blocking call

Parameters
+ + +
killFirstif you want kill() to be called before joining (default false), otherwise not.
+
+
+ +
+
+ +

◆ setPriority()

+ +
+
+ + + + + + + + +
void UThread::setPriority (Priority priority)
+
+

Set the thread priority.

Parameters
+ + +
prioritythe priority
+
+
+ +
+
+ +

◆ setAffinity()

+ +
+
+ + + + + + + + +
void UThread::setAffinity (int cpu = 0)
+
+

Set the thread affinity. This is applied during start of the thread.

+

MAC OS X : http://developer.apple.com/library/mac/#releasenotes/Performance/RN-AffinityAPI/_index.html.

Parameters
+ + +
cputhe cpu id (start at 1), 0 means no affinity (default).
+
+
+ +
+
+ +

◆ isCreating()

+ +
+
+ + + + + + + +
bool UThread::isCreating () const
+
+
Returns
if the state of the thread is kSCreating (after start() is called but before entering the mainLoop()).
+ +
+
+ +

◆ isRunning()

+ +
+
+ + + + + + + +
bool UThread::isRunning () const
+
+
Returns
if the state of the thread is kSRunning (it is executing the mainLoop()) or kSCreating.
+ +
+
+ +

◆ isIdle()

+ +
+
+ + + + + + + +
bool UThread::isIdle () const
+
+
Returns
if the state of the thread is kSIdle (before start() is called and after the thread is totally killed (or after join(true))).
+ +
+
+ +

◆ isKilled()

+ +
+
+ + + + + + + +
bool UThread::isKilled () const
+
+
Returns
if the state of the thread is kSKilled (after kill() is called and before the thread is totally killed).
+ +
+
+ +

◆ getThreadHandle()

+ +
+
+ + + + + +
+ + + + + + + +
Handle UThread::getThreadHandle () const
+
+inline
+
+ +

Definition at line 171 of file UThread.h.

+ +
+
+ +

◆ getThreadId()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned long UThread::getThreadId () const
+
+inline
+
+ +

Definition at line 172 of file UThread.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/UThread.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUThread.js b/preview/pr-1773/api/latest/classUThread.js new file mode 100644 index 00000000..36d6692d --- /dev/null +++ b/preview/pr-1773/api/latest/classUThread.js @@ -0,0 +1,21 @@ +var classUThread = +[ + [ "Priority", "classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153", [ + [ "kPLow", "classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153a006cf2313c63a3615902ac12da899065", null ], + [ "kPBelowNormal", "classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153a57888f397b338b2826d0b2cb5bc095d5", null ], + [ "kPNormal", "classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153a4a96ea147a7f8e262ebddcddc639d165", null ], + [ "kPAboveNormal", "classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153a1611a29650f1ef2f5384cbfc64418a43", null ], + [ "kPRealTime", "classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153a3001dcd1e00ff5df2192720e3422337a", null ] + ] ], + [ "UThread", "classUThread.html#a05a92f95e2a8900f27b09ddf907b97be", null ], + [ "~UThread", "classUThread.html#a437580d224111e60cbe2626f0e4cb12e", null ], + [ "start", "classUThread.html#a051e9adcf24f92b9c8e31acd06bad88c", null ], + [ "kill", "classUThread.html#a8dfefcfd68b453da08ddba9836f35965", null ], + [ "join", "classUThread.html#acf33c0e4b656af76da100e7d4f69ed1d", null ], + [ "setPriority", "classUThread.html#a80418be3a80a01ddd05a863b58787b43", null ], + [ "setAffinity", "classUThread.html#aabcf31acae6ca5b8503ec320acbc11f8", null ], + [ "isCreating", "classUThread.html#ac80eff7d48382fd230141ca286370d33", null ], + [ "isRunning", "classUThread.html#a38e2b22f0616ed4128312baff9cfeba9", null ], + [ "isIdle", "classUThread.html#a2c4554ad881c0532239a0930c2ebfe24", null ], + [ "isKilled", "classUThread.html#a3a0d0de0f78eab72512941ccd048477b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUThreadC-members.html b/preview/pr-1773/api/latest/classUThreadC-members.html new file mode 100644 index 00000000..4a6a6a97 --- /dev/null +++ b/preview/pr-1773/api/latest/classUThreadC-members.html @@ -0,0 +1,145 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThreadC< Thread_T > Member List
+
+
+ +

This is the complete list of members for UThreadC< Thread_T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create(const Handler &Function, Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Create(Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inline
Create(const Handler &Function, Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Create(Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inline
Detach(Handle H) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Detach(const Handle &H) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Exit() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotectedstatic
Exit() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotectedstatic
Handle typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
Handle typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
Handler typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
Handler typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
Join(Handle H) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Join(const Handle &H) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Kill(Handle H) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Kill(const Handle &H) (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinestatic
Self() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotectedstatic
Self() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotectedstatic
TestCancel() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotectedstatic
TestCancel() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotectedstatic
Thread_C_R typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
Thread_C_R typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
Thread_R typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
Thread_R typedef (defined in UThreadC< Thread_T >)UThreadC< Thread_T >
ThreadMain(Thread_R)=0 (defined in UThreadC< Thread_T >)UThreadC< Thread_T >protectedpure virtual
ThreadMain(Thread_R)=0 (defined in UThreadC< Thread_T >)UThreadC< Thread_T >protectedpure virtual
UThreadC() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotected
UThreadC() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlineprotected
~UThreadC() (defined in UThreadC< Thread_T >)UThreadC< Thread_T >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUThreadC.html b/preview/pr-1773/api/latest/classUThreadC.html new file mode 100644 index 00000000..5da77ac2 --- /dev/null +++ b/preview/pr-1773/api/latest/classUThreadC.html @@ -0,0 +1,1056 @@ + + + + + + + + +RTAB-Map: UThreadC< Thread_T > Class Template Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + + + + + + + + + + + + + + + +

+Public Types

typedef Thread_T & Thread_R
 
typedef const Thread_T & Thread_C_R
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) (Thread_R)
 
typedef Thread_T & Thread_R
 
typedef const Thread_T & Thread_C_R
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) (Thread_R)
 
+ + + + + +

+Public Member Functions

int Create (Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static int Create (const Handler &Function, Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Thread_C_R Param, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
+ + + + + +

+Protected Member Functions

+virtual void ThreadMain (Thread_R)=0
 
+virtual void ThreadMain (Thread_R)=0
 
+ + + + + + + + + + + + + +

+Static Protected Member Functions

static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+
template<typename Thread_T>
+class UThreadC< Thread_T >
+

Definition at line 66 of file UThreadC.h.

+

Member Typedef Documentation

+ +

◆ Thread_R [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef Thread_T& UThreadC< Thread_T >::Thread_R
+
+ +

Definition at line 72 of file UThreadC.h.

+ +
+
+ +

◆ Thread_C_R [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef const Thread_T& UThreadC< Thread_T >::Thread_C_R
+
+ +

Definition at line 73 of file UThreadC.h.

+ +
+
+ +

◆ Handle [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef THREAD_HANDLE UThreadC< Thread_T >::Handle
+
+ +

Definition at line 75 of file UThreadC.h.

+ +
+
+ +

◆ Handler [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef void(* UThreadC< Thread_T >::Handler) (Thread_R)
+
+ +

Definition at line 76 of file UThreadC.h.

+ +
+
+ +

◆ Thread_R [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef Thread_T& UThreadC< Thread_T >::Thread_R
+
+ +

Definition at line 97 of file UThreadC.h.

+ +
+
+ +

◆ Thread_C_R [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef const Thread_T& UThreadC< Thread_T >::Thread_C_R
+
+ +

Definition at line 98 of file UThreadC.h.

+ +
+
+ +

◆ Handle [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef THREAD_HANDLE UThreadC< Thread_T >::Handle
+
+ +

Definition at line 100 of file UThreadC.h.

+ +
+
+ +

◆ Handler [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + +
typedef void(* UThreadC< Thread_T >::Handler) (Thread_R)
+
+ +

Definition at line 101 of file UThreadC.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~UThreadC()

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
virtual UThreadC< Thread_T >::~UThreadC ()
+
+inlinevirtual
+
+ +

Definition at line 78 of file UThreadC.h.

+ +
+
+ +

◆ UThreadC() [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
UThreadC< Thread_T >::UThreadC ()
+
+inlineprotected
+
+ +

Definition at line 81 of file UThreadC.h.

+ +
+
+ +

◆ UThreadC() [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
UThreadC< Thread_T >::UThreadC ()
+
+inlineprotected
+
+ +

Definition at line 104 of file UThreadC.h.

+ +
+
+

Member Function Documentation

+ +

◆ Exit() [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
static void UThreadC< Thread_T >::Exit ()
+
+inlinestaticprotected
+
+ +

Definition at line 85 of file UThreadC.h.

+ +
+
+ +

◆ TestCancel() [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
static void UThreadC< Thread_T >::TestCancel ()
+
+inlinestaticprotected
+
+ +

Definition at line 88 of file UThreadC.h.

+ +
+
+ +

◆ Self() [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
static Handle UThreadC< Thread_T >::Self ()
+
+inlinestaticprotected
+
+ +

Definition at line 92 of file UThreadC.h.

+ +
+
+ +

◆ Create() [1/4]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int UThreadC< Thread_T >::Create (const Handler & Function,
Thread_C_R Param,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
)
+
+inlinestatic
+
+ +

Definition at line 97 of file UThreadC.h.

+ +
+
+ +

◆ Create() [2/4]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int UThreadC< Thread_T >::Create (Thread_C_R Param,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
) const
+
+inline
+
+ +

Definition at line 131 of file UThreadC.h.

+ +
+
+ +

◆ Join() [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + +
static int UThreadC< Thread_T >::Join (Handle H)
+
+inlinestatic
+
+ +

Definition at line 164 of file UThreadC.h.

+ +
+
+ +

◆ Kill() [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + +
static int UThreadC< Thread_T >::Kill (Handle H)
+
+inlinestatic
+
+ +

Definition at line 168 of file UThreadC.h.

+ +
+
+ +

◆ Detach() [1/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + +
static int UThreadC< Thread_T >::Detach (Handle H)
+
+inlinestatic
+
+ +

Definition at line 172 of file UThreadC.h.

+ +
+
+ +

◆ Exit() [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
static void UThreadC< Thread_T >::Exit ()
+
+inlinestaticprotected
+
+ +

Definition at line 108 of file UThreadC.h.

+ +
+
+ +

◆ TestCancel() [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
static void UThreadC< Thread_T >::TestCancel ()
+
+inlinestaticprotected
+
+ +

Definition at line 111 of file UThreadC.h.

+ +
+
+ +

◆ Self() [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + +
static int UThreadC< Thread_T >::Self ()
+
+inlinestaticprotected
+
+ +

Definition at line 114 of file UThreadC.h.

+ +
+
+ +

◆ Create() [3/4]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int UThreadC< Thread_T >::Create (const Handler & Function,
Thread_C_R Param,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
)
+
+inlinestatic
+
+ +

Definition at line 126 of file UThreadC.h.

+ +
+
+ +

◆ Create() [4/4]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int UThreadC< Thread_T >::Create (Thread_C_R Param,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
) const
+
+inline
+
+ +

Definition at line 158 of file UThreadC.h.

+ +
+
+ +

◆ Join() [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + +
static int UThreadC< Thread_T >::Join (const Handle & H)
+
+inlinestatic
+
+ +

Definition at line 189 of file UThreadC.h.

+ +
+
+ +

◆ Kill() [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + +
static int UThreadC< Thread_T >::Kill (const Handle & H)
+
+inlinestatic
+
+ +

Definition at line 203 of file UThreadC.h.

+ +
+
+ +

◆ Detach() [2/2]

+ +
+
+
+template<typename Thread_T >
+ + + + + +
+ + + + + + + + +
static int UThreadC< Thread_T >::Detach (const Handle & H)
+
+inlinestatic
+
+ +

Definition at line 206 of file UThreadC.h.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • utilite/include/rtabmap/utilite/Posix/UThreadC.h
  • +
  • utilite/include/rtabmap/utilite/Win32/UThreadC.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4-members.html b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4-members.html new file mode 100644 index 00000000..2dd0950d --- /dev/null +++ b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4-members.html @@ -0,0 +1,144 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UThreadC< void > Member List
+
+
+ +

This is the complete list of members for UThreadC< void >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
Detach(Handle H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Join(Handle H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Kill(Handle H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
ThreadMain()=0 (defined in UThreadC< void >)UThreadC< void >protectedpure virtual
ThreadMain()=0 (defined in UThreadC< void >)UThreadC< void >protectedpure virtual
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4.html b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4.html new file mode 100644 index 00000000..ec9b8982 --- /dev/null +++ b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4.html @@ -0,0 +1,1090 @@ + + + + + + + + +RTAB-Map: UThreadC< void > Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for UThreadC< void >:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + +

+Public Types

typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
+ + + + + + + + + +

+Public Member Functions

int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
+ + + + + +

+Protected Member Functions

+virtual void ThreadMain ()=0
 
+virtual void ThreadMain ()=0
 
+ + + + + + + + + + + + + +

+Static Protected Member Functions

static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+
+

Definition at line 226 of file UThreadC.h.

+

Member Typedef Documentation

+ +

◆ Handle [1/2]

+ +
+
+ + + + +
typedef THREAD_HANDLE UThreadC< void >::Handle
+
+ +

Definition at line 232 of file UThreadC.h.

+ +
+
+ +

◆ Handler [1/2]

+ +
+
+ + + + +
typedef void(* UThreadC< void >::Handler) ()
+
+ +

Definition at line 233 of file UThreadC.h.

+ +
+
+ +

◆ Handle [2/2]

+ +
+
+ + + + +
typedef THREAD_HANDLE UThreadC< void >::Handle
+
+ +

Definition at line 251 of file UThreadC.h.

+ +
+
+ +

◆ Handler [2/2]

+ +
+
+ + + + +
typedef void(* UThreadC< void >::Handler) ()
+
+ +

Definition at line 252 of file UThreadC.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~UThreadC() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual UThreadC< void >::~UThreadC ()
+
+inlinevirtual
+
+ +

Definition at line 235 of file UThreadC.h.

+ +
+
+ +

◆ UThreadC() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
UThreadC< void >::UThreadC ()
+
+inlineprotected
+
+ +

Definition at line 238 of file UThreadC.h.

+ +
+
+ +

◆ ~UThreadC() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual UThreadC< void >::~UThreadC ()
+
+inlinevirtual
+
+ +

Definition at line 252 of file UThreadC.h.

+ +
+
+ +

◆ UThreadC() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
UThreadC< void >::UThreadC ()
+
+inlineprotected
+
+ +

Definition at line 252 of file UThreadC.h.

+ +
+
+

Member Function Documentation

+ +

◆ Exit() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
static void UThreadC< void >::Exit ()
+
+inlinestaticprotected
+
+ +

Definition at line 242 of file UThreadC.h.

+ +
+
+ +

◆ TestCancel() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
static void UThreadC< void >::TestCancel ()
+
+inlinestaticprotected
+
+ +

Definition at line 246 of file UThreadC.h.

+ +
+
+ +

◆ Self() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
static Handle UThreadC< void >::Self ()
+
+inlinestaticprotected
+
+ +

Definition at line 250 of file UThreadC.h.

+ +
+
+ +

◆ Create() [1/6]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int UThreadC< void >::Create (const Handler & Function,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
)
+
+inlinestatic
+
+ +

Definition at line 255 of file UThreadC.h.

+ +
+
+ +

◆ Create() [2/6]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int UThreadC< void >::Create (Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
) const
+
+inline
+
+ +

Definition at line 288 of file UThreadC.h.

+ +
+
+ +

◆ Create() [3/6]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int UThreadC< void >::Create (unsigned long & ThreadId,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
) const
+
+inline
+
+ +

Definition at line 320 of file UThreadC.h.

+ +
+
+ +

◆ Join() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static int UThreadC< void >::Join (Handle H)
+
+inlinestatic
+
+ +

Definition at line 354 of file UThreadC.h.

+ +
+
+ +

◆ Kill() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static int UThreadC< void >::Kill (Handle H)
+
+inlinestatic
+
+ +

Definition at line 358 of file UThreadC.h.

+ +
+
+ +

◆ Detach() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static int UThreadC< void >::Detach (Handle H)
+
+inlinestatic
+
+ +

Definition at line 362 of file UThreadC.h.

+ +
+
+ +

◆ Exit() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
static void UThreadC< void >::Exit ()
+
+inlinestaticprotected
+
+ +

Definition at line 261 of file UThreadC.h.

+ +
+
+ +

◆ TestCancel() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
static void UThreadC< void >::TestCancel ()
+
+inlinestaticprotected
+
+ +

Definition at line 264 of file UThreadC.h.

+ +
+
+ +

◆ Self() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
static int UThreadC< void >::Self ()
+
+inlinestaticprotected
+
+ +

Definition at line 267 of file UThreadC.h.

+ +
+
+ +

◆ Create() [4/6]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int UThreadC< void >::Create (const Handler & Function,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
)
+
+inlinestatic
+
+ +

Definition at line 280 of file UThreadC.h.

+ +
+
+ +

◆ Create() [5/6]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int UThreadC< void >::Create (Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
) const
+
+inline
+
+ +

Definition at line 302 of file UThreadC.h.

+ +
+
+ +

◆ Create() [6/6]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int UThreadC< void >::Create (unsigned long & ThreadId,
Handle *const & H = 0,
const bool & CreateDetached = false,
const unsigned int & StackSize = 0,
const bool & CancelEnable = false,
const bool & CancelAsync = false 
) const
+
+inline
+
+ +

Definition at line 324 of file UThreadC.h.

+ +
+
+ +

◆ Join() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static int UThreadC< void >::Join (const Handle & H)
+
+inlinestatic
+
+ +

Definition at line 348 of file UThreadC.h.

+ +
+
+ +

◆ Kill() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static int UThreadC< void >::Kill (const Handle & H)
+
+inlinestatic
+
+ +

Definition at line 362 of file UThreadC.h.

+ +
+
+ +

◆ Detach() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static int UThreadC< void >::Detach (const Handle & H)
+
+inlinestatic
+
+ +

Definition at line 365 of file UThreadC.h.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • utilite/include/rtabmap/utilite/Posix/UThreadC.h
  • +
  • utilite/include/rtabmap/utilite/Win32/UThreadC.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.map b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.map new file mode 100644 index 00000000..5caf9cd1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.map @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.md5 b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.md5 new file mode 100644 index 00000000..0293bacb --- /dev/null +++ b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +6dada90e653fee6633d9b3236164e2b0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.png b/preview/pr-1773/api/latest/classUThreadC_3_01void_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..991f42af3231e24ab7833d2bdfa8a97c8eca3068 GIT binary patch literal 43343 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classUThread__coll__graph.map b/preview/pr-1773/api/latest/classUThread__coll__graph.map new file mode 100644 index 00000000..aafd36b2 --- /dev/null +++ b/preview/pr-1773/api/latest/classUThread__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classUThread__coll__graph.md5 b/preview/pr-1773/api/latest/classUThread__coll__graph.md5 new file mode 100644 index 00000000..15edb62c --- /dev/null +++ b/preview/pr-1773/api/latest/classUThread__coll__graph.md5 @@ -0,0 +1 @@ +697514e647218960aeef4e637f2d87f5 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUThread__coll__graph.png b/preview/pr-1773/api/latest/classUThread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ae22ce8847fe96e5d608caccdf0bcdd47438f2 GIT binary patch literal 3851 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 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classUThread__inherit__graph.md5 b/preview/pr-1773/api/latest/classUThread__inherit__graph.md5 new file mode 100644 index 00000000..70f89b1e --- /dev/null +++ b/preview/pr-1773/api/latest/classUThread__inherit__graph.md5 @@ -0,0 +1 @@ +d4b0d0894733e8d06e01c3ce9074e327 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUThread__inherit__graph.png b/preview/pr-1773/api/latest/classUThread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..18f8a3d888a30c9cd5d20b675c8e2c00db5996ef GIT binary patch literal 43094 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÷{cG{uXasCj=P{0{=SVW*SI8agVx>?Lz@y^TaXS+9%y7`dg6Ub72l z{!?c!uExU2#kKQLqtK)9)mB#-Bt(sv)~{yzzG!n|nQQkz`*Yo95Eqp}bVF@{)S1z1 zGYTUtf%*sl&qNgQK}BpSJnij$fSem^x%Li%Az}${TItfG@gb6v!WpQ%5F3s8s{y}) zQ8_~8iUZ_u^yy`!MPgNDD*O2zy7MFzvn%_`87CIpE~qh z$MGp<8zr(kHLmpVr+{38-MVLyatPl)=N>yJ)U}k);>6^^b$+A;?;(2O>RU$R-RGx8 z{OEgki3#s$$P#K@$?<|<`MR0WDS$V>-HcfDl_Uwm+KmTxKD~*0fap7#j zF34m4#c2#1h9vJBd*A60ZCOHu!4|ffrZp5n`Y3n*-^rPCdL{2m-f{Mx-|rbx)A*`8 z(~(3;riaMwLw)^51daCjYMR=<$N92<>6dy;mMi8Xg>xG&jtzz~x--AJ%(*eN=Jl_0 z?T1bfyhC3TX-8%t@<+i9q5>0K>_bjje7`#7@5Op=GKd*Mn3Jv&y=E_KLsZed+j)nq z9?<@k$nNkdbKp zzFf1geb&fQpSpU)TFp9E+9lhnMDMxNz!!*X*kfa32d6j0A=nYQld8kc!m_i8X&E_4 zzd(=ZUX4Ft7MXpa##Yo(?^=#mTaIeH7_z!gFD4?>kmar?Ji6^1^C7$X2bmj96*PD2 z-h6sQE0bYOMEo|+jhpnjl<01qs_hf?dr{oeGMifIBz|N^`avt<#s=Ntsk0XQ#Y~v~ zda93q#n~rdSND*-l-dU`!wkWivDX}xiun=`xBpc1+`q~5Sb9+ZHW%$LLS7tWsTX(b zmT8FETg}NI^}HnCs#oyy=jMN)X}k)VfLLVE1tB3(TDDsqm)vL@ zckGP7Ms{-z#Z`%Nkrq$IfAx6Jx*flB;MvEU1d53#kOjMyBkz_2!K!;L&!AEi5?-M< zh}c=>4-IgsiHtPl7^%e?Cd4Ty(|o1;%^Yg-s>*-c_kXYWFBLnY@;Ymk#{2V3qHq2X ztU_GvsP}$hy)VKaCvy7VKG?BOu%YaX$po)+7w7)4y4O3m38iHeT9K4PP!gE64m&%S zsH7t22k*_W4vKnNLl=H)(AzTT(QB1uQ>VVv0>+4hpw+pXk68sty&dYL3mQu)93kMh z;O3WZ7$=)T@%3ktyrsU!XHu+cl8%H2-L~&AS2e8D>q?<{!y)2P%DT;`L5PGisCdV3SCIv!N6qW==fATbbU;XTUti!sB>ZRBgE z_u#`yxf?f@kFWA4;NE}xG7ls%C*d;3{F8D8MI|REU59N1JU?9UcC8ld{1v%QZ74>OdJ#N{m-?qPa3hL~>GSfEqxZ>j zPJEm9S;xzdg*Vu8T;EgeAhr2x^A__z&Ylirc_@<9N7v*`);HEys>~n2c=(y~2wfNr z9hmywnHF1J43sw36E{0yMMRk*2k8!aj%M_DzVgMY7q_d!o2%;5{(JZ@M{q*ZjANsjWJa)2^uEJV|#v`(wS{&p<-(Ok$w$FUm`5pSzhomB(# z#Shy@3)J0V*%|F_gilnEW2`UFfin6o%Ka?fY+0)B zOVfcTD%7=9)id(%E9@JgGnnvN#oVcmDV@-Wq^emZa6IAo*2O{r`lu}_EfXv?r`ftb zvsn8+y_#8gxo#cl*El5!@JY7!AE$Nhy}!Ys z-NnB{iLRMGk5^3Vg0ZUus?(V~Sa{c@(`e=6Se7-9v#mO@&VLW1B-Qjr{;mm@hiL-! z#FTg@pR~HlT0oPhYuV@}O@?DV2;rijUjnf=O4RWfx! ze*|bgw?ehlCZie+qS>o+xi9I#zG2#Wm>UAPIzRx=Vsv+$xRZ+KO$9qM?T^pzMf)F5 zloWJQm$jZM=m=7c37UVbQSfodfM@61k$P{dn~tn9jCnGpKcka9$t*`f{TKxOWM}13m3Zb-$ z0byZDAYG6H11Z1_Xb^l8KH4B0=pp7HPX9qcL63ezf*XR$=UQZ+#|#WOi9`R*1?WuL zrWQGYY`~f-1aR2KCZD4EyZ7#0CFb*hcsN16DE~3G`CTd4IP9{@p&nQ6Ho-GeK`}8P z`UL1~$d#mFkXJpe8k(KG2i$iDBe-zAIC~HIFVtCdBs;Kexf200P!f-EdlE=iB9gv7 z&y0tX{ zV3I*uS=lGRU^mcj<~Rg_e4x8O`If&qS_$lrK$yMBlR*X{I*mXm1z4qMwE;{c-%ZEh z@k9yK3MB_;D`_mnIMwR+yHA`XgwcE}$Ii_7ER&MA)6Y_R680GHKwFh;P-P84<9*Y` zk)3$s#wpvS`Id7&3#M8y#$#b)+iR3saRtM!!!dEAMk#^U&V6qFtVdTO=guvqv?UKC z6FgS7XGj(~=shoi0a^ChA6OvN@}TqUj$OnWPXHq(vf*#P^+tcU3y?NyslEoLqc%m{ z0*(Gcg`{Zrq#$m`EZ*O3tiB0 z2Zt;Wa5Y@r+|;LngM-zbJguy((!dOIMeo;lD?pE+%HG@LBUN8+@roXqZnohFD+k9; zn8@*I&r1tto%&`nHaZ${ulAV##la31;hBP-Di zTc4g2+TY4P}|%^O812Qfr8&)*<#w_o{+`Q}_&S|ae5`iLB8 zG>;Y`StQ-;@5fP7cBQpJPhNOAoRK4Q;$`R6QiV;aflf3dqu+O(PRq?PGAhjf zF_1e@EmfvCgNG!C)wc_WV5LaR8;SR7ZU4kZ|94o8!FTR(!(X$kBmYFE&F7>vA3%_# z?aIT45AQ>(XFG*?3V~-s<*QdTILUV{*_KYsC$D98ej!~V`KpiG7mO)qkf@RlIh!_g zb!}8i&F}D!ynBMOdfhrD3@-?%XBCu{M}U>?@)&p<7r)q&G-@OIwTwvOn}6)!E8XmO z|8{ueV(7g_>J4j;OvD{HtCRdJEtePoR^D{mYQ`Y$XUg=xBoRuUPgqUAX@f$kFA51P*jEfiCa- z2U`G`w_tJzOqU9sT$r{Tlo9y%G3^2ktBtis_q!x*2IBY&GBvjNWe^|_{+ups zXl%Un7|=5EFzMi`>R9WYqgL4CES}g zM?xf%f(Iq8nLwt9a)w+*0e^oEQ1zAzoB@f8SXo~9{$(w6u?N4k9eX4WbTr?*iuxd& z1Bi0c#KeR+4uXHGJ6TLsiE9f2@uO(Qi900<)VmZwXJ>ksm&O_6++!N&(X?q0TsLw* zadUGECO5JC@9kl3_pD8zalDjPW$QB~!S7$5xh^`=?PwfKO4r{M?{ojfEbGND=uafx zlW%qT^ShM!`FTk86w#7MKuSuV=*{1i{`%$j?g09%;Ht4)l6Puf48gYDB~Al} ze*h9!Z?fqW_Pcd}pFg!GiO)u^&9nn3vNik~@kiRjCTxy3?%WYZE1iVqX0@J*fQp_K zu;@>?x)z{k%7^L2#x1@><=Ew@)NFg*)FgB>V?tUmL*oHBlZ>P#_3pX%3JPEs3m|IR zCH0ehHW+tlIl0G|3R=#!%h!ObVy2Ssk@8?+W)~ONk}+5l!zdv;wb?Bv8 zmc)u>3H4nL{xGGVnc1DD3yvsq)k2Z$YkmCq%Zq=wD`$Sr8b3V~1f$}Ajo=SF`ydBu zJx0RbCrot0y7C6D-9sA-q! z8K$UNM?X*IsOYfcjI0HI90QuO#nN;S=?0SNLgMQj14FBgffWb#zgkX8=a4npRFJbx zeofaE^WP6?H=Shl$S6k9>6n6dX9^R@>ST`q&J4Zyd*v+85jRMqF<8g{ zsJkPfuQo<6>|FQI`axMbht*LDfA(o5z&_*4y4#F=rM~pP7#U_H=f!d!sn+55vV_sH z>3hn1bJ!ntD*byL#r0Ztl&nkUO6sOBDUMQ{`?H7E^J*d9AGR@9?<97G^W-~K^Y;%Q zqkOmfWT~d!6+Nr-qbqxkFL3eX`}D{Jt$l{~@Rh3dxJm>Csx^}X2N@|A`+OFui~GzK ze60@BGTxt!7t#7-c4HCU{L-!Wt%L=JPjckf`esrp9**;EkoS(>sIQt5B;~QjmHARh zDXq(uB`v4!Ghu&K)zuY`E#GA%&oO)ATX?!EHLLYqX3j_x_oz)dIp?k&N!ayggTj$* zDX+}b+Na|4AK70H3HgRS%VVFpMeF$)Kd{8{q5CK@!R!94=DESD)ms-|=t=JoXrRz# zg;tApT^fJdd{jZ9W5ZmKBVVS(F{@@8=bqKg9TLijlqC#?m{%ul3bZ!8bTHFq3!XhJ z3<-j6PXU#nGSvmDOFQZ!EzL!_Uy+ZcHXncJy{1iKJ+|$!YCNQH%J0L%tDN6A zGW>lj)5LL6P-sdCpYxo3m4&wC~!;I+8uio~O9GIrMn;a((2P(~ALO!)xf=pSRQo z?5J&GHL@c)S}w`aY<8Eetvr_CS6k%Q72i5C`LHXW{5~VvS@J~| zK0~9zFZry^ZRil1w!P6<(SYje(KZEk-hEZe{#m;Bd;H1iyWMeEsH0o4Pvtz2AHFP{h0hlrpj7%z9_Z%Y4E+iJH( z8l9m3KAeHHBJFGx+4^<$eFxXsyIqEjtTWl3Mny_ql&@6YQinL?u)*T~@0UrBPkWAA zysUKLADVNj;KQp*3`# z&YSAMTJwnZ@LOpYCpDu}kw|tPAOYD30`}c(J9hJzD*ebPG#bwjAtPllVnanuc~4_t zC19}O^OJRFxJjqrx_=MF0T7DQ!DTf=g_7@3qKvO^2M?6qbY0J5E8K(KxoAz)FLws$ zo#Tm2H;QQJM)LUUFef_Zyg$Pe7|wMU(2ecMl;zEIvO5L%w$rcfmbsC}H2s$impqk8 z7*$N(#qGzZjw^H$n~ei5!y#Sb;prO*vXvD6P0!bTjf63k+s@h(+EKYOk34pqKr9go z0~!35y#m~FNek$kL*KFEY-RRd+EU4!Hmm4d@ZLTd0ZDi!IX2EJ$;q?tI!C*U?&_t; zTMs;Np73RIVI&@Aq*qOHFqfqT228Sy?#^ByrnaLvt@++4`i{6!rr2j~W-px0_PASW z3kd?c)OW}zWuN32PkCE%_AQew6T6JO>CxkJxt?#}f46~I zSB}h-knlw%({_OdMvAApYUO6}O73jQv!uf#F-wMX#3PS5`$hC>97ePXx$4gOg#{PX z`jNkFLT0G|#~4b-)e`7?sv(J>qQKhd6;vXm(?nvIs6n3mlQTf@E@6l|x!MogSBM<3 z-4z<3ekH+FyxcywD>3sO+(GDrt0+(uK%~cwU}-e+ew&N79>tqQ^R`a|C~Pn>XnZs-i*VFjP%Mbf}kO zvIYUXFkI3>^>_ut0=xqwMrR26y2}WgF{xo7t{_^XK_Gtww0_F{-lWhTNlD2QSw5Is zV(JdfE%9S;gK4hI zFD$%)D)p7{26zKK#0(RN;@t|=Kq|3SENm*f+6gjkCt!cq|Og z%nevXq}Gfgwuh|uHsZ_Ii1QS4yH7xRO-#EM9Yq-SU`<2ed?lKLi%W2i@$)!HJCMrT z+CJ(<{k#Ck*t-?k0F6IOMHR2175oGd6(64~oT$KCP|T1E@Uq<^<#-476)J#Z!ox!@ zUuL94L`UygEIt7}nh1fBxc+wXrx=CY!}av6W!SERJ(#L>_kCYUWxt0WcPBrMj@p#g zrU@e_6ch?fHo|~>!RW)> z#^YxIjsMEGDyV6N_1+ z?+e6g4kF&fE#9Igr@xJV0yXLgghY98|00kjwp|q*W1^7Q>+N#$^E(KX$Ksst&lf^~ zOx`%s@$+R0lZ*G+TT;O=Eu+0sZEu?LYv%{!J>4>=Jk9`4D)|Vshy_!9raOnn=($4# zPB)Vmo@+}=N*;}KTg1Die3R2kA6YA*rUU zxT8qo1@9z;r|%^p%QL;FxhryX=&Yk5&p&^mq0zf)pQvMF+G*kfr0cDUTKI)!q zGBH4|3q>zMK~TqbTp{R9U|^uDq!7ARo!SYaRps6>;8@OZy0?FQLSZdqE^g**&pnJz z2V_!itnOM>_c~SU;$#*%RdHH}qk)DwR<5(N^S@&hO&dA#^YhQ30T~Xrt8iQ^et!}B z{9jX2c&1olH-|??qQQiHnw!qEvA)A?YbhX7kP{cYvZ0w7Q>U>M8NYAs%HD9eA#F9G zyk*2Eklq;J-2~&+b4P7qq*f#jE}8)*25mV(>`)2adUz+F;D67%5&4vB6er{0bpwmO z5CxZAUXNu`02$bBm1dyeabLl#X%0u#vE1%dfck($j^NUsgVC2IvOR+W>oq_E>@FzX z$KMcL8dxNn=AYlDkp@Ef#F)S0PJ+%j%tDTWFR0$6p`igc#JzhG^jRrj(-_;U<81vl z)!pj;u`Rg?(46feWf1H+Wq{3a8Pm%hOKF3C%x;N?BUH5!@>@}0emNbBI9BS=a3&C0 zGC5jd2vGxTCEL=ptg>dP5#@Ds*hr60TwKF1zxTfaDE8)V1QJT7G!F`2%9Yh>Y#hwL zRu5iY_ft$YSHI5HE7RgXtW#%N-OV4u*uB)~i*QK(C=8)ZmxTV;c7 z;=7KNo=GP8;{z-5Gd)tPOTKDH^~-_soX+uP%fIBszJUZYooAVkb-q~>F&~x8YsU0` z@7c(2k((ZB*vH#px=FXq%!69dFl~$b7k!af&7)t{$%CI)C9LO@r4U2jKJUVBk(^m? z&&ga4_w$F^JW1rl!`(tcPhJ|?@uqwT9%xfnSX4rAb^htA{mgsWH#2q2GoTxh*0CBp z1kU~8oS7mY#!|Ni%IQ#fPO+pt=}JU6$HhV-{R=z23-=0%@vf6srkIHzo{atPXVm}w z%rdXEtC+creYTMLIbCfN|9@|_ngq%(pPmV9Y-z0CK#}8OfBu=JMtKU?zQQ68QvJ*# zOXVlVJX{u>ft{576T<=u|9*x$FCikm(z|_%MS(=3QwPW&uy38%kwSlrLv-88Ws}{) zh4!Hd{0DW*|2@YfDr2c=ot0H=ng>#j0ZhcnG>&+>D z_x+$;Deaohe;;gGgAZ2tyAPN7K98Eq4Bl%ixr{?IhWaPh|CcPWBUuXnvVl#sUnz7o z<-7dQn=_)qq1yko9sCf3kV$LJrS21~!Fz0}y=nemUFRPUb)LuZZ%lHvslnO~A+}p< zG>QBuq%>IDm140&(T=4RBR?8am!xQDNnL)1&fXdtWSPNXx>NZzn8buV7l&eL{T!`m z+q&1M?(x{W$35=*hktyT`F=mY-antOM!mq)bYfNi>S^)Y&4T}U%EZW!I+=7&qN^Nq zZlt*Co%Em%v9(Pu?Q#t@SD39#Fr!qcS$1v9HC0GVymO;Se)`bLJFq&Q4jipl@>`kC zY_#1rw3OKu0Aqcy1ht|1l_Uc=1U` zk&*BXqWOtHbB1iZz&DM@Q_$m)^aK*lIaXY4@Cd5Y_WZ=+F2_dx>UZ?0{@0yaa{zG}7#QqEZkCCxEo`4ek;np( z&AB$CD@T!cf~vKT3!@j-GF@F=3E^KbU{ztFG!fMo;OAci|%kP_Bf1 zFIlX&84kV)z>>kF{u|10Du*Sf$X7+}={=MciqpKlK>`-fra{=G2uMdPD*{7@B)>&s zrU@m`;xz9sVD4Vv?`D06Xe}gbax$H0Zg%q*`{>DhiX{K*!9&=8A7!Oxfa5`FXwS!q zI88Y~y9v&@K9EZ9f+NN8iH?lC2MobQhWG94RNnM}CDFPjB2A@dcM9hyYE_pjYtLt; z3?wRK&wy4^LLV{42OTb_lT3E=%Zn2hYL|I-@u%{1xN|G^~ znK;RG!1E(=?zqvAf|$DrFO1rFaKsTorKZ&XOX}&-YR+c@F22opeK#Ngf=uJFd1U2-y*J9 z8-QvALK&({RRJL*ZEwE@fwze8@N^W-%1^_20Z#Y?sseoBqcpd)I3snv6`+hP%=Heq z0b|f6s{C9Ai*_|7ZEG`*U>D0>5&HiU)&tbGGB}o`>^*|V%YX+U1$Fi*@~P@L_T{e= zTc7uO`@2R**I@3jA+Q9z9t3O&+%(5F=JsPrtVf!@0}}#4)~WU&U66kQq)}buSc(K( zaz)nPUO6F$;PosP$=g&^b(cO`;3V&0Og_G%V|@TpLt%@#a2=reSM#WBOm?IY+y(xP z8@`oOV=}Ji@k}dg7*wM(GfdDVuc9zH!MZFKrYA6RQK5MzWe5NU33Fwus|EL=o^1G3Ri(TR?IU^y8%!fwiGk$}T`Q zoAd}6<5g+d+S-B^m<1c=AW{jer;9ohsN=mCdUMm>q&7lJ^Y{e|Ew_BOulxqG`S8V% z>iE#y-2H3kfXV?7OwtkC&&^y|SZJ0?U5S9X{QH;!G=6|U{EcI)*F@M4WmU4~d@@@c z11&!YBoC}r9~CxGdt$5q*`G3kcVI-JzTG*VP_p6)_YjMfF+4SOc*g3@a@RTVDHGwQ zVNHVMVg&bnd3jmDMfgUx7!eg^F_=K3xC7#CztmP&TVmKc{X&3~K-4|3J2$Yhw)U;M zBHj*cr~q`zWLuxmBg9F*Dso$?C<(~150ykbaV9B^?auIEE~m0jy@x!93rYi!?MVeg zGds*koeo%y8g{Gg)5oCexJvI7@q-2ZGj?0ay1{PIZYOwFAnMVS`E=JY+}KgRIk|zd zRQ@n3n}edB3=dNueN^0#_Zvf@8@67$XM%fs=-=CgOBHggs{7cy5IZn7Hf}`q#tI5i z53vm3j?Tp$v5F7zmi#9VTe9VdVUR``5M$uOtSr*Z%g>(&VKmo1)YLHBHYO~wWeOnH zzb=ig0kp#rt{N;KLFH`2?5;e!*dB5D-J^|wMRphNT_q2}_y7e`=67dcYH9YfUNTSr zxh(Kwh0l*ViMT02)lH8*n+E$#L&C1R6O68Gd>qR)sEeW>x=$kUZAxUbfuTJDH&)PJ zB@&Gc562^TFpBaJLeIH8T?;NW>=gr?2Fc0E1m{AS{rP_uT6UcI)6cNuTT%WH0j z&wSCf2WPQ~&f&Hv_+&vD+F=+AOQq&98J>PJ#W+}{`ls*c5!NATo5J$mgs~h@s2`dp z26megdOy}-4FQDP@;rGD5K4DZlrb_fp^6q0@Hb1ok3$r}4qrYA#TELOtmZaiyMG`NF zL;)0CDeEgFiWH~uvTvg* z{U?U**yiQs!38Zo-m#BWebeNe25gBfHa4FVrPN9I0@sgQ|EK@LQ~9Cn + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +

+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UTimer Member List
+
+
+ +

This is the complete list of members for UTimer, including all inherited members.

+ + + + + + + + + + +
elapsed()UTimerinline
getElapsedTime() (defined in UTimer)UTimer
now()UTimerstatic
restart()UTimerinline
start()UTimer
stop()UTimer
ticks() (defined in UTimer)UTimer
UTimer() (defined in UTimer)UTimer
~UTimer() (defined in UTimer)UTimer
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUTimer.html b/preview/pr-1773/api/latest/classUTimer.html new file mode 100644 index 00000000..bcb589c1 --- /dev/null +++ b/preview/pr-1773/api/latest/classUTimer.html @@ -0,0 +1,277 @@ + + + + + + + + +RTAB-Map: UTimer Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <UTimer.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

void start ()
 
void stop ()
 
double elapsed ()
 
+double getElapsedTime ()
 
double restart ()
 
+double ticks ()
 
+ + + +

+Static Public Member Functions

static double now ()
 
+

Detailed Description

+

This class is used to time some codes (in seconds). On Unix, the resolution is up to microseconds (see gettimeofday()). On Windows, the performance counter is used (see QueryPerformanceCounter() and QueryPerformanceFrequency()). Example:

UTimer timer;
+
timer.start();
+
... (do some work)
+
timer.stop();
+
double seconds = timer.getInterval();
+
...
+ +
void start()
+
void stop()
+
+

Definition at line 46 of file UTimer.h.

+

Member Function Documentation

+ +

◆ now()

+ +
+
+ + + + + +
+ + + + + + + +
static double UTimer::now ()
+
+static
+
+

This method is used to get the time of the system right now.

Returns
double the time in seconds.
+ +
+
+ +

◆ start()

+ +
+
+ + + + + + + +
void UTimer::start ()
+
+

This method starts the timer.

+ +
+
+ +

◆ stop()

+ +
+
+ + + + + + + +
void UTimer::stop ()
+
+

This method stops the timer.

+ +
+
+ +

◆ elapsed()

+ +
+
+ + + + + +
+ + + + + + + +
double UTimer::elapsed ()
+
+inline
+
+

This method is used to get the elapsed time between now and the start(). If timer is stopped, the interval time between stop() and the start() is returned.

Returns
double the interval in seconds.
+ +

Definition at line 75 of file UTimer.h.

+ +
+
+ +

◆ restart()

+ +
+
+ + + + + +
+ + + + + + + +
double UTimer::restart ()
+
+inline
+
+

This method is used to get the interval of the timer while it is running. It's automatically stop the timer, get the interval and restart the timer. It's the same of calling stop(), elapsed() and start(). Method restart() does the same thing, for convenience.

Returns
double the interval in seconds.
+ +

Definition at line 86 of file UTimer.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • utilite/include/rtabmap/utilite/UTimer.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUTimer.js b/preview/pr-1773/api/latest/classUTimer.js new file mode 100644 index 00000000..e04c2107 --- /dev/null +++ b/preview/pr-1773/api/latest/classUTimer.js @@ -0,0 +1,7 @@ +var classUTimer = +[ + [ "start", "classUTimer.html#a10f628d8be04474d13c04b07c0426200", null ], + [ "stop", "classUTimer.html#a6a517d6f5f6e6c28b9392d04be22a320", null ], + [ "elapsed", "classUTimer.html#a372405f02e1d4e9571a73d80962d6f4c", null ], + [ "restart", "classUTimer.html#aa4db57cf682a403fba8ddf95d268d2a6", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classUVariant-members.html b/preview/pr-1773/api/latest/classUVariant-members.html new file mode 100644 index 00000000..9f0df84c --- /dev/null +++ b/preview/pr-1773/api/latest/classUVariant-members.html @@ -0,0 +1,195 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVariant Member List
+
+
+ +

This is the complete list of members for UVariant, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
isBool() constUVariantinline
isChar() constUVariantinline
isCharArray() constUVariantinline
isDouble() constUVariantinline
isDoubleArray() constUVariantinline
isFloat() constUVariantinline
isFloatArray() constUVariantinline
isInt() constUVariantinline
isIntArray() constUVariantinline
isShort() constUVariantinline
isShortArray() constUVariantinline
isStr() constUVariantinline
isUChar() constUVariantinline
isUCharArray() constUVariantinline
isUInt() constUVariantinline
isUIntArray() constUVariantinline
isUndef() constUVariantinline
isUShort() constUVariantinline
isUShortArray() constUVariantinline
kBool enum valueUVariant
kChar enum valueUVariant
kCharArray enum valueUVariant
kDouble enum valueUVariant
kDoubleArray enum valueUVariant
kFloat enum valueUVariant
kFloatArray enum valueUVariant
kInt enum valueUVariant
kIntArray enum valueUVariant
kShort enum valueUVariant
kShortArray enum valueUVariant
kStr enum valueUVariant
kUChar enum valueUVariant
kUCharArray enum valueUVariant
kUInt enum valueUVariant
kUIntArray enum valueUVariant
kUndef enum valueUVariant
kUShort enum valueUVariant
kUShortArray enum valueUVariant
toBool() constUVariant
toChar(bool *ok=0) constUVariant
toCharArray(bool *ok=0) constUVariant
toDouble(bool *ok=0) constUVariant
toDoubleArray(bool *ok=0) constUVariant
toFloat(bool *ok=0) constUVariant
toFloatArray(bool *ok=0) constUVariant
toInt(bool *ok=0) constUVariant
toIntArray(bool *ok=0) constUVariant
toShort(bool *ok=0) constUVariant
toShortArray(bool *ok=0) constUVariant
toStr(bool *ok=0) constUVariant
toUChar(bool *ok=0) constUVariant
toUCharArray(bool *ok=0) constUVariant
toUInt(bool *ok=0) constUVariant
toUIntArray(bool *ok=0) constUVariant
toUShort(bool *ok=0) constUVariant
toUShortArray(bool *ok=0) constUVariant
type() constUVariantinline
Type enum nameUVariant
UVariant()UVariant
UVariant(const bool &value)UVariant
UVariant(const signed char &value)UVariant
UVariant(const unsigned char &value)UVariant
UVariant(const short &value)UVariant
UVariant(const unsigned short &value)UVariant
UVariant(const int &value)UVariant
UVariant(const unsigned int &value)UVariant
UVariant(const float &value)UVariant
UVariant(const double &value)UVariant
UVariant(const char *value)UVariant
UVariant(const std::string &value)UVariant
UVariant(const std::vector< signed char > &value)UVariant
UVariant(const std::vector< unsigned char > &value)UVariant
UVariant(const std::vector< short > &value)UVariant
UVariant(const std::vector< unsigned short > &value)UVariant
UVariant(const std::vector< int > &value)UVariant
UVariant(const std::vector< unsigned int > &value)UVariant
UVariant(const std::vector< float > &value)UVariant
UVariant(const std::vector< double > &value)UVariant
~UVariant()UVariantinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUVariant.html b/preview/pr-1773/api/latest/classUVariant.html new file mode 100644 index 00000000..29c39312 --- /dev/null +++ b/preview/pr-1773/api/latest/classUVariant.html @@ -0,0 +1,2007 @@ + + + + + + + + +RTAB-Map: UVariant Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UVariant Class Reference
+
+
+ +

A variant type that can hold values of different types. + More...

+ +

#include <UVariant.h>

+ + + + + +

+Public Types

enum  Type {
+  kBool +, kChar +, kUChar +, kShort +,
+  kUShort +, kInt +, kUInt +, kFloat +,
+  kDouble +, kStr +, kCharArray +, kUCharArray +,
+  kShortArray +, kUShortArray +, kIntArray +, kUIntArray +,
+  kFloatArray +, kDoubleArray +, kUndef +
+ }
 Enumeration of supported data types. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ UVariant ()
 Default constructor Creates an undefined variant.
 
 UVariant (const bool &value)
 Constructor from bool.
 
 UVariant (const signed char &value)
 Constructor from signed char.
 
 UVariant (const unsigned char &value)
 Constructor from unsigned char.
 
 UVariant (const short &value)
 Constructor from short.
 
 UVariant (const unsigned short &value)
 Constructor from unsigned short.
 
 UVariant (const int &value)
 Constructor from int.
 
 UVariant (const unsigned int &value)
 Constructor from unsigned int.
 
 UVariant (const float &value)
 Constructor from float.
 
 UVariant (const double &value)
 Constructor from double.
 
 UVariant (const char *value)
 Constructor from C string.
 
 UVariant (const std::string &value)
 Constructor from std::string.
 
 UVariant (const std::vector< signed char > &value)
 Constructor from array of signed char.
 
 UVariant (const std::vector< unsigned char > &value)
 Constructor from array of unsigned char.
 
 UVariant (const std::vector< short > &value)
 Constructor from array of short.
 
 UVariant (const std::vector< unsigned short > &value)
 Constructor from array of unsigned short.
 
 UVariant (const std::vector< int > &value)
 Constructor from array of int.
 
 UVariant (const std::vector< unsigned int > &value)
 Constructor from array of unsigned int.
 
 UVariant (const std::vector< float > &value)
 Constructor from array of float.
 
 UVariant (const std::vector< double > &value)
 Constructor from array of double.
 
Type type () const
 Get the type of the stored value.
 
bool isUndef () const
 Check if the variant is undefined.
 
bool isBool () const
 Check if the variant is a bool.
 
bool isChar () const
 Check if the variant is a signed char.
 
bool isUChar () const
 Check if the variant is an unsigned char.
 
bool isShort () const
 Check if the variant is a short.
 
bool isUShort () const
 Check if the variant is an unsigned short.
 
bool isInt () const
 Check if the variant is an int.
 
bool isUInt () const
 Check if the variant is an unsigned int.
 
bool isFloat () const
 Check if the variant is a float.
 
bool isDouble () const
 Check if the variant is a double.
 
bool isStr () const
 Check if the variant is a string.
 
bool isCharArray () const
 Check if the variant is an array of signed char.
 
bool isUCharArray () const
 Check if the variant is an array of unsigned char.
 
bool isShortArray () const
 Check if the variant is an array of short.
 
bool isUShortArray () const
 Check if the variant is an array of unsigned short.
 
bool isIntArray () const
 Check if the variant is an array of int.
 
bool isUIntArray () const
 Check if the variant is an array of unsigned int.
 
bool isFloatArray () const
 Check if the variant is an array of float.
 
bool isDoubleArray () const
 Check if the variant is an array of double.
 
bool toBool () const
 Convert the variant to bool.
 
signed char toChar (bool *ok=0) const
 Convert the variant to signed char.
 
unsigned char toUChar (bool *ok=0) const
 Convert the variant to unsigned char.
 
short toShort (bool *ok=0) const
 Convert the variant to short.
 
unsigned short toUShort (bool *ok=0) const
 Convert the variant to unsigned short.
 
int toInt (bool *ok=0) const
 Convert the variant to int.
 
unsigned int toUInt (bool *ok=0) const
 Convert the variant to unsigned int.
 
float toFloat (bool *ok=0) const
 Convert the variant to float.
 
double toDouble (bool *ok=0) const
 Convert the variant to double.
 
std::string toStr (bool *ok=0) const
 Convert the variant to string.
 
std::vector< signed char > toCharArray (bool *ok=0) const
 Convert the variant to array of signed char.
 
std::vector< unsigned char > toUCharArray (bool *ok=0) const
 Convert the variant to array of unsigned char.
 
std::vector< short > toShortArray (bool *ok=0) const
 Convert the variant to array of short.
 
std::vector< unsigned short > toUShortArray (bool *ok=0) const
 Convert the variant to array of unsigned short.
 
std::vector< int > toIntArray (bool *ok=0) const
 Convert the variant to array of int.
 
std::vector< unsigned int > toUIntArray (bool *ok=0) const
 Convert the variant to array of unsigned int.
 
std::vector< float > toFloatArray (bool *ok=0) const
 Convert the variant to array of float.
 
std::vector< double > toDoubleArray (bool *ok=0) const
 Convert the variant to array of double.
 
virtual ~UVariant ()
 Virtual destructor.
 
+

Detailed Description

+

A variant type that can hold values of different types.

+

UVariant is a type-safe container that can store values of various types including booleans, integers, floats, strings, and arrays. It provides methods to check the stored type and convert to other types.

+ +

Definition at line 53 of file UVariant.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum UVariant::Type
+
+ +

Enumeration of supported data types.

+ + + + + + + + + + + + + + + + + + + + +
Enumerator
kBool 

Boolean type

+
kChar 

Signed char type

+
kUChar 

Unsigned char type

+
kShort 

Short integer type

+
kUShort 

Unsigned short integer type

+
kInt 

Integer type

+
kUInt 

Unsigned integer type

+
kFloat 

Float type

+
kDouble 

Double type

+
kStr 

String type

+
kCharArray 

Array of signed char

+
kUCharArray 

Array of unsigned char

+
kShortArray 

Array of short

+
kUShortArray 

Array of unsigned short

+
kIntArray 

Array of int

+
kUIntArray 

Array of unsigned int

+
kFloatArray 

Array of float

+
kDoubleArray 

Array of double

+
kUndef 

Undefined type (default)

+
+ +

Definition at line 60 of file UVariant.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ UVariant() [1/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const bool & value)
+
+ +

Constructor from bool.

+
Parameters
+ + +
valuethe boolean value
+
+
+ +
+
+ +

◆ UVariant() [2/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const signed char & value)
+
+ +

Constructor from signed char.

+
Parameters
+ + +
valuethe signed char value
+
+
+ +
+
+ +

◆ UVariant() [3/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const unsigned char & value)
+
+ +

Constructor from unsigned char.

+
Parameters
+ + +
valuethe unsigned char value
+
+
+ +
+
+ +

◆ UVariant() [4/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const short & value)
+
+ +

Constructor from short.

+
Parameters
+ + +
valuethe short value
+
+
+ +
+
+ +

◆ UVariant() [5/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const unsigned short & value)
+
+ +

Constructor from unsigned short.

+
Parameters
+ + +
valuethe unsigned short value
+
+
+ +
+
+ +

◆ UVariant() [6/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const int & value)
+
+ +

Constructor from int.

+
Parameters
+ + +
valuethe integer value
+
+
+ +
+
+ +

◆ UVariant() [7/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const unsigned int & value)
+
+ +

Constructor from unsigned int.

+
Parameters
+ + +
valuethe unsigned integer value
+
+
+ +
+
+ +

◆ UVariant() [8/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const float & value)
+
+ +

Constructor from float.

+
Parameters
+ + +
valuethe float value
+
+
+ +
+
+ +

◆ UVariant() [9/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const double & value)
+
+ +

Constructor from double.

+
Parameters
+ + +
valuethe double value
+
+
+ +
+
+ +

◆ UVariant() [10/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const char * value)
+
+ +

Constructor from C string.

+
Parameters
+ + +
valuethe C string value
+
+
+ +
+
+ +

◆ UVariant() [11/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::string & value)
+
+ +

Constructor from std::string.

+
Parameters
+ + +
valuethe string value
+
+
+ +
+
+ +

◆ UVariant() [12/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< signed char > & value)
+
+ +

Constructor from array of signed char.

+
Parameters
+ + +
valuethe array of signed char
+
+
+ +
+
+ +

◆ UVariant() [13/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< unsigned char > & value)
+
+ +

Constructor from array of unsigned char.

+
Parameters
+ + +
valuethe array of unsigned char
+
+
+ +
+
+ +

◆ UVariant() [14/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< short > & value)
+
+ +

Constructor from array of short.

+
Parameters
+ + +
valuethe array of short
+
+
+ +
+
+ +

◆ UVariant() [15/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< unsigned short > & value)
+
+ +

Constructor from array of unsigned short.

+
Parameters
+ + +
valuethe array of unsigned short
+
+
+ +
+
+ +

◆ UVariant() [16/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< int > & value)
+
+ +

Constructor from array of int.

+
Parameters
+ + +
valuethe array of int
+
+
+ +
+
+ +

◆ UVariant() [17/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< unsigned int > & value)
+
+ +

Constructor from array of unsigned int.

+
Parameters
+ + +
valuethe array of unsigned int
+
+
+ +
+
+ +

◆ UVariant() [18/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< float > & value)
+
+ +

Constructor from array of float.

+
Parameters
+ + +
valuethe array of float
+
+
+ +
+
+ +

◆ UVariant() [19/19]

+ +
+
+ + + + + + + + +
UVariant::UVariant (const std::vector< double > & value)
+
+ +

Constructor from array of double.

+
Parameters
+ + +
valuethe array of double
+
+
+ +
+
+ +

◆ ~UVariant()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UVariant::~UVariant ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 450 of file UVariant.h.

+ +
+
+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
Type UVariant::type () const
+
+inline
+
+ +

Get the type of the stored value.

+
Returns
the Type enum value
+ +

Definition at line 206 of file UVariant.h.

+ +
+
+ +

◆ isUndef()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isUndef () const
+
+inline
+
+ +

Check if the variant is undefined.

+
Returns
true if type is kUndef
+ +

Definition at line 212 of file UVariant.h.

+ +
+
+ +

◆ isBool()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isBool () const
+
+inline
+
+ +

Check if the variant is a bool.

+
Returns
true if type is kBool
+ +

Definition at line 218 of file UVariant.h.

+ +
+
+ +

◆ isChar()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isChar () const
+
+inline
+
+ +

Check if the variant is a signed char.

+
Returns
true if type is kChar
+ +

Definition at line 224 of file UVariant.h.

+ +
+
+ +

◆ isUChar()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isUChar () const
+
+inline
+
+ +

Check if the variant is an unsigned char.

+
Returns
true if type is kUChar
+ +

Definition at line 230 of file UVariant.h.

+ +
+
+ +

◆ isShort()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isShort () const
+
+inline
+
+ +

Check if the variant is a short.

+
Returns
true if type is kShort
+ +

Definition at line 236 of file UVariant.h.

+ +
+
+ +

◆ isUShort()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isUShort () const
+
+inline
+
+ +

Check if the variant is an unsigned short.

+
Returns
true if type is kUShort
+ +

Definition at line 242 of file UVariant.h.

+ +
+
+ +

◆ isInt()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isInt () const
+
+inline
+
+ +

Check if the variant is an int.

+
Returns
true if type is kInt
+ +

Definition at line 248 of file UVariant.h.

+ +
+
+ +

◆ isUInt()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isUInt () const
+
+inline
+
+ +

Check if the variant is an unsigned int.

+
Returns
true if type is kUInt
+ +

Definition at line 254 of file UVariant.h.

+ +
+
+ +

◆ isFloat()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isFloat () const
+
+inline
+
+ +

Check if the variant is a float.

+
Returns
true if type is kFloat
+ +

Definition at line 260 of file UVariant.h.

+ +
+
+ +

◆ isDouble()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isDouble () const
+
+inline
+
+ +

Check if the variant is a double.

+
Returns
true if type is kDouble
+ +

Definition at line 266 of file UVariant.h.

+ +
+
+ +

◆ isStr()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isStr () const
+
+inline
+
+ +

Check if the variant is a string.

+
Returns
true if type is kStr
+ +

Definition at line 272 of file UVariant.h.

+ +
+
+ +

◆ isCharArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isCharArray () const
+
+inline
+
+ +

Check if the variant is an array of signed char.

+
Returns
true if type is kCharArray
+ +

Definition at line 278 of file UVariant.h.

+ +
+
+ +

◆ isUCharArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isUCharArray () const
+
+inline
+
+ +

Check if the variant is an array of unsigned char.

+
Returns
true if type is kUCharArray
+ +

Definition at line 284 of file UVariant.h.

+ +
+
+ +

◆ isShortArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isShortArray () const
+
+inline
+
+ +

Check if the variant is an array of short.

+
Returns
true if type is kShortArray
+ +

Definition at line 290 of file UVariant.h.

+ +
+
+ +

◆ isUShortArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isUShortArray () const
+
+inline
+
+ +

Check if the variant is an array of unsigned short.

+
Returns
true if type is kUShortArray
+ +

Definition at line 296 of file UVariant.h.

+ +
+
+ +

◆ isIntArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isIntArray () const
+
+inline
+
+ +

Check if the variant is an array of int.

+
Returns
true if type is kIntArray
+ +

Definition at line 302 of file UVariant.h.

+ +
+
+ +

◆ isUIntArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isUIntArray () const
+
+inline
+
+ +

Check if the variant is an array of unsigned int.

+
Returns
true if type is kUIntArray
+ +

Definition at line 308 of file UVariant.h.

+ +
+
+ +

◆ isFloatArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isFloatArray () const
+
+inline
+
+ +

Check if the variant is an array of float.

+
Returns
true if type is kFloatArray
+ +

Definition at line 314 of file UVariant.h.

+ +
+
+ +

◆ isDoubleArray()

+ +
+
+ + + + + +
+ + + + + + + +
bool UVariant::isDoubleArray () const
+
+inline
+
+ +

Check if the variant is an array of double.

+
Returns
true if type is kDoubleArray
+ +

Definition at line 320 of file UVariant.h.

+ +
+
+ +

◆ toBool()

+ +
+
+ + + + + + + +
bool UVariant::toBool () const
+
+ +

Convert the variant to bool.

+
Returns
the boolean value
+ +
+
+ +

◆ toChar()

+ +
+
+ + + + + + + + +
signed char UVariant::toChar (bool * ok = 0) const
+
+ +

Convert the variant to signed char.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the signed char value
+ +
+
+ +

◆ toUChar()

+ +
+
+ + + + + + + + +
unsigned char UVariant::toUChar (bool * ok = 0) const
+
+ +

Convert the variant to unsigned char.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the unsigned char value
+ +
+
+ +

◆ toShort()

+ +
+
+ + + + + + + + +
short UVariant::toShort (bool * ok = 0) const
+
+ +

Convert the variant to short.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the short value
+ +
+
+ +

◆ toUShort()

+ +
+
+ + + + + + + + +
unsigned short UVariant::toUShort (bool * ok = 0) const
+
+ +

Convert the variant to unsigned short.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the unsigned short value
+ +
+
+ +

◆ toInt()

+ +
+
+ + + + + + + + +
int UVariant::toInt (bool * ok = 0) const
+
+ +

Convert the variant to int.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the integer value
+ +
+
+ +

◆ toUInt()

+ +
+
+ + + + + + + + +
unsigned int UVariant::toUInt (bool * ok = 0) const
+
+ +

Convert the variant to unsigned int.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the unsigned integer value
+ +
+
+ +

◆ toFloat()

+ +
+
+ + + + + + + + +
float UVariant::toFloat (bool * ok = 0) const
+
+ +

Convert the variant to float.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the float value
+ +
+
+ +

◆ toDouble()

+ +
+
+ + + + + + + + +
double UVariant::toDouble (bool * ok = 0) const
+
+ +

Convert the variant to double.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the double value
+ +
+
+ +

◆ toStr()

+ +
+
+ + + + + + + + +
std::string UVariant::toStr (bool * ok = 0) const
+
+ +

Convert the variant to string.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the string value
+ +
+
+ +

◆ toCharArray()

+ +
+
+ + + + + + + + +
std::vector< signed char > UVariant::toCharArray (bool * ok = 0) const
+
+ +

Convert the variant to array of signed char.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of signed char
+ +
+
+ +

◆ toUCharArray()

+ +
+
+ + + + + + + + +
std::vector< unsigned char > UVariant::toUCharArray (bool * ok = 0) const
+
+ +

Convert the variant to array of unsigned char.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of unsigned char
+ +
+
+ +

◆ toShortArray()

+ +
+
+ + + + + + + + +
std::vector< short > UVariant::toShortArray (bool * ok = 0) const
+
+ +

Convert the variant to array of short.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of short
+ +
+
+ +

◆ toUShortArray()

+ +
+
+ + + + + + + + +
std::vector< unsigned short > UVariant::toUShortArray (bool * ok = 0) const
+
+ +

Convert the variant to array of unsigned short.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of unsigned short
+ +
+
+ +

◆ toIntArray()

+ +
+
+ + + + + + + + +
std::vector< int > UVariant::toIntArray (bool * ok = 0) const
+
+ +

Convert the variant to array of int.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of int
+ +
+
+ +

◆ toUIntArray()

+ +
+
+ + + + + + + + +
std::vector< unsigned int > UVariant::toUIntArray (bool * ok = 0) const
+
+ +

Convert the variant to array of unsigned int.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of unsigned int
+ +
+
+ +

◆ toFloatArray()

+ +
+
+ + + + + + + + +
std::vector< float > UVariant::toFloatArray (bool * ok = 0) const
+
+ +

Convert the variant to array of float.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of float
+ +
+
+ +

◆ toDoubleArray()

+ +
+
+ + + + + + + + +
std::vector< double > UVariant::toDoubleArray (bool * ok = 0) const
+
+ +

Convert the variant to array of double.

+
Parameters
+ + +
okpointer to bool to indicate success (optional)
+
+
+
Returns
the array of double
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classUVariant.js b/preview/pr-1773/api/latest/classUVariant.js new file mode 100644 index 00000000..a33094dd --- /dev/null +++ b/preview/pr-1773/api/latest/classUVariant.js @@ -0,0 +1,83 @@ +var classUVariant = +[ + [ "Type", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bd", [ + [ "kBool", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdac7d8fa7273711e6711880ba9f9d10f62", null ], + [ "kChar", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda117693c00c89461634dc137ee9a219c4", null ], + [ "kUChar", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda017bb86f2bbfc9c10fc082890fdd3c9e", null ], + [ "kShort", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda310a497e7d9c43297d960e2cd20d1fc0", null ], + [ "kUShort", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda558d69cc5a6df93471a3455083bb7c6b", null ], + [ "kInt", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda85bd9103b3bbb3a0f1f66949fea50952", null ], + [ "kUInt", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda4ea55b31fb308080d00de2437717a13c", null ], + [ "kFloat", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdab133726c8e281b1f873b68d28652cbaf", null ], + [ "kDouble", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2b55c7ccdc00fd1d99247cf4c22283fd", null ], + [ "kStr", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdac20f34d5dd5370a8aeb9665c465417dc", null ], + [ "kCharArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdafecb2dc57006c548e5ab0b59f2062c29", null ], + [ "kUCharArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda6ae60f887effac25862b2e70692aabe4", null ], + [ "kShortArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2e9032fc740ad542d18512b5b0d57a6f", null ], + [ "kUShortArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2c7450a1f1cf76ef9018e86d3d422245", null ], + [ "kIntArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda5e558d8d7cb6b8791c58a0eb3ff46e5c", null ], + [ "kUIntArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda1b015c8ec9bcab8fca0734749cba4f3d", null ], + [ "kFloatArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda11179285157ee27026c6b7a3a257dec2", null ], + [ "kDoubleArray", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda572a22c911f2d6525d10d6fec2371a7b", null ], + [ "kUndef", "classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda4592761da391696a37f01f792c65f750", null ] + ] ], + [ "UVariant", "classUVariant.html#af210833caf9715d7678fb6d64dddf599", null ], + [ "UVariant", "classUVariant.html#a98f1bc68af62d433f2946cab87fc520c", null ], + [ "UVariant", "classUVariant.html#ae0939524a0c68004804381492aaab285", null ], + [ "UVariant", "classUVariant.html#a66f79ef197d7a9fb87781073b44ed426", null ], + [ "UVariant", "classUVariant.html#a5253c21485672e2e20149db1661ffc64", null ], + [ "UVariant", "classUVariant.html#a3f893e4ec4714cb594e88eb6ee421a0b", null ], + [ "UVariant", "classUVariant.html#a896511df83bbcc6d2892902b83495bae", null ], + [ "UVariant", "classUVariant.html#a30476f11f550fdb86f97f30f9a34d042", null ], + [ "UVariant", "classUVariant.html#aae15560cd7d827b4df20ca93e73e488d", null ], + [ "UVariant", "classUVariant.html#a17a521fb10da7564bf5104c717ea977c", null ], + [ "UVariant", "classUVariant.html#a0c4434b8a0e3d8d5a13967196ef75c9d", null ], + [ "UVariant", "classUVariant.html#a0f29e416edccd2af78192288bb7ca884", null ], + [ "UVariant", "classUVariant.html#a77de7639a21b4002f6c4c8f765db9748", null ], + [ "UVariant", "classUVariant.html#a709722d8603fdb5208f5853073c0557b", null ], + [ "UVariant", "classUVariant.html#a7ecbf63121fc31f094534293a05af6f3", null ], + [ "UVariant", "classUVariant.html#a66b347ecdbdcd3b9bb6675d3a5040e26", null ], + [ "UVariant", "classUVariant.html#a2054869e20d561d129fa2cfbd0dbe923", null ], + [ "UVariant", "classUVariant.html#ad71bbca096fb06dfe1009105c6546c78", null ], + [ "UVariant", "classUVariant.html#abb4dcb9be13b81f672c2012e09234be9", null ], + [ "UVariant", "classUVariant.html#ad5517ddcc64a521f2bb6079d568a6029", null ], + [ "~UVariant", "classUVariant.html#aeeaef6c17460567dec089740e276f50a", null ], + [ "type", "classUVariant.html#a4fa9e6607b2d99ba03d09bd39f42da4f", null ], + [ "isUndef", "classUVariant.html#aa33dc5850071f73864c280bd1d4e743b", null ], + [ "isBool", "classUVariant.html#a1f5b265f0e4569021bd6bc212cae91f7", null ], + [ "isChar", "classUVariant.html#a644e3deffa081cacfdadddc1f504e6b6", null ], + [ "isUChar", "classUVariant.html#af94e47d3da5a0ba9d605359ef843e5d4", null ], + [ "isShort", "classUVariant.html#a611898d77468fdb704aeaf20f5ebc5df", null ], + [ "isUShort", "classUVariant.html#a87d098e60871ec85d179528d0a7bdc88", null ], + [ "isInt", "classUVariant.html#a4a22ee60a869140c36f80ff04f90c07b", null ], + [ "isUInt", "classUVariant.html#aed53240d0ec77aca65317988753412dd", null ], + [ "isFloat", "classUVariant.html#a2d5757424cf7e69ede4564b82a7ab95c", null ], + [ "isDouble", "classUVariant.html#a3b9f099698afa0716564960cce359a60", null ], + [ "isStr", "classUVariant.html#af431bdd37ebae79c5b778d66ad08cf50", null ], + [ "isCharArray", "classUVariant.html#ab17409bb37beec9c62defdbe398dfe8b", null ], + [ "isUCharArray", "classUVariant.html#a66c02a68f48cab8c2952ebae7181b164", null ], + [ "isShortArray", "classUVariant.html#a671286922d321c4da699d4cebca3ca44", null ], + [ "isUShortArray", "classUVariant.html#a006cef10aa4c95539d0cd9d574de747d", null ], + [ "isIntArray", "classUVariant.html#aa09528d4c1668a2dff51b0f12b3b1de3", null ], + [ "isUIntArray", "classUVariant.html#af31b8bdca6cb78ebd3f8f6e97e895442", null ], + [ "isFloatArray", "classUVariant.html#a94c1a6cbd6c39968801cc4116bae3c55", null ], + [ "isDoubleArray", "classUVariant.html#aa0a91a91288b102857ebc978767d71c4", null ], + [ "toBool", "classUVariant.html#aef09280be48b33bcc066de2a636be31f", null ], + [ "toChar", "classUVariant.html#aa2efe71a7dbf953c26134281c815c489", null ], + [ "toUChar", "classUVariant.html#a1791fbefb946a8803f87f5049135eea7", null ], + [ "toShort", "classUVariant.html#acd84cd8b255640810073c10331cf13b6", null ], + [ "toUShort", "classUVariant.html#a5e6282c19acb4de5a29f55143d451f60", null ], + [ "toInt", "classUVariant.html#aad652810c6faa5e0497049157b5b2a10", null ], + [ "toUInt", "classUVariant.html#aa129ebd6447838c1584145e843e6c4e8", null ], + [ "toFloat", "classUVariant.html#a193ad2132d39551e780f813f38b174f1", null ], + [ "toDouble", "classUVariant.html#a4c4ce1241a89ab635c0cdb04b3f3b0e9", null ], + [ "toStr", "classUVariant.html#a67cc47b07b28108ae018790073541438", null ], + [ "toCharArray", "classUVariant.html#ae51189767aa02abd8a538b183f95f993", null ], + [ "toUCharArray", "classUVariant.html#ab7346a22ad30fb42e3b0e1750f6ba8e6", null ], + [ "toShortArray", "classUVariant.html#abae96c1d3abc90aea321a460d63250cb", null ], + [ "toUShortArray", "classUVariant.html#a40b1bccc560ab55190d3608ea0115bb2", null ], + [ "toIntArray", "classUVariant.html#a8ee57d98adc4f8c2798c3ba1b86f54b1", null ], + [ "toUIntArray", "classUVariant.html#ad0aa83f26922b59194e69312ee771173", null ], + [ "toFloatArray", "classUVariant.html#acf89922efcc2fc0bea692623c8de4f8c", null ], + [ "toDoubleArray", "classUVariant.html#a2b36afe6bf8f22f4e46d31596a2bbf74", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel-members.html b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel-members.html new file mode 100644 index 00000000..c62c1538 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel-members.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
clams::DiscreteDepthDistortionModel Member List
+
+
+ +

This is the complete list of members for clams::DiscreteDepthDistortionModel, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulate(const cv::Mat &ground_truth, const cv::Mat &measurement)clams::DiscreteDepthDistortionModel
addExample(int v, int u, double ground_truth, double measurement) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
bin_depth_clams::DiscreteDepthDistortionModelprotected
bin_height_clams::DiscreteDepthDistortionModelprotected
bin_width_clams::DiscreteDepthDistortionModelprotected
deleteFrustums() (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelprotected
deserialize(std::istream &in, bool ascii) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
DiscreteDepthDistortionModel() (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelinline
DiscreteDepthDistortionModel(int width, int height, int bin_width=8, int bin_height=6, double bin_depth=2.0, int smoothing=1, double max_depth=10.0) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
DiscreteDepthDistortionModel(const DiscreteDepthDistortionModel &other) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
frustum(int y, int x) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelprotected
frustum(int y, int x) const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelprotected
frustums_clams::DiscreteDepthDistortionModelprotected
getBinSize(const size_t &width, const size_t &height, size_t &bin_width, size_t &bin_height) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelstatic
getClosestToRef(const std::set< size_t > &divisors, const double &ref) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelstatic
getDivisors(const size_t &num) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelstatic
getHeight() const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelinline
getTrainingSamples() const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelinline
getWidth() const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelinline
height_clams::DiscreteDepthDistortionModelprotected
isValid() const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelinline
load(const std::string &path) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
mutex_ (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelprotected
num_bins_x_ (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelprotected
num_bins_y_ (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelprotected
operator=(const DiscreteDepthDistortionModel &other) (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
save(const std::string &path) const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
serialize(std::ostream &out, bool ascii) const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
training_samples_ (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelprotected
undistort(cv::Mat &depth) const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
visualize(const std::string &path="") const (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModel
width_clams::DiscreteDepthDistortionModelprotected
~DiscreteDepthDistortionModel() (defined in clams::DiscreteDepthDistortionModel)clams::DiscreteDepthDistortionModelvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.html b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.html new file mode 100644 index 00000000..c9c1a203 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.html @@ -0,0 +1,652 @@ + + + + + + + + +RTAB-Map: clams::DiscreteDepthDistortionModel Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Collaboration diagram for clams::DiscreteDepthDistortionModel:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ DiscreteDepthDistortionModel (int width, int height, int bin_width=8, int bin_height=6, double bin_depth=2.0, int smoothing=1, double max_depth=10.0)
 
+ DiscreteDepthDistortionModel (const DiscreteDepthDistortionModel &other)
 
+DiscreteDepthDistortionModel & operator= (const DiscreteDepthDistortionModel &other)
 
+void undistort (cv::Mat &depth) const
 
size_t accumulate (const cv::Mat &ground_truth, const cv::Mat &measurement)
 
+void addExample (int v, int u, double ground_truth, double measurement)
 
+void save (const std::string &path) const
 
+void load (const std::string &path)
 
+void serialize (std::ostream &out, bool ascii) const
 
+void deserialize (std::istream &in, bool ascii)
 
+cv::Mat visualize (const std::string &path="") const
 
int getWidth () const
 
int getHeight () const
 
size_t getTrainingSamples () const
 
bool isValid () const
 
+ + + + + + + +

+Static Public Member Functions

+static std::set< size_t > getDivisors (const size_t &num)
 
+static size_t getClosestToRef (const std::set< size_t > &divisors, const double &ref)
 
+static void getBinSize (const size_t &width, const size_t &height, size_t &bin_width, size_t &bin_height)
 
+ + + + + + + +

+Protected Member Functions

+void deleteFrustums ()
 
+DiscreteFrustum & frustum (int y, int x)
 
+const DiscreteFrustum & frustum (int y, int x) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

int width_
 Image width.
 
int height_
 Image height.
 
int bin_width_
 Width of each bin in pixels.
 
int bin_height_
 Height of each bin in pixels.
 
double bin_depth_
 Depth of each bin in meters.
 
int num_bins_x_
 
int num_bins_y_
 
std::vector< std::vector< DiscreteFrustum * > > frustums_
 frustums_[y][x]
 
size_t training_samples_
 
UMutex mutex_
 
+

Detailed Description

+
+

Definition at line 68 of file discrete_depth_distortion_model.h.

+

Constructor & Destructor Documentation

+ +

◆ DiscreteDepthDistortionModel()

+ +
+
+ + + + + +
+ + + + + + + +
clams::DiscreteDepthDistortionModel::DiscreteDepthDistortionModel ()
+
+inline
+
+ +

Definition at line 81 of file discrete_depth_distortion_model.h.

+ +
+
+

Member Function Documentation

+ +

◆ accumulate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t clams::DiscreteDepthDistortionModel::accumulate (const cv::Mat & ground_truth,
const cv::Mat & measurement 
)
+
+

Returns the number of training examples it used from this pair. Thread-safe.

+ +
+
+ +

◆ getWidth()

+ +
+
+ + + + + +
+ + + + + + + +
int clams::DiscreteDepthDistortionModel::getWidth () const
+
+inline
+
+ +

Definition at line 106 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ getHeight()

+ +
+
+ + + + + +
+ + + + + + + +
int clams::DiscreteDepthDistortionModel::getHeight () const
+
+inline
+
+ +

Definition at line 107 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ getTrainingSamples()

+ +
+
+ + + + + +
+ + + + + + + +
size_t clams::DiscreteDepthDistortionModel::getTrainingSamples () const
+
+inline
+
+ +

Definition at line 108 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ isValid()

+ +
+
+ + + + + +
+ + + + + + + +
bool clams::DiscreteDepthDistortionModel::isValid () const
+
+inline
+
+ +

Definition at line 109 of file discrete_depth_distortion_model.h.

+ +
+
+

Member Data Documentation

+ +

◆ width_

+ +
+
+ + + + + +
+ + + + +
int clams::DiscreteDepthDistortionModel::width_
+
+protected
+
+ +

Image width.

+ +

Definition at line 116 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ height_

+ +
+
+ + + + + +
+ + + + +
int clams::DiscreteDepthDistortionModel::height_
+
+protected
+
+ +

Image height.

+ +

Definition at line 118 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ bin_width_

+ +
+
+ + + + + +
+ + + + +
int clams::DiscreteDepthDistortionModel::bin_width_
+
+protected
+
+ +

Width of each bin in pixels.

+ +

Definition at line 120 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ bin_height_

+ +
+
+ + + + + +
+ + + + +
int clams::DiscreteDepthDistortionModel::bin_height_
+
+protected
+
+ +

Height of each bin in pixels.

+ +

Definition at line 122 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ bin_depth_

+ +
+
+ + + + + +
+ + + + +
double clams::DiscreteDepthDistortionModel::bin_depth_
+
+protected
+
+ +

Depth of each bin in meters.

+ +

Definition at line 124 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ num_bins_x_

+ +
+
+ + + + + +
+ + + + +
int clams::DiscreteDepthDistortionModel::num_bins_x_
+
+protected
+
+ +

Definition at line 125 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ num_bins_y_

+ +
+
+ + + + + +
+ + + + +
int clams::DiscreteDepthDistortionModel::num_bins_y_
+
+protected
+
+ +

Definition at line 126 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ frustums_

+ +
+
+ + + + + +
+ + + + +
std::vector< std::vector<DiscreteFrustum*> > clams::DiscreteDepthDistortionModel::frustums_
+
+protected
+
+ +

frustums_[y][x]

+ +

Definition at line 128 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ training_samples_

+ +
+
+ + + + + +
+ + + + +
size_t clams::DiscreteDepthDistortionModel::training_samples_
+
+protected
+
+ +

Definition at line 130 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ mutex_

+ +
+
+ + + + + +
+ + + + +
UMutex clams::DiscreteDepthDistortionModel::mutex_
+
+protected
+
+ +

Definition at line 136 of file discrete_depth_distortion_model.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.js b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.js new file mode 100644 index 00000000..f2227257 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel.js @@ -0,0 +1,10 @@ +var classclams_1_1DiscreteDepthDistortionModel = +[ + [ "accumulate", "classclams_1_1DiscreteDepthDistortionModel.html#ab9b7555fbf710706d7b94dfcb9ed6399", null ], + [ "width_", "classclams_1_1DiscreteDepthDistortionModel.html#a7de0c7b8a5db34270645b6454f74392c", null ], + [ "height_", "classclams_1_1DiscreteDepthDistortionModel.html#aa1b8d43b1fa2120bd4b711468d9457b1", null ], + [ "bin_width_", "classclams_1_1DiscreteDepthDistortionModel.html#acbc26d0d0feddc1a7f27eca81b39dd20", null ], + [ "bin_height_", "classclams_1_1DiscreteDepthDistortionModel.html#ae74671d8a3dd71c5fa3f3b44d163ba0c", null ], + [ "bin_depth_", "classclams_1_1DiscreteDepthDistortionModel.html#a1bd63eed7f9ca2759dcf4975b4f2f951", null ], + [ "frustums_", "classclams_1_1DiscreteDepthDistortionModel.html#a21e2cb0d6cb694629231405ca67f00a1", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.map b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.map new file mode 100644 index 00000000..b4138995 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.md5 b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.md5 new file mode 100644 index 00000000..e93e4f18 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.md5 @@ -0,0 +1 @@ +bb338278c28d5aefe5c96975724687f4 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.png b/preview/pr-1773/api/latest/classclams_1_1DiscreteDepthDistortionModel__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b71c6f97d0f0e1b69ddeb279f64b2093da85eccf GIT binary patch literal 6020 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum-members.html b/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum-members.html new file mode 100644 index 00000000..ab67342e --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum-members.html @@ -0,0 +1,131 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
clams::DiscreteFrustum Member List
+
+
+ +

This is the complete list of members for clams::DiscreteFrustum, including all inherited members.

+ + + + + + + + + + + + + + + + +
addExample(double ground_truth, double measurement)clams::DiscreteFrustum
bin_depth_ (defined in clams::DiscreteFrustum)clams::DiscreteFrustumprotected
counts_ (defined in clams::DiscreteFrustum)clams::DiscreteFrustumprotected
deserialize(std::istream &in, bool ascii) (defined in clams::DiscreteFrustum)clams::DiscreteFrustum
DiscreteDepthDistortionModel (defined in clams::DiscreteFrustum)clams::DiscreteFrustumfriend
DiscreteFrustum(int smoothing=1, double bin_depth=1.0, double max_dist=10.0) (defined in clams::DiscreteFrustum)clams::DiscreteFrustum
index(double z) const (defined in clams::DiscreteFrustum)clams::DiscreteFrustum
interpolatedUndistort(double *z) const (defined in clams::DiscreteFrustum)clams::DiscreteFrustum
max_dist_ (defined in clams::DiscreteFrustum)clams::DiscreteFrustumprotected
multipliers_ (defined in clams::DiscreteFrustum)clams::DiscreteFrustumprotected
num_bins_ (defined in clams::DiscreteFrustum)clams::DiscreteFrustumprotected
serialize(std::ostream &out, bool ascii) const (defined in clams::DiscreteFrustum)clams::DiscreteFrustum
total_denominators_ (defined in clams::DiscreteFrustum)clams::DiscreteFrustumprotected
total_numerators_ (defined in clams::DiscreteFrustum)clams::DiscreteFrustumprotected
undistort(double *z) const (defined in clams::DiscreteFrustum)clams::DiscreteFrustum
+
+ + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.html b/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.html new file mode 100644 index 00000000..d5419952 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.html @@ -0,0 +1,395 @@ + + + + + + + + +RTAB-Map: clams::DiscreteFrustum Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
clams::DiscreteFrustum Class Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Member Functions

+ DiscreteFrustum (int smoothing=1, double bin_depth=1.0, double max_dist=10.0)
 
void addExample (double ground_truth, double measurement)
 
+int index (double z) const
 
+void undistort (double *z) const
 
+void interpolatedUndistort (double *z) const
 
+void serialize (std::ostream &out, bool ascii) const
 
+void deserialize (std::istream &in, bool ascii)
 
+ + + + + + + + + + + + + + + +

+Protected Attributes

double max_dist_
 
int num_bins_
 
double bin_depth_
 
Eigen::VectorXf counts_
 
Eigen::VectorXf total_numerators_
 
Eigen::VectorXf total_denominators_
 
Eigen::VectorXf multipliers_
 
+ + + +

+Friends

class DiscreteDepthDistortionModel
 
+

Detailed Description

+
+

Definition at line 43 of file discrete_depth_distortion_model.h.

+

Member Function Documentation

+ +

◆ addExample()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void clams::DiscreteFrustum::addExample (double ground_truth,
double measurement 
)
+
+

z value, not distance to origin. thread-safe.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ DiscreteDepthDistortionModel

+ +
+
+ + + + + +
+ + + + +
friend class DiscreteDepthDistortionModel
+
+friend
+
+ +

Definition at line 65 of file discrete_depth_distortion_model.h.

+ +
+
+

Member Data Documentation

+ +

◆ max_dist_

+ +
+
+ + + + + +
+ + + + +
double clams::DiscreteFrustum::max_dist_
+
+protected
+
+ +

Definition at line 57 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ num_bins_

+ +
+
+ + + + + +
+ + + + +
int clams::DiscreteFrustum::num_bins_
+
+protected
+
+ +

Definition at line 58 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ bin_depth_

+ +
+
+ + + + + +
+ + + + +
double clams::DiscreteFrustum::bin_depth_
+
+protected
+
+ +

Definition at line 59 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ counts_

+ +
+
+ + + + + +
+ + + + +
Eigen::VectorXf clams::DiscreteFrustum::counts_
+
+protected
+
+ +

Definition at line 60 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ total_numerators_

+ +
+
+ + + + + +
+ + + + +
Eigen::VectorXf clams::DiscreteFrustum::total_numerators_
+
+protected
+
+ +

Definition at line 61 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ total_denominators_

+ +
+
+ + + + + +
+ + + + +
Eigen::VectorXf clams::DiscreteFrustum::total_denominators_
+
+protected
+
+ +

Definition at line 62 of file discrete_depth_distortion_model.h.

+ +
+
+ +

◆ multipliers_

+ +
+
+ + + + + +
+ + + + +
Eigen::VectorXf clams::DiscreteFrustum::multipliers_
+
+protected
+
+ +

Definition at line 63 of file discrete_depth_distortion_model.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.js b/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.js new file mode 100644 index 00000000..7f3794d5 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1DiscreteFrustum.js @@ -0,0 +1,4 @@ +var classclams_1_1DiscreteFrustum = +[ + [ "addExample", "classclams_1_1DiscreteFrustum.html#aef183fc7d90c0a6ba3245bccf9fbb616", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classclams_1_1FrameProjector-members.html b/preview/pr-1773/api/latest/classclams_1_1FrameProjector-members.html new file mode 100644 index 00000000..a05cebdd --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1FrameProjector-members.html @@ -0,0 +1,123 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
clams::FrameProjector Member List
+
+
+ +

This is the complete list of members for clams::FrameProjector, including all inherited members.

+ + + + + + + + +
cloudToRangeIndex(const pcl::PointCloud< pcl::PointXYZ >::Ptr &pcd) const (defined in clams::FrameProjector)clams::FrameProjector
coneFit(const cv::Size &imageSize, const RangeIndex &rindex, int uc, int vc, double radius, double measurement_depth, double *mean, double *stdev) const (defined in clams::FrameProjector)clams::FrameProjectorprotected
estimateMapDepth(const pcl::PointCloud< pcl::PointXYZ >::Ptr &map, const rtabmap::Transform &transform, const cv::Mat &measurement, double coneRadius=0.02, double coneStdevThresh=0.03) constclams::FrameProjector
FrameProjector(const rtabmap::CameraModel &model) (defined in clams::FrameProjector)clams::FrameProjector
project(const ProjectivePoint &ppt) const (defined in clams::FrameProjector)clams::FrameProjector
RangeIndex typedef (defined in clams::FrameProjector)clams::FrameProjector
reproject(const pcl::PointXYZ &pt) const (defined in clams::FrameProjector)clams::FrameProjector
+
+ + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1FrameProjector.html b/preview/pr-1773/api/latest/classclams_1_1FrameProjector.html new file mode 100644 index 00000000..072e07c9 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1FrameProjector.html @@ -0,0 +1,222 @@ + + + + + + + + +RTAB-Map: clams::FrameProjector Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
clams::FrameProjector Class Reference
+
+
+ +

#include <frame_projector.h>

+ + + + +

+Public Types

typedef std::vector< std::vector< std::vector< double > > > RangeIndex
 
+ + + + + + + + + + + +

+Public Member Functions

+ FrameProjector (const rtabmap::CameraModel &model)
 
+RangeIndex cloudToRangeIndex (const pcl::PointCloud< pcl::PointXYZ >::Ptr &pcd) const
 
cv::Mat estimateMapDepth (const pcl::PointCloud< pcl::PointXYZ >::Ptr &map, const rtabmap::Transform &transform, const cv::Mat &measurement, double coneRadius=0.02, double coneStdevThresh=0.03) const
 
+pcl::PointXYZ project (const ProjectivePoint &ppt) const
 
+ProjectivePoint reproject (const pcl::PointXYZ &pt) const
 
+ + + +

+Protected Member Functions

+bool coneFit (const cv::Size &imageSize, const RangeIndex &rindex, int uc, int vc, double radius, double measurement_depth, double *mean, double *stdev) const
 
+

Detailed Description

+

This is essentially a pinhole camera model for an RGBD sensor, with some extra functions added on for use during calibration.

+ +

Definition at line 62 of file frame_projector.h.

+

Member Typedef Documentation

+ +

◆ RangeIndex

+ +
+
+ + + + +
typedef std::vector< std::vector< std::vector<double> > > clams::FrameProjector::RangeIndex
+
+ +

Definition at line 66 of file frame_projector.h.

+ +
+
+

Member Function Documentation

+ +

◆ estimateMapDepth()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cv::Mat clams::FrameProjector::estimateMapDepth (const pcl::PointCloud< pcl::PointXYZ >::Ptr & map,
const rtabmap::Transform & transform,
const cv::Mat & measurement,
double coneRadius = 0.02,
double coneStdevThresh = 0.03 
) const
+
+

transform is applied to the map, then projected into a depth index. The best depth estimate from the map corresponding to the measurement depth frame will be returned.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1FrameProjector.js b/preview/pr-1773/api/latest/classclams_1_1FrameProjector.js new file mode 100644 index 00000000..7d6e3bd6 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1FrameProjector.js @@ -0,0 +1,4 @@ +var classclams_1_1FrameProjector = +[ + [ "estimateMapDepth", "classclams_1_1FrameProjector.html#a26c74a7a7f6f6e9c2e18d6a38693699c", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classclams_1_1ProjectivePoint-members.html b/preview/pr-1773/api/latest/classclams_1_1ProjectivePoint-members.html new file mode 100644 index 00000000..daf8f783 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1ProjectivePoint-members.html @@ -0,0 +1,120 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
clams::ProjectivePoint Member List
+
+
+ +

This is the complete list of members for clams::ProjectivePoint, including all inherited members.

+ + + + + +
ProjectivePoint() (defined in clams::ProjectivePoint)clams::ProjectivePointinline
u_ (defined in clams::ProjectivePoint)clams::ProjectivePoint
v_ (defined in clams::ProjectivePoint)clams::ProjectivePoint
z_ (defined in clams::ProjectivePoint)clams::ProjectivePoint
+
+ + + + diff --git a/preview/pr-1773/api/latest/classclams_1_1ProjectivePoint.html b/preview/pr-1773/api/latest/classclams_1_1ProjectivePoint.html new file mode 100644 index 00000000..b613f778 --- /dev/null +++ b/preview/pr-1773/api/latest/classclams_1_1ProjectivePoint.html @@ -0,0 +1,213 @@ + + + + + + + + +RTAB-Map: clams::ProjectivePoint Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
clams::ProjectivePoint Class Reference
+
+
+ +

#include <frame_projector.h>

+ + + + + + + + +

+Public Attributes

int u_
 
int v_
 
float z_
 
+

Detailed Description

+

"Projective" point comes from the OpenNI terminology, and refers to (u, v, z), i.e. pixel id and depth value. Here I've added color, too, so that this represents everything that is known about a pixel in an RBGD camera.

+ +

Definition at line 47 of file frame_projector.h.

+

Constructor & Destructor Documentation

+ +

◆ ProjectivePoint()

+ +
+
+ + + + + +
+ + + + + + + +
clams::ProjectivePoint::ProjectivePoint ()
+
+inline
+
+ +

Definition at line 50 of file frame_projector.h.

+ +
+
+

Member Data Documentation

+ +

◆ u_

+ +
+
+ + + + +
int clams::ProjectivePoint::u_
+
+ +

Definition at line 55 of file frame_projector.h.

+ +
+
+ +

◆ v_

+ +
+
+ + + + +
int clams::ProjectivePoint::v_
+
+ +

Definition at line 56 of file frame_projector.h.

+ +
+
+ +

◆ z_

+ +
+
+ + + + +
float clams::ProjectivePoint::z_
+
+ +

Definition at line 57 of file frame_projector.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classes.html b/preview/pr-1773/api/latest/classes.html new file mode 100644 index 00000000..b0ca5792 --- /dev/null +++ b/preview/pr-1773/api/latest/classes.html @@ -0,0 +1,167 @@ + + + + + + + + +RTAB-Map: Class Index + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
B | C | D | E | F | G | I | K | L | M | O | P | R | S | T | U | V
+
+
+
B
+
BayesFilter (rtabmap)
BRISK (rtabmap)
+
+
C
+
Camera (rtabmap)
CameraDepthAI (rtabmap)
CameraFreenect (rtabmap)
CameraFreenect2 (rtabmap)
CameraImages (rtabmap)
CameraK4A (rtabmap)
CameraK4W2 (rtabmap)
CameraModel (rtabmap)
CameraMyntEye (rtabmap)
CameraOpenni (rtabmap)
CameraOpenNI2 (rtabmap)
CameraOpenNICV (rtabmap)
CameraOrbbecSDK (rtabmap)
CameraRealSense (rtabmap)
CameraRealSense2 (rtabmap)
CameraRGBDImages (rtabmap)
CameraSeerSense (rtabmap)
CameraStereoDC1394 (rtabmap)
CameraStereoFlyCapture2 (rtabmap)
CameraStereoImages (rtabmap)
CameraStereoTara (rtabmap)
CameraStereoVideo (rtabmap)
CameraStereoZed (rtabmap)
CameraStereoZedOC (rtabmap)
CameraVideo (rtabmap)
CloudMap (rtabmap)
CompressionThread (rtabmap)
+
+
D
+
DBDriver (rtabmap)
DBDriverSqlite3 (rtabmap)
DBReader (rtabmap)
DiscreteDepthDistortionModel (clams)
DiscreteFrustum (clams)
+
+
E
+
EnvSensor (rtabmap)
EpipolarGeometry (rtabmap)
+
+
F
+
FAST (rtabmap)
FAST_BRIEF (rtabmap)
FAST_FREAK (rtabmap)
Feature2D (rtabmap)
FeatureBA (rtabmap)
FlannIndex (rtabmap)
FrameProjector (clams)
+
+
G
+
GainCompensator (rtabmap)
GeodeticCoords (rtabmap)
GFTT (rtabmap)
GFTT_BRIEF (rtabmap)
GFTT_DAISY (rtabmap)
GFTT_FREAK (rtabmap)
GFTT_ORB (rtabmap)
GlobalDescriptor (rtabmap)
GlobalDescriptorExtractor (rtabmap)
GlobalMap (rtabmap)
GPS (rtabmap)
GridMap (rtabmap)
+
+
I
+
IMU (rtabmap)
IMUEvent (rtabmap)
IMUFilter (rtabmap)
IMUThread (rtabmap)
+
+
K
+
KAZE (rtabmap)
+
+
L
+
Landmark (rtabmap)
LaserScan (rtabmap)
Lidar (rtabmap)
LidarVLP16 (rtabmap)
Link (rtabmap)
LocalGrid (rtabmap)
LocalGridCache (rtabmap)
LocalGridMaker (rtabmap)
+
+
M
+
MarkerDetector (rtabmap)
MarkerInfo (rtabmap)
MaxGraphErrors (rtabmap::graph)
Memory (rtabmap)
+
+
O
+
OccupancyGrid (rtabmap)
OctoMap (rtabmap)
Odometry (rtabmap)
OdometryCuVSLAM (rtabmap)
OdometryDVO (rtabmap)
OdometryEvent (rtabmap)
OdometryF2F (rtabmap)
OdometryF2M (rtabmap)
OdometryFLOAM (rtabmap)
OdometryFovis (rtabmap)
OdometryInfo (rtabmap)
OdometryLIOSAM (rtabmap)
OdometryLOAM (rtabmap)
OdometryMono (rtabmap)
OdometryMSCKF (rtabmap)
OdometryOkvis (rtabmap)
OdometryOpen3D (rtabmap)
OdometryOpenVINS (rtabmap)
OdometryORBSLAM2 (rtabmap)
OdometryORBSLAM3 (rtabmap)
OdometryResetEvent (rtabmap)
OdometryThread (rtabmap)
OdometryVINSFusion (rtabmap)
OdometryViso2 (rtabmap)
Optimizer (rtabmap)
OptimizerCeres (rtabmap)
OptimizerCVSBA (rtabmap)
OptimizerG2O (rtabmap)
OptimizerGTSAM (rtabmap)
OptimizerTORO (rtabmap)
ORB (rtabmap)
ORBOctree (rtabmap)
+
+
P
+
Parameters (rtabmap)
ParamEvent (rtabmap)
ParticleFilter (rtabmap)
PointXYZIRT (rtabmap)
PointXYZIT (rtabmap)
ProgressState (rtabmap)
ProjectivePoint (clams)
PythonInterface (rtabmap)
+
+
R
+
Registration (rtabmap)
RegistrationIcp (rtabmap)
RegistrationInfo (rtabmap)
RegistrationVis (rtabmap)
Rtabmap (rtabmap)
RtabmapColorOcTree (rtabmap)
RtabmapColorOcTreeNode (rtabmap)
RtabmapEvent (rtabmap)
RtabmapEvent3DMap (rtabmap)
RtabmapEventCmd (rtabmap)
RtabmapEventInit (rtabmap)
RtabmapGlobalPathEvent (rtabmap)
RtabmapGoalStatusEvent (rtabmap)
RtabmapLabelErrorEvent (rtabmap)
RtabmapThread (rtabmap)
RvlCodec (rtabmap)
+
+
S
+
SensorCapture (rtabmap)
SensorCaptureInfo (rtabmap)
SensorCaptureThread (rtabmap)
SensorData (rtabmap)
SensorEvent (rtabmap)
SIFT (rtabmap)
Signature (rtabmap)
RtabmapColorOcTree::StaticMemberInitializer (rtabmap)
Statistics (rtabmap)
Stereo (rtabmap)
StereoBM (rtabmap)
StereoCameraModel (rtabmap)
StereoDense (rtabmap)
StereoOpticalFlow (rtabmap)
StereoSGBM (rtabmap)
SuperPointRpautrat (rtabmap)
SuperPointTorch (rtabmap)
SURF (rtabmap)
SURF_DAISY (rtabmap)
SURF_FREAK (rtabmap)
+
+
T
+
Transform (rtabmap)
TransformStamped (rtabmap)
+
+
U
+
UDestroyer
UDirectory
UEvent
UEventDispatcher
UEventsHandler
UEventsManager
UEventsSender
UException
UFile
ULogEvent
ULogger
UMutex
UObjDeletedEvent
UObjDeletionThread
UProcessInfo
UScopeMutex
USemaphore
UserDataEvent (rtabmap)
UThread
UThreadC
UThreadC< void >
UTimer
UVariant
+
+
V
+
VisualWord (rtabmap)
VWDictionary (rtabmap)
+
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK-members.html new file mode 100644 index 00000000..88125470 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::BRISK Member List
+
+
+ +

This is the complete list of members for rtabmap::BRISK, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BRISK(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::BRISK)rtabmap::BRISK
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::BRISK)rtabmap::BRISKinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() constrtabmap::Feature2Dinlinevirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::BRISK)rtabmap::BRISKvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~BRISK() (defined in rtabmap::BRISK)rtabmap::BRISKvirtual
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK.html b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK.html new file mode 100644 index 00000000..a9fe2e86 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK.html @@ -0,0 +1,339 @@ + + + + + + + + +RTAB-Map: rtabmap::BRISK Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::BRISK Class Reference
+
+
+ +

BRISK detector and descriptor. + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::BRISK:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::BRISK:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ BRISK (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
virtual bool isGpuAvailable () const
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

BRISK detector and descriptor.

+ +

Definition at line 598 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::BRISK::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::BRISK::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 605 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.map new file mode 100644 index 00000000..acf5cc84 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.md5 new file mode 100644 index 00000000..c8b1a70e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.md5 @@ -0,0 +1 @@ +856132462a20ceb7b7cc029e96986ebf \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8200332bb5c7139197433591f08151d2267f475d GIT binary patch literal 4418 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.map new file mode 100644 index 00000000..acf5cc84 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.md5 new file mode 100644 index 00000000..c8b1a70e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.md5 @@ -0,0 +1 @@ +856132462a20ceb7b7cc029e96986ebf \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1BRISK__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8200332bb5c7139197433591f08151d2267f475d GIT binary patch literal 4418 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter-members.html new file mode 100644 index 00000000..b56f4d7a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter-members.html @@ -0,0 +1,130 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::BayesFilter Member List
+
+
+ +

This is the complete list of members for rtabmap::BayesFilter, including all inherited members.

+ + + + + + + + + + + + + + + +
BayesFilter(const ParametersMap &parameters=ParametersMap())rtabmap::BayesFilter
computePosterior(const Memory *memory, const std::map< int, float > &likelihood)rtabmap::BayesFilter
generatePrediction(const Memory *memory, const std::vector< int > &ids)rtabmap::BayesFilter
getMemoryUsed() constrtabmap::BayesFilter
getPosteriorIds() constrtabmap::BayesFilterinline
getPosteriorValues() constrtabmap::BayesFilterinline
getPredictionLC() constrtabmap::BayesFilter
getPredictionLCStr() constrtabmap::BayesFilter
getVirtualPlacePrior() constrtabmap::BayesFilter
isPredictionSparse() constrtabmap::BayesFilter
parseParameters(const ParametersMap &parameters)rtabmap::BayesFiltervirtual
reset()rtabmap::BayesFilter
setPredictionLC(const std::string &prediction)rtabmap::BayesFilter
~BayesFilter() (defined in rtabmap::BayesFilter)rtabmap::BayesFiltervirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.html b/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.html new file mode 100644 index 00000000..380ab505 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.html @@ -0,0 +1,521 @@ + + + + + + + + +RTAB-Map: rtabmap::BayesFilter Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::BayesFilter Class Reference
+
+
+ +

Recursive Bayesian filter for loop-closure hypothesis estimation in RTAB-Map. + More...

+ +

#include <BayesFilter.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BayesFilter (const ParametersMap &parameters=ParametersMap())
 Constructs a Bayes filter with default or custom parameters.
 
virtual void parseParameters (const ParametersMap &parameters)
 Updates internal settings from the parameter map.
 
bool computePosterior (const Memory *memory, const std::map< int, float > &likelihood)
 Runs one Bayes filter iteration (prediction + update).
 
+void reset ()
 Clears posterior, prediction matrix and cached neighbor indices.
 
void setPredictionLC (const std::string &prediction)
 Sets the loop-closure prediction model from a space-separated string.
 
const std::vector< int > & getPosteriorIds () const
 The locations the posterior is over, ascending by id.
 
const std::vector< float > & getPosteriorValues () const
 The probability of each location of getPosteriorIds(), in the same order.
 
float getVirtualPlacePrior () const
 Returns the virtual place prior threshold.
 
bool isPredictionSparse () const
 Whether the prediction is being kept in its sparse form rather than as a matrix.
 
const std::vector< double > & getPredictionLC () const
 Returns the loop-closure prediction model as a vector of values.
 
std::string getPredictionLCStr () const
 Returns the loop-closure prediction model as a space-separated string.
 
cv::Mat generatePrediction (const Memory *memory, const std::vector< int > &ids)
 Builds or updates the prediction (transition) matrix for the given signature ids.
 
unsigned long getMemoryUsed () const
 Estimates memory usage of this object and its internal containers.
 
+

Detailed Description

+

Recursive Bayesian filter for loop-closure hypothesis estimation in RTAB-Map.

+

This class implements the prediction and update steps of a Bayes filter used to estimate the posterior probability over candidate locations (signatures) in working memory. It is typically called by Rtabmap after likelihood values have been computed from visual word comparisons.

+

The filter operates in two steps on each iteration:

    +
  • Prediction: builds a transition matrix from the memory graph and multiplies it with the previous posterior to obtain the prior.
  • +
  • Update: multiplies the prior by the observation likelihood and normalizes the result.
  • +
+

The prediction matrix is built from neighbor relationships in Memory, using a Gaussian-like model configured through Parameters::kBayesPredictionLC(). A virtual place (negative signature id, see Memory::kIdVirtual) represents the hypothesis that the current observation comes from a new location.

+

Related parameters (see Parameters):

+
See also
Memory::getNeighborsId()
+
+Rtabmap
+ +

Definition at line 81 of file BayesFilter.h.

+

Constructor & Destructor Documentation

+ +

◆ BayesFilter()

+ +
+
+ + + + + + + + +
rtabmap::BayesFilter::BayesFilter (const ParametersMap & parameters = ParametersMap())
+
+ +

Constructs a Bayes filter with default or custom parameters.

+
Parameters
+ + +
parametersOptional parameter map (Bayes group keys). Defaults are used for missing keys.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::BayesFilter::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Updates internal settings from the parameter map.

+
Parameters
+ + +
parametersMap containing Bayes group keys.
+
+
+ +
+
+ +

◆ computePosterior()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::BayesFilter::computePosterior (const Memory * memory,
const std::map< int, float > & likelihood 
)
+
+ +

Runs one Bayes filter iteration (prediction + update).

+

Given a likelihood map over signature ids, computes and stores the normalized posterior. The prediction matrix is generated or updated from Memory using the ids present in likelihood.

+

Read the result with getPosteriorIds() and getPosteriorValues().

+
Parameters
+ + + +
memoryWorking memory instance (must not be null).
likelihoodObservation likelihood per signature id (must not be empty).
+
+
+
Returns
False on error (null memory, empty likelihood, or invalid prediction model), the posterior being left unchanged.
+ +
+
+ +

◆ setPredictionLC()

+ +
+
+ + + + + + + + +
void rtabmap::BayesFilter::setPredictionLC (const std::string & prediction)
+
+ +

Sets the loop-closure prediction model from a space-separated string.

+

Format: {Vp, Lc, l1, l2, l3, ...} where:

    +
  • Vp — virtual place probability. This is the probability to move to a new place (unvisited location).
  • +
  • Lc — loop closure (depth 0) probability. This is the probability to stay at the same location.
  • +
  • l1, l2, ... — probabilities for neighbors at increasing graph depth levels. This is the probability to move to a neighbor at the given depth level.
  • +
+

Each value must be in [0, 1]. At least two values are required. Invalid strings are rejected and the previous model is kept.

+
Parameters
+ + +
predictionSpace-separated list of probabilities (same format as Parameters::kBayesPredictionLC()).
+
+
+ +
+
+ +

◆ getPosteriorIds()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< int > & rtabmap::BayesFilter::getPosteriorIds () const
+
+inline
+
+ +

The locations the posterior is over, ascending by id.

+

The virtual place (Memory::kIdVirtual) is the first of them when it is one.

+ +

Definition at line 138 of file BayesFilter.h.

+ +
+
+ +

◆ getPosteriorValues()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< float > & rtabmap::BayesFilter::getPosteriorValues () const
+
+inline
+
+ +

The probability of each location of getPosteriorIds(), in the same order.

+ +

Definition at line 143 of file BayesFilter.h.

+ +
+
+ +

◆ getVirtualPlacePrior()

+ +
+
+ + + + + + + +
float rtabmap::BayesFilter::getVirtualPlacePrior () const
+
+ +

Returns the virtual place prior threshold.

+
Returns
Value in [0, 1] used when building the virtual place row of the prediction matrix.
+ +
+
+ +

◆ isPredictionSparse()

+ +
+
+ + + + + + + +
bool rtabmap::BayesFilter::isPredictionSparse () const
+
+ +

Whether the prediction is being kept in its sparse form rather than as a matrix.

+

False when Parameters::kBayesSparsePrediction() is disabled, and over a model whose values sum to less than 1, which leaves no zero in a column to keep out of the values.

+ +
+
+ +

◆ getPredictionLC()

+ +
+
+ + + + + + + +
const std::vector< double > & rtabmap::BayesFilter::getPredictionLC () const
+
+ +

Returns the loop-closure prediction model as a vector of values.

+
Returns
Vector in the format {Vp, Lc, l1, l2, l3, ...}.
+ +
+
+ +

◆ getPredictionLCStr()

+ +
+
+ + + + + + + +
std::string rtabmap::BayesFilter::getPredictionLCStr () const
+
+ +

Returns the loop-closure prediction model as a space-separated string.

+
Returns
String representation of getPredictionLC().
+ +
+
+ +

◆ generatePrediction()

+ +
+
+ + + + + + + + + + + + + + + + + + +
cv::Mat rtabmap::BayesFilter::generatePrediction (const Memory * memory,
const std::vector< int > & ids 
)
+
+ +

Builds or updates the prediction (transition) matrix for the given signature ids.

+

Rows and columns correspond to ids. Neighbor links are queried from Memory to fill transition probabilities according to getPredictionLC(). When ids match the current posterior keys, the cached matrix may be returned without recomputation.

+

When the prediction is being kept sparse, the matrix is expanded from it rather than kept: it costs the memory that keeping the prediction sparse is saving, so ask for it to read, dump or compare the prediction, not on every iteration.

+
Parameters
+ + + +
memoryWorking memory instance (must not be null).
idsOrdered list of signature ids (often includes Memory::kIdVirtual as first element).
+
+
+
Returns
Square CV_32FC1 matrix of size ids.size() × ids.size().
+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + + + +
unsigned long rtabmap::BayesFilter::getMemoryUsed () const
+
+ +

Estimates memory usage of this object and its internal containers.

+
Returns
Approximate memory footprint in bytes.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.js b/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.js new file mode 100644 index 00000000..c8586eea --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1BayesFilter.js @@ -0,0 +1,16 @@ +var classrtabmap_1_1BayesFilter = +[ + [ "BayesFilter", "classrtabmap_1_1BayesFilter.html#a2955edc4b79110b5bd1bd03f1616056e", null ], + [ "parseParameters", "classrtabmap_1_1BayesFilter.html#a6d7d48b32c853f46eee9290d5c82cd28", null ], + [ "computePosterior", "classrtabmap_1_1BayesFilter.html#aa3ec78130d67d9cca8c2f11c31bc28d2", null ], + [ "reset", "classrtabmap_1_1BayesFilter.html#ad415ee334d31eebc3685e61862f32573", null ], + [ "setPredictionLC", "classrtabmap_1_1BayesFilter.html#a3255a54c1d2fc5b9a6db91fb38d591ae", null ], + [ "getPosteriorIds", "classrtabmap_1_1BayesFilter.html#a4b476a9fa8b1c67562be4134c936081c", null ], + [ "getPosteriorValues", "classrtabmap_1_1BayesFilter.html#aaebf1bee8c904dabdf1d8ea0f446c143", null ], + [ "getVirtualPlacePrior", "classrtabmap_1_1BayesFilter.html#a1f479b2d242f05eef69532f454dc851f", null ], + [ "isPredictionSparse", "classrtabmap_1_1BayesFilter.html#a8d65b71c1a2230fdefae41d90f73c0d5", null ], + [ "getPredictionLC", "classrtabmap_1_1BayesFilter.html#ab13c8acecfbb4fcfff4e809e2b0a7538", null ], + [ "getPredictionLCStr", "classrtabmap_1_1BayesFilter.html#a18a6d97fe3088a4a356a85358f641376", null ], + [ "generatePrediction", "classrtabmap_1_1BayesFilter.html#a489031236b91dbaba0ff192f90799cd4", null ], + [ "getMemoryUsed", "classrtabmap_1_1BayesFilter.html#a60ad13fd18ac4e595359f3c86c430a80", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Camera-members.html new file mode 100644 index 00000000..9da33b9b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Camera-members.html @@ -0,0 +1,140 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Camera Member List
+
+
+ +

This is the complete list of members for rtabmap::Camera, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
captureImage(SensorCaptureInfo *info=0)=0 (defined in rtabmap::Camera)rtabmap::Cameraprotectedpure virtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() const =0rtabmap::SensorCapturepure virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")=0rtabmap::SensorCapturepure virtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const =0 (defined in rtabmap::Camera)rtabmap::Camerapure virtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera.html b/preview/pr-1773/api/latest/classrtabmap_1_1Camera.html new file mode 100644 index 00000000..96f1e313 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Camera.html @@ -0,0 +1,452 @@ + + + + + + + + +RTAB-Map: rtabmap::Camera Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Camera Class Referenceabstract
+
+
+ +

#include <Camera.h>

+
+Inheritance diagram for rtabmap::Camera:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::Camera:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
+virtual bool isCalibrated () const =0
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")=0
 Initializes the sensor.
 
virtual std::string getSerial () const =0
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + + + + + + + + + + +

+Protected Member Functions

 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual SensorData captureImage (SensorCaptureInfo *info=0)=0
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+

Class Camera

+ +

Definition at line 43 of file Camera.h.

+

Constructor & Destructor Documentation

+ +

◆ Camera()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::Camera::Camera (float imageRate = 0,
const Transform & localTransform = Transform::getIdentity() 
)
+
+protected
+
+

Constructor

+
Parameters
+ + + +
imageRatethe frame rate (Hz), 0 for fast as the camera can
localTransformthe transform from base frame to camera frame (without optical rotation)
+
+
+ +
+
+

Member Function Documentation

+ +

◆ takeImage()

+ +
+
+ + + + + +
+ + + + + + + + +
SensorData rtabmap::Camera::takeImage (SensorCaptureInfo * info = 0)
+
+inline
+
+ +

Definition at line 48 of file Camera.h.

+ +
+
+ +

◆ getImageRate()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Camera::getImageRate () const
+
+inline
+
+ +

Definition at line 49 of file Camera.h.

+ +
+
+ +

◆ setImageRate()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Camera::setImageRate (float imageRate)
+
+inline
+
+ +

Definition at line 50 of file Camera.h.

+ +
+
+ +

◆ isInterIMUPublishing()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Camera::isInterIMUPublishing () const
+
+inline
+
+ +

Definition at line 52 of file Camera.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::Camera::captureImage (SensorCaptureInfo * info = 0)
+
+protectedpure virtual
+
+ +

Implemented in rtabmap::CameraMyntEye.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/Camera.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera.js b/preview/pr-1773/api/latest/classrtabmap_1_1Camera.js new file mode 100644 index 00000000..0636a321 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Camera.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1Camera = +[ + [ "Camera", "classrtabmap_1_1Camera.html#aaae7434ffa5e54f5006355779d335dd3", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI-members.html new file mode 100644 index 00000000..852f2834 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI-members.html @@ -0,0 +1,154 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraDepthAI Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraDepthAI, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAIstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraDepthAI(const std::string &mxidOrName="", int imageWidth=1280, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAIprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraDepthAIvirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraDepthAIvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAIvirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setDepthProfile(int confThreshold=200, int lrcThreshold=5) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setDetectFeatures(int detectFeatures=0, const std::string &blobPath="") (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setDisparityWidthAndFilter(int disparityWidth=96, int medianFilter=5) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setExtendedDisparity(bool extendedDisparity=false, bool enableCompanding=false) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setGFTTDetector(bool useHarrisDetector=false, float minDistance=7.0f, int numTargetFeatures=1000) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setIMU(bool imuPublished, bool publishInterIMU) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setIrIntensity(float dotIntensity=0.0f, float floodIntensity=0.0f) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setOutputMode(int outputMode=0) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setRectification(bool useSpecTranslation=false, float alphaScaling=0.0f, bool enabled=true) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setSubpixelMode(bool enabled=false, int fractionalBits=3) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
setSuperPointDetector(float threshold=0.01f, bool nms=true, int nmsRadius=4) (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAI
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraDepthAI() (defined in rtabmap::CameraDepthAI)rtabmap::CameraDepthAIvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.html new file mode 100644 index 00000000..32194c0c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.html @@ -0,0 +1,406 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraDepthAI Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraDepthAI:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraDepthAI:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraDepthAI (const std::string &mxidOrName="", int imageWidth=1280, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
+void setOutputMode (int outputMode=0)
 
+void setDepthProfile (int confThreshold=200, int lrcThreshold=5)
 
+void setExtendedDisparity (bool extendedDisparity=false, bool enableCompanding=false)
 
+void setSubpixelMode (bool enabled=false, int fractionalBits=3)
 
+void setDisparityWidthAndFilter (int disparityWidth=96, int medianFilter=5)
 
+void setRectification (bool useSpecTranslation=false, float alphaScaling=0.0f, bool enabled=true)
 
+void setIMU (bool imuPublished, bool publishInterIMU)
 
+void setIrIntensity (float dotIntensity=0.0f, float floodIntensity=0.0f)
 
+void setDetectFeatures (int detectFeatures=0, const std::string &blobPath="")
 
+void setGFTTDetector (bool useHarrisDetector=false, float minDistance=7.0f, int numTargetFeatures=1000)
 
+void setSuperPointDetector (float threshold=0.01f, bool nms=true, int nmsRadius=4)
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 44 of file CameraDepthAI.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraDepthAI::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraDepthAI::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraDepthAI::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraDepthAI::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.js new file mode 100644 index 00000000..f95dd1f8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraDepthAI = +[ + [ "init", "classrtabmap_1_1CameraDepthAI.html#aeab341a67f8c9ef3a078ef4636f969c1", null ], + [ "getSerial", "classrtabmap_1_1CameraDepthAI.html#ac77ceb30af0f98aa27f2de1259f31d7e", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.map new file mode 100644 index 00000000..93db103a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.md5 new file mode 100644 index 00000000..10e31ed8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.md5 @@ -0,0 +1 @@ +eae77801d9e0a833774363652d3658ca \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..efaa0d32a4f799ce4bf64cf7f93457672ffed898 GIT binary patch literal 6839 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 b-C;1q$n!kSxcUX&L_x|5>hk5XX2Jgj8PyIm literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.map new file mode 100644 index 00000000..93db103a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.md5 new file mode 100644 index 00000000..10e31ed8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.md5 @@ -0,0 +1 @@ +eae77801d9e0a833774363652d3658ca \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraDepthAI__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..efaa0d32a4f799ce4bf64cf7f93457672ffed898 GIT binary patch literal 6839 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 b-C;1q$n!kSxcUX&L_x|5>hk5XX2Jgj8PyIm literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect-members.html new file mode 100644 index 00000000..c8f8f94d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect-members.html @@ -0,0 +1,146 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraFreenect Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraFreenect, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenectstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraFreenect(int deviceId=0, Type type=kTypeColorDepth, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenect
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenectprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraFreenectvirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraFreenectvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenectvirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
kTypeColorDepth enum value (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenect
kTypeIRDepth enum value (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenect
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
Type enum name (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenect
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraFreenect() (defined in rtabmap::CameraFreenect)rtabmap::CameraFreenectvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.html new file mode 100644 index 00000000..624607d3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.html @@ -0,0 +1,398 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraFreenect Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraFreenect:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraFreenect:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Public Types

enum  Type { kTypeColorDepth +, kTypeIRDepth + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraFreenect (int deviceId=0, Type type=kTypeColorDepth, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 44 of file CameraFreenect.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::CameraFreenect::Type
+
+ +

Definition at line 49 of file CameraFreenect.h.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraFreenect::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraFreenect::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraFreenect::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraFreenect::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.js new file mode 100644 index 00000000..7f9adc69 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraFreenect = +[ + [ "init", "classrtabmap_1_1CameraFreenect.html#aa36a4142ea9e7dab7120690b1d4a7449", null ], + [ "getSerial", "classrtabmap_1_1CameraFreenect.html#ad4aa325278c21b339aea31437430610d", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2-members.html new file mode 100644 index 00000000..7648b924 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2-members.html @@ -0,0 +1,150 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraFreenect2 Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraFreenect2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2static
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraFreenect2(int deviceId=0, Type type=kTypeDepth2ColorSD, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity(), float minDepth=0.3f, float maxDepth=12.0f, bool bilateralFiltering=true, bool edgeAwareFiltering=true, bool noiseFiltering=true, const std::string &pipelineName="") (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2protectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraFreenect2virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraFreenect2virtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2virtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
kTypeColor2DepthSD enum value (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
kTypeColorIR enum value (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
kTypeDepth2ColorHD enum value (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
kTypeDepth2ColorHD2 enum value (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
kTypeDepth2ColorSD enum value (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
kTypeIRDepth enum value (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
Type enum name (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraFreenect2() (defined in rtabmap::CameraFreenect2)rtabmap::CameraFreenect2virtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.html new file mode 100644 index 00000000..e930b3b0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.html @@ -0,0 +1,405 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraFreenect2 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraFreenect2:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraFreenect2:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Public Types

enum  Type {
+  kTypeColor2DepthSD +, kTypeDepth2ColorSD +, kTypeDepth2ColorHD +, kTypeDepth2ColorHD2 +,
+  kTypeIRDepth +, kTypeColorIR +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraFreenect2 (int deviceId=0, Type type=kTypeDepth2ColorSD, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity(), float minDepth=0.3f, float maxDepth=12.0f, bool bilateralFiltering=true, bool edgeAwareFiltering=true, bool noiseFiltering=true, const std::string &pipelineName="")
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 46 of file CameraFreenect2.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::CameraFreenect2::Type
+
+ +

Definition at line 52 of file CameraFreenect2.h.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraFreenect2::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraFreenect2::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraFreenect2::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraFreenect2::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.js new file mode 100644 index 00000000..df9a6ab6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraFreenect2 = +[ + [ "init", "classrtabmap_1_1CameraFreenect2.html#aab9ed1bf2f64c6b8f6f95e25f94c4a8f", null ], + [ "getSerial", "classrtabmap_1_1CameraFreenect2.html#a985478701c8eb9751918fcd497893af7", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.map new file mode 100644 index 00000000..fb6c9b12 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.md5 new file mode 100644 index 00000000..986a2df9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.md5 @@ -0,0 +1 @@ +8f2a2ca6f6f31485c1bc0d5d6ba98262 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..addfc1cc4df7ad8ef6d99f4ab0e7cc5b0447f5de GIT binary patch literal 6872 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 a0&5~53mYq0nFKCXA(Z7G$(72O1pN=TKus0^ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.map new file mode 100644 index 00000000..fb6c9b12 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.md5 new file mode 100644 index 00000000..986a2df9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.md5 @@ -0,0 +1 @@ +8f2a2ca6f6f31485c1bc0d5d6ba98262 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..addfc1cc4df7ad8ef6d99f4ab0e7cc5b0447f5de GIT binary patch literal 6872 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 a0&5~53mYq0nFKCXA(Z7G$(72O1pN=TKus0^ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.map new file mode 100644 index 00000000..a7b834f6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.md5 new file mode 100644 index 00000000..29bee754 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.md5 @@ -0,0 +1 @@ +8d3ce94e993c2d6c8a7e38fd385c9802 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bd64b3a0389f8ee2d0b3e14d97936183aa314c3e GIT binary patch literal 6690 zcmcIpby$?$wjYpG8YBh;1VN-n=>|bW5CJLa?ruezff=b!kd%~C8tLwGkS+lkx>LIE z<~!%y=bm%_KGZzGJMZkh_FBIhq>8dU;ce(`2n0f?@LX06JfgsN6&?=wSx=jX1P?eS zit@6M>zmK?hTIqkgl1epR$ARFdF%IEb@i1~+})jfp>k$aNPk{3u5`A{S?+D*ARo*o znC;U^45Hn&z&g)bY2?QvD3wwkJqu2REcr_l-FN}&KYK8Fhx!;1Ll$Q&7O~jJ%h>^WE)7cej6hJXPcAGObdI z$X&%a&VbLKY2&zbL)t=#s}vdZeYRQr0vX82=6Ud1tGG^+&F5O-UWcPv&TB&~U)9+^ z#l^{FtF`p>;5T?5cQyyyBBh~05=)#wR{GOIl~{vhGMWRi@9_Fwc$KEye;Q)6H{Vh1 zxkIn^`t@LwpWpkFxzLibGV=385qI{Xp&=)5)9UJKMovxw8X6izc(|;!^`jZD1wt$= zEQGzl_)07M&fX7>VySF3>#cq8Y6v8<%~q^Pv`1(8iQ(TYQ}UPzDk{5oKR3b z7FJYO|FlT(oDvkc$!d_v20vR(K|nyD+~K##hp4FB;9x8lSJ%vAv|kz-8QJq}HB!>S zB~<*Q`}YIp7Z%oHUP;{N;NTGP+)jQbN=ZpsZt)W;^6r4G;b_u!aeG@iHa2$NLswUK zvi|Lp%N5D%4AsnMgXz*i-Q(l&SBJ%Zs_N<#iAhOAiBBxs1*Rrf&JH)e88-ROUmeDS z+xE1!2DY}feXFh2*_a51!w2{KC0}_TZDwT3M-8QPIh2XXcLf_JQ8S zCko%x$w*a|m5CA)69*?NY}d|rnsN^}#$QWG`Fm|nIX1n#JUh(1JUi7FZp&Retzh@H>sqI;4ZEdw`3B-nO)gO-O&byeKvj__b4U8N5 zaXA=P*u+*}PL!Hr`F}4f>u@i#?9bu19V^#O^W2%qPV>8ZGd<%ZEFqC9CNADHJ)I0j zM3LeBF2?T$?|1~__U+r<-QCaMw~&zDy?gg#X({Y?qmS<9bsMoHMHRZvGYX<&U_hUp zmGxImjc{yyeApD~#}5R8O;9l2?D3mSokbU6@I0jbcv^hS!&hXGAHBUJ!V+6Bi^*k! z7uxIN?B<(URxh=6F5KheppVU-mz_`7za^-X8{zeWFq(!=HN#_Nq{| zX>4P>SP@zmIWTAZ5yf9eg7s6e{rmUF;WSThq@|_t2npe!SXY-jehU|;`_S`Izl?D% z(61YIRdX)#2an(}G33d~$-940JWn%JW(P8!CcsQ_u%w$m+~qK`vB@jF2F?5+r7h>> z=Mpe6dX4XCz%dF7*iHDCm-A`s>SpHT;Fz16&x{|gUZlOgK%qbCEyk=2{kp_wyxjlV5a=Z$wHK> zfdRKelgAeH&!0cDi;GyEo}L7BLL^k&ddq!X-Mqpid#KevVR>voM z3qtPe>UH67+G=ni;Ob-vA00i1ZB&H)y}HWPUC+1>Oiaw(T**uPP@;Q*0Q@T*(UEJz zxotmx5`tdp{_&%Awk1eaLnGTcIW!a(hlmaj7Z*1xH`jEbGXnGu*y8r~w*B@K4i3eI zCx|l?0G{rio&a#_nVHOHk7x&i1z2(o2OziBpBO@cLea-~} z0|N&Dp;>HrIyp73kLHuo(Ggf$TI$t#5TfFFsCY&j&(=A5Q$(q7iRoqS?YTy5_^@ofBg7SyWt(bMPD*9 zA%PlDl)$-HL!s&TBOTYEv`?R8g@uJ9#?VcEX?@AUna(kBsj12wpC6+ArN{+-$0F8c$8vK?{I(73B# z;{q=-Xqa3@CKtWE&y-hGlmmAE8gS6k%8KCROdO1PNa9#dPR?zv6&pM&^TUVRFP=Xq zv31DP)Hi(yZxJWl__5BKsxThgS-@|+MusLd?Im$L6Iayw7#;m(hpaX^*QfU+1&9qH z&TxfxV`C*IqC2K!&e{Y6{Y~q2m^m-Q(n8=NAs({#3L+ygE0|?S?o~n4BTsw7D+^S#CLB*vJN&0F#1$K(^IBJfkOnhJ4B^gB6c&*Fz8 zS2hHOYV2m4k4fkEN(n|fi^GUp8tmb4=Ebi zh+5^VsHmuRS-Q=wSM47di0Ko*ujFOZN(O~~n3&M^i64AaY4;1$+uQqJYP7CSH0M=X zB;di-y7Jtl7BLYA^4kf>-|Yb)m3+8P@dmmE-uU^XMue9!RX;^F{VJ=4*F{@LHZ zAJdbr!Un#|E42WFein56;)rf6si?3Yi2}p}fNBn4F+ewn)U#(eVCd)8*6>YDP4^O( z&kAhI11+biqr3ShR2T|f4L{>F~Ct=F9TN13YU>iO-)r-Q)8kZ9+Ma^ zHhcy2*Kn<#s;V@o6a|ozizm;&Wn{0oZ%y*6vBzequ>E~&N5@xSYa%O)KNGn$IZ<(QEAKO9XJ=o9QyHWa(h69WF96+%jg2iU>vncv z9gSLYTl#U=`5ds)xBB{I1VX@ZMhUVCl;lIEFYD_zP%$rFxo6KRb<@s|cX9z`IA5Qk z0B~aYtEs7F5vr5(moL`a*xL4>P+>r(E7(*dArM3i5=#Bz$8_Sp7ut4ZbIE*Kp%ft$ zaolfda3K3D{h@HUT-o_u3X0jIttmDRjy50?oUSh3Mr^gTw3L*VVn6`bnw;#;3He?K z0j-At2?z*SooNt-7>#^Y{R_3^wf|EP1L9Ic2gvtiDc*3hupg}K#)F)X8FKUR;6i}3 zs5-6Jbuj>R&$yA`ZyZe<0R>8IyGR@Q^P9SseQ=PzHvLqp~BZLFds%D#X9Dk8;)67S?T2L9DqdP-}oq)Y3J;GM;H)}xYN_qe37DFyNqWCYquO79cAU^ zfs3F|5cl@Tw<)QtbZ||>C8BHI{#^&iJHuUAL<9;{@{MN$h6@6$z;ul(uA$#0|BW?u zUg%WF%V4pyw=cCBW$y)E&hHduIFS2_L9gN6UEolpZES2Zb1k@N!iusK8_Ni21qeXD zBzM+ENu1&J_4Q2v!{V_sLkPUf#cmsMwetdw#OWgWr%#_4!6s*BW}sV}zw4+*M@JDK zJ_G^}`>V{dqsMU~Dm$A6*zerIVgO5L$2-K3=rb(;m!AdJHitVp98c51D)=yOX zmc`R_p@uehqX{|SD*&tK%^{|XQ_k5Ui*_e`^^?$7tJM40!6&|12Z?_3ZyZ6LjvIBT zk1^b7zAj=zd^f&w~6>Nhg)$Dg2fPfVLMZI2YIOua5$PA=EBT4vGmAVE;msrDC8=sRl zfvgkfBa9KhhcHS6PX_^hXonPDvlwKQP_vF3!E%Mmh!famf``C@Nc(%?A2l6*jV3kx zKy#ZY48vjZP24!5F zS82?;u?XPx)oZeDb%=%ZF$*+gOE@L00 z*OM!n_U>YLMPKWd>YsQfOLUw(4*!3O>)+1lp9#=^o9@Y=MZh`SE7Z)tE{HOrhICBK ztV=%${b4e5Zh+1fLwRgXE{!|sXI`Hw7HW##3FPgXoUC=tGf8?;gt1bDAt2y-p#P)n z>pvWnPSx6l;~$U@j2mOaEWQFu@5_-jdUXecubriwP_&54zU!(mTz_N}#b zeGUfY6NH?ZK=w4Os!tu>+p9z;>TwhBe9g-XY-kXF7D#_L{ij(tm5UT}^a2w+j6L$eSvxnkong!_cwV(hCax>fB$J_Ayd=AY5?SQSRDrPP& z!a&C6u`$ZV#>NB*9}%p%DjqU1uU!aW{F}h)-Qha??fx<{?G$XXt*z}AupKwVUs%Ys z+@BT&@D>N7U#yD`R9=+oKRIS*Vj5Dxa4=1i?1uY!4OYWF7Y zPgx>>BT5i<&8g@Kt3p>Y3X0(N_I8Ud z!*x1bZ0r^kD!&JsHL|+2#8PQ(ZVs<;T``$$4v3B{{`$2Un9h$$NgqJW)ZEpD>+9<~ zQRT?6J<~9?dN{7Rb=2o_wE3p~@@UG*-5svPI(#NjZPr5u@z*Kr1g{C=4Qv36;nXmh z>6OKv80~s5n4X@V)1O5JyQxY-5PHJlaBRrzP`2WYGX;Ud-cLca5h{+0TH?LX)!BH{ z{N6$r0)c4u$GA1SurTc4vkvl|po@$5;ZXj(p3AI}fua2mk&(~b-EZI=$JN#K{qb+l zlY`+`r7lY^_Bzl`$|1xIGj{i0T2IXMrHFnmkbV&%d42Ij=IPV9)m6mFiPz?@GF)&p z(UIsfOJaIS-*8Fb5KF#)4+L}XGU|U6d0oo-4#9Dv#Bsr?F#RL*0SS`OihD8@tx1Xwlh@Nj7&@dK`Ar8e}|;16&RR%gJzUI&&SMcOP*qu7Luqc`*7l?9Y@D3! zf8Bqoqw&=HfQFVfOe0?t2?QM_76#CNLf%K5ME693LH7G4FYk8K)fvalC<3d|!(Sc@ z#{AO@mKy=LxV(Jxe=z9w9RWVfOwW;FN@t;4fAlBTSZMk(bzqzl{I)OIC z;Pbt#2qp4%yBJdBF-AA~oa}WmfbJ?W>A2mSDo%S-u(xl8!HDs?t*T6eP;mhWlFm60 zTi+lLXt`3eo@fila`!bLLqd;%=RtzoG6NMxD_}Qpk}UU4y%k`m8X;GOQ41yj38Se> zdti&;AdUgviKs^J{L_njVMhfS+5DB|m$S1*biyuJx>XKxAcX*RYR`?HH1M+@U2R~0 z@Sxq0B-n8ywN`8kM87Z)B!$xntD&=bZ>gxL_yZTl$j+XpDsZyF{f|W9i{;e@H^^(p zJn;*{W literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.map new file mode 100644 index 00000000..a7b834f6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.md5 new file mode 100644 index 00000000..29bee754 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.md5 @@ -0,0 +1 @@ +8d3ce94e993c2d6c8a7e38fd385c9802 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraFreenect__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bd64b3a0389f8ee2d0b3e14d97936183aa314c3e GIT binary patch literal 6690 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages-members.html new file mode 100644 index 00000000..0281c287 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages-members.html @@ -0,0 +1,170 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraImages Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraImages, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_calibrationFolder (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
_multiCameraCalib (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
_multiCameraCount (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraImages() (defined in rtabmap::CameraImages)rtabmap::CameraImages
CameraImages(const std::string &path, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImages
cameraModel() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotectedvirtual
filenames() const (defined in rtabmap::CameraImages)rtabmap::CameraImages
getBayerMode() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getMaxPoseTimeDiff() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPath() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraImagesvirtual
imagesCount() const (defined in rtabmap::CameraImages)rtabmap::CameraImages
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraImagesvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesvirtual
isConfigForEachFrame() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
isImagesRectified() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
lastImageFileName() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinlineprotected
odomProvided() constrtabmap::CameraImagesinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setBayerMode(int mode) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setConfigForEachFrame(bool value) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDepth(bool isDepth, float depthScaleFactor=1.0f) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDepthFromScan(bool enabled, int fillHoles=1, bool fillHolesFromBorder=false) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDirRefreshed(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setGroundTruthPath(const std::string &filePath, int format=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setImagesRectified(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setMaxFrames(int value) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinlinevirtual
setMaxPoseTimeDiff(double diff) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setMultiCameraCalibration(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setOdometryPath(const std::string &filePath, int format=0) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setPath(const std::string &dir) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setScanPath(const std::string &dir, int maxScanPts=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setStartIndex(int index) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinlinevirtual
setTimestamps(bool fileNamesAreStamps, const std::string &filePath="", bool syncImageRateWithStamps=true) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraImages() (defined in rtabmap::CameraImages)rtabmap::CameraImagesvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.html new file mode 100644 index 00000000..d8fc735c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.html @@ -0,0 +1,1235 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraImages Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraImages:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraImages:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraImages (const std::string &path, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
std::string getPath () const
 
+unsigned int imagesCount () const
 
+std::vector< std::string > filenames () const
 
bool isImagesRectified () const
 
int getBayerMode () const
 
const CameraModel & cameraModel () const
 
void setPath (const std::string &dir)
 
virtual void setStartIndex (int index)
 
virtual void setMaxFrames (int value)
 
void setDirRefreshed (bool enabled)
 
void setImagesRectified (bool enabled)
 
void setBayerMode (int mode)
 
void setTimestamps (bool fileNamesAreStamps, const std::string &filePath="", bool syncImageRateWithStamps=true)
 
void setConfigForEachFrame (bool value)
 
bool isConfigForEachFrame () const
 
void setMultiCameraCalibration (bool enabled)
 
void setScanPath (const std::string &dir, int maxScanPts=0, const Transform &localTransform=Transform::getIdentity())
 
void setDepthFromScan (bool enabled, int fillHoles=1, bool fillHolesFromBorder=false)
 
void setOdometryPath (const std::string &filePath, int format=0)
 
void setGroundTruthPath (const std::string &filePath, int format=0, const Transform &localTransform=Transform::getIdentity())
 
void setMaxPoseTimeDiff (double diff)
 
double getMaxPoseTimeDiff () const
 
void setDepth (bool isDepth, float depthScaleFactor=1.0f)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
const std::string & lastImageFileName () const
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+ + + + + + + +

+Protected Attributes

std::string _calibrationFolder
 
bool _multiCameraCalib
 
int _multiCameraCount
 
+

Detailed Description

+
+

Definition at line 39 of file CameraImages.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraImages::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +

Reimplemented in rtabmap::CameraRGBDImages, and rtabmap::CameraStereoImages.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraImages::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraImages::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +

Reimplemented in rtabmap::CameraStereoImages.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraImages::odomProvided () const
+
+inlinevirtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +

Definition at line 53 of file CameraImages.h.

+ +
+
+ +

◆ getPath()

+ +
+
+ + + + + +
+ + + + + + + +
std::string rtabmap::CameraImages::getPath () const
+
+inline
+
+ +

Definition at line 54 of file CameraImages.h.

+ +
+
+ +

◆ isImagesRectified()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::CameraImages::isImagesRectified () const
+
+inline
+
+ +

Definition at line 57 of file CameraImages.h.

+ +
+
+ +

◆ getBayerMode()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::CameraImages::getBayerMode () const
+
+inline
+
+ +

Definition at line 58 of file CameraImages.h.

+ +
+
+ +

◆ cameraModel()

+ +
+
+ + + + + +
+ + + + + + + +
const CameraModel & rtabmap::CameraImages::cameraModel () const
+
+inline
+
+ +

Definition at line 59 of file CameraImages.h.

+ +
+
+ +

◆ setPath()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraImages::setPath (const std::string & dir)
+
+inline
+
+ +

Definition at line 61 of file CameraImages.h.

+ +
+
+ +

◆ setStartIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::CameraImages::setStartIndex (int index)
+
+inlinevirtual
+
+ +

Definition at line 62 of file CameraImages.h.

+ +
+
+ +

◆ setMaxFrames()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::CameraImages::setMaxFrames (int value)
+
+inlinevirtual
+
+ +

Definition at line 63 of file CameraImages.h.

+ +
+
+ +

◆ setDirRefreshed()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraImages::setDirRefreshed (bool enabled)
+
+inline
+
+ +

Definition at line 64 of file CameraImages.h.

+ +
+
+ +

◆ setImagesRectified()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraImages::setImagesRectified (bool enabled)
+
+inline
+
+ +

Definition at line 65 of file CameraImages.h.

+ +
+
+ +

◆ setBayerMode()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraImages::setBayerMode (int mode)
+
+inline
+
+ +

Definition at line 66 of file CameraImages.h.

+ +
+
+ +

◆ setTimestamps()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::CameraImages::setTimestamps (bool fileNamesAreStamps,
const std::string & filePath = "",
bool syncImageRateWithStamps = true 
)
+
+inline
+
+ +

Definition at line 68 of file CameraImages.h.

+ +
+
+ +

◆ setConfigForEachFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraImages::setConfigForEachFrame (bool value)
+
+inline
+
+ +

Definition at line 75 of file CameraImages.h.

+ +
+
+ +

◆ isConfigForEachFrame()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::CameraImages::isConfigForEachFrame () const
+
+inline
+
+ +

Definition at line 79 of file CameraImages.h.

+ +
+
+ +

◆ setMultiCameraCalibration()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraImages::setMultiCameraCalibration (bool enabled)
+
+inline
+
+ +

Definition at line 97 of file CameraImages.h.

+ +
+
+ +

◆ setScanPath()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::CameraImages::setScanPath (const std::string & dir,
int maxScanPts = 0,
const Transform & localTransform = Transform::getIdentity() 
)
+
+inline
+
+ +

Definition at line 102 of file CameraImages.h.

+ +
+
+ +

◆ setDepthFromScan()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::CameraImages::setDepthFromScan (bool enabled,
int fillHoles = 1,
bool fillHolesFromBorder = false 
)
+
+inline
+
+ +

Definition at line 112 of file CameraImages.h.

+ +
+
+ +

◆ setOdometryPath()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::CameraImages::setOdometryPath (const std::string & filePath,
int format = 0 
)
+
+inline
+
+ +

Definition at line 120 of file CameraImages.h.

+ +
+
+ +

◆ setGroundTruthPath()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::CameraImages::setGroundTruthPath (const std::string & filePath,
int format = 0,
const Transform & localTransform = Transform::getIdentity() 
)
+
+inline
+
+ +

Definition at line 127 of file CameraImages.h.

+ +
+
+ +

◆ setMaxPoseTimeDiff()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraImages::setMaxPoseTimeDiff (double diff)
+
+inline
+
+ +

Definition at line 134 of file CameraImages.h.

+ +
+
+ +

◆ getMaxPoseTimeDiff()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::CameraImages::getMaxPoseTimeDiff () const
+
+inline
+
+ +

Definition at line 135 of file CameraImages.h.

+ +
+
+ +

◆ setDepth()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::CameraImages::setDepth (bool isDepth,
float depthScaleFactor = 1.0f 
)
+
+inline
+
+ +

Definition at line 137 of file CameraImages.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraImages::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ lastImageFileName()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::CameraImages::lastImageFileName () const
+
+inlineprotected
+
+ +

Definition at line 149 of file CameraImages.h.

+ +
+
+

Member Data Documentation

+ +

◆ _calibrationFolder

+ +
+
+ + + + + +
+ + + + +
std::string rtabmap::CameraImages::_calibrationFolder
+
+protected
+
+ +

Definition at line 153 of file CameraImages.h.

+ +
+
+ +

◆ _multiCameraCalib

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::CameraImages::_multiCameraCalib
+
+protected
+
+ +

Definition at line 159 of file CameraImages.h.

+ +
+
+ +

◆ _multiCameraCount

+ +
+
+ + + + + +
+ + + + +
int rtabmap::CameraImages::_multiCameraCount
+
+protected
+
+ +

Definition at line 160 of file CameraImages.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.js new file mode 100644 index 00000000..d8d6e117 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1CameraImages = +[ + [ "init", "classrtabmap_1_1CameraImages.html#a8f00b6eb8c78a66d3381877825d70206", null ], + [ "getSerial", "classrtabmap_1_1CameraImages.html#a217f54d1ead7a4d6af733c2644064a5f", null ], + [ "odomProvided", "classrtabmap_1_1CameraImages.html#aea0811d6305eec32fda10f46344c825f", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.map new file mode 100644 index 00000000..84eb525b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.md5 new file mode 100644 index 00000000..8e3b512e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.md5 @@ -0,0 +1 @@ +f07a80c10716f715ca90d0860e710fcd \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5117f28ba7347a0a209871a59ab65dd3aaba2134 GIT binary patch literal 6739 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 IDU*Qz19~p{IRF3v literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.map new file mode 100644 index 00000000..bf45a4a2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.md5 new file mode 100644 index 00000000..81ae0792 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.md5 @@ -0,0 +1 @@ +865b01255e5c570d0c0be6cdeff31934 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraImages__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..41cb0fa404b0c5fa7aacb23d55ce04dd388f3a93 GIT binary patch literal 14840 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraK4A Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraK4A, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraK4A)rtabmap::CameraK4Astatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraK4A(int deviceId=0, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraK4A)rtabmap::CameraK4A
CameraK4A(const std::string &fileName, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraK4A)rtabmap::CameraK4A
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraK4A)rtabmap::CameraK4Aprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraK4Avirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraK4Avirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraK4A)rtabmap::CameraK4Avirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setIRDepthFormat(bool enabled) (defined in rtabmap::CameraK4A)rtabmap::CameraK4A
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setPreferences(int rgb_resolution, int framerate, int depth_resolution) (defined in rtabmap::CameraK4A)rtabmap::CameraK4A
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraK4A() (defined in rtabmap::CameraK4A)rtabmap::CameraK4Avirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.html new file mode 100644 index 00000000..15dc187c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.html @@ -0,0 +1,382 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraK4A Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraK4A:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraK4A:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraK4A (int deviceId=0, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
+ CameraK4A (const std::string &fileName, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
+void setIRDepthFormat (bool enabled)
 
+void setPreferences (int rgb_resolution, int framerate, int depth_resolution)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 43 of file CameraK4A.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraK4A::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraK4A::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraK4A::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraK4A::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.js new file mode 100644 index 00000000..443feac8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraK4A = +[ + [ "init", "classrtabmap_1_1CameraK4A.html#af2c611c697451697f318405469bb23e8", null ], + [ "getSerial", "classrtabmap_1_1CameraK4A.html#af7dae13200b0d2ca09294b335225e993", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.map new file mode 100644 index 00000000..b2b4402d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.md5 new file mode 100644 index 00000000..19e0737c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.md5 @@ -0,0 +1 @@ +d651da1a566326c3ffcd7b59f593d720 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8085c80296a47bb50476b3551bd06bb37aeb1c92 GIT binary patch literal 6753 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 =W_&xcIb;U|lUC%XP>;Ktu=J69{ zUHZDZ(Vd+l|0E@CwUM4;{wV7j)zlc%KDV~ECIXq&^0JXnVz!F3wDj)|FW$hwz-qfW zeo!)$ATAmo^nI|OW)BMoz0aWqL^RrsHliSx0zGW}w4%7U6BPTwq_(}K&31yK&{vQb z94DdN;O+1eK6n81o~?6g>LD8&+s3aV0^gep^K@Z9n$y$MjRiOyCc6^{qK=h)zuPwg zf`UscEB8c|ZZkJQ=L5DRE-h_l=QrTzzpJZ;v&{}+v9bL?S6$Q^-7#|-fo6MF2 zj3uc5o_GdX1JKri?=RPG!iT|N&7LRB0P>d>7yS!llj-^SDW{oN9p>+swDO3?E?n4-LtIPG&rk{yK%nR;z9o8yg$A z;eKG(Uxf$@3DIO`W+IM{dtg4u#ob-JRJkTzdj5_>CI*J3Xx{lw5bC_w){e~1rt?1j zDMij<;NLt7dM^rea&j^-G$a95?B=uyUb34I7w6AA?|#qc^7!kw1SSx7#o$r$gw5E` zwFZMv1B+*{0P{It{6xS3^oUibnegAK2B+(eW&^^taWn~Za51*z?(XiqiR=239Km%p zaOGIx8*<>WJ8Mk`5x^yRAM`#91E2=7z*i&TjV@0a7#;(QKbZ95m%Cm;K|xqVL>CZ* zkLx2DW;2u&6dzBv)Y_4IZD8b32tIWL@YO&$D~AtuWcaU@k4{b=V79yf77{4?ozi_y zO)Y602Epp&@0`L03nddufKnj-=zqE-)ICq z$4z}O(9y#+t_ueNb8dh|uG0>T$!uy|PyF%)M_gR|{QUe*_Nu{Ys;byQI6EeMppG#+*R%hw5gH0K*GEFY_vJzo2 zF_Iux1;whQuTKC~*VMe9sX8zLSl0;#1?B+^9uoqr5k7;5hu3=&JvA{g;Ub*{kk#%a z9oS4IJw1GSs{>q-nLBs|^7ri7GZ6y=gSs2Qb3Jh0OcL8|&3X$Wz;QKh`+DWNZDc^Z z9yIm#_vZnUPhe8CbC3gXeg?6QdKw+pGiK(o%jMq>j!y$LR0x%ol|Nn_nzmo8rIB-) zVBN>VBch;~-gz$O;J{g4QGo&ha4)W?2u@5?3*Fk-6UxZQIGE7Te+-i3y}iAR(i}mI z`{e#0#4-d6OVI?PM7L&q5)zWTVF2y?U1v@(S)q-Ii;D|&0*BzRJ^7+st3hTr1vI0Y zxh%h%M*z)L2Srp>N!j#a<-Z7Eo?hdYCMIa$9H8#QW0Bx4=@P#EC{m;?R%O;{bHxMR zWH=@|DoVo8@G-~;9Ja=vN0D>p4zqleZOt9MMxL!~{LEX1MJHq8Q3R!On=b>q-|T(C zb+-g6DxYR&b*T8Au|PDaHT8qW&dv_RJd)t@0KO43_VCAGjr(J1_m4H9+cY@vHwHhl zMX|84MWv;&Ap?*nVBzAD+@2$md5T#=;P-BDb`aLY{>+o&Z98viZob2io$-g>UYjTH z*UPG45h_Irk6BsobDItMgD4CHfHk%=JcL95X_uCl$99^{vwX+^e2G|E-nH;*$JOun zQyhj}L3aC2pcQ}(BdViArH~~ADn2AfJk$svJlL6IfcQ8#IlqGD>##QT2;@k3pwI#C zn3QQuo=yTdt+AS5231e@^eNi*WCh8s%XmHvMgy9P6>W1?byJg+xcEH~>T6v+tSxid z5UxW*L-V#ZHGQRsQ}t5V<7qR9Vel8UYW9whyf_bO_?N70?8O>0MRQ7 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.md5 new file mode 100644 index 00000000..19e0737c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.md5 @@ -0,0 +1 @@ +d651da1a566326c3ffcd7b59f593d720 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4A__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8085c80296a47bb50476b3551bd06bb37aeb1c92 GIT binary patch literal 6753 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 =W_&xcIb;U|lUC%XP>;Ktu=J69{ zUHZDZ(Vd+l|0E@CwUM4;{wV7j)zlc%KDV~ECIXq&^0JXnVz!F3wDj)|FW$hwz-qfW zeo!)$ATAmo^nI|OW)BMoz0aWqL^RrsHliSx0zGW}w4%7U6BPTwq_(}K&31yK&{vQb z94DdN;O+1eK6n81o~?6g>LD8&+s3aV0^gep^K@Z9n$y$MjRiOyCc6^{qK=h)zuPwg zf`UscEB8c|ZZkJQ=L5DRE-h_l=QrTzzpJZ;v&{}+v9bL?S6$Q^-7#|-fo6MF2 zj3uc5o_GdX1JKri?=RPG!iT|N&7LRB0P>d>7yS!llj-^SDW{oN9p>+swDO3?E?n4-LtIPG&rk{yK%nR;z9o8yg$A z;eKG(Uxf$@3DIO`W+IM{dtg4u#ob-JRJkTzdj5_>CI*J3Xx{lw5bC_w){e~1rt?1j zDMij<;NLt7dM^rea&j^-G$a95?B=uyUb34I7w6AA?|#qc^7!kw1SSx7#o$r$gw5E` zwFZMv1B+*{0P{It{6xS3^oUibnegAK2B+(eW&^^taWn~Za51*z?(XiqiR=239Km%p zaOGIx8*<>WJ8Mk`5x^yRAM`#91E2=7z*i&TjV@0a7#;(QKbZ95m%Cm;K|xqVL>CZ* zkLx2DW;2u&6dzBv)Y_4IZD8b32tIWL@YO&$D~AtuWcaU@k4{b=V79yf77{4?ozi_y zO)Y602Epp&@0`L03nddufKnj-=zqE-)ICq z$4z}O(9y#+t_ueNb8dh|uG0>T$!uy|PyF%)M_gR|{QUe*_Nu{Ys;byQI6EeMppG#+*R%hw5gH0K*GEFY_vJzo2 zF_Iux1;whQuTKC~*VMe9sX8zLSl0;#1?B+^9uoqr5k7;5hu3=&JvA{g;Ub*{kk#%a z9oS4IJw1GSs{>q-nLBs|^7ri7GZ6y=gSs2Qb3Jh0OcL8|&3X$Wz;QKh`+DWNZDc^Z z9yIm#_vZnUPhe8CbC3gXeg?6QdKw+pGiK(o%jMq>j!y$LR0x%ol|Nn_nzmo8rIB-) zVBN>VBch;~-gz$O;J{g4QGo&ha4)W?2u@5?3*Fk-6UxZQIGE7Te+-i3y}iAR(i}mI z`{e#0#4-d6OVI?PM7L&q5)zWTVF2y?U1v@(S)q-Ii;D|&0*BzRJ^7+st3hTr1vI0Y zxh%h%M*z)L2Srp>N!j#a<-Z7Eo?hdYCMIa$9H8#QW0Bx4=@P#EC{m;?R%O;{bHxMR zWH=@|DoVo8@G-~;9Ja=vN0D>p4zqleZOt9MMxL!~{LEX1MJHq8Q3R!On=b>q-|T(C zb+-g6DxYR&b*T8Au|PDaHT8qW&dv_RJd)t@0KO43_VCAGjr(J1_m4H9+cY@vHwHhl zMX|84MWv;&Ap?*nVBzAD+@2$md5T#=;P-BDb`aLY{>+o&Z98viZob2io$-g>UYjTH z*UPG45h_Irk6BsobDItMgD4CHfHk%=JcL95X_uCl$99^{vwX+^e2G|E-nH;*$JOun zQyhj}L3aC2pcQ}(BdViArH~~ADn2AfJk$svJlL6IfcQ8#IlqGD>##QT2;@k3pwI#C zn3QQuo=yTdt+AS5231e@^eNi*WCh8s%XmHvMgy9P6>W1?byJg+xcEH~>T6v+tSxid z5UxW*L-V#ZHGQRsQ}t5V<7qR9Vel8UYW9whyf_bO_?N70?8O>0MRQ7 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraK4W2 Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraK4W2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2static
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraK4W2(int deviceId=0, Type type=kTypeDepth2ColorSD, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2protectedvirtual
cColorHeight (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2static
cColorWidth (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2static
cDepthHeight (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2static
cDepthWidth (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2static
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraK4W2virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraK4W2virtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2virtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
kTypeColor2DepthSD enum value (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2
kTypeDepth2ColorHD enum value (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2
kTypeDepth2ColorSD enum value (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
Type enum name (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraK4W2() (defined in rtabmap::CameraK4W2)rtabmap::CameraK4W2virtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.html new file mode 100644 index 00000000..3932daf2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.html @@ -0,0 +1,508 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraK4W2 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraK4W2:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraK4W2:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Public Types

enum  Type { kTypeColor2DepthSD +, kTypeDepth2ColorSD +, kTypeDepth2ColorHD + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraK4W2 (int deviceId=0, Type type=kTypeDepth2ColorSD, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + +

+Static Public Attributes

static const int cDepthWidth = 512
 
static const int cDepthHeight = 424
 
static const int cColorWidth = 1920
 
static const int cColorHeight = 1080
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 44 of file CameraK4W2.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::CameraK4W2::Type
+
+ +

Definition at line 50 of file CameraK4W2.h.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraK4W2::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraK4W2::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraK4W2::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraK4W2::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+

Member Data Documentation

+ +

◆ cDepthWidth

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::CameraK4W2::cDepthWidth = 512
+
+static
+
+ +

Definition at line 57 of file CameraK4W2.h.

+ +
+
+ +

◆ cDepthHeight

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::CameraK4W2::cDepthHeight = 424
+
+static
+
+ +

Definition at line 58 of file CameraK4W2.h.

+ +
+
+ +

◆ cColorWidth

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::CameraK4W2::cColorWidth = 1920
+
+static
+
+ +

Definition at line 59 of file CameraK4W2.h.

+ +
+
+ +

◆ cColorHeight

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::CameraK4W2::cColorHeight = 1080
+
+static
+
+ +

Definition at line 60 of file CameraK4W2.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.js new file mode 100644 index 00000000..4a526847 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraK4W2 = +[ + [ "init", "classrtabmap_1_1CameraK4W2.html#a33aec7e8863ddd2815a983a71e869127", null ], + [ "getSerial", "classrtabmap_1_1CameraK4W2.html#a90bd066891ec59c4f1261af3353209bb", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.map new file mode 100644 index 00000000..3c639995 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.md5 new file mode 100644 index 00000000..3ab77f38 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.md5 @@ -0,0 +1 @@ +347f2be409307a8e7906c986363d0a7c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6265381363fb76d7a80e53c5ec5dacfa0d7474 GIT binary patch literal 7075 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.map new file mode 100644 index 00000000..3c639995 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.md5 new file mode 100644 index 00000000..3ab77f38 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.md5 @@ -0,0 +1 @@ +347f2be409307a8e7906c986363d0a7c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraK4W2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6265381363fb76d7a80e53c5ec5dacfa0d7474 GIT binary patch literal 7075 zcmc&(hd-6?-@jAYvykksRf&+98ID~DMMie^CbE;6RY_z<+1U;yBO@v@viHg!nWuw; z=X0Lt_j<g@y_WIl=$Dt z@`ZY%$XdBA`ZGzhdoQ#lOSCO5wK5Dbc)g+#dH&I?&B`i`q)lGtV{By4GlF02Z?lyd z?qw;SNeP^kJGatPAxb=9JJEe3Lvf(E@UXvFV7|EGY_K^)IQ~f1zxWsTYb!;5R%Dp8t~y_%)E*=iHL~i)eS7xu}!)0YrmtVmIt-PBq0ypK-K|mQUu0y&!8x0Iduf=&ol(xt*El#hwC~;x z8>zJ6ynH!Q?x9ftAuL$B_vDjXJPy^}!@~xx?d@~J<(9W!YiMYgJ2}Pv{%u9hBo-t0 z(At{2^XJd~`HvqZa66eNt*}lrfBwX8Zn`e5uI?OZrAyM;+1aVyz8#jH&LVrXt1BTX zNr1deNN}6}atik+=;Ud9JeBM**7A556$&?bcKnmav;?I~fHJBYCH)vG`;I%HCKd$UUa2PseFF4&Ot^-R_nW0IO^8f*=gGnPT{%IerY7aR@jmF}a7x6Ym6%b)mU{p2uutxIi|X04XB?cIoVD)rq(Pk* z);&62^Z#C3>vWm&`IMU*jz3{v?rlAN{h_sC$MKIZ2+0|4_V)JTNAR7C6}KJyaNqvO z$jGR#+G*^vtZYWER;K2I2MXIPbTwGPYGNx9Y*M)^s>j736Pt4l=V+JZVSuRBH z!GlT1VkIRdr?_+;9UUFp?=QLE_j;?Vw6L+VmQ;5Q4JBDvSQt*Y%(cZ|E-jaocuinlbEMrCKapnTfpPidbdEP zly{u8wDh#2wTWehB^8)EP zI{a(IoY}=txlmHiGvi`h#ABHkHP}2g+s-uFF*f%3r<1$8yDK2__wU~~v$Wrql~F%> z^vHfpBtw>gf#J*87?b;_G}FbEl^;P)*4Ae&EiEM^B=U=k^7EIfWLa2P_OGaVbj-EK zt0*fIvdRU`ThG0;_BfsH|D#y zau&(Y&kqJLzUDU~WMgBCVH72`Y>R1%xhRa?ITwZUIoccA4^W9?Cdtu>8Xq?f^zFsg zGB7diw7*v6vQ@J&&Wp1(E;7D0WV`kNl^15pcTbMCy+Es+mh>zRhZA&}lnxCKZ|?7> zJvkU^eE#ay`)ZT9X)!({L&IvH@x`Ri*;==U$HrPFCs`9NX@vuid{4L}e+zv5L{xGTGTCc0W`ufc6>|kajVG2!hr(Y!{oenl! zk1g$(ZhC6&>>TH@*wxh0Q8aQaY1x?~#a3=Wo}=?!;AFc);HPunm*!@LcjbOGCYb8> z=4JwGYirzgO9a)O2M^-BRtL?0yt=|5=Ez`m{eHp`zzzGP-gl1|(73sf>hdT*ylY8V zOpG1|n6GiFGuF`w5opAn8yFbyKTMbM);2aK_w(~p&CwxemY^OgHEjp_+G=BR`7$-d zR^vPo5*DVEx;ORF?KBAqNzc$wL}{sjf}-M!#Kf>?&q(285;tz(=>>-Y5qO%KY836Q z1QhhasD?6C%*lS6cN_HNqvx_tUd+hO5G#_Fmgc&@Z5{Y2hbmRnr?DIz35Gp=4L zwkG}l%z!TBmzGAT=QRJF3Yz-OuW88^gcEAD5L)O;Cj;67gv=cu9WqFIUdH^HqKZOo zH(O$G==jLUF9&<8LIDS!AQA5h3k!b^H3>*QV)^xgX!6x7T3$Xr$BN^vxpvR_A9U!5 z*B?Ic0fF+~)zj+%u=S5J#_8U@s|3oer=#=BUQR1h7Fg?AffHv^$MVL+XZuyd)xM67 z=s4yZzbrDHWH!$oVZL~;4)WK!%@Lj;f9pa*2-MZovVbn`br&==WB_pwu)4F!_@cgl z|E_0jJpTJ58jXJS;)VR1H*aoFN}xSWA|qilE@9TkUZtho%E`&OJqjcknbL@%qoeaY zI`G0Xi%oaN9SaK%Qx6ApwaBBCrR^FSfy!{Q@3tG(jFrF}#j;~9f}{P`9>+;ahK4C6 z8a~T)yq0Yn;5N!Pg+snJcN5e9m;I3RT(>dNXLsapSSO*N7qS z`#~k&0E>21<6ZXn;>S$%bV`3fKJ@K9Z;RS9WR0)yT$v;=o3u@oRY~4E(M-rHu|LO4 zAIPs;Ab5eJU-W@W@b^-Vy5gdg&}U($(XVl-F;Oj^)EOsD!h5ae&XrO^CgJe9p2e-x zJ>$E|yt>s?Qp?nffrv&6_ zozYpI32++Xw&KGX>g2`0(H3R%M-UuEB2RerTpa*R_{l@QT|NRi1<$hxViNqO-1PdpfCvE_Eq8!%U8H8l}n{1A3=@e6nF-o*>z zlP9MdwTuG9nEP5=-;cW!TnIbCkXw6{z@83&IOiYY&fznrK zNzrq+GG)`(*4AvlJ^#nb$_n+_`_DaxAkgvx)5gHxtE(CZ2M1L_CxO0;>E5=R(@k72 zRKK;fJmtN5bwA)iRX4v;_4CR~kIIhj3>i)j50BAuOO>LzcWM;tGNoV)pM%P)ah+ql zZbdvYJglvtpb$Ou8@IpXG?*0yY>Bs}%aVB}+3#llZf)K9EYZ-=Kzsgt->fX0?j6Z_ zo}R&Cqk%ZiMD>CXA7UaSubDR7vM5i!e*HQYBV^g8?d2s(L$f~qDFNvjG7Y+oLV0<4 zi9jTJ78waXC7wk}SzcZqhlx$n)zKkFfcxykw2S+DGIk0}OD}0@X&vnLX@Qlcp}Avh z%setW`U@1bnQdp^;nzKulpZDQ=e;T-gr3g;5f-i#tGRmhsv>|DYz83(W9a+$Txg6^ zG=0;LAEd}ML;#op3-D-ILKirMBj`BAR!7Bq_gDRT z@6eD+K!8kRT54)EI7&__DJDo{7X%)(LIRP0e=KgRu1bWgJW+dAT)c*Ipyy%$ zJuNN!jT>)VTPVCA;9wl;Tm z{IbfI;%bl5PacC=h>VVY3Zf4nn1NG(4PlmWMFIl@KY|M4)fkoxeWaNtaSC!S7K>%) z;UVPV;UOj`U(=>|{rWXH2-r}RERvz%G9D&bT384=k4s<=4=rb!!(fND!{&FzVck9$ zqDkMW#1H0&W0poLF9Fsf3Uu=<_ErX5U0rWJe8`ji?w#A}U@?zN*r+i5#GRUk9V!+{ z+Un|R`_%^QEZOer5EVF=7GNzi$cQJnMY(TXU2P>MpYbsm;wsE7pJj2(rBTVmge5yW z8<=Br>f|`7F}eG%C74ApBSm{x6V+#CX9*C-JrV>Ar%Sn(ii%1g<-~YJbTk>*O#nK1 z+6@oFL(KZzAsI1o&wt_sDRY}s21`Z+x(`cv6FfJt=+vx%og{t8;0w@iVF3XFN%!B8 zB^^F?OS4W|Fni%!`W7>PIDXz9N#2;x@tY2~&n)SwI>asLWcGh0#55uUm%U0FdV7_s z?!}82qZ<`Qg?++p^^3-oO^m(uHqnz= ztG61V(o)=NH1#rxqqbXDX%Sip3F5fuw)szU;gZ_;HIpGulw()v>FBOrWLEGDB4PHV zWR(U)m}Po}`V3`bz|D-OHmcHIC-FBMLJY88Pg-2DLWw46j2( z8v2-ATXSV=zciOxGYb;kobV`0r_cBYbIOMwl$VEt@{4qE<~FW@70qFx%jN{HWq-Aq zA$seQKuAeAU1m0?Y%!!5J#6McQ;?FrEwXfE#-Lo&)8=^!Mi@y}ot;`dJm7cKX?G*G z&x&0p0MXtqBRr2(VH6{GZ&3dEDJ_3H2u0Ax4GMjUm|yELg0wbujx)R17qB+LU?C?O zT%44|H#>A$5kzHL0yC)MFnlsIKv2)faNfMvqevyBMVF|;-}m(bkY96K8= z&{L#eTC$Jnf`Zgf z2`LofS!Fgs>*qlJK;9LA+`LRIBBXsbk)Weh)0xG^h~VI0o~c&2jxZoUP@2ZBi3t|4 zQ@HCi|6IC61QS<=@(TI`1Q{6_S(<8;i;0POo|zdBA-V44_^=F(R>HSioSbk6$mQf3 zHRVb*se){6FE4byc?vlLIy>sUy*(rt?Jz`uO!}_!K>m@x@MyA`0)+s>+q@Cz|b(ewwCd#ehJFVj2&1me0J6XZlmQfZa*?UzCD&n z{B3Dz{1x3?v(988+?L^Lp)YVBZEiX5W^gTqS|7ahTh9uxk93zbBzdtiLIC%N;<=}#XE8$dZl%I^dB22F( zwM_elj)hu4$Z=SZ&!7x}*oK9iPkrG+1oV>Pez!%6Ik~ydE-x<| zl$ps_F5ZQb07_PKP^WJl9l8#cXmnU&A{`i3LEl|lz$IjOI9l7<2oRV{_~G9_ob2px zN6HI}idsOuw+4+|(2}_<1Kd<~u%gShlhtZy_XkRWc?W+8#}v6E-ow( zeln(n@+V`nkQ2s~4(Kp;)XB z7dLlSb~XWE05P+%$%D!#+S=Kf5+(~A($d*Uj(|)0QL_pq?J84gQBl$AD_JKeCnK3l zy1Kg30SC0G{#o(hT+ynU@My95k?Xo~NhB0-WnGqYl*3 z1D5$Z1=K7ou`geq3yp{nxBJ6qa{Oh?nA&-=E(&&*+5YxCzVF`M+oPeOX_8|Txy;WW z2Db%y3w=0123B%Ko5f@z4{T<`;fB;WY*SfTSphvozulDqGD=EH=sf}|*P$0;DQWrk zjd*5e25+^%;g!43t0$+Xo<^W(h*(>5{{~pGg&X;j}>fm znwy6)Eq}dNlW_k{Tw?qw1X?L+KMeW){yu!k!48FoNJ*AVU48u>PzKlsSrrxM8jlaI zLKbj^(Jru(P1mf}SbQbj-I!pKdbD=){{4%H8J?M9Vt${TAtC~!#|qCw^YShs(8Cdc zPDlhCh`iUi5_GFT?-{@qhui7KwOm8`2L~;nZ^|z&R`T)jNg`zH`Bl{AJr!`FJ)TX) z%8CpBZ3g&6g=p?8b!&HVnJFkEGK{*^j6o^t~ZcIp4x zxv*H2GXQxj0U1478-9{_Rew83s`@MB!KkPxe5pEgLsC+qK(D#A^$gs9obM;&IOv^_ zMj0(p2%y?V8+^sG>0zOv{w~(mqKd?9cFsQBAE9uh)GAKiP~=H?68Vq~bO@y}Ru(TV z_+M?#p-;=7nAljFix&%4uQTxfzl!057@JR`I`>JbFZm9yoiL6xjDR#ufe9^0-ts?( cz{<&K>ed^km~QcD_|^?kQ_@70D42!(2e0ke$^ZZW literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel-members.html new file mode 100644 index 00000000..f9cf43ba --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel-members.html @@ -0,0 +1,165 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraModel Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraModel, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CameraModel()rtabmap::CameraModel
CameraModel(const std::string &name, const cv::Size &imageSize, const cv::Mat &K, const cv::Mat &D, const cv::Mat &R, const cv::Mat &P, const Transform &localTransform=opticalRotation())rtabmap::CameraModel
CameraModel(double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))rtabmap::CameraModel
CameraModel(const std::string &name, double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))rtabmap::CameraModel
cx() constrtabmap::CameraModelinline
cy() constrtabmap::CameraModelinline
D() constrtabmap::CameraModelinline
D_raw() constrtabmap::CameraModelinline
deserialize(const std::vector< unsigned char > &data)rtabmap::CameraModel
deserialize(const unsigned char *data, unsigned int dataSize)rtabmap::CameraModel
fovX() constrtabmap::CameraModel
fovY() constrtabmap::CameraModel
fx() constrtabmap::CameraModelinline
fy() constrtabmap::CameraModelinline
horizontalFOV() constrtabmap::CameraModel
imageHeight() const (defined in rtabmap::CameraModel)rtabmap::CameraModelinline
imageSize() const (defined in rtabmap::CameraModel)rtabmap::CameraModelinline
imageWidth() const (defined in rtabmap::CameraModel)rtabmap::CameraModelinline
inFrame(int u, int v) constrtabmap::CameraModel
initRectificationMap()rtabmap::CameraModel
isFisheye() constrtabmap::CameraModelinline
isRectificationMapInitialized() constrtabmap::CameraModelinline
isValidForProjection() constrtabmap::CameraModelinline
isValidForRectification() constrtabmap::CameraModelinline
isValidForReprojection() constrtabmap::CameraModelinline
K() constrtabmap::CameraModelinline
K_raw() constrtabmap::CameraModelinline
load(const std::string &filePath, bool initRectificationMaps=true)rtabmap::CameraModel
load(const std::string &directory, const std::string &cameraName, bool initRectificationMaps=true)rtabmap::CameraModel
localTransform() constrtabmap::CameraModelinline
name() constrtabmap::CameraModelinline
opticalRotation()rtabmap::CameraModelinlinestatic
P() constrtabmap::CameraModelinline
project(float u, float v, float depth, float &x, float &y, float &z) constrtabmap::CameraModel
R() constrtabmap::CameraModelinline
rectifyDepth(const cv::Mat &raw) constrtabmap::CameraModel
rectifyImage(const cv::Mat &raw, int interpolation=cv::INTER_LINEAR) constrtabmap::CameraModel
reproject(float x, float y, float z, float &u, float &v) constrtabmap::CameraModel
reproject(float x, float y, float z, int &u, int &v) constrtabmap::CameraModel
roi(const cv::Rect &roi) constrtabmap::CameraModel
save(const std::string &directory) constrtabmap::CameraModel
scaled(double scale) constrtabmap::CameraModel
serialize() constrtabmap::CameraModel
setImageSize(const cv::Size &size)rtabmap::CameraModel
setLocalTransform(const Transform &transform)rtabmap::CameraModelinline
setName(const std::string &name)rtabmap::CameraModelinline
Tx() constrtabmap::CameraModelinline
verticalFOV() constrtabmap::CameraModel
~CameraModel()rtabmap::CameraModelinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.html new file mode 100644 index 00000000..1b6c451e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.html @@ -0,0 +1,1930 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraModel Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::CameraModel Class Reference
+
+
+ +

Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection, rectification, and transformation. + More...

+ +

#include <CameraModel.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraModel ()
 Default constructor.
 
 CameraModel (const std::string &name, const cv::Size &imageSize, const cv::Mat &K, const cv::Mat &D, const cv::Mat &R, const cv::Mat &P, const Transform &localTransform=opticalRotation())
 Constructor using full camera parameters.
 
 CameraModel (double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))
 Minimal constructor using intrinsic parameters. This assumes the images are already rectified.
 
+ CameraModel (const std::string &name, double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))
 Minimal constructor with name for saving.
 
virtual ~CameraModel ()
 Destructor.
 
bool initRectificationMap ()
 Initializes the rectification maps used to undistort and rectify images.
 
bool isRectificationMapInitialized () const
 Checks if the rectification map has been initialized.
 
bool isValidForProjection () const
 Checks if the model is valid for 2D->3D projection.
 
bool isValidForReprojection () const
 Checks if the model is valid for 3D->2D reprojection.
 
bool isValidForRectification () const
 Checks if the model has sufficient data for image rectification.
 
void setName (const std::string &name)
 Sets the camera name, used to set a camera name when saving to a file.
 
const std::string & name () const
 Returns the camera name.
 
double fx () const
 Returns focal length in x.
 
double fy () const
 Returns focal length in y.
 
double cx () const
 Returns principal point x.
 
double cy () const
 Returns principal point y.
 
double Tx () const
 Returns the x translation (usually fx * baseline in case of stereo, otherwise would be 0).
 
cv::Mat K_raw () const
 Returns the raw intrinsic matrix (before rectification).
 
cv::Mat D_raw () const
 Returns the raw distortion coefficients (before rectification).
 
cv::Mat K () const
 Returns the rectified camera intrinsic matrix if the projection matrix P exists, otherwise returns the raw intrinsic matrix.
 
cv::Mat D () const
 Returns the rectified distortion coefficients (1x5 filled with zeros) if the projection matrix P exists, otherwise returns the raw distortion coefficients.
 
cv::Mat R () const
 Returns the rectification matrix.
 
cv::Mat P () const
 Returns the projection matrix.
 
void setLocalTransform (const Transform &transform)
 Sets the local transform of the camera (base frame to optical frame).
 
const Transform & localTransform () const
 Returns the local transform (base frame to optical frame).
 
void setImageSize (const cv::Size &size)
 Sets the image size of the camera model and updates the principal point if undefined.
 
const cv::Size & imageSize () const
 
int imageWidth () const
 
int imageHeight () const
 
double fovX () const
 Returns the horizontal field of view (FoV) in radians.
 
double fovY () const
 Returns the vertical field of view (FoV) in radians.
 
double horizontalFOV () const
 Returns the horizontal field of view in degrees.
 
double verticalFOV () const
 Returns the vertical field of view in degrees.
 
bool isFisheye () const
 Checks if the distortion model is fisheye (6 coefficients: k1,k2,0,0,k3,k4).
 
bool load (const std::string &filePath, bool initRectificationMaps=true)
 Loads the camera model parameters from a YAML calibration file.
 
bool load (const std::string &directory, const std::string &cameraName, bool initRectificationMaps=true)
 Loads the camera model by constructing a file path from a directory and camera name.
 
bool save (const std::string &directory) const
 Saves the camera model parameters to a YAML calibration file in ROS format.
 
std::vector< unsigned char > serialize () const
 Serializes the camera model to a binary format.
 
unsigned int deserialize (const std::vector< unsigned char > &data)
 Deserializes a camera model from a byte vector.
 
unsigned int deserialize (const unsigned char *data, unsigned int dataSize)
 Deserializes a camera model from a raw byte buffer.
 
CameraModel scaled (double scale) const
 Returns a new camera model with all intrinsic parameters scaled by a given factor.
 
CameraModel roi (const cv::Rect &roi) const
 Returns a new camera model adjusted for a given region of interest (ROI).
 
cv::Mat rectifyImage (const cv::Mat &raw, int interpolation=cv::INTER_LINEAR) const
 Rectifies a raw image using the precomputed rectification maps.
 
cv::Mat rectifyDepth (const cv::Mat &raw) const
 Rectifies a raw depth image using the precomputed rectification maps.
 
void project (float u, float v, float depth, float &x, float &y, float &z) const
 Projects a 2D pixel and depth value into a 3D point in the camera coordinate frame (/camera_link).
 
void reproject (float x, float y, float z, float &u, float &v) const
 Reprojects a 3D point in the camera frame (/camera_link) into 2D image coordinates (floating-point).
 
void reproject (float x, float y, float z, int &u, int &v) const
 Reprojects a 3D point in the camera frame (/camera_link) into 2D image coordinates (rounded to int).
 
bool inFrame (int u, int v) const
 Checks if a given pixel coordinate lies within the image bounds.
 
+ + + + +

+Static Public Member Functions

static Transform opticalRotation ()
 Returns the default optical rotation to convert image coordinates to robot coordinates.
 
+

Detailed Description

+

Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection, rectification, and transformation.

+

This class encapsulates camera calibration data, including intrinsic parameters (fx, fy, cx, cy), distortion coefficients, rectification and projection matrices. It provides utility functions for image rectification, projection from 2D to 3D, and vice versa.

+

This class supports the 4 to 14 parameters Radial Tangential distortion model (also called Plumb Bob or Brown-Conrady model) and 4 parameters Fish Eye model (also known as Equidistant model).

+
See also
OpenCV's calib3d module for all supported camera models.
+ +

Definition at line 52 of file CameraModel.h.

+

Constructor & Destructor Documentation

+ +

◆ CameraModel() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::CameraModel::CameraModel (const std::string & name,
const cv::Size & imageSize,
const cv::Mat & K,
const cv::Mat & D,
const cv::Mat & R,
const cv::Mat & P,
const Transform & localTransform = opticalRotation() 
)
+
+ +

Constructor using full camera parameters.

+
Parameters
+ + + + + + + + +
nameCamera name or ID.
imageSizeSize of the image (width x height).
KIntrinsic matrix (3x3).
DDistortion coefficients, 1xN matrix where N is between 4 and 14 parameters: k1,k2,p1,p2[,k3[,k4,k5,k6[,s1,s2,s3,s4[,tx,ty]]]]). To set Fish Eye / Equidistant model, it is implicitly used if we provide 6 values like this: [k1,k2,0,0,k3,k4], where you only need to fill "k" parameters.
RRectification matrix (3x3).
PProjection matrix (3x4).
localTransformLocal transform to apply to the camera frame.
+
+
+ +
+
+ +

◆ CameraModel() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::CameraModel::CameraModel (double fx,
double fy,
double cx,
double cy,
const Transform & localTransform = opticalRotation(),
double Tx = 0.0f,
const cv::Size & imageSize = cv::Size(0, 0) 
)
+
+ +

Minimal constructor using intrinsic parameters. This assumes the images are already rectified.

+
Parameters
+ + + + + + + + +
fxFocal length x.
fyFocal length y.
cxPrincipal point x.
cyPrincipal point y.
localTransformLocal transform to apply to the camera frame.
TxBaseline * fx (optional). Mainly used in case of stereo pair.
imageSizeImage size (optional).
+
+
+ +
+
+ +

◆ ~CameraModel()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::CameraModel::~CameraModel ()
+
+inlinevirtual
+
+ +

Destructor.

+ +

Definition at line 128 of file CameraModel.h.

+ +
+
+

Member Function Documentation

+ +

◆ opticalRotation()

+ +
+
+ + + + + +
+ + + + + + + +
static Transform rtabmap::CameraModel::opticalRotation ()
+
+inlinestatic
+
+ +

Returns the default optical rotation to convert image coordinates to robot coordinates.

+

Image frame: x -> right, y -> down, z -> forward
+ Robot frame: x -> forward, y -> left, z -> up

+
Returns
Transform rotation matrix.
+ +

Definition at line 63 of file CameraModel.h.

+ +
+
+ +

◆ initRectificationMap()

+ +
+
+ + + + + + + +
bool rtabmap::CameraModel::initRectificationMap ()
+
+ +

Initializes the rectification maps used to undistort and rectify images.

+

This function prepares the mapX_ and mapY_ lookup tables used for image rectification. It supports both standard radial-tangential distortion and fisheye/equidistant distortion models.

+
    +
  • If the distortion model is fisheye (indicated by D_.cols == 6), it uses cv::fisheye::initUndistortRectifyMap() to create the rectification maps. This requires OpenCV ≥ 2.4.10.
  • +
  • Otherwise, it uses the standard cv::initUndistortRectifyMap() for plumb bob or rational polynomial models.
  • +
+
Precondition
The camera model must be valid for rectification:
    +
  • imageSize_ must be non-zero.
  • +
  • D_ must be a 1-row matrix with an accepted number of columns (4, 5, 6, 8, 12, or 14).
  • +
  • R_ must be a 3x3 rectification matrix.
  • +
  • P_ must be a 3x4 projection matrix.
  • +
+
+
Returns
true if the rectification maps were successfully initialized (mapX_ and mapY_ are not empty), false otherwise.
+
See also
isRectificationMapInitialized(), rectifyImage(), rectifyDepth()
+
Warning
Requires OpenCV 2.4.10 or newer for fisheye support. If the version is older, fisheye rectification will not work.
+ +
+
+ +

◆ isRectificationMapInitialized()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::CameraModel::isRectificationMapInitialized () const
+
+inline
+
+ +

Checks if the rectification map has been initialized.

+
Returns
True if both mapX_ and mapY_ are initialized.
+ +

Definition at line 159 of file CameraModel.h.

+ +
+
+ +

◆ isValidForProjection()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::CameraModel::isValidForProjection () const
+
+inline
+
+ +

Checks if the model is valid for 2D->3D projection.

+ +

Definition at line 164 of file CameraModel.h.

+ +
+
+ +

◆ isValidForReprojection()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::CameraModel::isValidForReprojection () const
+
+inline
+
+ +

Checks if the model is valid for 3D->2D reprojection.

+ +

Definition at line 168 of file CameraModel.h.

+ +
+
+ +

◆ isValidForRectification()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::CameraModel::isValidForRectification () const
+
+inline
+
+ +

Checks if the model has sufficient data for image rectification.

+ +

Definition at line 172 of file CameraModel.h.

+ +
+
+ +

◆ setName()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraModel::setName (const std::string & name)
+
+inline
+
+ +

Sets the camera name, used to set a camera name when saving to a file.

+ +

Definition at line 183 of file CameraModel.h.

+ +
+
+ +

◆ name()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::CameraModel::name () const
+
+inline
+
+ +

Returns the camera name.

+ +

Definition at line 185 of file CameraModel.h.

+ +
+
+ +

◆ fx()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::CameraModel::fx () const
+
+inline
+
+ +

Returns focal length in x.

+ +

Definition at line 188 of file CameraModel.h.

+ +
+
+ +

◆ fy()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::CameraModel::fy () const
+
+inline
+
+ +

Returns focal length in y.

+ +

Definition at line 190 of file CameraModel.h.

+ +
+
+ +

◆ cx()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::CameraModel::cx () const
+
+inline
+
+ +

Returns principal point x.

+ +

Definition at line 192 of file CameraModel.h.

+ +
+
+ +

◆ cy()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::CameraModel::cy () const
+
+inline
+
+ +

Returns principal point y.

+ +

Definition at line 194 of file CameraModel.h.

+ +
+
+ +

◆ Tx()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::CameraModel::Tx () const
+
+inline
+
+ +

Returns the x translation (usually fx * baseline in case of stereo, otherwise would be 0).

+ +

Definition at line 196 of file CameraModel.h.

+ +
+
+ +

◆ K_raw()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::CameraModel::K_raw () const
+
+inline
+
+ +

Returns the raw intrinsic matrix (before rectification).

+ +

Definition at line 199 of file CameraModel.h.

+ +
+
+ +

◆ D_raw()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::CameraModel::D_raw () const
+
+inline
+
+ +

Returns the raw distortion coefficients (before rectification).

+ +

Definition at line 201 of file CameraModel.h.

+ +
+
+ +

◆ K()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::CameraModel::K () const
+
+inline
+
+ +

Returns the rectified camera intrinsic matrix if the projection matrix P exists, otherwise returns the raw intrinsic matrix.

+ +

Definition at line 203 of file CameraModel.h.

+ +
+
+ +

◆ D()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::CameraModel::D () const
+
+inline
+
+ +

Returns the rectified distortion coefficients (1x5 filled with zeros) if the projection matrix P exists, otherwise returns the raw distortion coefficients.

+ +

Definition at line 205 of file CameraModel.h.

+ +
+
+ +

◆ R()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::CameraModel::R () const
+
+inline
+
+ +

Returns the rectification matrix.

+ +

Definition at line 207 of file CameraModel.h.

+ +
+
+ +

◆ P()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::CameraModel::P () const
+
+inline
+
+ +

Returns the projection matrix.

+ +

Definition at line 209 of file CameraModel.h.

+ +
+
+ +

◆ setLocalTransform()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraModel::setLocalTransform (const Transform & transform)
+
+inline
+
+ +

Sets the local transform of the camera (base frame to optical frame).

+ +

Definition at line 212 of file CameraModel.h.

+ +
+
+ +

◆ localTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::CameraModel::localTransform () const
+
+inline
+
+ +

Returns the local transform (base frame to optical frame).

+ +

Definition at line 214 of file CameraModel.h.

+ +
+
+ +

◆ setImageSize()

+ +
+
+ + + + + + + + +
void rtabmap::CameraModel::setImageSize (const cv::Size & size)
+
+ +

Sets the image size of the camera model and updates the principal point if undefined.

+

This function updates the internal image size (imageSize_) with the provided size. If the intrinsic matrices (K_ or P_) are present and the principal point coordinates (cx, cy) are zero, they are set to the image center (width/2 - 0.5, height/2 - 0.5).

+

This ensures the camera model remains valid and useful even when the calibration file has no principal point set or the image size is updated manually.

+
Parameters
+ + +
sizeThe new image size. It must be either both dimensions zero (clearing) or both positive.
+
+
+
Precondition
size.width > 0 && size.height > 0 or size.width == 0 && size.height == 0
+
Postcondition
Updates the imageSize_, and adjusts cx and cy in K_ and P_ if they were initially zero.
+
Warning
If K_ or P_ are not initialized (empty()), no updates will be applied to them.
+
See also
imageSize(), imageWidth(), imageHeight()
+ +
+
+ +

◆ imageSize()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Size & rtabmap::CameraModel::imageSize () const
+
+inline
+
+ +

Definition at line 236 of file CameraModel.h.

+ +
+
+ +

◆ imageWidth()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::CameraModel::imageWidth () const
+
+inline
+
+ +

Definition at line 237 of file CameraModel.h.

+ +
+
+ +

◆ imageHeight()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::CameraModel::imageHeight () const
+
+inline
+
+ +

Definition at line 238 of file CameraModel.h.

+ +
+
+ +

◆ fovX()

+ +
+
+ + + + + + + +
double rtabmap::CameraModel::fovX () const
+
+ +

Returns the horizontal field of view (FoV) in radians.

+

The FoV is computed using the pinhole camera model as:

+\[
+\text{FoV}_x = 2 \cdot \tan^{-1}\left(\frac{\text{image width}}{2 \cdot f_x}\right)
+\] +

+
Returns
Horizontal field of view in radians. Returns 0.0 if image width or focal length is invalid.
+ +
+
+ +

◆ fovY()

+ +
+
+ + + + + + + +
double rtabmap::CameraModel::fovY () const
+
+ +

Returns the vertical field of view (FoV) in radians.

+

The FoV is computed using the pinhole camera model as:

+\[
+\text{FoV}_y = 2 \cdot \tan^{-1}\left(\frac{\text{image height}}{2 \cdot f_y}\right)
+\] +

+
Returns
Vertical field of view in radians. Returns 0.0 if image height or focal length is invalid.
+ +
+
+ +

◆ horizontalFOV()

+ +
+
+ + + + + + + +
double rtabmap::CameraModel::horizontalFOV () const
+
+ +

Returns the horizontal field of view in degrees.

+

Converts the result of fovX() from radians to degrees.

+
Returns
Horizontal field of view in degrees. Returns 0.0 if the result is invalid.
+ +
+
+ +

◆ verticalFOV()

+ +
+
+ + + + + + + +
double rtabmap::CameraModel::verticalFOV () const
+
+ +

Returns the vertical field of view in degrees.

+

Converts the result of fovY() from radians to degrees.

+
Returns
Vertical field of view in degrees. Returns 0.0 if the result is invalid.
+ +
+
+ +

◆ isFisheye()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::CameraModel::isFisheye () const
+
+inline
+
+ +

Checks if the distortion model is fisheye (6 coefficients: k1,k2,0,0,k3,k4).

+ +

Definition at line 283 of file CameraModel.h.

+ +
+
+ +

◆ load() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::CameraModel::load (const std::string & filePath,
bool initRectificationMaps = true 
)
+
+ +

Loads the camera model parameters from a YAML calibration file.

+

This method attempts to read camera intrinsic/extrinsic parameters and image size from a YAML file, typically in the ROS calibration format. If the distortion model is "fisheye" or "equidistant", we expect 4 coefficients, which are converted to a 6-coefficient format for internal representation.

+

Fields loaded (if present):
+

    +
  • camera_name
    +
  • +
  • image_width (pixels)
  • +
  • image_height (pixels)
  • +
  • camera_matrix (K, 3x3 double matrix)
    +
  • +
  • distortion_coefficients (D, 1xN double matrix)
    +
  • +
  • distortion_model (string: name of the model)
  • +
  • rectification_matrix (R, 3x3 double matrix)
    +
  • +
  • projection_matrix (P, 3x4 double matrix)
    +
  • +
  • local_transform (camera pose w.r.t robot frame)
  • +
+

On success, the internal matrices and settings of the camera model are updated. If the model is valid for rectification, the rectification map is initialized.

+
Parameters
+ + + +
filePathAbsolute or relative path to the YAML file.
initRectificationMapsSet to false to skip building the (potentially large) rectification maps when rectification won't be used (saves time and memory).
+
+
+
Returns
True if the file was successfully loaded and parsed, false otherwise.
+
Warning
Logs warnings if any fields are missing. If file does not exist or parsing fails, returns false.
+
See also
initRectificationMap()
+ +
+
+ +

◆ load() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::CameraModel::load (const std::string & directory,
const std::string & cameraName,
bool initRectificationMaps = true 
)
+
+ +

Loads the camera model by constructing a file path from a directory and camera name.

+

This is a convenience wrapper around load(filePath) that constructs the file path as: directory + "/" + cameraName + ".yaml".

+
Parameters
+ + + + +
directoryPath to the folder containing the camera YAML file.
cameraNameBase name of the camera file (without extension).
initRectificationMapsSet to false to skip building the (potentially large) rectification maps when rectification won't be used (saves time and memory).
+
+
+
Returns
True if loading from the constructed path succeeds, false otherwise.
+ +
+
+ +

◆ save()

+ +
+
+ + + + + + + + +
bool rtabmap::CameraModel::save (const std::string & directory) const
+
+ +

Saves the camera model parameters to a YAML calibration file in ROS format.

+

The file will include the following fields if they are not empty:

    +
  • camera_name
  • +
  • image_width
  • +
  • image_height
  • +
  • camera_matrix (K)
  • +
  • distortion_coefficients (D)
  • +
  • distortion_model (auto-detected based on number of distortion coefficients)
  • +
  • rectification_matrix (R)
  • +
  • projection_matrix (P)
  • +
  • local_transform (camera pose w.r.t robot frame)
  • +
+

If the distortion matrix contains 6 coefficients (used for fisheye), it is converted to a standard 4-coefficient format for ROS compatibility.

+
Parameters
+ + +
directoryPath to the folder where the YAML file will be saved.
+
+
+
Returns
True if saving was successful, false otherwise.
+
Note
If name_ is empty, "camera.yaml" is used as the default filename.
+
Warning
Returns false and logs an error if none of the matrices are set.
+ +
+
+ +

◆ serialize()

+ +
+
+ + + + + + + +
std::vector< unsigned char > rtabmap::CameraModel::serialize () const
+
+ +

Serializes the camera model to a binary format.

+

The serialization includes the camera intrinsics (K_, D_), rectification matrix (R_), projection matrix (P_), image size, and the local transform. The format is compact and suitable for file storage or transmission over a network.

+

Data layout:

    +
  • Header (11 integers):
      +
    • [0-2] RTAB-Map version (major, minor, patch)
    • +
    • [3] Camera type (0 = mono, 1=stereo)
    • +
    • [4-5] Image width, height
    • +
    • [6-9] Element counts for K, D, R, P matrices
    • +
    • [10] Size of localTransform (0 if null)
    • +
    +
  • +
  • Data section (in order): raw memory blocks for K, D, R, P (double values), followed by float values for localTransform
  • +
+
Returns
A byte vector containing the serialized data. The format is compatible with deserialize().
+
Note
This is a custom binary format, not meant to be human-readable.
+
See also
deserialize(), StereoCameraModel
+ +
+
+ +

◆ deserialize() [1/2]

+ +
+
+ + + + + + + + +
unsigned int rtabmap::CameraModel::deserialize (const std::vector< unsigned char > & data)
+
+ +

Deserializes a camera model from a byte vector.

+

This is a convenience wrapper around deserialize(const unsigned char*, unsigned int) that takes a std::vector<unsigned char> instead of a raw buffer.

+
Parameters
+ + +
dataByte vector containing data serialized by serialize().
+
+
+
Returns
The number of bytes successfully read and parsed. Returns 0 on failure.
+
See also
serialize(), deserialize(const unsigned char*, unsigned int)
+ +
+
+ +

◆ deserialize() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
unsigned int rtabmap::CameraModel::deserialize (const unsigned char * data,
unsigned int dataSize 
)
+
+ +

Deserializes a camera model from a raw byte buffer.

+

Reads the camera intrinsics, distortion, rectification, projection matrices, image size, and local transform from a serialized binary format previously created with serialize().

+
Parameters
+ + + +
dataPointer to the binary data buffer.
dataSizeSize of the data buffer in bytes.
+
+
+
Returns
The number of bytes successfully read. Returns 0 on error or if the format is invalid.
+
Warning
If the buffer format does not match the expected layout or version, an error is logged and the camera model remains in a default-initialized state.
+
Note
Assumes little-endian architecture and strict size/type matching. The serialized format must be created by CameraModel::serialize(). Non-mono camera types are not supported. See StereoCameraModel to serialize/deserialize stereo models.
+
See also
serialize()
+ +
+
+ +

◆ scaled()

+ +
+
+ + + + + + + + +
CameraModel rtabmap::CameraModel::scaled (double scale) const
+
+ +

Returns a new camera model with all intrinsic parameters scaled by a given factor.

+

This method scales the camera's intrinsic matrix (K_) and projection matrix (P_), as well as the image size, by the given scale factor. The distortion and rectification matrices are left unchanged.

+

Only valid camera models (i.e., those for which isValidForProjection() returns true) are scaled. If the model is invalid, a warning is issued and the original model is returned unchanged.

+
Parameters
+ + +
scaleScaling factor (> 0). For example, use 0.5 to downscale or 2.0 to upscale.
+
+
+
Returns
A scaled copy of the camera model with updated intrinsics and image size.
+
Warning
If the camera model is not valid for projection, the scale operation is ignored.
+ +
+
+ +

◆ roi()

+ +
+
+ + + + + + + + +
CameraModel rtabmap::CameraModel::roi (const cv::Rect & roi) const
+
+ +

Returns a new camera model adjusted for a given region of interest (ROI).

+

This method shifts the principal point (cx, cy) in the intrinsic matrix (K_) and projection matrix (P_) by subtracting the ROI’s top-left (x, y) offset. The image size is also set to the ROI size.

+

Only valid camera models (i.e., those for which isValidForProjection() returns true) can be adjusted. If the model is invalid, a warning is issued and the original model is returned unchanged.

+
Parameters
+ + +
roiRegion of interest defined as a rectangle (typically a subwindow of the full image).
+
+
+
Returns
A new camera model adapted to the ROI with adjusted intrinsics and image size.
+
Warning
If the camera model is not valid for projection, the ROI operation is ignored.
+ +
+
+ +

◆ rectifyImage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
cv::Mat rtabmap::CameraModel::rectifyImage (const cv::Mat & raw,
int interpolation = cv::INTER_LINEAR 
) const
+
+ +

Rectifies a raw image using the precomputed rectification maps.

+

This function applies geometric correction (rectification) to an image using the camera model's mapX_ and mapY_ rectification maps. It is typically used to correct lens distortion in images based on the calibration parameters.

+
Parameters
+ + + +
rawInput raw image (e.g., from camera). Must be a valid cv::Mat.
interpolationInterpolation method to use. Typically cv::INTER_LINEAR or cv::INTER_NEAREST.
+
+
+
Returns
Rectified image. If the rectification maps are not initialized, the function logs an error and returns a clone of the original image.
+
Precondition
mapX_ and mapY_ must be initialized using initRectificationMap().
+
Note
Works for color and grayscale images of any valid type.
+
See also
initRectificationMap(), rectifyDepth()
+ +
+
+ +

◆ rectifyDepth()

+ +
+
+ + + + + + + + +
cv::Mat rtabmap::CameraModel::rectifyDepth (const cv::Mat & raw) const
+
+ +

Rectifies a raw depth image using the precomputed rectification maps.

+

This function applies geometric correction (rectification) to a 16-bit unsigned depth image. It performs a pixel-by-pixel bilinear interpolation, only if all neighboring pixels have valid (non-zero) depth values, and the variation among them is within 1% of their average.

+

The method is optimized to avoid introducing noise in regions of high depth variance.

+
Parameters
+ + +
rawInput raw depth image (CV_16UC1). Must contain 16-bit unsigned depth values.
+
+
+
Returns
Rectified depth image. If the rectification maps are not initialized or the input image is not of type CV_16UC1, the function logs an error and returns a clone of the input.
+
Precondition
Input image must be of type CV_16UC1. mapX_ and mapY_ must be initialized.
+
Note
Inspired by the Kinect2 CPU depth registration implementation from: https://github.com/code-iai/iai_kinect2
+
Warning
Invalid or noisy regions are skipped in interpolation to maintain depth consistency.
+
See also
initRectificationMap(), rectifyImage()
+ +
+
+ +

◆ project()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::CameraModel::project (float u,
float v,
float depth,
float & x,
float & y,
float & z 
) const
+
+ +

Projects a 2D pixel and depth value into a 3D point in the camera coordinate frame (/camera_link).

+

This function uses the camera's intrinsic parameters to compute the 3D point corresponding to the given 2D image coordinates and depth value.

+
Parameters
+ + + + + + + +
uHorizontal image coordinate (in pixels).
vVertical image coordinate (in pixels).
depthDepth value at (u, v) in meters.
[out]xOutput X coordinate in 3D space.
[out]yOutput Y coordinate in 3D space.
[out]zOutput Z coordinate in 3D space (equals depth).
+
+
+
Note
If depth <= 0, the output (x, y, z) will be set to NaN.
+
See also
reproject()
+ +
+
+ +

◆ reproject() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::CameraModel::reproject (float x,
float y,
float z,
float & u,
float & v 
) const
+
+ +

Reprojects a 3D point in the camera frame (/camera_link) into 2D image coordinates (floating-point).

+

This function computes the image plane coordinates for a given 3D point using the camera's intrinsic parameters.

+
Parameters
+ + + + + + +
xX coordinate in camera space.
yY coordinate in camera space.
zZ coordinate in camera space (must be non-zero).
[out]uOutput horizontal image coordinate (float).
[out]vOutput vertical image coordinate (float).
+
+
+
Precondition
z != 0
+
See also
project(), reproject(int&, int&)
+ +
+
+ +

◆ reproject() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::CameraModel::reproject (float x,
float y,
float z,
int & u,
int & v 
) const
+
+ +

Reprojects a 3D point in the camera frame (/camera_link) into 2D image coordinates (rounded to int).

+

This version of reproject() returns integer pixel indices, computed from the 3D position.

+
Parameters
+ + + + + + +
xX coordinate in camera space.
yY coordinate in camera space.
zZ coordinate in camera space (must be non-zero).
[out]uOutput horizontal image coordinate (integer pixel).
[out]vOutput vertical image coordinate (integer pixel).
+
+
+
Precondition
z != 0
+
See also
project(), reproject(float&, float&)
+ +
+
+ +

◆ inFrame()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::CameraModel::inFrame (int u,
int v 
) const
+
+ +

Checks if a given pixel coordinate lies within the image bounds.

+
Parameters
+ + + +
uHorizontal image coordinate (in pixels).
vVertical image coordinate (in pixels).
+
+
+
Returns
true if the pixel is within the image dimensions, false otherwise.
+
Note
Inclusive lower bound, exclusive upper bound: [0, width), [0, height)
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.js new file mode 100644 index 00000000..04739e32 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraModel.js @@ -0,0 +1,48 @@ +var classrtabmap_1_1CameraModel = +[ + [ "CameraModel", "classrtabmap_1_1CameraModel.html#adad6652a711eecc9a50e544f14d276cd", null ], + [ "CameraModel", "classrtabmap_1_1CameraModel.html#a4810e60f3af95b73a61879aa97201695", null ], + [ "CameraModel", "classrtabmap_1_1CameraModel.html#aadb6b19ea8a94f3f6719ea0233196c34", null ], + [ "CameraModel", "classrtabmap_1_1CameraModel.html#a745c2d60ef6b460ca380aebd55b5d61c", null ], + [ "~CameraModel", "classrtabmap_1_1CameraModel.html#af6f35e5071ef0070d3fae3ebaa33ce4c", null ], + [ "initRectificationMap", "classrtabmap_1_1CameraModel.html#a5690a86d11b0d84e80961ae5d38b1d25", null ], + [ "isRectificationMapInitialized", "classrtabmap_1_1CameraModel.html#a80cacb16d347e89980369cb2e02f3d48", null ], + [ "isValidForProjection", "classrtabmap_1_1CameraModel.html#a7b6db41415e085d52bf363d09d5e6d67", null ], + [ "isValidForReprojection", "classrtabmap_1_1CameraModel.html#abd4db4f23eb05d531a34ee44f7cdb687", null ], + [ "isValidForRectification", "classrtabmap_1_1CameraModel.html#a46864eb8de680d45d79777e828dcbb6a", null ], + [ "setName", "classrtabmap_1_1CameraModel.html#a402a407fa2bca721087a6deda24cc10d", null ], + [ "name", "classrtabmap_1_1CameraModel.html#aa152828f20e1cf0ffab7bb25178191b5", null ], + [ "fx", "classrtabmap_1_1CameraModel.html#acea616d4e141804dbc5c6eda58bebf6b", null ], + [ "fy", "classrtabmap_1_1CameraModel.html#ac4089d34947b040205e281edae4151a1", null ], + [ "cx", "classrtabmap_1_1CameraModel.html#af81ee9572d32f69bf0a66cd1f4671c20", null ], + [ "cy", "classrtabmap_1_1CameraModel.html#aa3a18f811d3e9db290d01371e078add3", null ], + [ "Tx", "classrtabmap_1_1CameraModel.html#a6f6dc18af13a777e89a75725ef3e8ab4", null ], + [ "K_raw", "classrtabmap_1_1CameraModel.html#ada626650b01d35b494016a5490efb31a", null ], + [ "D_raw", "classrtabmap_1_1CameraModel.html#a88ec7053f4d442c4b1b79803c2840f28", null ], + [ "K", "classrtabmap_1_1CameraModel.html#a5df2e6c3f361b7084e4d26d7f1846e3d", null ], + [ "D", "classrtabmap_1_1CameraModel.html#a4aa121905a9b2aabb6a3592a6eb7459a", null ], + [ "R", "classrtabmap_1_1CameraModel.html#ad763246258ddf02c27873c2536901781", null ], + [ "P", "classrtabmap_1_1CameraModel.html#acda5d9c4eeeaaad69e950f5ea630430a", null ], + [ "setLocalTransform", "classrtabmap_1_1CameraModel.html#aa1325c971f17d371553c3f75be7aeece", null ], + [ "localTransform", "classrtabmap_1_1CameraModel.html#a8a1712ca95bf08c71b2bf2da1d635bc8", null ], + [ "setImageSize", "classrtabmap_1_1CameraModel.html#a43fd48b917ca145876024859f8565931", null ], + [ "fovX", "classrtabmap_1_1CameraModel.html#ac3aa6835f8ae019de4dbf85eed849b75", null ], + [ "fovY", "classrtabmap_1_1CameraModel.html#af4df41cc8a613f3e03b1ed14fc0a887e", null ], + [ "horizontalFOV", "classrtabmap_1_1CameraModel.html#a12abd4cac897f48bf862a96f0eba1d65", null ], + [ "verticalFOV", "classrtabmap_1_1CameraModel.html#af6226e43afcb69259b137bbe50099537", null ], + [ "isFisheye", "classrtabmap_1_1CameraModel.html#a3ceb0d36d8786f03b778d1969cb6e839", null ], + [ "load", "classrtabmap_1_1CameraModel.html#a2c2ff6db9029c3ee219642d7e48b04fa", null ], + [ "load", "classrtabmap_1_1CameraModel.html#abe9b3c87c086fd33286c01361e454056", null ], + [ "save", "classrtabmap_1_1CameraModel.html#ab5ec6010459c4e642e162dc8914bccb9", null ], + [ "serialize", "classrtabmap_1_1CameraModel.html#a5724619c7ac8c796fd8c63660e398082", null ], + [ "deserialize", "classrtabmap_1_1CameraModel.html#a490dc97ca8aa55d96324eb6612ccfd30", null ], + [ "deserialize", "classrtabmap_1_1CameraModel.html#a181c2e53da1151c281d85fde986a29c5", null ], + [ "scaled", "classrtabmap_1_1CameraModel.html#aecf2e87f260558dbf631e4803e1ed986", null ], + [ "roi", "classrtabmap_1_1CameraModel.html#a2ff3290299c36b64ee880db2386f898f", null ], + [ "rectifyImage", "classrtabmap_1_1CameraModel.html#a17219cf5cf82d224f2a7ed5af01fa236", null ], + [ "rectifyDepth", "classrtabmap_1_1CameraModel.html#a22cf7f5b49ef0cd8be08755010f6acb5", null ], + [ "project", "classrtabmap_1_1CameraModel.html#a01de9a3cdc993275b2fbcf21d6e29833", null ], + [ "reproject", "classrtabmap_1_1CameraModel.html#a637a730717e42939449cd9f09e20db26", null ], + [ "reproject", "classrtabmap_1_1CameraModel.html#a99204ef1a884478cf45b1503432b235b", null ], + [ "inFrame", "classrtabmap_1_1CameraModel.html#aa07cbe07c7893e726c408392cf54d9ca", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye-members.html new file mode 100644 index 00000000..29770a67 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye-members.html @@ -0,0 +1,147 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraMyntEye Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraMyntEye, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEyestatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraMyntEye(const std::string &device="", bool apiRectification=false, bool apiDepth=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEye
captureImage(SensorCaptureInfo *info=0)rtabmap::CameraMyntEyeprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraMyntEyevirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraMyntEyevirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEyevirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::CameraMyntEyeinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
publishInterIMU(bool enabled) (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEye
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setAutoExposure() (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEye
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setIrControl(int value) (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEye
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setManualExposure(int gain=24, int brightness=120, int constrast=116) (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEye
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraMyntEye() (defined in rtabmap::CameraMyntEye)rtabmap::CameraMyntEyevirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.html new file mode 100644 index 00000000..83ce1f94 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.html @@ -0,0 +1,424 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraMyntEye Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <CameraMyntEye.h>

+
+Inheritance diagram for rtabmap::CameraMyntEye:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraMyntEye:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraMyntEye (const std::string &device="", bool apiRectification=false, bool apiDepth=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
+void publishInterIMU (bool enabled)
 
+void setAutoExposure ()
 
+void setManualExposure (int gain=24, int brightness=120, int constrast=116)
 
+void setIrControl (int value)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+

Class CameraMyntEye

+ +

Definition at line 47 of file CameraMyntEye.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraMyntEye::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraMyntEye::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraMyntEye::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraMyntEye::odomProvided () const
+
+inlinevirtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +

Definition at line 59 of file CameraMyntEye.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraMyntEye::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+

returned rgb and depth images should be already rectified if calibration was loaded

+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.js new file mode 100644 index 00000000..3a4c6c7b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1CameraMyntEye = +[ + [ "init", "classrtabmap_1_1CameraMyntEye.html#a368591c828d3bb5aabfe8cae56d01304", null ], + [ "getSerial", "classrtabmap_1_1CameraMyntEye.html#ac163457701a9274659e41aae5417f831", null ], + [ "odomProvided", "classrtabmap_1_1CameraMyntEye.html#abc869cbd8b1106374a1f8734715d965d", null ], + [ "captureImage", "classrtabmap_1_1CameraMyntEye.html#acefbf910185313e7cf645ecff344329c", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.map new file mode 100644 index 00000000..4becbad9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.md5 new file mode 100644 index 00000000..5244fce2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.md5 @@ -0,0 +1 @@ +b7b367399ec947a71da159d485d5f145 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa04ceae9addc9f7cc887a790816de790d3325a GIT binary patch literal 6983 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.md5 new file mode 100644 index 00000000..5244fce2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.md5 @@ -0,0 +1 @@ +b7b367399ec947a71da159d485d5f145 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraMyntEye__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa04ceae9addc9f7cc887a790816de790d3325a GIT binary patch literal 6983 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraOpenNI2 Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraOpenNI2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2static
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraOpenNI2(const std::string &deviceId="", Type type=kTypeColorDepth, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2protectedvirtual
exposureGainAvailable() (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2static
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraOpenNI2virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraOpenNI2virtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2virtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
kTypeColorDepth enum value (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
kTypeIR enum value (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
kTypeIRDepth enum value (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setAutoExposure(bool enabled) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
setAutoWhiteBalance(bool enabled) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
setDepthDecimation(int decimation) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
setExposure(int value) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setGain(int value) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setIRDepthShift(int horizontal, int vertical) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setMirroring(bool enabled) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
setOpenNI2StampsAndIDsUsed(bool used) (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
Type enum name (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraOpenNI2() (defined in rtabmap::CameraOpenNI2)rtabmap::CameraOpenNI2virtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.html new file mode 100644 index 00000000..eb4ca3d8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.html @@ -0,0 +1,426 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraOpenNI2 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraOpenNI2:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraOpenNI2:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Public Types

enum  Type { kTypeColorDepth +, kTypeIRDepth +, kTypeIR + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraOpenNI2 (const std::string &deviceId="", Type type=kTypeColorDepth, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
+bool setAutoWhiteBalance (bool enabled)
 
+bool setAutoExposure (bool enabled)
 
+bool setExposure (int value)
 
+bool setGain (int value)
 
+bool setMirroring (bool enabled)
 
+void setOpenNI2StampsAndIDsUsed (bool used)
 
+void setIRDepthShift (int horizontal, int vertical)
 
+void setDepthDecimation (int decimation)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + +

+Static Public Member Functions

+static bool available ()
 
+static bool exposureGainAvailable ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 42 of file CameraOpenNI2.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::CameraOpenNI2::Type
+
+ +

Definition at line 49 of file CameraOpenNI2.h.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraOpenNI2::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraOpenNI2::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraOpenNI2::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraOpenNI2::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.js new file mode 100644 index 00000000..33062b6f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraOpenNI2 = +[ + [ "init", "classrtabmap_1_1CameraOpenNI2.html#a0c0da722b985da3595896fcc6bc72c7b", null ], + [ "getSerial", "classrtabmap_1_1CameraOpenNI2.html#a9767b92c3df7b637c75ee351208e3f0b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.map new file mode 100644 index 00000000..89a2bc6d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.md5 new file mode 100644 index 00000000..5294d83f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.md5 @@ -0,0 +1 @@ +e8553fb070aea365ba9c0ee7a72cc282 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..93ca54ada8d5e6f065bc1cc64eebe1d63437fe15 GIT binary patch literal 6987 zcmcgxbyQT*x*tNMLy$&r2tnzPP6wBovSm>5`U`Zs`z^7(kk#JKmoA z?!D{2b^m{h#S9CEea_zB_xuGS+ zB7`hkC~QjBtOl22Dbg$B8waUb&CEh6QeeME(utIFOy||rq!^~jM_=cS+PC@#q>o$8 z)_D3U)Oa>MveO;7a`kN$L!9}~W)52+P&vEFVX<7@sml+(ItaM_9gGjA!+q0lMsDXY zSLZ0s?5^K1fp<@moEfvdl~U^g45Rp6@UBiFhL@da{FwJ-NDXp9>0{=#a6>#mNW0JpL|pL6kG}GG25GOh>VG`t6r%) zZg4!UU|?c`^6*qOG}?QJiHXfLxIST0N)4povCPWKf`nk;jd|({<>lw+f@K7pmLRh6 z)KP-2e}8s$-8)(z?pf}LpvrrfEOz!myo~@G`;ZuY+4$rl-Qw@yCvtIr5q9I2*v?LA z5>iqq7Z(veKK{l?HrfyO?eLKi)wid=tpoyYMa;P=NU-mrqM>n__YximH2a*i@BFSh z*k69Z@Z?FZVha2D_0g~?3`T#-({SKhid~)E-vlgEd~<4e2E83f%V}W0T(#e zH#c3dsmXP4Xj~5S0$^*lyRM5Zevz@UoeRyrcGa#fE+#NoNPWG)@$Q_qh^3??%HYsY z*D2Tr5fM=k*rQ~g`f~0&vEcXb-_P8IVi6~N{1^)AGxPhm=>fb8Tox75+0|t_S8MNe zdCVdrB2wYBEOjs=9lASLN6*BB5lm-tyfKQ2i#s96K^t(*)p8EUA*Z6E7ZRf6{`9vs zJITFuF!g4I_DNm>CSl!o(Eba=G>FdqqW->-sMn>Yl;DSmZrj9`w*|{_$L7)YjI1%ECf4t*@&) zdU>+FnV;#Ob9-~8aklqIK2Lp=K>S+5)YR16%uLGaS31$Vi|>AAM$MmvJoi`~jB5+5UY%eu>9gib#rqD z<#d7f9~Bshh%78E)zhBaTX#i2blaKX(rfnNySTcFx$-|>j+kh0wVG}8Cpu@%wuv?S54RLi};X3>5)Do1O>dUSmJb$@?f?@Yh;4aGeS3|s2;5CSp6IYvfCb1N&k zt1|@IG>7hYX@h{{4K-8=3JMB1H!UsgB|L_MvUC{yc{~hZal#{+#lKv3k_vVSN?m!cFoeC?hJAWRijbFsC?-0Z(`iXUDN~H5t*wodkFP7>_J}rJJirLn zSj2JM@6qV7>-MP5r;+9IV|!a03P2ZfVGmY-CHOQ#U~-ux2+>*fsxg_Em?-Bw5etT6 zf+hNO_|LSl9#Lje|yCd%M)w3}2XK0Hvj=Y0&(>a)$oO5RN!M_i8%&C5%^;&2>3n=SYi+irQ&kTw7ID zb+DFVoKs(~V-Rq2>27Xe0d|d2R#vt#RZ7Kf)P(8i=!i=rMDjEVyRWaWqN1Xp>K1_G zV*o6m-}aA>r2!eJYiPXB%p?FaEg&pR&%hu(@4q`+{msvEpEkTUI6 z?F&dHUCi%?T6f9iJX#c<1bnduevS0o7j*gBt;axFEbm1^+LM~PL zch+{2&qJMje!L>N#0CDzjm>6|@OuRf(Zr8*5I1woirWi2XC1CO7Qei6QY7 z+F})XLc|RxdMH0iU|{RzBL=h!OFA?GRtyl~X)pW1Ax_QA6HaAnQZ%k-L9ys2 zMRZvwcce*@7Cx&76gJ`{b0iDsw1v~qL*u})9iloyGUa>J6YyJIxR&Xd{ zgUD2GT)R^Thnqh7S}YQd_)7)#w=z|N;^V*`IP3gZQNp;Q1XyF`J5B$eKBBpPConk? z92|U&E_t5Pvdu|ON+TKX_t-%6D?$NRK}RQb!MNDPk4%+?nfc`+BY854$Rmi;`Y)Pv z0cWX23kYXc#qs92+#(|wo+( z8%*V@_dP3XQS{BD7|dO{1R^UiH>^BiEUiGu?^0RaI}lyrdN z08;@z!VZ(#K8TKvPDoA;2lU(4-(Msv4oLo`vT|5R2pS+(2xN0}lbMw@w6RebushqH zhIVFB58&U@DJ0Sb0xgnj-0H74_xSN+ol3KNr@M0z;&&IraR1TK(ca!(0JT-Clv}Pw z5DDpePsAet8W{Zi{Hdv_8|lPya&jWxhtgx`JWM6{>tD5sqaruiw=fa!)o92!eos0Oz@)U9b&^1dta-mrdKQMs*H<+JW?_ za9LAG7jjo9Sw33~kW)~I_KGU7SJ^7cWwfa@E%eDKADC}&t+bnFzutTm5L{Tu@wsmTpz(ofGiy{%dk$aJud%%cgTa7ejI&r9|vn^L>UVQRuk~gKLxp`=GG*FK$)#||bK(a?y9T>H7&{euG=RXiYQd^g3; zz*x};d(erB8rlhqh){P#5JV{CNtu|?QBzYpo$VR!EVj}j9qLkB2;-zGEx4A>cXKSH zw{5-Ib=;V#qz9B5o+0cB6%=gf)~LFSl~EjnF6v$$Z-($MzSV&JE_z+Ow6PHh&fKgg zo~EL*vTa!WE;fzd5nf#0A_c6Y)QcBD@Mb%w|7rBhEh)hTK1r3CM8Nm7MBrlbii@8g zd2zl=cXxN06m~<1gnA~V!r_llhM$n2VAL68cGmERo1}sQHqx0F6fnP8Xwuzr1f%|8 zxKV8V9t3!)4ltZVWMmP*f|@S&Un zcTYZkA77DY+ykpmFI@XCMr+szf9B@<9qR5G9 zQ98TiaJB5zCz69u#|{377~~^sj*wwWv?!R|3V6cAwADz`G2-V!c0z^U-6g-Rn{{R!)yF#|A{)iuC z8~2uQf034uXoQFPgWjIDo3SJ{=?kcd5T@*%U6NKWmvZ?DCmxdU>7zeFidqt@Nh3MB zaIpZVWB%lYSWJ=%-Z*dwwo_^bIXS=G`qvvJ$$<12^Mf z6bO1S-M$7_^Y~R=ys=fO!bmtKPZ8TA2nub;lD7L}EM|x9F>;=_JUP9HkOIWA6K0V-+RM)jt%>_-&~#UwoIl> zo@cgB*w*CIVQPSgX!70nt{f7RE!;Zro45@=ZDHCW~H^3%N04;8V|N8j{EQp6xAf zjOM<4^-2y%;Wzg7qvgipxU^!_!1Y|Rmm4`Ow#3oP#V-N)E+{An%*ddTjU^8PUYuVa z4>;X+aF?8(dj|E5jWGk-rFvmvewQYzz3<^3G(v8HnVGZ@IyN>uH8nMW-OrVjlz`V; zURgmSCQg(sEbePR{88_*O9=*@>&*@y41}G5Ze>5OnkTWqc$(@*BHq~u;D~NPgAU<3Hdtqi_L4oWnG*dNtBEo@JBW2SI z9ZKV;XJot=O!u?D9~-zrSa)m?-SvS?FkmWR{m?^7FU&qi89$>c@ zva%Q@B_;c}R|tAhQ5q0rcpbp+H8nL65)#rqswxwEX4mSzojfI$o0H=Nd{2o^WsYoG zWQ8Zf2$zx*3tMbP?VT3K23 znsb+?n1TQn1yV3+E8=sE2{0KTwgemk%2&x~|E8Q)Vb+D6`sou2 z1Q}E=Et$A&jG)}dr~Vm^N42!J76vRS!t3^0P)bT_q{dF$%g5)rUgi&=PC+J;|4WgC zg>T}l3FsO%Ev@j2qxFu72@<(@>NdcLm0kyCT&k1nodW}kRx~vkF)1lzr#rtxfP*{; z)1OO~FWhYp!@(2{uR}VLt;=Kr01-lo9kJ4p44xyR#1o9*J02ive-P)>5qLNJdJE3IX9FW1N~j z-^6;;;o+gv#i0cMgJ>hk#A*!qgrxn4c1qm6P1`kz@XPF z+ryY@YKiD&vo!KmtpEJr3&*EHDsK_rQ>9#E4h{|-UESsN%z$Lxme(Mzgo5!)eDbR7 ztmOyqtZ+B%5~8Z5g#m4+a%@6r zFo*|e0cB$P*6j~c30XZoN~0#Ppp6ad)wQ*3?Q)}kL{PEO(d{1?6_F9tJxK`(3COQ6 zqA@Qb@RvdM!pz3j<=A=y)Hfyr1H;R*Y%y@!03eat6xbAWpbU`?rqV+I0c7yuBo2xU}&P*j7&&M7%l`y*nb{TSheol!}$_|C1g1hSm z(?BK4EI}+L^a!9La#TQ5NM);$d{{V8>~L|o zMlR^W0K)Zrgt}g=w)dcmtE)4RsG(tDlf4)LfBwn&$Fl){^0rRc692l>@cefGAmq63 z>gt+Sh2M?a4uq|H**HZqDDZQ6F7V{(ACI5F%jVGC{YF%i!aeHHUGQ`aA}^yNT_$A` F{68lqnT7xW literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.map new file mode 100644 index 00000000..89a2bc6d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.md5 new file mode 100644 index 00000000..5294d83f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.md5 @@ -0,0 +1 @@ +e8553fb070aea365ba9c0ee7a72cc282 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNI2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..93ca54ada8d5e6f065bc1cc64eebe1d63437fe15 GIT binary patch literal 6987 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 F{68lqnT7xW literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV-members.html new file mode 100644 index 00000000..d6581ba9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV-members.html @@ -0,0 +1,143 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraOpenNICV Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraOpenNICV, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraOpenNICV)rtabmap::CameraOpenNICVstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraOpenNICV(bool asus=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraOpenNICV)rtabmap::CameraOpenNICV
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraOpenNICV)rtabmap::CameraOpenNICVprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraOpenNICVinlinevirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraOpenNICVvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraOpenNICV)rtabmap::CameraOpenNICVvirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraOpenNICV() (defined in rtabmap::CameraOpenNICV)rtabmap::CameraOpenNICVvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.html new file mode 100644 index 00000000..de934eb5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.html @@ -0,0 +1,375 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraOpenNICV Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraOpenNICV:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraOpenNICV:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraOpenNICV (bool asus=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 36 of file CameraOpenNICV.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraOpenNICV::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraOpenNICV::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraOpenNICV::getSerial () const
+
+inlinevirtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +

Definition at line 51 of file CameraOpenNICV.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraOpenNICV::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.js new file mode 100644 index 00000000..f80dc638 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraOpenNICV = +[ + [ "init", "classrtabmap_1_1CameraOpenNICV.html#a4d636b36e01de97d35fb0b6bb5fc3b7d", null ], + [ "getSerial", "classrtabmap_1_1CameraOpenNICV.html#a29fe33644f755cf54307b55df898617b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.map new file mode 100644 index 00000000..a9bf8758 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.md5 new file mode 100644 index 00000000..7e1aab76 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.md5 @@ -0,0 +1 @@ +a5112f374e6e4cbaa9bb001e5bb7ec60 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..52fd44b3214ecc26463ee43c58d0d2a8b7150f35 GIT binary patch literal 7128 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 AqyPW_ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.map new file mode 100644 index 00000000..a9bf8758 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.md5 new file mode 100644 index 00000000..7e1aab76 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.md5 @@ -0,0 +1 @@ +a5112f374e6e4cbaa9bb001e5bb7ec60 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenNICV__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..52fd44b3214ecc26463ee43c58d0d2a8b7150f35 GIT binary patch literal 7128 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 AqyPW_ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni-members.html new file mode 100644 index 00000000..13faab44 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni-members.html @@ -0,0 +1,143 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraOpenni Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraOpenni, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraOpenni)rtabmap::CameraOpennistatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraOpenni(const std::string &deviceId="", float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraOpenni)rtabmap::CameraOpenni
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraOpenni)rtabmap::CameraOpenniprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraOpennivirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraOpennivirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraOpenni)rtabmap::CameraOpennivirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraOpenni() (defined in rtabmap::CameraOpenni)rtabmap::CameraOpennivirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.html new file mode 100644 index 00000000..75e9b8af --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.html @@ -0,0 +1,379 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraOpenni Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

OpenNI driver for cameras like Kinect for Xbox 360. + More...

+ +

#include <CameraOpenni.h>

+
+Inheritance diagram for rtabmap::CameraOpenni:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraOpenni:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraOpenni (const std::string &deviceId="", float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+

OpenNI driver for cameras like Kinect for Xbox 360.

+ +

Definition at line 57 of file CameraOpenni.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraOpenni::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraOpenni::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraOpenni::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraOpenni::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.js new file mode 100644 index 00000000..aec033ff --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraOpenni = +[ + [ "init", "classrtabmap_1_1CameraOpenni.html#aaa00fc3850c747fb261c87d4ad54827f", null ], + [ "getSerial", "classrtabmap_1_1CameraOpenni.html#acaeb07cbf369a47817c48acacee04e41", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.map new file mode 100644 index 00000000..9284f1ea --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.md5 new file mode 100644 index 00000000..3058cecd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.md5 @@ -0,0 +1 @@ +7a98c5eabb6fb0be187a39dc15be189d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d027be5c26c3a81cd96e6880e373946a43d974ec GIT binary patch literal 6707 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.md5 new file mode 100644 index 00000000..3058cecd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.md5 @@ -0,0 +1 @@ +7a98c5eabb6fb0be187a39dc15be189d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOpenni__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d027be5c26c3a81cd96e6880e373946a43d974ec GIT binary patch literal 6707 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraOrbbecSDK Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraOrbbecSDK, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDKstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraOrbbecSDK(std::string deviceId="", unsigned int colorWidth=800, unsigned int colorHeight=600, unsigned int depthWidth=800, unsigned int depthHeight=600, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDK
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDKprotectedvirtual
close() (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDK
enableColorRectification(bool enabled) (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDK
enableDepthMM(bool enabled) (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDK
enableImu(bool enabled) (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDK
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraOrbbecSDKvirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraOrbbecSDKvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDKvirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraOrbbecSDK() (defined in rtabmap::CameraOrbbecSDK)rtabmap::CameraOrbbecSDKvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.html new file mode 100644 index 00000000..322c7a73 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.html @@ -0,0 +1,385 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraOrbbecSDK Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraOrbbecSDK:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraOrbbecSDK:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraOrbbecSDK (std::string deviceId="", unsigned int colorWidth=800, unsigned int colorHeight=600, unsigned int depthWidth=800, unsigned int depthHeight=600, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
+void close ()
 
+void enableColorRectification (bool enabled)
 
+void enableImu (bool enabled)
 
+void enableDepthMM (bool enabled)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 45 of file CameraOrbbecSDK.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraOrbbecSDK::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraOrbbecSDK::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraOrbbecSDK::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraOrbbecSDK::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.js new file mode 100644 index 00000000..0b94f754 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraOrbbecSDK = +[ + [ "init", "classrtabmap_1_1CameraOrbbecSDK.html#a3a99d50d119791b9d3a36056aaddf59a", null ], + [ "getSerial", "classrtabmap_1_1CameraOrbbecSDK.html#a75f9abaf3ddc009c7772cc0239816b86", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.map new file mode 100644 index 00000000..49acb9a7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.md5 new file mode 100644 index 00000000..5c4c7cd7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.md5 @@ -0,0 +1 @@ +188457db7af831efd4da78024a94b1ea \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..afe6a9d7c363728afbd54a70dfecce046d565cb8 GIT binary patch literal 7440 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.md5 new file mode 100644 index 00000000..5c4c7cd7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.md5 @@ -0,0 +1 @@ +188457db7af831efd4da78024a94b1ea \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraOrbbecSDK__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..afe6a9d7c363728afbd54a70dfecce046d565cb8 GIT binary patch literal 7440 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraRGBDImages Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraRGBDImages, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_calibrationFolder (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
_multiCameraCalib (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
_multiCameraCount (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
available() (defined in rtabmap::CameraRGBDImages)rtabmap::CameraRGBDImagesstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraImages() (defined in rtabmap::CameraImages)rtabmap::CameraImages
CameraImages(const std::string &path, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImages
cameraModel() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
CameraRGBDImages(const std::string &pathRGBImages, const std::string &pathDepthImages, float depthScaleFactor=1.0f, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraRGBDImages)rtabmap::CameraRGBDImages
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraRGBDImages)rtabmap::CameraRGBDImagesprotectedvirtual
filenames() const (defined in rtabmap::CameraImages)rtabmap::CameraImages
getBayerMode() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getMaxPoseTimeDiff() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPath() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraImagesvirtual
imagesCount() const (defined in rtabmap::CameraImages)rtabmap::CameraImages
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraRGBDImagesvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesvirtual
isConfigForEachFrame() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
isImagesRectified() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
lastImageFileName() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinlineprotected
odomProvided() constrtabmap::CameraImagesinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setBayerMode(int mode) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setConfigForEachFrame(bool value) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDepth(bool isDepth, float depthScaleFactor=1.0f) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDepthFromScan(bool enabled, int fillHoles=1, bool fillHolesFromBorder=false) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDirRefreshed(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setGroundTruthPath(const std::string &filePath, int format=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setImagesRectified(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setMaxFrames(int value) (defined in rtabmap::CameraRGBDImages)rtabmap::CameraRGBDImagesinlinevirtual
setMaxPoseTimeDiff(double diff) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setMultiCameraCalibration(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setOdometryPath(const std::string &filePath, int format=0) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setPath(const std::string &dir) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setScanPath(const std::string &dir, int maxScanPts=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setStartIndex(int index) (defined in rtabmap::CameraRGBDImages)rtabmap::CameraRGBDImagesinlinevirtual
setTimestamps(bool fileNamesAreStamps, const std::string &filePath="", bool syncImageRateWithStamps=true) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraImages() (defined in rtabmap::CameraImages)rtabmap::CameraImagesvirtual
~CameraRGBDImages() (defined in rtabmap::CameraRGBDImages)rtabmap::CameraRGBDImagesvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.html new file mode 100644 index 00000000..744cbbf0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.html @@ -0,0 +1,444 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraRGBDImages Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraRGBDImages:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraRGBDImages:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraRGBDImages (const std::string &pathRGBImages, const std::string &pathDepthImages, float depthScaleFactor=1.0f, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual void setStartIndex (int index)
 
virtual void setMaxFrames (int value)
 
- Public Member Functions inherited from rtabmap::CameraImages
+ CameraImages (const std::string &path, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
std::string getPath () const
 
+unsigned int imagesCount () const
 
+std::vector< std::string > filenames () const
 
bool isImagesRectified () const
 
int getBayerMode () const
 
const CameraModel & cameraModel () const
 
void setPath (const std::string &dir)
 
void setDirRefreshed (bool enabled)
 
void setImagesRectified (bool enabled)
 
void setBayerMode (int mode)
 
void setTimestamps (bool fileNamesAreStamps, const std::string &filePath="", bool syncImageRateWithStamps=true)
 
void setConfigForEachFrame (bool value)
 
bool isConfigForEachFrame () const
 
void setMultiCameraCalibration (bool enabled)
 
void setScanPath (const std::string &dir, int maxScanPts=0, const Transform &localTransform=Transform::getIdentity())
 
void setDepthFromScan (bool enabled, int fillHoles=1, bool fillHolesFromBorder=false)
 
void setOdometryPath (const std::string &filePath, int format=0)
 
void setGroundTruthPath (const std::string &filePath, int format=0, const Transform &localTransform=Transform::getIdentity())
 
void setMaxPoseTimeDiff (double diff)
 
double getMaxPoseTimeDiff () const
 
void setDepth (bool isDepth, float depthScaleFactor=1.0f)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::CameraImages
const std::string & lastImageFileName () const
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from rtabmap::CameraImages
std::string _calibrationFolder
 
bool _multiCameraCalib
 
int _multiCameraCount
 
+

Detailed Description

+
+

Definition at line 35 of file CameraRGBDImages.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraRGBDImages::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Reimplemented from rtabmap::CameraImages.

+ +
+
+ +

◆ setStartIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::CameraRGBDImages::setStartIndex (int index)
+
+inlinevirtual
+
+ +

Reimplemented from rtabmap::CameraImages.

+ +

Definition at line 52 of file CameraRGBDImages.h.

+ +
+
+ +

◆ setMaxFrames()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::CameraRGBDImages::setMaxFrames (int value)
+
+inlinevirtual
+
+ +

Reimplemented from rtabmap::CameraImages.

+ +

Definition at line 53 of file CameraRGBDImages.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraRGBDImages::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Reimplemented from rtabmap::CameraImages.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.js new file mode 100644 index 00000000..43c6d962 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1CameraRGBDImages = +[ + [ "init", "classrtabmap_1_1CameraRGBDImages.html#a21903042693fbbc0bfc1586225efb2dd", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.map new file mode 100644 index 00000000..fcfc0c8d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.md5 new file mode 100644 index 00000000..2c4e200d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.md5 @@ -0,0 +1 @@ +25faafc59cc93987328608039022aea4 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a71e4461b62988c6a83573b7a2cf715a7f79f3d1 GIT binary patch literal 10041 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.map new file mode 100644 index 00000000..fcfc0c8d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.md5 new file mode 100644 index 00000000..2c4e200d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.md5 @@ -0,0 +1 @@ +25faafc59cc93987328608039022aea4 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRGBDImages__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a71e4461b62988c6a83573b7a2cf715a7f79f3d1 GIT binary patch literal 10041 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense-members.html new file mode 100644 index 00000000..f6a1f713 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense-members.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraRealSense Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraRealSense, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSensestatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraRealSense(int deviceId=0, int presetRGB=0, int presetDepth=0, bool computeOdometry=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSense
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSenseprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraRealSensevirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraRealSensevirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSensevirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
kColor enum value (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSense
kFishEye enum value (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSense
kInfrared enum value (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSense
odomProvided() constrtabmap::CameraRealSensevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
RGBSource enum name (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSense
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setDepthScaledToRGBSize(bool enabled) (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSense
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setRGBSource(RGBSource source) (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSense
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraRealSense() (defined in rtabmap::CameraRealSense)rtabmap::CameraRealSensevirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.html new file mode 100644 index 00000000..0938f8a6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.html @@ -0,0 +1,438 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraRealSense Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraRealSense:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraRealSense:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Public Types

enum  RGBSource { kColor +, kInfrared +, kFishEye + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraRealSense (int deviceId=0, int presetRGB=0, int presetDepth=0, bool computeOdometry=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void setDepthScaledToRGBSize (bool enabled)
 
+void setRGBSource (RGBSource source)
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 49 of file CameraRealSense.h.

+

Member Enumeration Documentation

+ +

◆ RGBSource

+ +
+
+ + + + +
enum rtabmap::CameraRealSense::RGBSource
+
+ +

Definition at line 54 of file CameraRealSense.h.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraRealSense::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraRealSense::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraRealSense::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraRealSense::odomProvided () const
+
+virtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraRealSense::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.js new file mode 100644 index 00000000..1e5ad295 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1CameraRealSense = +[ + [ "init", "classrtabmap_1_1CameraRealSense.html#a8c94957c92c38eee0d9ebbfd75d35a10", null ], + [ "getSerial", "classrtabmap_1_1CameraRealSense.html#a4abbdf6efedd229a146d066b5ff17799", null ], + [ "odomProvided", "classrtabmap_1_1CameraRealSense.html#a1ce069a366db4c98fe757acca7bf5b79", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2-members.html new file mode 100644 index 00000000..e8be4e4d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2-members.html @@ -0,0 +1,152 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraRealSense2 Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraRealSense2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2static
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraRealSense2(const std::string &deviceId="", float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2protectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::CameraRealSense2virtual
getSerial() constrtabmap::CameraRealSense2virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraRealSense2virtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2virtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::CameraRealSense2virtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setDepthResolution(int width, int height, int fps=30) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
setDualMode(bool enabled, const Transform &extrinsics)rtabmap::CameraRealSense2
setEmitterEnabled(bool enabled) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setGlobalTimeSync(bool enabled) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setImagesRectified(bool enabled) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setIRFormat(bool enabled, bool useDepthInsteadOfRightImage) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
setJsonConfig(const std::string &json) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setOdomProvided(bool enabled, bool imageStreamsDisabled=false, bool onlyLeftStream=false) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
setResolution(int width, int height, int fps=30) (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraRealSense2() (defined in rtabmap::CameraRealSense2)rtabmap::CameraRealSense2virtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.html new file mode 100644 index 00000000..27abec6e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.html @@ -0,0 +1,532 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraRealSense2 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraRealSense2:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraRealSense2:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraRealSense2 (const std::string &deviceId="", float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
+void setEmitterEnabled (bool enabled)
 
+void setIRFormat (bool enabled, bool useDepthInsteadOfRightImage)
 
+void setResolution (int width, int height, int fps=30)
 
+void setDepthResolution (int width, int height, int fps=30)
 
+void setGlobalTimeSync (bool enabled)
 
void setDualMode (bool enabled, const Transform &extrinsics)
 
+void setJsonConfig (const std::string &json)
 
+void setImagesRectified (bool enabled)
 
+void setOdomProvided (bool enabled, bool imageStreamsDisabled=false, bool onlyLeftStream=false)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 54 of file CameraRealSense2.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraRealSense2::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraRealSense2::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraRealSense2::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraRealSense2::odomProvided () const
+
+virtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraRealSense2::getPose (double stamp,
Transform & pose,
cv::Mat & covariance,
double maxWaitTime = 0.06 
)
+
+virtual
+
+ +

Gets the sensor's pose estimate at a specific timestamp.

+

Queries the sensor for its pose estimate at the given timestamp. This is typically used for sensors that provide visual-inertial odometry or other pose estimation capabilities.

+
Parameters
+ + + + + +
stampTimestamp in seconds for which to query the pose
[out]poseOutput transform representing the sensor pose
[out]covarianceOutput covariance matrix (6x6) representing twist uncertainty
maxWaitTimeMaximum time in seconds to wait for pose data (default: 0.06)
+
+
+
Returns
True if pose was successfully retrieved, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
odomProvided()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ setDualMode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::CameraRealSense2::setDualMode (bool enabled,
const Transform & extrinsics 
)
+
+

Dual mode (D400+T265 or L500+T265)

Parameters
+ + + +
enabledenable dual mode
extrinsicsthe extrinsics between T265 pose frame (middle of the camera) to D400/L500 main camera (without optical rotation).
+
+
+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraRealSense2::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.js new file mode 100644 index 00000000..0ecb1de6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2.js @@ -0,0 +1,8 @@ +var classrtabmap_1_1CameraRealSense2 = +[ + [ "init", "classrtabmap_1_1CameraRealSense2.html#a7efbcb280ddd451a9c8fdbdba599c68f", null ], + [ "getSerial", "classrtabmap_1_1CameraRealSense2.html#aff19c4db66d2403c0e09a67d1418bcdc", null ], + [ "odomProvided", "classrtabmap_1_1CameraRealSense2.html#a3b5aa7434457e09cbc6f01b985440183", null ], + [ "getPose", "classrtabmap_1_1CameraRealSense2.html#a31fc38dca7aa6dc61c68150d5409204e", null ], + [ "setDualMode", "classrtabmap_1_1CameraRealSense2.html#ad9a5218ed20bad24c020a18e2ed0b12c", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.map new file mode 100644 index 00000000..d623cd9f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.md5 new file mode 100644 index 00000000..5a276bbb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.md5 @@ -0,0 +1 @@ +c20a513b649ad8e6da74c334238afd3f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc904cf03f97fd24ff3ddf6bdf40f1a28dc43d1 GIT binary patch literal 7207 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 W*;gthYT)D#p{$@TUvk$h=sy4k((_mV literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.map new file mode 100644 index 00000000..d623cd9f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.md5 new file mode 100644 index 00000000..5a276bbb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.md5 @@ -0,0 +1 @@ +c20a513b649ad8e6da74c334238afd3f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc904cf03f97fd24ff3ddf6bdf40f1a28dc43d1 GIT binary patch literal 7207 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 W*;gthYT)D#p{$@TUvk$h=sy4k((_mV literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.map new file mode 100644 index 00000000..9e3eef76 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.md5 new file mode 100644 index 00000000..ed406cd3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.md5 @@ -0,0 +1 @@ +689120af1c6843380f53b419e260f61c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4866895025a861a4079a0de502d6d4da2d8d8732 GIT binary patch literal 7047 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.md5 new file mode 100644 index 00000000..ed406cd3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.md5 @@ -0,0 +1 @@ +689120af1c6843380f53b419e260f61c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraRealSense__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4866895025a861a4079a0de502d6d4da2d8d8732 GIT binary patch literal 7047 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraSeerSense Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraSeerSense, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraSeerSense)rtabmap::CameraSeerSensestatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraSeerSense(bool computeOdometry=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraSeerSense)rtabmap::CameraSeerSense
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraSeerSense)rtabmap::CameraSeerSenseprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.0)rtabmap::CameraSeerSensevirtual
getSerial() constrtabmap::CameraSeerSensevirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraSeerSensevirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraSeerSense)rtabmap::CameraSeerSensevirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::CameraSeerSensevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraSeerSense() (defined in rtabmap::CameraSeerSense)rtabmap::CameraSeerSensevirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.html new file mode 100644 index 00000000..620cef2b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.html @@ -0,0 +1,471 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraSeerSense Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraSeerSense:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraSeerSense:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraSeerSense (bool computeOdometry=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.0)
 Gets the sensor's pose estimate at a specific timestamp.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 14 of file CameraSeerSense.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraSeerSense::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraSeerSense::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraSeerSense::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraSeerSense::odomProvided () const
+
+virtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraSeerSense::getPose (double stamp,
Transform & pose,
cv::Mat & covariance,
double maxWaitTime = 0.0 
)
+
+virtual
+
+ +

Gets the sensor's pose estimate at a specific timestamp.

+

Queries the sensor for its pose estimate at the given timestamp. This is typically used for sensors that provide visual-inertial odometry or other pose estimation capabilities.

+
Parameters
+ + + + + +
stampTimestamp in seconds for which to query the pose
[out]poseOutput transform representing the sensor pose
[out]covarianceOutput covariance matrix (6x6) representing twist uncertainty
maxWaitTimeMaximum time in seconds to wait for pose data (default: 0.06)
+
+
+
Returns
True if pose was successfully retrieved, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
odomProvided()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraSeerSense::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.js new file mode 100644 index 00000000..4f73e7ef --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1CameraSeerSense = +[ + [ "init", "classrtabmap_1_1CameraSeerSense.html#a2fb66c8fa789c747b12c4ce85c8fc874", null ], + [ "getSerial", "classrtabmap_1_1CameraSeerSense.html#aa921995e3a4a1cd5480868998bd27b2e", null ], + [ "odomProvided", "classrtabmap_1_1CameraSeerSense.html#aa3bfa6e619c5845d4994809281c9a4b5", null ], + [ "getPose", "classrtabmap_1_1CameraSeerSense.html#a831666d29d4eabc1a00e9eb5c8b47c27", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.map new file mode 100644 index 00000000..cd7164e6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.md5 new file mode 100644 index 00000000..c66e32d4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.md5 @@ -0,0 +1 @@ +e8ef7bbe035968ed9a408ff887d935d0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aa39ccd438f170b168b251335b70d4e3ef5d4ac7 GIT binary patch literal 6899 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.map new file mode 100644 index 00000000..cd7164e6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.md5 new file mode 100644 index 00000000..c66e32d4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.md5 @@ -0,0 +1 @@ +e8ef7bbe035968ed9a408ff887d935d0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraSeerSense__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aa39ccd438f170b168b251335b70d4e3ef5d4ac7 GIT binary patch literal 6899 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394-members.html new file mode 100644 index 00000000..ad743de7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394-members.html @@ -0,0 +1,143 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraStereoDC1394 Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraStereoDC1394, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraStereoDC1394)rtabmap::CameraStereoDC1394static
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraStereoDC1394(float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoDC1394)rtabmap::CameraStereoDC1394
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraStereoDC1394)rtabmap::CameraStereoDC1394protectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraStereoDC1394virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraStereoDC1394virtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraStereoDC1394)rtabmap::CameraStereoDC1394virtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraStereoDC1394() (defined in rtabmap::CameraStereoDC1394)rtabmap::CameraStereoDC1394virtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.html new file mode 100644 index 00000000..1c06397c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.html @@ -0,0 +1,373 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraStereoDC1394 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraStereoDC1394:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraStereoDC1394:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraStereoDC1394 (float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 39 of file CameraStereoDC1394.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoDC1394::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoDC1394::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraStereoDC1394::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraStereoDC1394::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.js new file mode 100644 index 00000000..83158394 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraStereoDC1394 = +[ + [ "init", "classrtabmap_1_1CameraStereoDC1394.html#a2cc861b0f7c66b8e21267678f6f5f221", null ], + [ "getSerial", "classrtabmap_1_1CameraStereoDC1394.html#a125d6fa6e6bd7f8b2e3d22d10ce54acb", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.map new file mode 100644 index 00000000..be68736e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.md5 new file mode 100644 index 00000000..85aff204 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.md5 @@ -0,0 +1 @@ +d678a6552f4f26891292977ebfe6c848 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc2e491221cef48b0ae3d460f419388eede80e1 GIT binary patch literal 7682 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.map new file mode 100644 index 00000000..be68736e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.md5 new file mode 100644 index 00000000..85aff204 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.md5 @@ -0,0 +1 @@ +d678a6552f4f26891292977ebfe6c848 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoDC1394__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc2e491221cef48b0ae3d460f419388eede80e1 GIT binary patch literal 7682 zcmc(kcR1JK-p9YTkWuztS(TAUgzSWpk-f9`mMwcF$rhoa5VA)fbS}NTzI^OKPV4B za7~pIWRbJ;uQy-v5)g!;N>Nry!z*KT%12+r{1k7am!^hjf0mV;2RkPy%F6IXd7!?A zzRIoQ#ojLcH~!2*Eo52c>X@xx82DX!$xA|x5Jq61$X;znHfms_S0kYFF)EZNJg+4)gOw7ZfrRD zx%Z~@$jZsF2nlKO`E~9LTs2eX6lsi6q{d4TxUl>P0~K&4fr*LfwEjcfFS$A8!A?Fh zf=07)b6?;|yg&Vp|NZ5c7oFVQh0dR|zh>ZF;iLAW5n!>@+k^24n1Yh>XZOO^WW#`*s*^r;h%SxxGr{okA za!qO&^$rKH?bO1hRkGh?h}7Oub9a65IJme2*)ri=92{Z#1_suhN!L|+tQUG-yB%zpY;A4j zn0F?Tkv-DaryrY`7_`jtlXrG@E_eH*HeOBii~1l$S=HE-x>7f{xE|vN}E^BjZ~~M<*cgpWIPvg!)#lb`^UjSt$&(8-G&CXsr+0+yMgtkdJZ7Lm z?kOn+-+w3V2BE!k2o22b$3^^y}tsd2Ct|b^H-upkE2In{o-zt zaZztE?VjxD)$9h@EbjanOp)*teO#m)nks17+|@-?pjC|aX2I(74&qL{&jtU;qbMgF zKJgjsk5NjI&iwgv;o-xF2Zx8vEiG77y!wH$u@^I5zb>^I{>afzO-C2alv?3N4B;CE zoCvK=H^jYqMP6u7M``4@OHt`CHU5)|0(tf7)y)rev-L3yVwA8;_f%9`Bgoj&R?EuF z(33SoBdU6OS5NhIbjIfVk#Tx4?iVZSR<5qDDJdy$s;jm2larEgJv}|I=~WUnH8nXo zJ2(C6Oirgi>J2!(OdE@flsM1JLtJ>lxEHTF6&?eEh(;IFcJTZj>7qUcc>ozz@F~TU$p$b1;Ku zBjWm-2$}J0IAY*6Ld6^$cp)U1n}71MYz#_ix3{-jes&~mZgujpv9ZbM8|mpqfBSY1 zTCJORS6aFcd{#dm*3L4Ozp&!jf|5>5WX^Eyb=Z zNv6TPhwbf50Ynh&&e{}RYip~MtE;U`p?q#oU7gsqYuC<44gDQ2QVtG|{Er`(oEToO zUiR8hdgC~annPVoKH6OlS4kIUxp|YEk&%&$n_J4nghkkX9Gi-Y3Ta%Ms@oh;;%gco zr*)~J$HBolm4P6y>s;tLyU6=&m-&Hfh1>2NN?W4@eMpiO^3UK4cFKX^48R z(SOk3sr6V*t5zv`9KHH;VL{!-<|7&_CTwEa+|p8AS2yi(mSs;yw$J`rWM|Q?&e;Y# zCubh?&T;<;xt$ra+${gY$WQt;(!;~UDs56lkJY`sMGfk`;%#hfbj9;>a##;H+nHL; zW94N=J{jb0FZ9}qmweQM`3Ajo@Gw8`T_qip=iZ7=t<$V@f`^!xg{;a#W&{@>UtG^? zF@?m$L^n8zO|}NKjlK2CcyyLDT}c?9JX%7HPS6im`}2AbjoBrCl4}$Mq0-A3tPWgLdD#;>+_v{|++P@; z+Owl~DVg$0`)0_IyJ5}~ocMXW`j?h5j~Per#^bUeL{@h8->i9v92Bd(PuCe5$> z7bJ~qXIhDSf^zGcLDEGM%ciyMTE>hu|AC4JS>QCrywpdNejoT>LvO1 zh67`JM~irw$CuFF*zi8{Q$7j;4DFlx4>3Pp{cap!T&X(MoUQ!qfWXe!n_GY)@ag<6 zX46m`Zo`O-Vj&>}9vgT@hTnZsca@g)xRu7je-AtSpTO_x^T#QH~Ado@SpLkPrJKO{hT92NFClS*1TK`jv$s- zQ0N`-WT-WLyN>DBJvGGu^KitIW~xiokE-u_hKMufEyo{2o;0H7P8g55$f<9;yhU{y zPpLv3p_KY=`;+`5{r(*hI%r@(4gXo-0hND{MB*sqC5fuWd8pC)xg)#XjLCS#zoFsEcB0=xj9Vee8(FtB>4pe!I6;{ z02cy(eDS$8VF>-h#npB8*DoAFK|$oMz5VqEuSIbrB_&@aC$j+x8yXsxeEuvA7|m-? zi(R8n3^S{!Qg^w`B;DNHT;&iuu)O@{c`xqZ%(C-%3hVpU)6@2Mdja0^N+lfwLu^zO zK}u?BMP1nQ3@Rjl*has>pP{X-ZDV62P?^Jaz~Uq$hW_>?Zf@>X+5ird?CfkjRyMW| zY)Ien-|dd!;l$&U6YI%pXY4>8zZboQMdkfwzi3*ViAKwZ*Ui`RdlVy!#hl z*SIdcjE*LJ`t)i1moMU1I5=$VvxMzwpL%({$jjp#8y`Q%yl)c|>CiT%fHijJqWNrw z(W(E$!+X(Gd=4IeVOFpsZos6E+w;VQ+;-|wr-!z{N$ie}j$0cW%uGy7-@CeoY|3Uc z0QW0&6@27C6Bo~vSF>4k-bi*@U$%W*oDb~GxfH{=Ss!(0a*Gpw3N zV61Ic^&ursIxgW$PZ$yQc63Mq>1gm!07SpY$RIK@GIBmzE^grcL4ew9ql<`$XdEuk z+WdO?A%dJ9v`a=E!6d`oU!QKDX$r!#-d&9`q_-~s^^&z zSd$T@r2>I?Oq|1FPBRG1Pp5?*2InKe-aEPOtw>;*Wv}T>V-OP9nar09Wv0KzWw0|g zE>j4{)7adM$rNxbz{<*6KCbaWgA_Y^O2{pws_ND`NgN+I17AffU*+Ke0olL8m-Q*X zMb#;gPC!T~6f(2Yej*HnLgVl-MNdx;RExZ_G7-S}#_ovGJZMd7F^@uYDNr^9Qc_vj z28_K4IodonR%4*`wM}$_69MAC1bEO2ZbWp^?A;w!jJBs#n9AQnPRgOjp5*Wsdec8H9RW}VY zp*o?rgn*&+AgN^E|?B16i=6bDsEA18V0Ro7F;ws0k(!)awyKvqG4O<0(cCy@X& zcMI%|o?Y1&vnKX6lT2wP&6B}#Q2&0(tTbT<-9k&T_qpZY1#khrCh?L_CdP zi_}zCQv*jH^1jpS!xlfIM}EFt6aBERTT7U#oK(0@>(=q+)S6;1z2xkrk^#eK z{bezd62^&*`a4b9HCn2PmX-B7;u}H|Bt!LWFb9y{j zpKT~QTzun6Fo?U?nBU~r6FtDQAaw6`uzcA9#NuL0lxZtakK8S(s+4Zb1!NH-E@A06 zHYBX--5q*i@`J4)-2FCy25H$|LSzL60ZZe@iWBS^R4OiUIw#>r1x>nTQC}QkQnYZ& z`3;L&0(-kE>2^~+ezzMr@OW$(Hi!)Y! z@F8hPDnaO6zh+yl{2>bOtg2$Qcv@Q9GBGJh8oV^5&pU8=cfHrON82+#Ep2?o`#)g< zU4&V0(M|jI?c2pVqBiziJ)9H)w7_+V(6vGmi30>Am)GH+ytGO`*gh!N^wBR0twu3Qqx559!?FOX* zHxF9zhAr56bE7E;UR$W;{^s-cE44LSv&E{WXHscHzWU1Eg~cb}U|Lu9<|@R^L8#hw9`*_5tj$zLzCopC z?WVuGQs-`qh>4vG?Ku}8o5jVap!}fS&n;vH$b-Fl=gu9{OP4Txe2y#@o-{qfxu>XT zUHTk+zsWjJlG)kWl8Oo(#OvwPrp`{FW5BqTl@$)xLw_aN0=e1z{W}5T zG~0|55*|KZ+RoSl+g=L(MhvYG!TOhd#`D#JwE-cUe2pLzT`s!<9+=#tM`Ud=G=oe2 zs~@s+7b+kZfMBl~q3Dy6k`8{SJC=ZBdY+1=-{^Wf;CyroTi|n^KYxDyM}Fry*`4K) zhs%4CU>tx)VS6KwL|x&@lP3l3c2l(!U^YMnAY>-(&lwI@%6d1(ZHp^Jd*DdhU_QrZ zWs$Jjj7+-8!pwS^kT44-;gY{>2q+0Ia)Ql|cWlvx76BOUNj;3F;9lkgoSnYt7($US=I{3S_^?R!d7Z2+7(gxRb4Qmp5U<&7aTO(f~K}MKH{}pRF$@) zsi6@f;dh8wiE`QxXRC6ZR}BJacCM{JifpveIU2+MsvLT!h>nZO^Cru1Bt%vXB7Jq9 zjtEKHSXp#AD zK}s4wc@hFw0Z?Nt0|S?!VVq|(6pQF^fUO(lOxU_vx*jhdUpr7BDI?>#Fgw>_V4I2f z>=mN@cP~#m)fDL^CAqn0#fk4x!~Vp-d|sASz9Y zJvutdEFwY;-I0rn>+Uql&&1I&4n%6i5jc}gqodRg4i42|N#9pe+Jxe;si^Q+)y2la zvHo%^K-*yNb_w{O;Ix084gvpA78`J%nudl2BaPLliP4I(5YRPA>pY-(oa3>@n*(nki#b*?|a zXoA{`OG~4DVs35%PJez;kzal(w4K(5(_KE;@7#|c3BcewfX{rSp>dA9h|0o_$&%GF zHRL@JH9z9Bw<4vZLjxBhCFd=U=EmEx0!J97Tie^ti+wC$nwfzV24P^}I!GBS9}Gq` zD<>x&L?$OE2h%dRqC$w#XGH+H>+5@GU~mvFQ(nNW)EA$9R@g&u5m6`=6!p^j`TD}dpZr8C zY6G__2k_3NKmr;X8jaw*gL2@%VdH;)f|f8;ItcDRC>7!uqT^-PVl+d8X3`oyG3*kxS*u{8HRyN$FC9)_3Yl?z_HH& literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2-members.html new file mode 100644 index 00000000..529874a3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2-members.html @@ -0,0 +1,143 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraStereoFlyCapture2 Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraStereoFlyCapture2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraStereoFlyCapture2)rtabmap::CameraStereoFlyCapture2static
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraStereoFlyCapture2(float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoFlyCapture2)rtabmap::CameraStereoFlyCapture2
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraStereoFlyCapture2)rtabmap::CameraStereoFlyCapture2protectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraStereoFlyCapture2virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraStereoFlyCapture2virtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraStereoFlyCapture2)rtabmap::CameraStereoFlyCapture2virtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraStereoFlyCapture2() (defined in rtabmap::CameraStereoFlyCapture2)rtabmap::CameraStereoFlyCapture2virtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.html new file mode 100644 index 00000000..8f43d3c7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.html @@ -0,0 +1,373 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraStereoFlyCapture2 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::CameraStereoFlyCapture2 Class Reference
+
+
+
+Inheritance diagram for rtabmap::CameraStereoFlyCapture2:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraStereoFlyCapture2:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraStereoFlyCapture2 (float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 41 of file CameraStereoFlyCapture2.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoFlyCapture2::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoFlyCapture2::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraStereoFlyCapture2::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraStereoFlyCapture2::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.js new file mode 100644 index 00000000..aaf22f3b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraStereoFlyCapture2 = +[ + [ "init", "classrtabmap_1_1CameraStereoFlyCapture2.html#a46a2477a1c151927c9d5e7eea51d3354", null ], + [ "getSerial", "classrtabmap_1_1CameraStereoFlyCapture2.html#a06d1e6cd0ea504f6601e78ecbd0442df", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.map new file mode 100644 index 00000000..8e782036 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.md5 new file mode 100644 index 00000000..030e0fec --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.md5 @@ -0,0 +1 @@ +c9cf8af61497254c9957558f8ede86a1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..faa492318501aaa966d2e95230854095eb23a072 GIT binary patch literal 8485 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.md5 new file mode 100644 index 00000000..030e0fec --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.md5 @@ -0,0 +1 @@ +c9cf8af61497254c9957558f8ede86a1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoFlyCapture2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..faa492318501aaa966d2e95230854095eb23a072 GIT binary patch literal 8485 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraStereoImages Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraStereoImages, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_calibrationFolder (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
_multiCameraCalib (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
_multiCameraCount (defined in rtabmap::CameraImages)rtabmap::CameraImagesprotected
available() (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraImages() (defined in rtabmap::CameraImages)rtabmap::CameraImages
CameraImages(const std::string &path, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImages
cameraModel() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
CameraStereoImages(const std::string &pathLeftImages, const std::string &pathRightImages, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImages
CameraStereoImages(const std::string &pathLeftRightImages, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImages
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesprotectedvirtual
filenames() const (defined in rtabmap::CameraImages)rtabmap::CameraImages
getBayerMode() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getMaxPoseTimeDiff() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPath() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraStereoImagesvirtual
imagesCount() const (defined in rtabmap::CameraImages)rtabmap::CameraImages
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraStereoImagesvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesvirtual
isConfigForEachFrame() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
isImagesRectified() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
lastImageFileName() const (defined in rtabmap::CameraImages)rtabmap::CameraImagesinlineprotected
odomProvided() constrtabmap::CameraImagesinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setBayerMode(int mode) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setConfigForEachFrame(bool value) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDepth(bool isDepth, float depthScaleFactor=1.0f) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDepthFromScan(bool enabled, int fillHoles=1, bool fillHolesFromBorder=false) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setDirRefreshed(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setGroundTruthPath(const std::string &filePath, int format=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setImagesRectified(bool enabled) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setMaxFrames(int value) (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesinlinevirtual
setMaxPoseTimeDiff(double diff) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setMultiCameraCalibration(bool enabled) (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesinline
setOdometryPath(const std::string &filePath, int format=0) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setPath(const std::string &dir) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setRightGrayScale(bool enabled=true) (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesinline
setScanPath(const std::string &dir, int maxScanPts=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
setStartIndex(int index) (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesinlinevirtual
setTimestamps(bool fileNamesAreStamps, const std::string &filePath="", bool syncImageRateWithStamps=true) (defined in rtabmap::CameraImages)rtabmap::CameraImagesinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraImages() (defined in rtabmap::CameraImages)rtabmap::CameraImagesvirtual
~CameraStereoImages() (defined in rtabmap::CameraStereoImages)rtabmap::CameraStereoImagesvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.html new file mode 100644 index 00000000..19c8b485 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.html @@ -0,0 +1,565 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraStereoImages Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraStereoImages:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraStereoImages:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraStereoImages (const std::string &pathLeftImages, const std::string &pathRightImages, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
+ CameraStereoImages (const std::string &pathLeftRightImages, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
void setRightGrayScale (bool enabled=true)
 
void setMultiCameraCalibration (bool enabled)
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual void setStartIndex (int index)
 
virtual void setMaxFrames (int value)
 
- Public Member Functions inherited from rtabmap::CameraImages
+ CameraImages (const std::string &path, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
std::string getPath () const
 
+unsigned int imagesCount () const
 
+std::vector< std::string > filenames () const
 
bool isImagesRectified () const
 
int getBayerMode () const
 
const CameraModel & cameraModel () const
 
void setPath (const std::string &dir)
 
void setDirRefreshed (bool enabled)
 
void setImagesRectified (bool enabled)
 
void setBayerMode (int mode)
 
void setTimestamps (bool fileNamesAreStamps, const std::string &filePath="", bool syncImageRateWithStamps=true)
 
void setConfigForEachFrame (bool value)
 
bool isConfigForEachFrame () const
 
void setMultiCameraCalibration (bool enabled)
 
void setScanPath (const std::string &dir, int maxScanPts=0, const Transform &localTransform=Transform::getIdentity())
 
void setDepthFromScan (bool enabled, int fillHoles=1, bool fillHolesFromBorder=false)
 
void setOdometryPath (const std::string &filePath, int format=0)
 
void setGroundTruthPath (const std::string &filePath, int format=0, const Transform &localTransform=Transform::getIdentity())
 
void setMaxPoseTimeDiff (double diff)
 
double getMaxPoseTimeDiff () const
 
void setDepth (bool isDepth, float depthScaleFactor=1.0f)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::CameraImages
const std::string & lastImageFileName () const
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from rtabmap::CameraImages
std::string _calibrationFolder
 
bool _multiCameraCalib
 
int _multiCameraCount
 
+

Detailed Description

+
+

Definition at line 39 of file CameraStereoImages.h.

+

Member Function Documentation

+ +

◆ setRightGrayScale()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraStereoImages::setRightGrayScale (bool enabled = true)
+
+inline
+
+ +

Definition at line 59 of file CameraStereoImages.h.

+ +
+
+ +

◆ setMultiCameraCalibration()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraStereoImages::setMultiCameraCalibration (bool enabled)
+
+inline
+
+ +

Definition at line 77 of file CameraStereoImages.h.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoImages::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Reimplemented from rtabmap::CameraImages.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoImages::isCalibrated () const
+
+virtual
+
+ +

Reimplemented from rtabmap::CameraImages.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraStereoImages::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Reimplemented from rtabmap::CameraImages.

+ +
+
+ +

◆ setStartIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::CameraStereoImages::setStartIndex (int index)
+
+inlinevirtual
+
+ +

Reimplemented from rtabmap::CameraImages.

+ +

Definition at line 83 of file CameraStereoImages.h.

+ +
+
+ +

◆ setMaxFrames()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::CameraStereoImages::setMaxFrames (int value)
+
+inlinevirtual
+
+ +

Reimplemented from rtabmap::CameraImages.

+ +

Definition at line 84 of file CameraStereoImages.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraStereoImages::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Reimplemented from rtabmap::CameraImages.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.js new file mode 100644 index 00000000..901c96d7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraStereoImages = +[ + [ "init", "classrtabmap_1_1CameraStereoImages.html#abc0cb4bfd56314d0003c6ce5d365cbca", null ], + [ "getSerial", "classrtabmap_1_1CameraStereoImages.html#a507ca5b4c37b75f4108e9aa8dad5125b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.map new file mode 100644 index 00000000..5bea9c78 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.md5 new file mode 100644 index 00000000..204ec62f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.md5 @@ -0,0 +1 @@ +4bbc0f1e8d6c277bcb98d0946cc5c86f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4b68b61f320464983035a752934bb56e473059c6 GIT binary patch literal 9940 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 + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.md5 new file mode 100644 index 00000000..204ec62f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.md5 @@ -0,0 +1 @@ +4bbc0f1e8d6c277bcb98d0946cc5c86f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoImages__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4b68b61f320464983035a752934bb56e473059c6 GIT binary patch literal 9940 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraStereoTara Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraStereoTara, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraStereoTara)rtabmap::CameraStereoTarastatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraStereoTara(int device, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoTara)rtabmap::CameraStereoTara
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraStereoTara)rtabmap::CameraStereoTaraprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraStereoTaravirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraStereoTaravirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraStereoTara)rtabmap::CameraStereoTaravirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraStereoTara() (defined in rtabmap::CameraStereoTara)rtabmap::CameraStereoTaravirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.html new file mode 100644 index 00000000..1ec6747a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.html @@ -0,0 +1,373 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraStereoTara Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraStereoTara:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraStereoTara:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraStereoTara (int device, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 43 of file CameraStereoTara.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoTara::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoTara::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraStereoTara::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraStereoTara::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.js new file mode 100644 index 00000000..2b9ab5d0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraStereoTara = +[ + [ "init", "classrtabmap_1_1CameraStereoTara.html#a3cd79ca07d74d6a3501f3ecd9b31bbef", null ], + [ "getSerial", "classrtabmap_1_1CameraStereoTara.html#a87d7cdfd3354bdffd8e9e88f1244c79d", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.map new file mode 100644 index 00000000..4aaaa8e6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.md5 new file mode 100644 index 00000000..601b8f8c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.md5 @@ -0,0 +1 @@ +3f058003e9eba970f9eeea6a0f4e5831 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8d998d45fbb5449f5b69551833aed1841348c313 GIT binary patch literal 6967 zcmc&(by!qiyB$KBA*5SckW!Ea>25@%VUP|5hAu%uVL$<8P*Os=yGy!D8VTu??z{PY z_kQ=e&;9>iU}pAn4rk9k@B8lcuC>m4O?3r)94Z_L1cI-mD60)VC&8-<3j@5r4*F;T zJ}@j)6l5W{cfY9(KVl&es%<4%DP7ORojEUE-L-Sf{XN<#dD$?z$n10m3QZzvt&Fb_ zJ`Q~ZbD_;RMFhX3nxjR9@aJ-Ehp#rO1zDu+?e`2lf+wm&a3~PO&z6bNco$>^y*!iA+aHp<+M=#ZPI#g?QsM zF!}qmw21O@{@`+!CyJbrC9H3nDPjpRBl)o5n}Oo~R}?olH|*@}yzUPp1#)yS^Ru!r zl$4Y-^Ts>4LrPc^RGV{ibARvcMPm}sQPh!i&((Pl1e~?e@Bi)Pf!$o4Pd4}n+S%J9 zjP)Y?&lWNBUzTBvW~sGt7S#vs@4sGIS)s_-DHJ%ZNSXJB9*C4Sx2HoN=j

;&s>y)0^DnlEa^_J{xb~{{2Nl9gO^(?^!-&pW3ip!nRY><`ZWf^~ee-c_+HCfrW zZ{M!0tts4RQ_uL*8?U3M_hnLENeLSzwY^=|dl?~UGhJ?5?tkq)V#6;ht7~GS4z7$t zA{BeTaHXfFGJJ@PWJbu#l$4b4`(3zwePRvG%*a?Do6t^yJDSvcmUK(J57#R&klXrI z%D+c5J7e!A!Mb~oU%cI-t5WxFw@0o%8e|DYWmLzavg1L?exm6 z!QP#jsvPUVWD+8xVH@ak4$_?QO=$E~FHh5~&91AfYxm$_w4I$@yZb<*undT+ZRN!G z@88Kf)lIduv`DC^yob602XV+sjB+}l!Ll=3ogpQKh;B%@iEsZ)?;~Ewo zK9D4;fQ^mqwmJ6jV#hf^B`PZF2rP;5g3nAjGseQg!shnodS!7@3S?TIWkdTNS!na*0Is`iRtc}IQ8-w7{9|hqdqk>i2Ge^ z{BYZz8moAV8#w4&~+KXxt-iSOT+nX84T z_w@9Tt(7ss$mr=8Y<8P&Z+uWw4?9SysZ~r&O!_BswQ~$;ME&3ifqo}b)=Ms4UcxA; zeSLjo(TAs}KaA_#H}G5>9P+ELrz`B4u~7f~`SX5es|op{$VAP_$!V#sRxgjm$Hzxm zQIS_MMOGFZ&pbMEd*jpgNA25FtrQ8rY>gBN5()}MdcPwgunUpl;ZgLG>L9uzJnNuR zKWgWUZQO#ASvnE-ITk)Q$?og1Q^eNoyZL4PRcX(^c3>)@!2Xj4lrS4WV9Jd zmFkZ|Jm|>Jsre;nc5LtHxPA1hE0A(KPkV>YWu;5+R7p{>Ia%E2veG~`Q8X6j1e_Up3;VKRRT^}DTxf>c9R@c->5hnW%z9d9vC&7vP@`WlxgN=svOpOZ)R4GjmaxIAV{?eDSh@X#R{KYqa4!->}C8|pms zi;8%jI!xxT?0WqWWW64u%RvhMNO0uJ90kYY(=Htl3|Ox{Ji_YgM16gI ze{XJn;CxY-3Uc+@#ibQYKursCa^k*G{$As%$xb5VeZ)>D=^weWVwrDP1x@igp{#VA znOH}lLzI=3sm4JPIuO)hBO}@wnVIHe*;;BRQ^S1rn?{><**Q5x0fpJwHtv#;f~X`u zWS>s^?p$44Yb)x{pFfvs?SB=v{QP+jg!7rECSja1i_>iN@cLxa?e*S}T?Hf%)J&Rb zlRt%sn@!y&uWU-*i=vKDeCl?;EuIv~0J<;&dJLlXGqEu-3|Od%iHU?HB=73$#ccSg z&Mq(878dA1Nq2R14SDeitbsiQhR>qu#CgqI(a|w6mq#*HAc65F-q?apv(J2e#RA!Q zCZi>9^w(&c9+;Y%swOqya#Nb%HAMaB&IB%w%c2`l|wY z_UaYO$@bLfQjLe(c81v)r@mhh0|PTNx=xmAOWB}A#QEVGlaLSvz5m$*BO{}sIuB(h zt3j)%sQB3Xr>mz&T344Okge*oVWmS$UQy$RmS9XK9v*_WFoI6g+lyahGh(lQL*~7= zxFTtUiLWnD!w?93uozzFd9gfhaO5tc7$ag~jJxEei z7ydYNwf8as`|+esdv83?;euQo1%3djEc#Sc3g7}+Y{BTNtg(I><92Fmf(yok-Ik~r zm<}NfA5W}iZ?O$_G!AP{br@s2@&29?;{C1KNI3eEnD%C9NeuEV^dLo*n46-8ISca! zZ$jxK*#ihagn!7Quw={pVv$pyt@!ENK9@01tmfT-JY`J%@2As{v<@V^Wa5A{|9+R& zGRqYOcVKFlj(N}lhsDKGARKzQzjCsVP07z}mVD4-ez9aId;in`^(9;`GtWI~oq!jHD(_4s zj=lB2?Q?y{{uU7AZP2ZWmAWDMp81)MJxXU1iu6{%3k2moFcb2*V4tjttL(>woP(ax zyzmNA%)U4xvhqfitxMkJMX-|NJkL!Tf$Fe{1@wv_%EZbhW-(tXcuD0VCo*Tm40`m9 ze(Lt*RV2JUX4K8B+g8METLgJ?hVwsD^1qYxe|w}W;}&~rXlN)nh@p?)oi-~dP67g1 zbSnMC$ww>e#?H!W^`&IXCMux>*9H+0fy=6jG~0fx+J^-rHzU5eT)15VT%dzHU5=HW zH$)o6+1VKu-=eB%VDPm>#fCHh1EwlX!`s2!j&e6BW(7@4nh9ymTR z!3ek}$LF5OOfdnlR}@uL+Q#!DZodLqEWoU>Cen3}E107MVGCn0GdUn>x)6?@AcRU&d@U_=BS6*iq7fZwG3SE7D z@4~_`9UL4q4GkjzyKL*}!P(v26>+Q>v%Y@X+tWjJj1Bo!XdDb6I2q6s*7&u)gy8LM z2ct$`N;*0^i#k3&K6W0SFeC0?b)l7scmDz&t=r6D%Evo#sI9Nleg!P`4K5Bd1CtS^r?M!UzyKhMt1bx%xufznH; zCMPHJ+l{f8R#aq$;F52SO?(0rnpGoN^^T{yoC8c|gv7&O@mZmkceudJ^t zg3DGmHljrM;N#2;ZJ8qR&5XLEgVY(ae-FX%A&3@7Bf8f@GM-%+>-guJw*BrTRr z<3ne@eo0W4dQ$G)@@xyBe(=yhc#WYfM8DF35=;i9l3WJ~^IUq+MMb(}MjDUKy z?>ILcfAP#aJehH35)-2lbe?Zdl?sMHnl8qR+Wk7CXz%I@Hd$;A2}D7|NCjM=+I20; zvkpW~A&Tbx@z$@cG1GvW(o$la5b2@=+X9g8U)`~6i|gxHoSdA@tgNVz`uh4}$C;;u zpC;9HTt^IOjiuu8kV#3#5i_8a2x({{L5ackf46`pc_+&zOJMMmyxX9P($XL!ZUtN0 zoa#cK)7_;(z@CFaFC91l0~s|ngw&$&5-@h}?HU*f@-dr6HZq+ZNJ_C&@ z6ps=WQvGHb18l|iKb4PVQ@F%ekRou7{DOjm#V~qCF)^bbY83|fQiMl^X^5Dn=U*BaNayHUT%PP8`E7|Ypfp&3#adchGd+Du z=67+_0=CUfR21*TuY*- zr&s-Y5!Gp~Hl(_`8j6s6G4uy@b!`n(MMWhE4wl#Uh0BnTlJb3x>zV~9WL$}%rA3YQ{P@_YSK!9@LIHEC3Q~W$N$hsi2_Mq2I{Y6zQM=b$|`iR zEsRM*g3j;qL~fzc?^tB7GBIA2wGHTVqWkxQtE+{w$L%8NCFzKWi25sY_Vjt*SFAm> zuzr48&c(*oIhpB3m9+TKBL0>Y6V}m=@`OljPPt^DsMil;E8qKQ{lN|0dpND{z5fZ( z>KXMH-2wTByysyw2?+_|QBhCbDOn#Ztag(-(e^e8xUghBc=BX)lBK*S1C2Gdo12WB zJiWSlaxxQ%zSACWiXNC)K4*rM_2sy%7Mn&~P!@7)~>pCc|qM{2m&>*OHfZ;)J zH7TFpzICzs_ewI?d#UmeyIO3dEG ziwX}G1(o-QP|BJ|S(xC2CT<^QYEG4MIw|ij{bSziH_akwTx1a5qN>$yM@AyajK^g|pgCpp>rL21{cV+uBN^cs}~oYTipCbzN=;yIAH#zTcd})iJ;Y z^9-ezQU@i=tL5*gUd$Xxz6v6fB&70P(`+_`Kw1~v^zQq6dVl7dkmC|o!~Bw%h1O9R zybDqep!&^2Qq-BQ5lMyH0;eqCpld#zQ)q-lyZ^dS95P9@Kq3U}^2D)H{{)UxiXqoN z^7&Y)>9qC^P_dv448n z3A_#0oLXMWmoHxm0sq8lp%JmUX(uEi(%RXH$%g0wp8gJi)imH*pwOfN=O6BqUBzWs*$m{P{Y3s-fYer2tm;W3EEs*0;ERc9X}P!+ z6cl8*<6(=fA@cdTuQ0IhZU`Xeo3#O2fPpdvdT0>$o#_zZYP3vEQSQ|rLM3j_U`9>; zv_TBb0|QWCsVM+mioV#%69Y z>oBsGERTR*xGb+ z%o9m12n7gEGT74Hjos4HvQ#P|P<~uLW+$+;w6xzZxR9Egi&I!w2=Ml8LxW$eYbmgn znAz9_4Lj2nqBS)&1B;7!L4;5tVq#*y7Z*_=;qTu|xx2fk3p;AiGRa5U93cPxbpa?y zzp=3a2{dmDH3y0n$WEsNc=n#rmMCkeSuy7%;3WH7rngiB0|Nk1)aKR4jOQy1xPZ93 z>z_hGLS{ftE=d5F)DyUesk$7W;^N)`mH-0{vACoJ1!7d=a?jk{+;cU-y4ZO^!eP1` z8!WJc{`O2kS6A1pEfjx$f4@0fD;;mb+LcbsGZ1vZNLta#pVvn@X$5N)uudpoYWYSr z#NysZ%?Hb!CGagh;0wz8zTr=d1-(kp@J^G`(9*uSI(wsQmWesgY|T72Wwi=+r@p>sh;M>o4``rQW3+N`nW zKw)EHVKoCf46i&tKQ{+PP;qH#>q>X5xxIaabK|-E?9EaHkHzoix5eerLd3? zzXA8dheYvPrq6+yXJ&4W@=xQXLUg41J^fMmB_<|@OeRa?j?@7j0cqX~xV@D30~+DZ zet}R8D%rz<5BBceJII}x#BE&r4)Edn>ysIZ$Cirejng^`_MQ4KUrMpYzORaa+<6=j zjgA`NC?TRoPp_yZzVGqTnimHO)LT1NUjZA{VWE*0RLY$R1xWlrvUmjW&XTS-SyOLH z+28{64=X4TK`mH$R+Die0!T?#w$jaI@mNA^1nri9o#Rb!~1G7ZS*cg$Y{|LYw zDX^1vs3L%4cC}1@`wVa>4o*(3=g&i2*9OwEv$4Pi1TnYu*|gcAz{JD^vdMgJzJZ;S zQw9_gfR`}9R;oOY?FNNZ_yqBlPLTe8SGw;WNZbVySjS6A9`pY=JRm0NfExp9BzZYC zxZg$~xlVHm*d`M0?I$AlArm+Kb;ZLx<{WZy3${+@_^`SJRxQ~0pa@wAe#}Ts9?D zetx$~2CU1iWIZ?>pz9rL1v(+p7-y?}WMt%-tSfNdp<||lrk^eTC3lZvZ*#}$_8RTC ziS@}lUi@1C|JR^jVg=aY{$Js|6D$JM#i06syu|$1W2S$eHTCIUOP0uIvyXmKK?hI5 OAWCxTvW3!SLH_|qMPBIu literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.map new file mode 100644 index 00000000..4aaaa8e6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.md5 new file mode 100644 index 00000000..601b8f8c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.md5 @@ -0,0 +1 @@ +3f058003e9eba970f9eeea6a0f4e5831 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoTara__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8d998d45fbb5449f5b69551833aed1841348c313 GIT binary patch literal 6967 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 OAWCxTvW3!SLH_|qMPBIu literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo-members.html new file mode 100644 index 00000000..a2df902f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo-members.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraStereoVideo Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraStereoVideo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideostatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraStereoVideo(const std::string &pathSideBySide, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideo
CameraStereoVideo(const std::string &pathLeft, const std::string &pathRight, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideo
CameraStereoVideo(int device, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideo
CameraStereoVideo(int deviceLeft, int deviceRight, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideo
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideoprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraStereoVideovirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraStereoVideovirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideovirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFOURCC(const std::string &fourcc) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideoinline
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setResolution(int width, int height) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideoinline
setRightGrayScale(bool enabled=true) (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideoinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraStereoVideo() (defined in rtabmap::CameraStereoVideo)rtabmap::CameraStereoVideovirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.html new file mode 100644 index 00000000..4389e492 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.html @@ -0,0 +1,482 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraStereoVideo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraStereoVideo:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraStereoVideo:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraStereoVideo (const std::string &pathSideBySide, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
+ CameraStereoVideo (const std::string &pathLeft, const std::string &pathRight, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
+ CameraStereoVideo (int device, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
+ CameraStereoVideo (int deviceLeft, int deviceRight, bool rectifyImages=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
void setResolution (int width, int height)
 
void setFOURCC (const std::string &fourcc)
 
void setRightGrayScale (bool enabled=true)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 36 of file CameraStereoVideo.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoVideo::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoVideo::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraStereoVideo::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ setResolution()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::CameraStereoVideo::setResolution (int width,
int height 
)
+
+inline
+
+ +

Definition at line 71 of file CameraStereoVideo.h.

+ +
+
+ +

◆ setFOURCC()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraStereoVideo::setFOURCC (const std::string & fourcc)
+
+inline
+
+ +

Definition at line 72 of file CameraStereoVideo.h.

+ +
+
+ +

◆ setRightGrayScale()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraStereoVideo::setRightGrayScale (bool enabled = true)
+
+inline
+
+ +

Definition at line 73 of file CameraStereoVideo.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraStereoVideo::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.js new file mode 100644 index 00000000..c51389b7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraStereoVideo = +[ + [ "init", "classrtabmap_1_1CameraStereoVideo.html#a8bc165fb5c77bb9693203791a0888269", null ], + [ "getSerial", "classrtabmap_1_1CameraStereoVideo.html#a0eba205715f6f856b14eaba8de2eadcf", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.map new file mode 100644 index 00000000..916ea7c9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.md5 new file mode 100644 index 00000000..59ebba66 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.md5 @@ -0,0 +1 @@ +deb4cfb3c577a65a03ca9c36893b2184 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3c503348a82743c7c59b70492e7d22bed76ba8ff GIT binary patch literal 7266 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.md5 new file mode 100644 index 00000000..59ebba66 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.md5 @@ -0,0 +1 @@ +deb4cfb3c577a65a03ca9c36893b2184 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoVideo__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3c503348a82743c7c59b70492e7d22bed76ba8ff GIT binary patch literal 7266 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraStereoZed Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraStereoZed, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZedstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraStereoZed(int deviceId, int resolution=-1, int quality=1, int sensingMode=0, int confidenceThr=100, bool computeOdometry=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity(), bool selfCalibration=true, bool odomForce3DoF=false, int texturenessConfidenceThr=90) (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZed
CameraStereoZed(const std::string &svoFilePath, int quality=1, int sensingMode=0, int confidenceThr=100, bool computeOdometry=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity(), bool selfCalibration=true, bool odomForce3DoF=false, int texturenessConfidenceThr=90) (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZed
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZedprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNeuralModelWarning(int quality)rtabmap::CameraStereoZedstatic
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.0)rtabmap::CameraStereoZedvirtual
getSerial() constrtabmap::CameraStereoZedvirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraStereoZedvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZedvirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::CameraStereoZedvirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
postInterIMUPublic(const IMU &imu, double stamp) (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZed
resetTimer()rtabmap::SensorCapture
sdkVersion() (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZedstatic
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setRightGrayScale(bool enabled=true) (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZed
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraStereoZed() (defined in rtabmap::CameraStereoZed)rtabmap::CameraStereoZedvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.html new file mode 100644 index 00000000..1ca0d332 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.html @@ -0,0 +1,512 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraStereoZed Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraStereoZed:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraStereoZed:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraStereoZed (int deviceId, int resolution=-1, int quality=1, int sensingMode=0, int confidenceThr=100, bool computeOdometry=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity(), bool selfCalibration=true, bool odomForce3DoF=false, int texturenessConfidenceThr=90)
 
+ CameraStereoZed (const std::string &svoFilePath, int quality=1, int sensingMode=0, int confidenceThr=100, bool computeOdometry=false, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity(), bool selfCalibration=true, bool odomForce3DoF=false, int texturenessConfidenceThr=90)
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.0)
 Gets the sensor's pose estimate at a specific timestamp.
 
+void postInterIMUPublic (const IMU &imu, double stamp)
 
+void setRightGrayScale (bool enabled=true)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + + + +

+Static Public Member Functions

+static bool available ()
 
+static int sdkVersion ()
 
static std::string getNeuralModelWarning (int quality)
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 43 of file CameraStereoZed.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoZed::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoZed::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraStereoZed::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoZed::odomProvided () const
+
+virtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoZed::getPose (double stamp,
Transform & pose,
cv::Mat & covariance,
double maxWaitTime = 0.0 
)
+
+virtual
+
+ +

Gets the sensor's pose estimate at a specific timestamp.

+

Queries the sensor for its pose estimate at the given timestamp. This is typically used for sensors that provide visual-inertial odometry or other pose estimation capabilities.

+
Parameters
+ + + + + +
stampTimestamp in seconds for which to query the pose
[out]poseOutput transform representing the sensor pose
[out]covarianceOutput covariance matrix (6x6) representing twist uncertainty
maxWaitTimeMaximum time in seconds to wait for pose data (default: 0.06)
+
+
+
Returns
True if pose was successfully retrieved, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
odomProvided()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ getNeuralModelWarning()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::CameraStereoZed::getNeuralModelWarning (int quality)
+
+static
+
+

If the given ZED depth mode (quality: same encoding as the constructor) is a NEURAL mode whose AI model isn't yet downloaded/optimized for the GPU, returns a human-readable warning that the first start will be slower (the ZED SDK downloads/optimizes the model during init()). Returns an empty string when the model is ready, the mode isn't neural, or the SDK/build doesn't support the check.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraStereoZed::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.js new file mode 100644 index 00000000..e7b89c00 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1CameraStereoZed = +[ + [ "init", "classrtabmap_1_1CameraStereoZed.html#a80088853404d1c4e89b5f29933d7b020", null ], + [ "getSerial", "classrtabmap_1_1CameraStereoZed.html#a8c13902c0c25565357e6f7e0a16f0838", null ], + [ "odomProvided", "classrtabmap_1_1CameraStereoZed.html#ac57ca4d52b5a0a3c3911ffa4a139564c", null ], + [ "getPose", "classrtabmap_1_1CameraStereoZed.html#a1fceb3208a256d1023739a60f5931def", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC-members.html new file mode 100644 index 00000000..db3f18dd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC-members.html @@ -0,0 +1,144 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraStereoZedOC Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraStereoZedOC, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::CameraStereoZedOC)rtabmap::CameraStereoZedOCstatic
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraStereoZedOC(int deviceId, int resolution=3, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraStereoZedOC)rtabmap::CameraStereoZedOC
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraStereoZedOC)rtabmap::CameraStereoZedOCprotectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraStereoZedOCvirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraStereoZedOCvirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraStereoZedOC)rtabmap::CameraStereoZedOCvirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setRightGrayScale(bool enabled=true) (defined in rtabmap::CameraStereoZedOC)rtabmap::CameraStereoZedOC
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraStereoZedOC() (defined in rtabmap::CameraStereoZedOC)rtabmap::CameraStereoZedOCvirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.html new file mode 100644 index 00000000..3e186d98 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.html @@ -0,0 +1,376 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraStereoZedOC Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::CameraStereoZedOC:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraStereoZedOC:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraStereoZedOC (int deviceId, int resolution=3, float imageRate=0.0f, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
+void setRightGrayScale (bool enabled=true)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + +

+Static Public Member Functions

+static bool available ()
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 47 of file CameraStereoZedOC.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraStereoZedOC::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraStereoZedOC::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraStereoZedOC::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraStereoZedOC::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.js new file mode 100644 index 00000000..008010da --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1CameraStereoZedOC = +[ + [ "init", "classrtabmap_1_1CameraStereoZedOC.html#a37264abe58baa727bb5ee8d6653fa443", null ], + [ "getSerial", "classrtabmap_1_1CameraStereoZedOC.html#a11244c590c4e356765abf59e94f66ddb", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.map new file mode 100644 index 00000000..f79d1ba0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.md5 new file mode 100644 index 00000000..02c44178 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.md5 @@ -0,0 +1 @@ +8853bacc157343998cb0e6679c32afe2 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..028c9c696eadafbd55b57963dab5b2ad9bd1cd76 GIT binary patch literal 7467 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.md5 new file mode 100644 index 00000000..02c44178 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.md5 @@ -0,0 +1 @@ +8853bacc157343998cb0e6679c32afe2 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZedOC__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..028c9c696eadafbd55b57963dab5b2ad9bd1cd76 GIT binary patch literal 7467 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.md5 new file mode 100644 index 00000000..dc2e2a72 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.md5 @@ -0,0 +1 @@ +da4feacbe01ec07831bcd46b75bd3533 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0c93efdca93da62906a86f4b9e2a286910b32b6d GIT binary patch literal 7192 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 IC}rsVKcNrp761SM literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.map new file mode 100644 index 00000000..67bf97d0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.md5 new file mode 100644 index 00000000..dc2e2a72 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.md5 @@ -0,0 +1 @@ +da4feacbe01ec07831bcd46b75bd3533 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraStereoZed__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0c93efdca93da62906a86f4b9e2a286910b32b6d GIT binary patch literal 7192 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 IC}rsVKcNrp761SM literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo-members.html new file mode 100644 index 00000000..e1cdeeb9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo-members.html @@ -0,0 +1,150 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CameraVideo Member List
+
+
+ +

This is the complete list of members for rtabmap::CameraVideo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
CameraVideo(int usbDevice=0, bool rectifyImages=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraVideo)rtabmap::CameraVideo
CameraVideo(const std::string &filePath, bool rectifyImages=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::CameraVideo)rtabmap::CameraVideo
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::CameraVideo)rtabmap::CameraVideoprotectedvirtual
getFilePath() const (defined in rtabmap::CameraVideo)rtabmap::CameraVideoinline
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() constrtabmap::CameraVideovirtual
getUsbDevice() const (defined in rtabmap::CameraVideo)rtabmap::CameraVideoinline
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::CameraVideovirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::CameraVideo)rtabmap::CameraVideovirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
kUsbDevice enum value (defined in rtabmap::CameraVideo)rtabmap::CameraVideo
kVideoFile enum value (defined in rtabmap::CameraVideo)rtabmap::CameraVideo
odomProvided() constrtabmap::SensorCaptureinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFOURCC(const std::string &fourcc) (defined in rtabmap::CameraVideo)rtabmap::CameraVideoinline
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setResolution(int width, int height)rtabmap::CameraVideoinline
Source enum name (defined in rtabmap::CameraVideo)rtabmap::CameraVideo
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~CameraVideo() (defined in rtabmap::CameraVideo)rtabmap::CameraVideovirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.html b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.html new file mode 100644 index 00000000..2b914e97 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.html @@ -0,0 +1,523 @@ + + + + + + + + +RTAB-Map: rtabmap::CameraVideo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::CameraVideo Class Reference
+
+
+
+Inheritance diagram for rtabmap::CameraVideo:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CameraVideo:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Public Types

enum  Source { kVideoFile +, kUsbDevice + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CameraVideo (int usbDevice=0, bool rectifyImages=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+ CameraVideo (const std::string &filePath, bool rectifyImages=false, float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
int getUsbDevice () const
 
const std::string & getFilePath () const
 
void setResolution (int width, int height)
 
void setFOURCC (const std::string &fourcc)
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 36 of file CameraVideo.h.

+

Member Enumeration Documentation

+ +

◆ Source

+ +
+
+ + + + +
enum rtabmap::CameraVideo::Source
+
+ +

Definition at line 40 of file CameraVideo.h.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::CameraVideo::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::CameraVideo::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::CameraVideo::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ getUsbDevice()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::CameraVideo::getUsbDevice () const
+
+inline
+
+ +

Definition at line 56 of file CameraVideo.h.

+ +
+
+ +

◆ getFilePath()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::CameraVideo::getFilePath () const
+
+inline
+
+ +

Definition at line 57 of file CameraVideo.h.

+ +
+
+ +

◆ setResolution()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::CameraVideo::setResolution (int width,
int height 
)
+
+inline
+
+

Set wanted usb resolution, should be set before initialization. 0 means default resolution. It won't be applied if a valid camera calibration has been loaded, thus resolution from calibration is used.

+ +

Definition at line 64 of file CameraVideo.h.

+ +
+
+ +

◆ setFOURCC()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::CameraVideo::setFOURCC (const std::string & fourcc)
+
+inline
+
+ +

Definition at line 65 of file CameraVideo.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::CameraVideo::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.js b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.js new file mode 100644 index 00000000..92a0b245 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1CameraVideo = +[ + [ "init", "classrtabmap_1_1CameraVideo.html#a2b20fb67f20ec64e6c43e8d76d5c1f74", null ], + [ "getSerial", "classrtabmap_1_1CameraVideo.html#ab3400ba7ae983cd1ad9678970079b00a", null ], + [ "setResolution", "classrtabmap_1_1CameraVideo.html#a7c8c8e9d343f78fdd17aad2db34dbecb", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.map new file mode 100644 index 00000000..a7c3cc6e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.md5 new file mode 100644 index 00000000..045f319d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.md5 @@ -0,0 +1 @@ +12325830da2198fceb07ffa2d589e18c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0185f0b62cbe50707d31c79e9fc3033577fec781 GIT binary patch literal 6814 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 Je9tQM{{Z&uq9gzS literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.map new file mode 100644 index 00000000..a7c3cc6e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.md5 new file mode 100644 index 00000000..045f319d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.md5 @@ -0,0 +1 @@ +12325830da2198fceb07ffa2d589e18c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CameraVideo__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0185f0b62cbe50707d31c79e9fc3033577fec781 GIT binary patch literal 6814 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 Je9tQM{{Z&uq9gzS literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.map new file mode 100644 index 00000000..c760c06c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.md5 new file mode 100644 index 00000000..28f87caa --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.md5 @@ -0,0 +1 @@ +b1d3b50480189606638dbe9c8a503a05 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c7091f43856d5139c3fa64050e745aef4aef150e GIT binary patch literal 4526 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.map new file mode 100644 index 00000000..54227f2f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.map @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.md5 new file mode 100644 index 00000000..acfbe17a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.md5 @@ -0,0 +1 @@ +c5239df68e346a3715a1b217358a0352 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Camera__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..20467992f48323d2eb3a57b0c18a6ca7af7503cb GIT binary patch literal 131753 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
s(81@C8|2(-@IBw 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

{V$w3l2$l@xM*?-%@0$(B2fI1!a|cBob>+YD z#4)@xAoO{0zPN~Xsy!dDQykE4v4jBYqI$^s@Y6=B~1EaxNEnm+pxi9gdG|3%$dHkf@lo(5O zNEu|0T|toh^OyD%W8yMv1YyhW(CTd=~ z*Vw?xH>eLmHvR(u#Z~Ru&8sTHSSTVU+)&)B z!rEBv7}+fMq-0(Z^u*$!-wXTk@nc2Av_?h#_a~R-r9M{rY4O}=d)GV{$z4(-MG>e* zG46In;P=^I+z>paSb2eNDM!h{kyVGSy$q-A@F)q7>I%JxuHL+Qd_he8=GiP_lFeg} z<~}^)$Nv2)T$bk8+M2sd(Y&bJ^==N&KDOm&J*BidKo52f{LDG^HsN|y;2n08aQ=>O z^jwk={J9vmjIAVTa(Bbf{wArqU7v8k{OygOR{E)^RiTMf(zVw(V&)PVoqI!-R)(@J ziX~97E$81WeswikeoNyis|ibA#(y{iI3-=7Niy>T-PG`8m)=lSlkfsReC_4-$8A%p3#3I)RFA?p=4O@`pkS@R+)Om@a9Bkki1VzYCuy< z=y0$`3TMx&+N56M%9y;GGy1VIEA6kA4V|&ATxU%mcl19<`*Mj#@OLB!^?D-TPFEMG zNb+{^)2HKPg2tS*_Mq5jUvs70C=@)e0nzX-#eh>n=BRAs3?03{fO-HU0o-Rk@#c|! zoTGCM$~%zNR%lex!~F{zGMYk4KlUxc`ImPHnEj#z7nV~OOfVWN8f>((MTzZ+D9$vz z3xh3M9#(#CR2cTQ3Fu|UA2e_4{TEnw{#I__>*ta^JC_t+N1^wtPv+q<9YXH^J&r_< zBw73H#D36>og?p<{3n6;zdqcPYb|Z<6F8R3CW_m{?}2f4tpT)o44x2 zWJ0duAK>}KNWY`o;w+U7F`BQDV}qU1}0*`?E;I#wBA>y_Bc+icQ4p|G%6Uph1q?$ObV z6(C#AsSCf!L>1cA&{HauJ5!I7d~J&bzCm0IzM+rQR=4=;X@Wm~b%G@CP?+P27sD$8 zG@hLubU)lUzqDdS)0a1#6yKIcJUAvm-7Q;Sy&Z3(9agxsydz?diTYWLrK__hQMpu* zmw~VS!USat?vC>+U#LwuO`Twst>B(AQR50l?nFDa6)@muV%I%P*!M5ZsMV;-;rMPM1*oP>ST&-wNsIyQ_uwDk>Fdm0)fHw*3SQ8&wjdfc+C>w7fX>jOGP_1w)^ zdwfxEqmZo>>2a~V9x4v07foS2ctCP#?!nHY>is zp#z@%+Z(FE0;Tezo{aVhH{3p4PDH6y>9ZEbrnQ>12b#;iYPeFR7l{rRUI0g5XvzYK zAD!42fk}wC)$cs;QG@16jXfLI&qJ&wl9&Fd^!j5GMj9gz*=+ACWoa7irQ+ENwzApW zM7s6g=lbUv{pAZ;ZXKY=5JHmmjQ6)$X4p;CWPTK|>K})4?n-SfwvId($0=L zY02YxLV~Rq66BhdMSjf$dq8u3K&|Sj=8W|@g?$n3;`*Z6BuGIP_fI&RKQW9|T2TSa z!iO-4Kwffowt9CJDrRE0Cz`Gx;Nk~7!_ldi_YCd;Gy@jC66na}7P0?CkgwV={R1e7 zes~Pt;@a3N=?-cqohK!-OUr@}0%z$wR2Ws_lX`0py*0J!d~DGU-qF^*Jc?bhVy5_u z`@CO1n)v>ATTRweXSyBsxvKEvKec%)h=K(itZPQ{UEqdH3h-o^2bNdcuR}0|dr-rzzdq__&-?@)CBRB-2fHD~NB}2N0WBy4d@QFj>g=NAEK+SyjvBtX!7)Pdf+Z=RERoT z4U+Hrd(E!g?CgGm7Q?Yk{zP%%k~KX?bOEYScX#ha%^q$JfDoW#`U0q77rZ{Orig)R zyA1SLb3okyQ3Bgl)t#be=b>PkP2A~#*x&+8yJUX%R5zsxz~W9jpM6>cjj40p>?!p< zw?agzSInVQN9-rP!2%7T&w-Am>CZYB0!o1WP%E$&TY*^gY}mk*|FOC{wWPNQ+y+TR zjp*^%p`Wl&yP838>;WXGG;rzx84yK&qPVHvZq)wf)Mb7rWw^k+dZ~>_qkR1_U-sagsK+`~7V+5)^)=^+eMgi~u zs-J%rjU`C80mMpxlu83ugZvW0O9Mq+@smpAK3%Zz{XGO|x6i-R*-K{;a6`;k48U{r zhj$3r%uKi2As3R-x>|+vx5qQKR67Ot_$pqDJQ%@5yZemJL$N&f0PSj6ugaXY!~NS! zt_qP=n#;WLmxjrfPSq-(QgDom$pv_{Y!tiK-lh}%76b@4q8J8&W({zGI2Z0mf#fuobf|K$EDmwB5ngSu6i;S$Sf#CEm2)EVa%kJb7}*>zabLs%Ck{&di8LP z%pkMmva_-atNE|T9HMn=9dtHyg~CNltWUkXUe+9Ir80#v;Fp%a6epQ85zKRUel!pH{s1g2$dF1v5=7qonx zmFM$7gFe@5=;rN%!$6sFJO1DEZQp&+!CrHj28BQ^tiqGlYkylN?V9@mGekNzDOLj_ zi{Y`paAA;U_bDgC4>~!Jy+yv=*F7uY3Z>cbg7fGf6mrf%pSr<&KSWm7bxHJL$cST= z?!7gFCG>v%`Ao*%OFqQKYZYm}0fqgB%3a@AVh4*bQnQU~Jnv`Z`|Ux85eu(3Kc<9&nEa{oy&x7nwQU`3FMoQ?fZhKBkbeB~zmq zYqgQuq;Iz`X!@$j)rKYQ3J&|omez+EVcgdTu<s{u&17F@?xE(|#9jjPHMDm8p zNG^XR3a9tiNIkhawrsyje1Z#2eTnJw=k}m{ND@s8L>xmphKFIO=o+G zU?g!5dcTM_1++%*6sE%_D~D5!is*8@K>J{f12{b*ED^G5_e#C%`N?YEdVfPF9VZ;Q zsyu0Yf3Is0t$Ny(wtC8u0CDMp2fc$21GRG5lJ}=U`VFUhkG?d(z6Mi>F|f1%rBEJp zYnH2M`s$NKoy<~%6@CGV|48)Sqis`=YhfIDGNgdzHaXZTB3Fou{JE{3CjD+^XxQl? zSE%kdY;NR8d-!HFFUjlWdTvARCPtd#?jPr8Pu?=zQg2IrKM1MC%CU+USCbcVNZ+rK z+xNd4d?IRoje4Fr^JMh1RiRkXG{YdYo8E&iz`ABc#CCaU=>^y=xWKF)a^`-7gMcW5 z&R`yY?w7~Z+&j7*Ic1_PYl4p?iG_Zv&)@e?6v?7-{B>yYiW5__mXCZB+bUai5Pb#R zsqD&9OkKE*l78JrS+6_vvSCGe^&A}hs7{9SX>r-Y2=&OEC?BY1Jgs|T4nvh zetdlunK8FlneRJ~G!qJ=TN`f>lwV=pam=W^zI@9jIP+gk&t!UbZ9&Px+x1iEA*0e! z4pz|ky3CXdTcgPO3!{nBYhgz1RIURDj^<;+iea0q%zYVBJp&)>mV z%!67+6X`3lAc6uAcZ%zi;gMQFx$VaY>@)12VZHh0ya_fg6r;$bT#mb3f2%|2MewSZ z4_*Fo&menbw#}bNPDvSgtfR~`2D?$A;D~c-9{V8X@DhusU-teSc*Z{^De0wSyY@p< z51!B=q=(c|7DEqCXnM+|Ry9H}iMD3?Z$C^U@gLF9rFp@a&Bx(>{(6}`zqf9#`}go%1(0K zMoaT_TSf2^HEWtSS*T|J-*;s8d%+|N9zcyLyzzs2#4r8&f!miwTy*Uu%{Q;#2TzId z$)h*-He0=YP4FAHAvWel=C_KEJs)xk%K2ZdVrMf4TK$^DkcMs*judURY(1fD(?8tt zKeK%1rpOQ*BlX=??q>U#meDo5y_fIyv)e-Wes?XF@I5fxp6Xo=e%qEA|8bW$ZTrTE z<*>@9J>I!djMx5Qnc+#-eleNpt9^I#w-VY4&6rqw^}uFoU5|r%EU1gFs`x3z)>(J~ zSMWc5zK&#*M5xS?gA{A!0^Bgt6`;r_QE`a+d7@;Hy&9s()l*x_sW;Eia{JCBtsn6A zEatz^0%p*YS&+@mI2Zv?lIYh%6i3^{$bcYT5+zg97c*JvZanM zp06EZ>CTlaM*-bbY*B!d49WZUVQ8*GG&!v zmyyZiblSDI`=NHiJ5@`Ay!L-%&z2NM;_9k1K;^Fz=E(Mm_gq|5!`piJibSuAC_Oe) z;WKZ~mlISqO7mswRiwq_*Q)dR)B}2lA9nqKk$DQ$qei(78^_s|7dZ-bml)(!3B{jX ztou#|q`tl!XHSZ%U)~(yxSz(rKRcpXqBX{GT~|7C?6lm{2fHCN;d<%!cM%H8Iv*M} z+@-GbFdO_W6*l>v8*fdYi)zJB*O1em_b+z;wFarqB=Yvfa$yN1&^+;~T}=>q^w*_L zS)0Hbqe{!|cpX8Tc$sD73kS}>ynS1wytnUx?rt|~`&TdZvt=**-?~KsMWY&2QDk&9 z&COdJe*mPTCX>B*CfzpECZV%N^;ClGd%qETpR2LI`oCt7UvAe|yu9KiTXS~bsI^3* zL48{I)gv|Vsv>ZqZZHg|(=KXK>Hp4#eW_Mj-v_VQEk0m8B$jLo$jMNG3tl{#ftU(C znCTpAYT<)}NgXC>VBp=$^%O~8InU6XWec^D;Z>iP^{=-ozkaat6IZi=iN%z`oM0Cg zVb_^=#{Dsze1x5>{(F) z@m57oy)kZMVn6ySuHS#kl~AYl^fbXaK2PwCTow12nV|M#m2tomg-C;y-*E-^g?jS)9(Zs}i6U!_?EpEe2;Gq1uOuCM zoRG4t|DMP}-7@ECb7oA7WIT1Cs-j)%xWYIktOnRb5eeiBi&jLewVHb9$rua}u}{a@k11;k1> znr6>#2>5b$=>c|CQnjl2lec0m7Q8ajR(UIyWC8w#4fqEI1Kxx3iZyg^Fd07HTVH;h z@J3F6LU?ZD&DZjpF9&pK=U9RP$NhCI`i4mV9kL&}I`H4QP6soPXixpgLJ@ye2 zesXkCzkf+2*39hwr>&O6KCJN!p=T0OOsM;G12{htt0fe%ZE>2`cO(^yQd|SumbY7? z>fLsOCtlnok1cocn;qngH!D$W4tM__F5Y#KjppgHZ(d)A`NphJ$^YcL(Hyaku#aSshNv5nEQ;a-ZI`DEimRx^WD(3mm42#y&%#rsA26>;Go@x zbaMB9T?W)3G6d3&O?BexGukLJCU;N3=>WPP>&aR&*$N){L43`<+&nmzH0lQ0~MuL{*$SudI>Sq%b4 zM+W1ham^Jef~GvFEX)Ip@O=qnwsMxQExAd>-I)KOR;^FQA?iu9bG0YqW$tK=Cr(>WvABXZXTm=q;G2qZ%n>|f>Fw)c5$bm{Lu;)ts+x$ZqLe_A7^zC+#n_;G{^4k%RMPD3DJxVFso&cpc*P}2jQieiWu1|WMfVy^>g^kZ&Vd97 z_5hy}Ss~=I_h+A40WOWvdeukdrUK<8+>s;(-6)``ER(NttH)84`RLx+L^E#ocO&F$dA z>2){*Wi|Ycpz_wx@OBx+&*d7KcJ`j} z7xs-AFpY({uSo=?qg_K}QP=!`N|T9*Go^~8GA!TcOK*AKCjylQ=aqqqEuyBLd&*5md25{y+G1e!F(J*Fuk zd!8cuqFNhMwPd75K%1Ud0R%K$bOkxw75v5;xKdDa?3`d*c%~h|*uF3ETQm**LFkUW zDZlWtljzXQqPeYHERK32A5Kk||0Ky*06{ei2oAA)SxTAGB6?YML-q`691E0vnlr)T z4!jY**ypL6BXBc-)Fo`yU11aV056lqO)sf33$3` z$z)yS#`SO@Vj=b&07N{0+zuU}1%8P$u>Mdu>wdmBI$*4)E`P$VEFml=V`M7lwb-H{50obd9W!D0gd<9 zDx0SOsA%SSAX;4l-Work{Z%X>--1|1mUscCh(6Zz@($t_S}~$x0v;G?4jnY$nYdT; zPulN)?K!1JN?OI6E$^Q=46+Yh-a(rkr0=+jM(Tbt|K{`>#U zh%!QyQQ1yr$;!&!`;d$jGD2o%qU;%ty|a&*WMyR}6lF%Tx5~~)`aR$0bAPYv_s4zR z_x1U7pVN80U+evtFR1v1X?5Fv%06Uz000&irns)Ar8o7WoCkvh*DYyMBmOt{AoU!I zvR=cAntHNtHs!O$uxD+{+vGg zhP1SKv-zX80RZJH2pU}%d&#D?0i@n*Fo*6x&_$IJ_~`y!FXP%kzUZ60RIA= zqP+DQ=#aJIg+=cWN*Xch%KY&`kpnYRW1sND*fMyTt25`>+Z|2jNR`1t) zKO-tqUz8VlJ;6>fNxjG@pNjW=a@4xu(EPd`4?DNF`c&WV$T>{!{rZr&dA5@VVA{xp zR!OU5snq_rxVJh*n{Cb%!-T~)cG-Zkzp=ukP=}jejNlN$P>Nt#4K4O1m)eiZecsqF zwb%VJ1T4>|fdK*WryyER;^7Akb$-{O(`3Ca8ynjm{2a)XLyz3tXwrxLIpaa4)d6JE zgR;3vZ3ElHgxxlU09a@bOi!YHfW<-r+889}C)>T=_0%(FfpohU@O)Tj-oUIgkcH_t zuQn~Za~=JES^(p!hVQ@}a4c^$uJbcXdO7zjudLVt^;aSd1)LLk%9MP(yk)LiNQt67 zkSx0}^Urv-;8^n*dIWXQuPkv*GOYfp!>;(PET>b9;vdP(o}Ky(JGFHA%9Pb5dVI5y zfiS$FNj3p}E@1;IFY4ALLK}s_)u50+xDLRZ7epn1 zc$gXTSU5MDjUIn0_~!KXY&Xx5_L_kI7CHQhgX5h6_5Py#e9W;Mfa&!xpCKre1P?(o znI+t3)+_t8=qpqqHO9tuIaB8E_x#;u2o-~H%^kID@f2j-ARr4)@1&Fz23Y>@VV7AM zDxyT%i?K50MRY4Sc?4ns7ft-bi>T`x3adTOJ2=4*pbnQK1zPH@Y#-afXxo6~*Xn_x zBkc*K{Wd^OM8mJfb%q=E28q9Jz&WU>P)`FG$DKS>yu3hML>enlK}3)N z6OY7<3~Akr20{(l~EDW#sbHqZP6GR^9=Pg(Cx;cJtOawwQ0cz5g(h%Cr*rEtGeYyr*;gEqDX;Aom zPQ0Qh!&R;4)%FxjnneE=kWSuEcy2rgHh}Gry~On{_x2vV zY-8|A|F*w+qvjfOLSZe@`{p$bM^VLmsEL&oyH1UT)+=K2^N0$+1?2VdJM?$`TvDe5 z1CVr8z{>HEAXM<+gPtuZ-`}6>UFHLV-K@RO!2b&-3PPPr?H>y(PI#C-=+Ec@8r=>i zfa@1D&q{defP?*?DpCyS{r*yq9{BP~JM z0L(TGIN1FBB*BCyZhzaud!tOE;SB_@LO55l-^uuZzu~n3+8KEM_aV^+aqYk+Tl3MQ zYXeCYbzdC}1`|T!g>7J*@4|cz2Th=8Vr4ZzEZrp?-|}mEG+uOW!*N(Dq$T}_xMe`& z1%*z{ik7*|WBfX6P8Fq`Kb-udA~7BR3{q0)1O`Uf5lU~q$ELh(E{dq3gwqj?2F&TD zT5TK6h10GkX74EqkTVzl4j0UtzG^g>r$l$~(Mdm2dIqmk+wHKt z){kS20Is8}odB?7N<#9-@7H7k69cPyyP@^*XtSN8FT}QUhE;>*^UhK)F41&dz42*C zzYT=3?-sRhIF_O~4{JhE0xyqmvSr;Jwgx#1K=!!PYpnoY=V%*mCemiJP}<-Z_qESi zVs{B9m2~N*eDm6$Aplz1LTaNydhYSL#n~vTGt*~BgA{#Ul1B#IIAP!nu?%F>mkJCC zNQ)T1c^y{ub3~gstUkTBXprMlAeG%qMMRr~VRBoEu5M{+cb&T*P1sNT>x_E~>X_e? zP|NBHI!H<Y(E&^+IBMQ zL@WiGynd+pK=SIt_`6po^Lk^x zzwIegz4E!AEVhXU!QHR!h&_StMUj!eKHH}Uo*V^XsK@?J~!KOjVmY%d%XN%eQ0oa zoX9B8YM5O#d`1+z;C*MuU321eh-m0dYNb4OE6!dcWQc*T$SZs`d3nPaxNb!uNGot7S78C;}Zn0=?$_mP~Q?jZ<5?zHH`3~l1aU;fyz?8gCFZmzxlV~ zyQC424lea!{uH+{iESNkE?i~ObKNyX7ZQ#&R>@!9`Fw@N_d(FH!2f6+KOEk|Ox@VP zKb~kRf*0nRKa8zado=S$yu(U;l^lkuN56s~tISD@r_%1`v4&3aO?yyatf8WJA6ZLR zE$8&rrs6!o>Xl!zP%J>{hW(}_ILUWRJnKMmBqge`)^$SO zGcF+;Bn$$xYr3aw*n6v;mvLAw7B|x?6%JQJo{Qkrkz;@zXgnP)JanGQY`#aGT--i3n(ypsnT9`cVFYT@( zS<2wbC5oiy%9GdBW`ftsE~W!^6tK#zZOz&H8#{F=3Zd^d-E`kubE*aVrn5vMn{>~t zP@sRCTbBGW>ysddv;QNVq;O07(<-T3-_2FeRjw*!3{9}!w=!AEz-y7a8m46~ZK-Vw zYwUx(Nw3HpO+#A^mrr`5Op2Keyzbm{dhqf%Pvrh^5)ktX7Sj9VlkDv#^%cddrjA!IjX$Jer@~e^%bDfI@|-7 zmpj$X6E`Xq03=C&>D7;}WjW_`+T+g~9u8%Jz5$zBSxdV2*6;h={wIBZgG2M1XJhlp z@u(Lo-N{X7NH6j1dQuJ?N;X+&8|g|5JjrcSvAE~4#8P;mVvrjvrcu1s{O;>;_FIG1 zWtWxY8wS7OQR}E9$_Mh)l3w;;MKO*3i>T?~|NV@!xM2z%B+eClDUR=ZQ9s%KdTaJC z{-!Hc*RSW=vJ^TMFjDb=0YD2d;ZV#D^@%~IfoVPShg2y8X&^-Dw)jV1qZ{aFvp~Qv z;`Q1iYycjgBM8GF<%o{jHbS@Xyc*zQ`Ls ztsU8bhMJ2l%oZY|h{P#dWdHE_Z~0wu#;OF%I}H$Tcg`xPecE@&h|#t1HxHJRvY9UK zMNwC`UM!hB>z77%cdz};HENR75;?BpD6!Ex)>K$^zi&#CWN@})qP$coJ++YC_4FmK z$MfNm+KlBRo1q=EZWa@E`D<<1C}kEbpvHe* ziPSGeNJ9k85sKV>RBn0aH+dJ0pl4?9(UPQG?0qb62a21mKdGTqr4$|2A-(a=%T~x> zTZSUC{x#x%h7yD<8EsuQ{zS_J&#Fk;+`PV)zkOaIi&3W7_rpfCJ7a>;pK|SZMe#J* zW@IVCE3y`)+&L`DGp7IwVg^rYCX> z1Y^JJr~+!8*0r7AewM(FIeDiD?uH%zZPhVSxC4!N%MI0DLFRL6;FfW@b6VTc9D!=& zl5fRbK_v>ju+V#0zic54CH9=mc+vB~skNE%FVC6Y?d=$~5l$jwgYaPnq4ae9R1Ar6 zmmygk-Vr8=J*c}=jw}F+SH)d!B5=prr67IvN(;ue27&?nqCD%0tFH&kQK!jTuoVXD zq;gNXWTvRUX+kE?w)Zeh#wnh)X4nywq@Xu>4EI!TS5D3PBe3vmwaf7yPkn; zlIDq@;r3*l7)LfXwm=>8(Kx7x_9QOR8NLpv9|QEssiqXlDVxxqmd5^EkW2#9R9n$; z(QWbo0OUhJudcR!2LAE|pO{rt$t6rb+4L!i5fw2KD&<2wF-^+-7ln)VL8$MaUnV*+ zdNYuT5wn<=>N!w~;!i8ra9SzeXPb@1cGmm*Q)5LQYM}M1Z)hfRDIV%SkQ|d@yt^M< zgv{O;ZQQGafW+wqVu@L>Ht){g`pQgL9=U&TToF(qTjT2$tBsxuq#H0reS3B`4Gs!g zPKiyg;#wnBP~VjF84zt`+^goGbsQar9c1euC9fUbb`YiDE%KjsVCmpKTsfEOlaV8) z_GMtCw(?3|ud*(M8NOt2Xq~Z3xV$rYfo*|_MKPH%I{bUh1=W`|ykZ7#{`4jQp&Qeu zPqtx2v6u>SUwt67-u$~Pz?QMv*g0^4^HI=$CN-v~$Z5^ApH`dC7A#f~8Xeewb@$c> z7t9dV@y&g@vjgZb`NQAiMB~e#3E|G9^+SjA@r&{_9fM2iE-6cJp=N5uXMM>G^oU}t zeFtcaH|alx@0GgF!Vjw*OkXQOkSjojAb6bmmjSXS=i`w#Ii~##d3OTmj67dyeIq+| z=R)r6hz>j1Dd6?-a^y19derJpxBYH@OX~AxB0Ta2#Vl+0?8c3!WGN|mT#?R|-22w1 zoOgp>eo9mMy;{KEbk=X9ad$w?q5i)oW8V*4_aIZ3&(|Kv{A(z!x}Ux&t=IE$d}ye~tu+Dkl)1C+8h+ zPQTLKJ2|A&00F5fg7@UW6hec9=zz8hfrt?F>&-(WB3Yv46Q+NZv|`+Qegt> zaKujW=;xoC|yyv6~3A8l{xP3Ra$wV)uMYKeMdm{xZROrS$ zVk5i(sYNvS6W*6W@F9sVE4HfDT%m9N%v1bWqRVD&C zxlQU*&}RpV?Vf76EvQ7Mqs2EBQ{Zi>rC$&?zulnZEJVfUZ%!%l;N;f(2r8aoKiwQg zx0+X^uZgmHG%z`Cq~hqUqg{cvM|7Mv>}nIQ1UG65A@0O5K0dx4QiW^*rekftd$LWR z<$q+SKtw$Ypoiq{XL*inkmh#-{s@ga%Bi)GSlb2BL&^Z>A-(S)ez!^$Lpq+oiBt$G zcO;h?LckI55@<;A*&rGQ;G3XDjvoRPQo0(F>D?fYC5#kCkLpsuw(zuqtQ z9O~DZM*bMb!6N{q&~5ROb9tN(!Jbnn8+lqi|<4JgGJ>3Oy`z7EMIf4~{ zVPX__wF+(>*@hxQV>dUq*grBX7cAH4*AZNcB$Kr2D^-B(BRXlvFV84s^L^`=^%KP` z;t8lxH7byGURw3Rq0tyc~&Ren}?4hdJ3NV{P^&@q?j8su1}IiT3q3=>;ag@QW zy=nnAD%KVDMUA(ajRq!!KZ&IK2a2u+tXI>u>1ru|MJTyow-+-B+8zKFvOXbtG{(6y zY~V3GdwM1_>Y!1atETZBy}g3FFgbMv)jbWRXS@}S1}ovw(dFBzkir)R+>Yy@D%Ta( zj3>XxL5Gn52|MvNi0EF=8p7%fuXWMoz&6D3^tYE}P;hW!<0#~7Q(QXnKJ92$W1NbV zL3|QT%qF1KI5V=EjNJx11$fRnMRab}rRTy>eI76x9Ac&Zz!(@D@rTSHTX4 zCQ3Ph^M8$BMDT!ZjHo(tAx;g;W*U^;n0Q6lPl6jurZR$d`2IvRPo?oFS9Vt((~sqc++{ z^RW)E9z-5+GLRr`eh?0qpPz4VlOM2+VqRFSK{dyI5_t8*7*SgH!uE=q*=l{$#>U>U zFk5@91nVxtS^GQAWyKfp863WDZ(WXww=WkhC)cm8 zQLL}l2zFx%&2^j0H_WTgEd*(c-^t-JlcZPG!US+^VG$88!7=0q_6nqq%eoiYJwJlA z6k@Vw_WvM777a^jX##QOj_GJeF?Vn_RzW5rQmYBkTZ9xWk{=Km26*8Pz&AzZerCjD zNK+IkDXX?0K~Y?i{s`pWJ7&+xcc7XupZ9cu4?rqR;!;vR0I?+IJcIYBY3mf?$OV=L zS)d>hNb59A1@{^S^*tEXL}_{$v9R#)D?ns{pYfaR2Us$%V9C%7cIHY2Fsi1?lN0w- z9T3UpM(T(yKK7N-(k*b2{fc*{bQELq?rQth9sanDhctCuq5p`P0$WE5v(i#vnfbc* zoLdQU{gM&4tvgbn#S6dV2DHAz(b{NL_YDqG*B`N2PATb(g#}Kr3thO;15j& z(kBV&p{=j4zu4_k_U*@T2@O!E(jXDA1i1!Mp9lGTTOc(;I@m~<ay0p@o$&fsqt;&o7! z&g2!mDHZcxS=&r=dljW@oSt-96jUhZW`}mg4xg%~`jn6gu=FnPa?Uy^TwwV~&82#E zmzKwZMvzm=JZV^X2~#k^H&bOkyAtnFR=_0Y98gnpXTxzX^4><-XV?pcu*Ua+znxc$_A>DrNi)7#1`0u-H78f~xDw5R>enW7YEOFzU zo|TErDRTF7p+yfb+Rw@D;av|*zOK|;oi?g(##3pV5U`DvqZDoXT%%ik==H|Y-UfWd zd(3hlUU>pocs4m2F6DCRpIM3=wo7_f+p-$+tUP5`2&j@w#I{do6mBwq{zN@RR(L@< zg?sasPln%}A)UN*mvWR;2Hu-#EnyW={*e!|VgvX#VS;7Sk4JIL5579+5wB?FWa_7= zusq32CS8v_nWXzF;~Vv(p}*2GAi==y3~jx5lL?v;Hjy~gylMGi@iKsSB_~}4{ zLJKl7arHWE6cUmoyYyFbMZ#Yr@2nb*#>m!fh9#(Rd-LN15LZ~**liDL9;UsIp;>qo z?h1$8mSsOGu@|%{ECW`a5oDFy6?gx!O@ybz!u*Lf@K(&VYkXRxEU}MqOc3gRPmvI( zm8O4mk}O-V@y_X8J)X%`!`llY$uivvk);L2B!+1j~i=w9eFOgSS^q1==qS z&RajyTq}<03|`~;`ia1zxW02h^~HXyM>+y$387z|1%~NLUr&J)i%y;Uc50K{H+%f@ zPClkX_uvZBhY?Qucr8TzdI$PwN7~HD3zc$en)AHUcM2?t-0bftdnkx5>jtXR&J8K4 zCJsf&>pp(`ICD5*gDfVX=!dElY~hVZzMTLN#B%^C@q+IB`yT9!nBUWdJy{khW|Coj z;qB9Afy)smlQaj^&a6y^=#dc8R$UHR{>X>tEL{sJbniuxvc-0PLG`4jVb!kn9_$i% z@7%64x(fz6-TCTv2_FC|W z4Q0Xp7+`qk2~U!`A>#~f_QP?SMH4#dr;=Ka(c>X~3PJSGjT!GadCyjI_YKZjdu#R@ zDaUIU@l2kbOi8*dz_k8*tq*QU1&!A6$qxn2I`asgU%4t*(O4$y-s9H=(Jy8m_+KtgOP^3>Lu4-%O#~?l?p>iWlVug@0Bok;tW`OfdV(%y{dK zGM~Qw$aqCQtE8x?mZ4FdpNGcY!@EX@0)nD!T3FL=A69i^?0158G%1Z~vN^X&=d3rK zdGA#B+sOCoIW3mBZ!E!mBQN!Yt#}VtyPej(Yaw#cH^?kO6liRf;I-2IWT#7^tMf?eb?RYcF z=qy6LYjegPyC3S2)wC9hn?41fmB@8#?MT(s>} z#@$l&bHr!##h@rs_t$t`Hl0X2F1qG_Gf0*(cp$dv_opjb@8s)MW<3Hc?$nIGKuPHk z5M5v6(I9Fm>$#9hEaRL>`ja_S#;DGrs?f@goQpEM{g%b>v6#45*@V4{UXp!XK!-4h zjx&gO(J56j=|<?X+A_5(_2agV-0%-7hmkSY2{`(iE>71YrVP z#jDgUoMgTI%;gr@Ag=?iRbu~55)tJ`VzkcUnn4>`EF4{2WuE9+9z^IGhhMk7;HJzX zADHl6Fss5zHqQCA+>rBZ%UaUe(ch9R=kMj9i8=hJ1`sjVfLmQ}gT#F~#mO9Wk=-!3jc>gd{s()0Y8%&8BRgSbMzXHwvo~ zv8;C}(b9k=8NB3LO7@R*>CBfjmF@Lt?jh<5wbNl0p(jNjYC_OUq}!r&V0Jm4Yw2ua z#!<{CWTSjzgFGVklEI6Y{}tcJW_2e?qC3gCN;VtkmzmySK}63{TJ4jr=%)KcNlCzf zD~mR}mb~pOnJ2T*VqJg!!5f>lMdLvF!TAFdv$4C`@z*>qw==id&aegN|NY}VQ8*PXS`*DoQr4&PVxZKk z0)ux%z>B+zf4GNz~Y0 z{Y211nq1J;*VtJ0$4hPN;Q-$8I2v9c-&hPigyT2mF6)0Ep2(0f*i+Qbqc-a^!1{{d z8)5XyEj$+tI?;gppn>V0zsDSDklRh?&j|w=_8vK8=B?&I+jzZj1}`QepNw27wi8>4 zFzgo1Y^D-iTIS^&_3$hh^ks0P#Chcu%wvKg(qMh3N2b`g(42DAw+}W|VmZ%RU#>Oz z^W#a}Ja>#Ssnj+h7@|Ir^o?S|>dN#A!E=e)K2s$umDM_iZthm^y?9pO>!;|$-b;#N zVSSjGQe&NQYEj(d*uq^)(AI_D^-}y=$f{(bZpTIzZ+fH%ej)yJ625=6}E{k=m_7$>L|_S^MRXwwRAx)g<@7luQ=V9s<^+t*H3!5BOAa-%TnC8fVH5c zJe{#F+d9s+P}GRsznxyKp}ohw|B@Zmq{fi^;7l^#{~qy0ivONM{_Y2xFGuYUVmd}& z{&__f`XDw=s>lCl4nG~I+*E-N|L17?AFhm~f`n9}@y0hcx^!I*00M7rPaGNFEtW25 zdZ|g)evnr`N#;OhZR_)_N%wz$`&rz(RJ=j>7q(HqQ>GGZGd^UohAzRkF^=KnBYA4H z?cH>SOM(<%<5-MVYbMW)+1L$DnmW;1Kd@G=Gf;LdJW;zx(fjFO%}HObLJYkO0? z2jR}~ZG1A;I|nbf&K3Xnw1))$H%u|d8Ga~t0%26_BRmE2gn{>(^`unEYO%%*OkUDo z_Y%FmC-D@DH!JUS-o1ZRdNF~k39szeaM<*iVrIAAHko57vE&RS*%_hh{hcx#D*yNC zRk%+VS4`hlSf%bMy4p$R2WjN-;R+l^-Lb>b^1RljU%Eadw#WV#aUY^LJ~s3RH1 zgvpDY&;0jjtw2f1nggY!G!@T1(?kgaGJBI{p*)nTKc^l3KiVrK$u8icmU|M4jssIh zbmayEM4iD!o#xzi2qIfj!R;zBJA^{`ZD--l(>hy^okqp%`DpkuGv{^skdyC)p+kcWGiYob?U5B-e*|0Y+yTF)vMYeFDG^-?r z{ApVDWs>!q6}@2}UhgqK7wUe2yA)U=`|`pBP!oyz#f2CuMeE(E{kEe;7bA0I19N)>L`Vd7yr{Fr?s=s8|E`3(Zw(mP^5MRe*9U(5|s>yS)c ztz;qL*S)>B;Cz^i6-n@upk1M%a>6M8wiKGGch_bq`8!B4u_LO$IYj3Z#u*4^d_w(;`^Hi`Ncm9$J_47_~S$}&f`qEj}O{g{GMY$9N?@&5SDA zR5zr6>jUE+v%dWHSIgKf(A^@a(x@kQx9Mdn3#f}k)X1Pf1qCm(II-Q${q=!M&#~yPCTm_8&TeNafI`&21ZlfP#947NR zS^bC-%0Y-fHFDf9**SAahvR|Z__79P|#fcaEu=*;ea@~ zPcr|;FN<378)<1#xVX3=ozh^Gh=yRJR}hH;c~+mGa^pS3oGl+wPzUI1i5IlUgB@YM zKOP*eAE<3(sw)rbM;((}W@=9SuS z2`NilpDH~ogZFk14)2EFWIyiV%Xy-kE}Xtr*jlG859k*^ zytsmglmT}|((k}CxWbAgbJf?20sGZEybqBxRSx6V(nKHi1K;xj!beO7`yo*tkoP(G z2awjDf&3gGkDP(bd}ZBt9zt*ikR}o@FEKnM45h&Fd^Zcw_)h773eP|alMRyo1^C;? z4bZqJ10wwjvfH8K0IjzH=}Zu4O(7Ao_M3bLGQXC>xw0%EL1p*HcmmQ|3I>kkKbi<= zA44M_78A(G_XPCrZAicCKQa)97L!2y7L7}Iomm=YTLZX3SI=OF5WkT2*fUNJq{u47V#u2WH zc65Su4A7z5xOH;kw+D|Oi-5I=H+9K-cLQl^!C)|Y;Wn>UR#tK>i=A4L@?S6r0DZ^> z0PPZ>{sj<&Uv{@O3(+_qa(-|0$OC33@%<~X(ZRQ?og26h^7;8^Mk1G>Y=Z)ND-aDn*fWj1pMvWTz|y>>r|*#W01(s+q?h~y^~cBfY3aY6>qD)0 z?AG>hVvVeijWwrUgcqbv*WT72d#jP?Hwg5${L0sR zSmL84wP$dah=5~^zxCL)847UKe^D}tRV_@x%tkA?pBx`@j3LbntBAb4>=U#RslKkR z7UtqAnuI}K0nioo(?(Fppzbcn5=OzESY^TpPpX_>RSwI(fdmn)&5fKHrPbw%1cOOQ}`Rc5^c(a;LuM=aV66boZ68yG{0!$B6?-i!6`=$S#BwH-RN> z9D2wDW$|LW31xvObzv&X*8rl^xDjkwSgo5sYvN@@?FNGoLj*L>xbi_X-;+OT50b_j zKfzpzFX>qPi-6}PzwIYB)^^p=NLJ;Cfq`X!xB0!75I^P4z*A}F)s;tjXr{!yMQA~S zdT#83r{V_h*RNo*FvgxBb{B(h=7F;|lY*getQNDhToJq-+ zl1f)c;_%GCy{fCiJRd6kmM0z^T_;B*<78<3^vydz9ZjQWn$rBBLbvt=y?9 z)ebSyC-6RAd0Xz*?c1wQd6Vk;)}f^-d|pfgLgoO9ueR)_DAY)m^Y`~xJ@?rC*{es> z(%^j1wQElN$!$XKXt>l)E@0IaK?j6+o}rLI(Op(KcXweh-sZr9Dfs09vwUGd`Dp@n zjsc>|99)X1eGg-sITqHb}>gN*( zDFxnHLJLUClmr(I1bdE%#Z1&f;SkOZ1=qs9zraI#&hP(0n26Iv{?f!N;B{O^5_DmM z2Gbf7;**7KzygjCgw6o|#0|t?WPJv75TSXXeC_&mB+yK~0z9pFm179es-mUE-(Ws| zvsBdqUfEDM++m^k+#=jAU%C^0h+SaBqm#JGM6ivi?k*#ZqPlHv{8v9|wS<7p*(;xO zi{tPHzKUTzzaxfepIK2a>0udHXq^H>WpDkiSA#d)%Wh7&WRN0$CSc8t;{z5J7hQm; zybjTsM|!Nn3qiNEuDl4jBrr=wS>rTTk4cg|Ne^(bwuXg%Rc<5+sh zP7H4{0M>|d!e*_wcTKy0_^J1kBQyX$2BNhKbQ2;yMK?i1Ve-A&7F9S zgye^nM`5|S#lJ%2@A@AW_=C~Rx?Obj#cMhcet8ea59WiEWEIHmayZ1Ux(THC z8`a&#Vxej13uMA-x59KmO{38+v~FfbW0iL+;rK<>37`?m4@5F|fO~xOys;JHcfVKN zlW%Y|d@sUu?S0TS6Y$WS<|#40SSyuGI@unl-92lCZV_k^kmI^MNE|zlG2d7{#lZjK z(w8vNtJr@>ypCz^yV-x~iik|r z#YWE!^Iv=L0FsUO$G|`tPkk$Acu7im)NRz*T2!3BGIQ?rrN}q%&=$nvEGBr*v#^*u z{r6+xs`3Ra`>q?r-!|^Q+a)IxofBWpPv|wRTuCR|;a3QPTWj;=wla1lbA-JXa#ICX z{vbZg#8;4L5&j;z$Eh6F2DAfPqxkka%8|!({xtSkwiYWle;j{7g0{lG?|? zsjQMoLV8K)A_qqeZRH&0V z@n|s)V#9`!@!BL21F|}@9UbEarcP^mQp_vGceWnL12~SK!E@(tbO@w>5K-7scpCn7 z|E{vV>Kxl=k70@pol5#InEc9Xgc8)lz^SJ7MfWOe4IR&&omCz+>EP^ujo1wHb+ITs z0Lot1wl^j+28a%wvoiCzzkLK)M*}I(1xxFvdp-u&d;B%2Z=;iN=}lMK*B2K33p$Ju`vl;vwxy@e2|wLS-&Xwtz9zgo3SF;bVOMTMbx=Ee$hl zIUUQn*;h4UCA*}_jW6JCchmKt2qhY}y&$=XiPl<(|Gq3lR2D`>2N;=LciA+`qlNQ7RBg#n~IYI+AhG0f)6sUf?maLTwWnB?#5C$Of3J68B`N(b@<;hf znm=al`>n+eSJ->~8R8!L#t8|Z6B_f%8|6#&U8ekLDSlO?H{u{fJREqXctwpHc)Orl zZd<1>Y1+B!Uo7vT3gQQ5Nl(buX$$c|X|j#3a`6fZrQMdK_^1C<%iy`FJ`LJiFVSd! z!)E*Cmg~XoT2EHpk?G-@viTtOTSd~D`QIyj?A_n8C}a+ka~-qaA{Vy#_dvY<&-FT8 z^;V{@d-7)Qk)NLN0r$&k1376kx5Cv;T*Ul3F=L~${8Xx6(gyOAYc8lg3J&cp6|io2 ze~KVVhePNqLxd757wNIjZ_>jOk-sHTV@1~kLcvk;?AvgQ9cCM^_yff^&b`Q! z=h2X8CAnD8-Di#$z94s*_skTkvL&ET*uwMnL-VtRe-S!CHZ^+F^iD>T0f`xk4PiNy zcf#6*0~v?r7rt12=@&4DO<(v?zc?F{OT_IJJp<7C||xHhGovr(n(cV0J2 ztOp=-RbL2qc`BrSK^QQ2zR0$>d{CD-fROv9TGn}pKJ$Cras(KXMe={|L{0*ClY;~sjNb8x$EZ+qN;0KS1(!R9$l?mHW)+YutCWgi7a6qal0 z-xl%3I8@B|hXV{otwJ*ODU7Y0UqTN>m7PT$z#;43Hp|KwSlXiMA5CU-#1=)psFxFo zA|amA_4-`+1^I1zeYgip&0$&~cu1QYjVi@65LYKsur>30Z*w{7L^kNE^_Z{L-a{^o z*yUno-Mn-+^4`>nK5q{xy`+VqT>d6JhusA?yCa5i{p7vuVm%-zMFMu1IJ6SQFekKG ze;SqUwTK~y?uthumB$cNPc|@-i zsqRbvIJ`=4=AU@))y47+L@c237q=hZ338r{U$}niD|yc6l9l6u;^U_F1^u9R{P61v z3$d@6EAX?<*pn58h6X-Lub(tB`W_IUXK+%|&h~2Kt1gNzwN_)`G`A)5qF%6DpdaQR zA&cRrP3NorQAcDH&t@Z_=I56|Yzx}k4{6od6??colYJFA#G-c;f%&ds ztNb)1$6YA}FeLNr_k@{*(mWy~o?Ju{GTEMdV-%&uVPz+*vM4Vr-4|1VjrhPbhZ+Tu6=byZa(NbRQL~dn=|B zu`-0jGkon}2s)2-(4FNlJzvoMs#i%A*$+SCD9;-1S+NCQ)B6$qdz0zars*UEUOEJ{ zKiwny6iIIm&RMO;b#WcuP)qF7{Z))DS+V^^aEE@u&DSi*e_k(IvL=*RHbcTR4G!rM z#pYa8SJ6*`-pasN`1eR72%8Evxs<(l_*!=Bt|L#+_P^6qfmB&s<;#a6l&{$e+WjVz zzxhT3b;c1C=+kYyBsEy-gS>E-i-R3qxlqVxsBmygHXPu&Ytc!<<~J@ z5Z-uC_(d^sXQX^fY11iqMDg0!^(I8R%N}@T_Wb%i;N(&ecAJ;4rna`{DxH7jFve=`QZaMUYaHd2{pe0K>!PPDn=E zt}woUI^EXNzp*tQXU!b?Q0KAl9o^YGee17l?40;1BVNR@2y6^Yag%>0>}&|$_ZOhI(;#Bol;yrNmS?V5#W zJ=H(2j2~FdCuh+h9sG7A#E`-+NMZY|>dazV7^!(JwHET*XmK;dzFl`aE?Zez(T=oDGhr2)ltuI~I z4N`3rC;LW})!w0R$7W^uq}v95OiIWnWYmgJEBDZcxg_!-_pUHJov+x#GgR+9n5M4s zzW~*e0z>HLegq0caLyJ{d7VZge0A4U{WYn)rqD@0rUyEsh*^hE(-V z8#gsY_@?RQwojSU^W}Q_>Bv!PiMoe?gu_9nX?47Yd()CMSIujf9oc&gyK`l#{E^#3 zz3h(dIokW|ZBP43t5$52LKSXHa+x3BIE@n5S1#FphWhut_0k4{eZ%)D>J|QWp27ZX z(4fm@>%BSWEYB|~CDR|HgrhC?a0Hhs8K2_8D_OBi+!;Ql4(MccOkUw6_Xxl8`Evw|3kOBp=JL6 z+a$1QkyYBJ{)@m`U04!x&==D-8;rP=2AB!v3t1h;sAsrf;^N{{Vir(-WFW(}NNjPd z$W#9M)-L}Lxr=JyriNB5N+3eswA<5*kM<8Txl%%UaL>a&qR*dBOA$YiAo)Se=M*+2 zX*Nt>;N~+ybMDG>Evul=aR+#m+@bC7l7cn?DVAYzn z(U`BoPlHd{eib_zPc3kD?Pe_&DHz#fekOF~A)uVd|9FoRDoedoC=Ni8DA-o+1o=% zc0}Gbp%96(XW6p(y)K{c_ji2%=y)IRBYB?tzOVbbUa#{!U+1YGryssJE_+YMmg7(- z`5%0WUt`mHyZW-DiK2!yx4^($3u}?CWewkKUr#?dF0ID21(_Kn-E<6`o50=4eWGPe?j&odS@a^@>$Ul{rqePz?p z|A=7yoclz=pTTuZHS6|kzKoSZvcWGvFm19NgACqo$G@3bKj@5a%YEkV_T2Y8KX9He zg<5>eRit;B{F*JpPHNHZ?-Lp%P;n=Gu6R4u=RnqzCnCm?vKT1HeE%`p!<5z^ggW^% z>7K>&NODUg_ffm<+D6pvT-F@q02#mF<~ zor`io1P4lUG`4Tsz3UWWiAc@@VJVn0{8RH{ac_lD1MS!muQT2ozR+AQPVctrHYeDw@_D$#6Ie*bA;W8zmKTl0eH` z&DWE+VzArxD%O>2Z*xEEwwD6=Hd&R9fAa}(P7c!+i>A)tSF|=flCw!pt_%6O3sR?a z2r*t#dlg_`v;U(F(XDyZq-nkHw-X!MakY2XLL*3OuRh6}Vm7>160qnSc4FIH=rQ0> z*JB^jrnE7(e>u&T@DbH6)B?&?%CU!GEBKA4xWjXSxL4d{xvN+XhzA5cH-Hx%a8t|- zzVbe=nZz9Ddf5PyPzP*$Q7Y?PC-8GH2?9foec2;uI*4y|BAxV8+{g z14%)Z<*C?}#s5fd@PMk1(uE8vR>KT#LPA})rM6OllZjS{$L`L@wGCp*r%iGgf=h3X z)xTeM)bZj@frl9f=z9Qj1&6eMiQ;`FquQiYdhQRGR|`kV2TenIW($^u!a~5x>s!tp zrW;|*?U4O~0uRvC2H=dFEJo!Z2=_wV5;)Vn0L}uwe!$@3bZ`2ry|_Ivqf!D>P?Spz z@f1xhEo(5MQ9gCJ?7byb^l8@`h11woPtzmn2PSn~=h6c-2ef-+*4j8Y>*XM{9IW^M z+uvD-I1Gs*FA)&#-b3WFCT)5LzTXlafgF!B)n)ARykBIXWAEdpQVw#YmKsY>a!FHp zyD$h|VFZU^k*d;dka*40zP#G_N`tR|Iy|MZ2k-GJ~6NW zQ0N2P0pbQ^e+s`1Z2E5GYZc>$FBM$@P<-TC<>Q|%aKlhuap%E710m%~T>ZX3IBFrT zF(w9v7tVquP%h*mTyND(_QucSLkUxI2OBgn>XHS{k#yeCh-7q{?N*(v0!VIW@ApwR z*rK(8$`c>OCcwn2B`^<{OlzweYYKLsejX_c#>GXvF8;JU?_U6)k7{#)9_|ORe-!Gg#(7+uTl z@JC@Ai+>8PB1nhD*JVmr{s^tzVJF(OtHq`#T{qIj&rAr!(A8pfMJl8 z<>yx`n1nEi?{|-O2Zv#n=-5w@RoVc?xo|S>8@<5rEN;yAVKAHEh1HM#58S58;XRYI z9TJj(uGH(f+!qv^4g-*M=60jC)y%%XdTM z+bA;`dgZE=)W@vbkALn14V(jDD*x6qb@i|t;CTq~ADZ)fq+CF3qGQD!Kv^4zv)LSR z>KOp;bPmkp`1ZK~lsC$Dpxv5A=y}36L?C7Rz`R&aW6jH*r?I2OIJw2a;z6fw2^EwH z1T;)dvo5cRVwUNR!;jYM8NCwNl3!|bb(|sx;O3Z?O%a~S_BiuE$vNM zKZ?MT72t3%YV+omzdvw|-bRi`V3hR@1`G0W3n=rP=&Fp22?n#izP?%bq5B(L-+yg1h)?VT1n+$y~AbCO=9}>UV*EYXaF#6_0=FQNkk8 zp8fhet5h5S{Y)QkNS2wF{ayA*#|uad{z9qvC;DFxaJxF1nrX;XQ$1DIgq(~_w_M2Z zvbwlRIO{vudI#$d{ywPzf_)SQ*Ybz>Rb_v>&9V?}!0_HBw<7o+Z3{HGIQp(9|e5Q|hRrVzmVhx+gf6yJaF3$3Ky4N*65?3hQaQso2d5vH4P0nt4F<~XnQ3BfFXBx8eA6nZ|Ch7hQ zLUyz1aC0!Sm4Jhz;Z2wdLT@-cgJ-Iv8mg*%hIhqa@guGS8M>Z*n1tWZ6h!lAq)HeM zP9}~^mqH<@i0}+OeG7QZ^#G6#yeKIRm(cx2zo>`d`zEy%BJro)aKY)42fHx3X9(7i zKn4gR<~e8_2zek#xH)xRbnbD{H6#08)xB>S${|q?`EVa`=*E_ml&J2(AkG&cYTSUI zfV~HA1H65+M&VEhVlZ{ZhqN}}pL$>!bigqJK`&fkI;&5an!RK^x9!_STOELG6dcfp zCKZGFxN`ylM`pVLztmpEY!oK8qsuh56`VkU;#X$rBjShU;$yB1{!5 z+J3;xpYR$RrtS^rHVjkmsd@uVnl;tK8XnNrcC)duQPqT>XM4x#yYgE)h*%-lj6bDU z<}EtJi0dncz4`+C{^a>19t?^KGR7?ff7mg>v(yO_Ray_YhtTl>%>FkB0VG>|h5K!; zyj8H!11CM)9|&-(z5P}*UdR-z_>di+{CH70JgiK}*}9!1{(eM6b9>ZB+eQ!Q=XTiT z60Sa?CZ=SyfHg?>1{l^?-A_@riUG`F=98rMSFrjs`lp!6Eh~vlZdrY$y4+aYxNhh* z>L@elVj$3XxG(fd?wXNzq546-q0zhNkZeZ1&#hKE2 z1JobB@@Z3BaJ(VkUF4=<`0?pwSPo!S_`csR6K}cxuHy?z$cRD_P9X63a6`CX`7JO? z=9>!xoLk}hEZ|`d-x{%x4x^G<|8b|>tpbe{y-}DN3yYlVJ%MA0|X@Of`Y~UZJZ5g zI{^Jja~KQVGSy6t032fHfz3yj5ZOy6a9^cik3ytxKbJDdz^xGt&{tBOg-^-mvL@K+ z&asibVnu(Qw3Y2zy-#d|T_fWfQj|&3!DwRtKdfnDjqZ~~Db;Jb|NgjmKh_y@JYX9? z3Eox;gO*s#^zBjczh!*}wXVWYFyw%_HB>*;XV12S{G}VNYa24m&>fV3A5x7quCiwX z)^Q5r`OIO{R8m%UfPHfE`Gt>4dkK!-y(_1e$wXT|H>6!&1**&>xg=*L%Gw_#@^3+EMIYOrBuW$gyL z&2Es^pjR8J#lD+A0sz|FT)Vi)O;VTN@!K%?Wduiu3#pb!ZsC6cS=NO0mp;jhYtTLS z9r?qop3HoCkvuHu)^`CCN^;xh&3o667Ef?`oWYO{zi^;>^%2J88fi-+@!Ym^KNXY|x$W zY@}LiPj3ZK+!{E!bbBVhm%jPD{PlzV>gPk$UQLy;HdHqVk~QfG#Fo0p{+mC@F1=xY z3?W%F^P|Niy>+YW-(zzI&0Rv%Y#saoZC0@}ZOZl>&P)|bzr&Y#B#6&DwdM{BNk!}W zIr$K7k!>4BChj(Y-hOIghyK< z+03I;creO5kPJ`qVRs8>!7RYYZ<0k z*>tm7gtv6N@ygSpl%!10d?SVNgu#^a3O^4h=!}GqiP#yXd&uqZMm!_09N#`>`^Ktb z{ELW6m7EElslabc)9hoZbywC~6j-o@^Z`sX>~rGp<1X>={)_lAtn1}TRQ8IRtmk=R z(ITbr^l}2i1iFGgqkM=j>9yBa%~Qgr=;9XJ-pVfOv{9$WaTMw@$ZXFFzr<2~qhci? zAM0x3NeH{SI+@o{(o^pLvzZ-Zqsd zq&>UUMYK<=hj+-sUZOJUtTD%{Cf&ZPedzoXdqM4fnN+~hn};8x+1lN4J+1mA+-mLq zxq|hNuanB-Wg9MCvm@X-Zy3&>+FJ0~C%|OoH)&*PZOuAw7TTX+biR7;$iFZE*H&jV-mn0rhcJ&+jlv!ck8b9%m?(eVe@6Q)hB<}0-JNuBLU!CQj2 zMBn)fZ7!b0*WVTlmoC3mml;(g+?ol3iD6mjz^$LPwdGEV-)DD(qMZfDao(J7pgUO# z5^M{Wu2L9(?lDIyO{rM(8~+k_{>ZEw^-qUSE#-dyemC*G8!!H0wain?hi7V?6?}eH zz9T-(6!qhenPcUF!n;`Bsw;gO+<|?h)&>twx$JzX-<&>SyF;q~UErb=q5h0I*6^%b zaWb=*rr1%zD%oUi`AgXMdxWZ-l@q+Y8rHrWvvA*nk3ni3nh0?+umoBASKD~aQG%qTQ zmj2Bn0Rsc0`-ZG=4(`$CMSfsF{rEcN@!HP}+!eRnO8=OCVrEHpN=EK?keD`obfJk7 z<7wyVR66ev*<#!_{+Dq7#&5@O3>3s#E$$vus)=-5d0RN*IOZd&vUO(F1ZLlTnBs_W{HCSD;nae|9eCL~sdz z7RT@mpO0P!Nw7xtke6nNP1i6~MExLJ~IkG~tPWE-@69Du3ea5Ld&pC9gU!}*yFQ~OtK zha$iM1fr`87Ss!Lk$)3tOHTu!lLPiYN$``XR{Zn3zFvE{cz(-!Xm+@9av;Dg%EjGf zR@)HCy&<|=XY>&>9pqcj0CYC#OU!x?wC&O`PY=aFM0B*yXg(%^m#S2ZSM`&6Xv}Oh zJE!%Q-8tSehAPVVS0(uJ>))3zWBpGRlwbM3T7Y)J%C!n(v_*#UhRCeD`2iBp%o&Gm z43|5+2_1o9nH3dyGBATN#Ji>b;OR~GY7o65jkI}7XgW9nWo2itE`3}U0i$owZ{Ho| z)eA{?y4u9KLBsIUQ&!-ll3#s+l%S3<5;ek?<^b6@z%41DJ4PN(V3Q*S0!mcp6i78^ znz=t;#qV6JHzi_}R#Sx2@l=&=I+Ln#Wk|{XF%o2s!)DW_f}i~?c#1p#l|PuVQ~K|9 zpN5DNFlljw{`dn#B7m>>7w8M9sEjIXA;Wt7eJiV?64}pPpatfK%lQF2%>>*AnX+^W zd@K~|hU2>()f>?ND?t=RJY=HYeSRP+SidgP+j=d&AE>W;K^on72wx_kmDM8@xvjvh{F<%C zfHF_v>lrf2K@kKwM5Pw()L^+n+Y)|W1GX7_MvzIOF93KQTp2|ui_{wm7D>Dkz--`t z%g%HshXkI1Y9G0XLsc7GCkQx`^zK|Ha%(?2{C&jV^&UiNp{z1BE1Qwn56H0}zyxN; zWiXEF&bk$iTyOB8tU(?6#)k8`t5)_mi;yN2OpvloKXME_N&HS$r1FIBRq!_&hCFtk z7`HXyKd1{pJ;ZcJ>^_v&7M9a8-CNKWtiqqKpm{_=;E-d`2vCfik{|pZx>ks74&Ijr zjc+7`tdsy04HaM2e9l|4EoLupPeGB+26gVDP+MmM{y5^k_zu!uUVz7XR6;_#GJ{DI zbaUiCFY!OPzV!THQ~$kiov9#tKrkinhpiYB3lj7Ic#@$^c2(&mlu*=94%-x8_B2Uh z<{K^s%L&=tIgU31CLQ3M4(!Qk6m-m;?5zEM%L3V20gTzTcsGGdrPKYM(ILZ2?K1Uy z6!;iw@aG0_i!t`vS^~5iC`tz4*wCMUbD+HoWfXqFrud4Mbsf+pg0c0TZ2&jGp+*ix z^vt|{A|O2j@a`Dg@GN+E$QA^(3v~Q?XQ-(O8X&nMLD>8xO29xWen1!RfpQcT&}hm7 zo@f$UIS~Dz8e$j)VtV`C`P_AI23mzD*aucyFJ8O|X1?OOau0;Er~-wHp@y}46&a*~ zZID0F+EjaVf~=P$EP!cHQ6s56lGOuh7XoHK$P6D$YTBSYM;32nAw6(oz)6k;?on{h z>?Ax&XQKETrt zKz0rh2(OS~9Ap=ld^3B4Oz_d&gqk7F9qZk^NcG6K%CDDK&E@7 z+%U7JhCt0+hRAxJst&t_V98eA3B-Jcrc z@$lO6F>gw5mj^~9CaPLl@jykxE-oIA0ya?cQybIhTL7z|#4fWQ2!>BEbsZ!B++vm>=TMuaJ^GFy{amZC)H)J6a zUTa1e8c*OJb|}#y?6Ea-@VV}uyNxeUUgy``VHx@tQ!>9kMMjnZ$1k89xosZA0!cb& zh1F=F`Gg&epaGQZ2{4udr{E;8A3T?uLiqooxh#M_iKkwt(dS_b=;g=z!IsA(9Cn8Y zc-b7FKX*c|iA5$--=W)1O+62dtMzy_h{W;l!3ar`V+XJN*FA0fzu$}RYCyJCkQZ*j zMlXuc$)wzxPV-+m|7*TWowmWngX@8sRb(+!ukCl^II?qCi}e;=^P=A-FC9)Tk)`Sj zZPr|s+g~9B=o`YVv+b?zK5u*{fNDZ^%EjH?eSDEnh2vmslcaB#ATtM9Smn#h+uU=yiU*kY3DNYlf=YMgC@^b5iDUpt^h+-ex1{1ur~dB zyfL~UeTQ5uVaYY}dd6 zO?PKDuL*WcUbM4bR1E*+ z%}r|TkvqC=XD0x&AW+PmZ*|DKTQ7@`kB`g~TLQL;^;~T(v-Pm9@v?aux)q<5M@(%?jkY!a=YWtVsFLq@bZuKlUq#**W zU`Q*2kY&DnFSqBy&%=xPai%y^HVip|%C=?#--yl5Y z;Qq8GEMQ~%n@Wu0_7_l;ldrEYY%cz=#Au72{)F)iGzwV6%$ET*1p4YwbvuB+UN6iF zT(cdLcXSkiY8Hmk6#UPv<5r8kP!nBS(*px-4q^Lvd zSp}g_+c0?$k|YL1AB4)hZ^Y<6>`5`1X_VuXfC-p_s}ErBhJ`8xw_X}J&Cj#z4sc?_ z@JLf5#)MlVr3-}qcOXU{UZfn@C8U9Tp5{v_s+u4J$p|-8M<@disG*Z^W@W+)^#y?>U^`X|o`u;JP>i;}AR+jP_w&H`t|SEI3{^fk4;fhyeJO{JZVFy*U1W;B%7BJb=)mIU0yJ>Mb<9 zg6hM|()^B>aiO@8H;od85`Vhx68%q;-@zi1<@ob)%m#3P0#I)6c6z8@(Kc){ zdi-^`tN1{CpObSlG=`<&#J$Eb!*dI>t*_ZnomBPq>4`TVYLGa`JT;-6My@L6@b#+} zfv@eF_wq+PW@4sIG`rrVg}PVbw$vBf)GOLu4~GkD)`fGVUv+)Yv6B-}sJETUFJYdxUMy%OVsc{nep1{vH2lqD%hclldM8)p(j0$IE%LNl!WmA6mWwtF zeyu0ieXt$BI=^!_8u&}viEWRJty*)Hunwh_sNc(MG`jb)%3yi@{il>t2T#Fv+(HVn z!kF1U?%kP*qcWy!E-X~^l-2Dr<~QCUku4iy@8=d06V`sU@iwP?L3D!F(TdBSOySBH zEtS!v{riS;lFRlhPUL@RR$N6{hIrhR7jE1mETOV|S#{IN@Ac(R_jRyI;wtOsP|ZFw zbeuNR((XbOL8D2jZ%5(%3BZK_tUjI{_g?Qorn(S~dx!SeoBK{1?bvZss#hFszRGzd z)o|L1)YbnX{WuKz*3|E+-jNHvUG0K;MBVu6idJc486_203|Whp($eHH*8(H- zGz)9)XFk91Tz{jw4;o^b3+!>aE2UsUs6Frm>Yk1`oD`*bsIPW#52xB2<}cEr`P7dd zWgl)izlK9JY(afIzV!Woi^agBS9ywUi4s#MUQw4lllge=Sw{OXZQET-?#Zn6)lSvi z?lT+8>{-w zm)$aBr~kP>xkc>VcEqQbpPAQD%`>WOg}*H!ucz0nqNO|))zHwu^y1}9{-{sF+*v?G zN5@)zm;%T-j5?$TXj=4zg|iJ{XGOqM@2krW=aRIx-OZn#8QxW$T6{le__w{St7Y>* zNt1Xq#lP?1mPManmG=(b)42Ly->w)>CP|&aYyUxMc(&vj(;tnVy^axoizUAUx4Tiv z_(p5rN(U^>{0fPdn69a%e%YL5_1*Jv=ZmfXqUv@-Yf^ha@G&JfaTTePpN{=k=70wz z>GDqgAtxHoEHDcNC(f@fxZnFPW90SgOvR`6u=VIY-ECohhG=Lg^9rO+1E}Gg(W7~# zrC%t;g5{;qnos3Z{7v82eEn3MjFw@7fs5S!YB{Y1ckxY5Fps_a!<^FgyQln*0k0&r z5M|jymon;TGLWM!{rW9%;&?alSM+@`V#N zzqswRiVDwnjWl3q#?71#BM;@%$S8L`3s+q?$Jz4F=^Axq-P{rEU?En%bSI22`hQsi zp}ZXkIe$G)y-O&YmgR6W^11A)P8HA3a6zS87oRM5O7HmN8myktKYGtAc}YNBZQm=N zk@E@PDSh5dyf1tGf2$}GaW>YqKvA-@7aCU<)#wOgE?&6;S-&t4JCGa<>gmek%oY*{ zhXsYIvlOn~rM8D8k6Eh1%x(zKVR^U<)>?+U_i5i|=)dXL)XuuyFkbPEOw%EfL+GKl z#!dl&1lk;1lFt0^w=7CJCGg$h^URnKv_GfHMI7c$e+E1C`b|nf2Lo%dH~rhfS%yJf z?U;*XO}Mn?*fiWWzmmJQbI0SjpB+aHbQ=@};3{0P3ubN1_z3$HeL*Ou zja@a6JtQgTvGm|QJgfCLz0v6)=h1tP!XT=sixgsn6v`^sorq>KMhZI;!v51pu{aox z&iI-)JYkn(B)!^1GXmWQ0!a3uB0&HQ>Uv>hz2xcR=704v^j%33G?;0qjxt~?0v21} zkg5){iZe1Z=Ld_=LoVt#^idf==k9OSAH9om1@R&~Iue|^0G5rLqD#%D3%6X&{G


=D!?(Jvqs{U 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

Y9Ha|;9HNw^bV(lL;{@WDR2|7z$*Li&1l|G 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%0AR%U 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 Zk@4mNW9EKsO>PQa2Q>AlPxe?{`d^zH_#XfO literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap-members.html new file mode 100644 index 00000000..6f8dcf5c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap-members.html @@ -0,0 +1,149 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CloudMap Member List
+
+
+ +

This is the complete list of members for rtabmap::CloudMap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addAssembledNode(int id, const Transform &pose)rtabmap::GlobalMapprotected
addedNodes() constrtabmap::GlobalMapinline
assemble(const std::list< std::pair< int, Transform > > &newPoses)rtabmap::CloudMapprotectedvirtual
assembledNodes() constrtabmap::GlobalMapinlineprotected
cache() constrtabmap::GlobalMapinlineprotected
cellSize_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
clear()rtabmap::CloudMapvirtual
CloudMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::CloudMap)rtabmap::CloudMap
fullUpdateNeeded(const std::map< int, Transform > &poses) constrtabmap::GlobalMap
getCellSize() constrtabmap::GlobalMapinline
getGridMax(double &x, double &y) constrtabmap::GlobalMapinline
getGridMax(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getMapEmptyCells() const (defined in rtabmap::CloudMap)rtabmap::CloudMapinline
getMapGround() const (defined in rtabmap::CloudMap)rtabmap::CloudMapinline
getMapObstacles() const (defined in rtabmap::CloudMap)rtabmap::CloudMapinline
getMemoryUsed() constrtabmap::CloudMapvirtual
getUpdateError() constrtabmap::GlobalMapinline
GlobalMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())rtabmap::GlobalMapprotected
isNodeAssembled(int id)rtabmap::GlobalMapinlineprotected
logodds(double probability)rtabmap::GlobalMapinlinestatic
logOddsClampingMax_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsClampingMin_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsHit_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsMiss_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
maxValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
minValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
occupancyThr_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
probability(double logodds)rtabmap::GlobalMapinlinestatic
update(const std::map< int, Transform > &poses)rtabmap::GlobalMap
updateError_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
~GlobalMap() (defined in rtabmap::GlobalMap)rtabmap::GlobalMapvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.html b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.html new file mode 100644 index 00000000..f75f77cc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.html @@ -0,0 +1,407 @@ + + + + + + + + +RTAB-Map: rtabmap::CloudMap Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::CloudMap Class Reference
+
+
+
+Inheritance diagram for rtabmap::CloudMap:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CloudMap:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ CloudMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 
virtual void clear ()
 Clears assembled nodes and grid bounds; does not clear LocalGridCache.
 
const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & getMapGround () const
 
const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & getMapObstacles () const
 
const pcl::PointCloud< pcl::PointXYZ >::Ptr & getMapEmptyCells () const
 
unsigned long getMemoryUsed () const
 Approximate memory used by assembled-node bookkeeping (bytes).
 
- Public Member Functions inherited from rtabmap::GlobalMap
bool fullUpdateNeeded (const std::map< int, Transform > &poses) const
 True if the map should be rebuilt from cache (loop closure or disjoint graph).
 
bool update (const std::map< int, Transform > &poses)
 Incrementally assemble new nodes from poses.
 
float getCellSize () const
 
float getUpdateError () const
 
const std::map< int, Transform > & addedNodes () const
 
void getGridMin (double &x, double &y) const
 2D grid minimum (x, y) in meters.
 
void getGridMax (double &x, double &y) const
 2D grid maximum (x, y) in meters.
 
void getGridMin (double &x, double &y, double &z) const
 3D grid minimum (x, y, z) in meters.
 
void getGridMax (double &x, double &y, double &z) const
 3D grid maximum (x, y, z) in meters.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void assemble (const std::list< std::pair< int, Transform > > &newPoses)
 Subclass hook: merge newPoses into the global map; call addAssembledNode().
 
- Protected Member Functions inherited from rtabmap::GlobalMap
 GlobalMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 Constructs the base map; subclasses call from their constructor.
 
const std::map< int, LocalGrid > & cache () const
 
const std::map< int, Transform > & assembledNodes () const
 
bool isNodeAssembled (int id)
 
+void addAssembledNode (int id, const Transform &pose)
 Records a successfully assembled node (ids <= 0 are ignored).
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from rtabmap::GlobalMap
static float logodds (double probability)
 Converts probability in (0, 1) to log-odds.
 
static double probability (double logodds)
 Converts log-odds back to probability in (0, 1).
 
- Protected Attributes inherited from rtabmap::GlobalMap
float cellSize_
 
float updateError_
 
float occupancyThr_
 
float logOddsHit_
 
float logOddsMiss_
 
float logOddsClampingMin_
 
float logOddsClampingMax_
 
double minValues_ [3]
 
double maxValues_ [3]
 
+

Detailed Description

+
+

Definition at line 40 of file CloudMap.h.

+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void rtabmap::CloudMap::clear ()
+
+virtual
+
+ +

Clears assembled nodes and grid bounds; does not clear LocalGridCache.

+ +

Reimplemented from rtabmap::GlobalMap.

+ +
+
+ +

◆ getMapGround()

+ +
+
+ + + + + +
+ + + + + + + +
const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & rtabmap::CloudMap::getMapGround () const
+
+inline
+
+ +

Definition at line 47 of file CloudMap.h.

+ +
+
+ +

◆ getMapObstacles()

+ +
+
+ + + + + +
+ + + + + + + +
const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & rtabmap::CloudMap::getMapObstacles () const
+
+inline
+
+ +

Definition at line 48 of file CloudMap.h.

+ +
+
+ +

◆ getMapEmptyCells()

+ +
+
+ + + + + +
+ + + + + + + +
const pcl::PointCloud< pcl::PointXYZ >::Ptr & rtabmap::CloudMap::getMapEmptyCells () const
+
+inline
+
+ +

Definition at line 49 of file CloudMap.h.

+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned long rtabmap::CloudMap::getMemoryUsed () const
+
+virtual
+
+ +

Approximate memory used by assembled-node bookkeeping (bytes).

+ +

Reimplemented from rtabmap::GlobalMap.

+ +
+
+ +

◆ assemble()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::CloudMap::assemble (const std::list< std::pair< int, Transform > > & newPoses)
+
+protectedvirtual
+
+ +

Subclass hook: merge newPoses into the global map; call addAssembledNode().

+ +

Implements rtabmap::GlobalMap.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/global_map/CloudMap.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.js b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.js new file mode 100644 index 00000000..67ce3fbd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1CloudMap = +[ + [ "clear", "classrtabmap_1_1CloudMap.html#a3e2089cb30bd4efbee1ede0c041ee4af", null ], + [ "getMemoryUsed", "classrtabmap_1_1CloudMap.html#a18a2dd71488719960f06eb4ae5e2cf4b", null ], + [ "assemble", "classrtabmap_1_1CloudMap.html#a58b2f9f2a99fe3ab14ba73603e3d4f68", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.map new file mode 100644 index 00000000..06033eee --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.md5 new file mode 100644 index 00000000..9e5899c0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.md5 @@ -0,0 +1 @@ +f52453a4e473f67f92435c0ab43ad11d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..728f8005ee5555fa3b62de96d0d789b817516bba GIT binary patch literal 4411 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 C7h@j) literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.map new file mode 100644 index 00000000..06033eee --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.md5 new file mode 100644 index 00000000..9e5899c0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.md5 @@ -0,0 +1 @@ +f52453a4e473f67f92435c0ab43ad11d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CloudMap__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..728f8005ee5555fa3b62de96d0d789b817516bba GIT binary patch literal 4411 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 C7h@j) literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread-members.html new file mode 100644 index 00000000..7dfaa5dd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread-members.html @@ -0,0 +1,160 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::CompressionThread Member List
+
+
+ +

This is the complete list of members for rtabmap::CompressionThread, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CompressionThread(const cv::Mat &mat, const std::string &format="")rtabmap::CompressionThread
CompressionThread(const cv::Mat &bytes, bool isImage)rtabmap::CompressionThread
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getCompressedData() constrtabmap::CompressionThreadinline
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
getUncompressedData()rtabmap::CompressionThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
join(bool killFirst=false)UThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
mainLoop()rtabmap::CompressionThreadprotectedvirtual
Priority enum nameUThread
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setPriority(Priority priority)UThread
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.html b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.html new file mode 100644 index 00000000..4cfaf230 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.html @@ -0,0 +1,440 @@ + + + + + + + + +RTAB-Map: rtabmap::CompressionThread Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::CompressionThread Class Reference
+
+
+ +

Background thread to compress or uncompress images and generic matrices. + More...

+ +

#include <Compression.h>

+
+Inheritance diagram for rtabmap::CompressionThread:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::CompressionThread:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CompressionThread (const cv::Mat &mat, const std::string &format="")
 Constructs a thread in compress mode.
 
 CompressionThread (const cv::Mat &bytes, bool isImage)
 Constructs a thread in uncompress mode.
 
const cv::Mat & getCompressedData () const
 
cv::Mat & getUncompressedData ()
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + +

+Protected Member Functions

virtual void mainLoop ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

Background thread to compress or uncompress images and generic matrices.

+

In compress mode, pass a source matrix to the constructor with an optional image format (".png", ".jpg", ".rvl", or empty for zlib data). In uncompress mode, pass compressed bytes and set isImage accordingly. Call UThread::start() then UThread::join() to obtain the result from getCompressedData() or getUncompressedData().

+

Example compression:

cv::Mat image;
+
CompressionThread ct(image, ".png");
+
ct.start();
+
ct.join();
+
cv::Mat bytes = ct.getCompressedData();
+
Background thread to compress or uncompress images and generic matrices.
Definition Compression.h:68
+

Example uncompression:

cv::Mat bytes;
+
CompressionThread ct(bytes, true);
+
ct.start();
+
ct.join();
+
cv::Mat image = ct.getUncompressedData();
+
+

Definition at line 67 of file Compression.h.

+

Constructor & Destructor Documentation

+ +

◆ CompressionThread() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
rtabmap::CompressionThread::CompressionThread (const cv::Mat & mat,
const std::string & format = "" 
)
+
+ +

Constructs a thread in compress mode.

+
Parameters
+ + + +
matSource image or data matrix to compress.
formatImage format: ".png", ".jpg", ".rvl", or empty for zlib (compressData2).
+
+
+ +
+
+ +

◆ CompressionThread() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
rtabmap::CompressionThread::CompressionThread (const cv::Mat & bytes,
bool isImage 
)
+
+ +

Constructs a thread in uncompress mode.

+
Parameters
+ + + +
bytesCompressed bytes (CV_8UC1).
isImageIf true, decode as image; otherwise decode as zlib data.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getCompressedData()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::CompressionThread::getCompressedData () const
+
+inline
+
+
Returns
Compressed output (CV_8UC1), valid after compress mode completes.
+ +

Definition at line 83 of file Compression.h.

+ +
+
+ +

◆ getUncompressedData()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat & rtabmap::CompressionThread::getUncompressedData ()
+
+inline
+
+
Returns
Uncompressed output, valid after uncompress mode completes.
+ +

Definition at line 85 of file Compression.h.

+ +
+
+ +

◆ mainLoop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void rtabmap::CompressionThread::mainLoop ()
+
+protectedvirtual
+
+

Pure virtual method mainLoop(). The inner loop of the thread. This method is called repetitively until the thread is killed. Note that if kill() is called in mainLoopBegin(), mainLoop() is not called, terminating immediately the thread.

+
See also
mainLoop()
+
+kill()
+ +

Implements UThread.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.js b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.js new file mode 100644 index 00000000..821a9411 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread.js @@ -0,0 +1,8 @@ +var classrtabmap_1_1CompressionThread = +[ + [ "CompressionThread", "classrtabmap_1_1CompressionThread.html#a6bdec4c44e47774291bc9f98b3b5c146", null ], + [ "CompressionThread", "classrtabmap_1_1CompressionThread.html#a8cfe0e3d632c888c143b4e7902145fde", null ], + [ "getCompressedData", "classrtabmap_1_1CompressionThread.html#a6908afb16364f91c7d0744decf6c970d", null ], + [ "getUncompressedData", "classrtabmap_1_1CompressionThread.html#aafdc57cad744cbe94b30a8abfe7711a4", null ], + [ "mainLoop", "classrtabmap_1_1CompressionThread.html#a4948c2a9c84ee4e15699f08c2d4bac22", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.map new file mode 100644 index 00000000..a757e90d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.md5 new file mode 100644 index 00000000..bee2881b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.md5 @@ -0,0 +1 @@ +8deb0a19b9b4501c87822e452a7b8b09 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..74fd909129698eab637b498b7ebcb86a25083451 GIT binary patch literal 6405 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 BfK~ti literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.map new file mode 100644 index 00000000..a757e90d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.md5 new file mode 100644 index 00000000..bee2881b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.md5 @@ -0,0 +1 @@ +8deb0a19b9b4501c87822e452a7b8b09 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1CompressionThread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..74fd909129698eab637b498b7ebcb86a25083451 GIT binary patch literal 6405 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 BfK~ti literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver-members.html new file mode 100644 index 00000000..2fd56fec --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver-members.html @@ -0,0 +1,301 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::DBDriver Member List
+
+
+ +

This is the complete list of members for rtabmap::DBDriver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addInfoAfterRun(int stMemSize, int lastSignAdded, int processMemUsed, int databaseMemUsed, int dictionarySize, const ParametersMap &parameters) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
addLink(const Link &link)rtabmap::DBDriver
addLinkQuery(const Link &link) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
addStatistics(const Statistics &statistics, bool saveWmState) constrtabmap::DBDriver
addStatisticsQuery(const Statistics &statistics, bool saveWmState) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
asyncSave(Signature *s)rtabmap::DBDriver
asyncSave(VisualWord *vw)rtabmap::DBDriver
closeConnection(bool save=true, const std::string &outputUrl="")rtabmap::DBDriver
connectDatabaseQuery(const std::string &url, bool overwritten=false, bool readOnly=false)=0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
create(const ParametersMap &parameters=ParametersMap())rtabmap::DBDriverstatic
currentThreadId() (defined in UThread)UThreadinlinestatic
DBDriver(const ParametersMap &parameters=ParametersMap())rtabmap::DBDriverprotected
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
disconnectDatabaseQuery(bool save=true, const std::string &outputUrl="")=0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
emptyTrashes(bool async=false)rtabmap::DBDriver
executeNoResult(const std::string &sql) constrtabmap::DBDriver
executeNoResultQuery(const std::string &sql) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
generateGraph(const std::string &fileName, const std::set< int > &ids=std::set< int >(), const std::map< int, Signature * > &otherSignatures=std::map< int, Signature * >())rtabmap::DBDriver
getAllLabels(std::map< int, std::string > &labels) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllLabelsQuery(std::map< int, std::string > &labels) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getAllLinks(std::multimap< int, Link > &links, bool ignoreNullLinks=true, bool withLandmarks=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllLinksQuery(std::multimap< int, Link > &links, bool ignoreNullLinks, bool withLandmarks) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getAllNodeIds(std::set< int > &ids, bool ignoreChildren=false, bool ignoreBadSignatures=false, bool ignoreIntermediateNodes=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllNodeIdsQuery(std::set< int > &ids, bool ignoreChildren, bool ignoreBadSignatures, bool ignoreIntermediateNodes) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getAllOdomPoses(std::map< int, Transform > &poses, bool ignoreChildren=false, bool ignoreIntermediateNodes=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllOdomPosesQuery(std::map< int, Transform > &poses, bool ignoreChildren, bool ignoreIntermediateNodes) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getAllStatistics() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllStatisticsQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getAllStatisticsWmStates() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllStatisticsWmStatesQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getCalibration(int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getCalibrationQuery(int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getCalibrationsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getCalibrationsMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getDatabaseVersion() constrtabmap::DBDriver
getDatabaseVersionQuery(std::string &version) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getDepthImagesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getDepthImagesMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getEmptyTrashesTime() const (defined in rtabmap::DBDriver)rtabmap::DBDriverinline
getFeaturesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getFeaturesMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getGridsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getGridsMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getImagesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getImagesMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getInvertedIndexNi(int signatureId, int &ni) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getInvertedIndexNiQuery(int signatureId, int &ni) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLaserScanInfo(int signatureId, LaserScan &info) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLaserScanInfoQuery(int signatureId, LaserScan &info) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLaserScansMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLaserScansMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLastDictionarySize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastDictionarySizeQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLastIdQuery(const std::string &tableName, int &id, const std::string &fieldName="id") const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLastMapId(int &mapId) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodeId(int &id) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodeIds(std::set< int > &ids) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodeIdsQuery(std::set< int > &ids) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLastNodesSize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodesSizeQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLastParameters() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastParametersQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLastWordId(int &id) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLinksMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLinksMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getLocalFeatures(int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLocalFeaturesQuery(int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getNodeData(int signatureId, SensorData &data, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodeIdByLabel(const std::string &label, int &id) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodeIdByLabelQuery(const std::string &label, int &id) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getNodeInfo(int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodeInfoQuery(int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getNodesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodesMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getNodesObservingLandmark(int landmarkId, std::map< int, Link > &nodes) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodesObservingLandmarkQuery(int landmarkId, std::map< int, Link > &nodes) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getStatistics(int nodeId, double &stamp, std::vector< int > *wmState=0) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getStatisticsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getStatisticsMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getStatisticsQuery(int nodeId, double &stamp, std::vector< int > *wmState) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getTargetVersion() constrtabmap::DBDriverinline
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
getTotalDictionarySize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getTotalDictionarySizeQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getTotalNodesSize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getTotalNodesSizeQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getUrl() constrtabmap::DBDriverinline
getUserDataMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getUserDataMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getWeight(int signatureId, int &weight) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getWeightQuery(int signatureId, int &weight) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
getWordsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getWordsMemoryUsedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isConnected() constrtabmap::DBDriver
isConnectedQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
isCreating() constUThread
isIdle() constUThread
isInMemory() constrtabmap::DBDriverinlinevirtual
isKilled() constUThread
isRunning() constUThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
join(bool killFirst=false)UThread
kill()UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
load(VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
load2DMap(float &xMin, float &yMin, float &cellSize) constrtabmap::DBDriver
load2DMapQuery(float &xMin, float &yMin, float &cellSize) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadLastNodes(std::list< Signature * > &signatures, bool loadWordIdsOnly=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadLastNodesQuery(std::list< Signature * > &signatures, bool loadWordIdsOnly) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadLinks(int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) constrtabmap::DBDriver
loadLinksQuery(int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadNodeData(Signature &signature, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadNodeData(std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadNodeDataQuery(std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadOptimizedMesh(std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons=0, std::vector< std::vector< Eigen::Vector2f > > *texCoords=0, cv::Mat *textures=0) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadOptimizedMeshQuery(std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons, std::vector< std::vector< Eigen::Vector2f > > *texCoords, cv::Mat *textures) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadOptimizedPoses(Transform *lastlocalizationPose=0) constrtabmap::DBDriver
loadOptimizedPosesQuery(Transform *lastlocalizationPose=0) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadPreviewImage() constrtabmap::DBDriver
loadPreviewImageQuery() const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadQuery(VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadSignature(int id, bool *loadedFromTrash=0)rtabmap::DBDriver
loadSignatures(const std::list< int > &ids, std::list< Signature * > &signatures, std::set< int > *loadedFromTrash=0, bool loadWordIdsOnly=false) (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadSignaturesQuery(const std::list< int > &ids, std::list< Signature * > &signatures, bool loadWordIdsOnly) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
loadWords(const std::set< int > &wordIds, std::list< VisualWord * > &vws) (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadWordsQuery(const std::set< int > &wordIds, std::list< VisualWord * > &vws) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
openConnection(const std::string &url, bool overwritten=false, bool readOnly=false)rtabmap::DBDriver
parseParameters(const ParametersMap &parameters)rtabmap::DBDrivervirtual
Priority enum nameUThread
removeLink(int from, int to)rtabmap::DBDriver
save2DMap(const cv::Mat &map, float xMin, float yMin, float cellSize) constrtabmap::DBDriver
save2DMapQuery(const cv::Mat &map, float xMin, float yMin, float cellSize) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
saveFlannIndex(const std::vector< unsigned char > &indexData) constrtabmap::DBDriver
saveFlannIndexQuery(const std::vector< unsigned char > &indexData) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
saveOptimizedMesh(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) constrtabmap::DBDriver
saveOptimizedMeshQuery(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons, const std::vector< std::vector< Eigen::Vector2f > > &texCoords, const cv::Mat &textures) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
saveOptimizedPoses(const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) constrtabmap::DBDriver
saveOptimizedPosesQuery(const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
savePreviewImage(const cv::Mat &image) constrtabmap::DBDriver
savePreviewImageQuery(const cv::Mat &image) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
saveQuery(const std::list< Signature * > &signatures)=0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
saveQuery(const std::list< VisualWord * > &words) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setPriority(Priority priority)UThread
setTimestampUpdateEnabled(bool enabled) (defined in rtabmap::DBDriver)rtabmap::DBDriverinline
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
updateCalibration(int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels)rtabmap::DBDriver
updateCalibrationQuery(int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
updateDepthImage(int nodeId, const cv::Mat &image, const std::string &format)rtabmap::DBDriver
updateDepthImageQuery(int nodeId, const cv::Mat &image, const std::string &format) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
updateLaserScan(int nodeId, const LaserScan &scan)rtabmap::DBDriver
updateLaserScanQuery(int nodeId, const LaserScan &scan) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
updateLink(const Link &link)rtabmap::DBDriver
updateLinkQuery(const Link &link) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
updateOccupancyGrid(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint)rtabmap::DBDriver
updateOccupancyGridQuery(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
updateQuery(const std::list< Signature * > &signatures, bool updateTimestamp) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
updateQuery(const std::list< VisualWord * > &words, bool updateTimestamp) const =0 (defined in rtabmap::DBDriver)rtabmap::DBDriverprotectedpure virtual
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~DBDriver() (defined in rtabmap::DBDriver)rtabmap::DBDrivervirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.html b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.html new file mode 100644 index 00000000..c4be4aa5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.html @@ -0,0 +1,1366 @@ + + + + + + + + +RTAB-Map: rtabmap::DBDriver Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract database driver for RTAB-Map maps (signatures, links, words, statistics). + More...

+ +

#include <DBDriver.h>

+
+Inheritance diagram for rtabmap::DBDriver:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::DBDriver:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void parseParameters (const ParametersMap &parameters)
 Parse driver parameters from the map (e.g. target schema version).
 
virtual bool isInMemory () const
 True when no database file URL was set at open time.
 
const std::string & getUrl () const
 
const std::string & getTargetVersion () const
 
void asyncSave (Signature *s)
 Queue a signature for deferred save; ownership is transferred.
 
+void asyncSave (VisualWord *vw)
 Queue a visual word for deferred save; ownership is transferred.
 
void emptyTrashes (bool async=false)
 Flush queued signatures and visual words to the database.
 
double getEmptyTrashesTime () const
 
void setTimestampUpdateEnabled (bool enabled)
 
void generateGraph (const std::string &fileName, const std::set< int > &ids=std::set< int >(), const std::map< int, Signature * > &otherSignatures=std::map< int, Signature * >())
 Export the pose graph to a Graphviz DOT file for visualization.
 
void executeNoResult (const std::string &sql) const
 Run a SQL statement that does not return result rows.
 
Direct database updates

Write node or link data immediately (not via the async trash).

+
+void addLink (const Link &link)
 Insert or replace a link in the database.
 
+void removeLink (int from, int to)
 Remove a link between two nodes.
 
+void updateLink (const Link &link)
 Update an existing link in the database.
 
void updateOccupancyGrid (int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint)
 Update occupancy grid cells for a node.
 
+void updateCalibration (int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels)
 Update camera calibration stored for a node.
 
void updateDepthImage (int nodeId, const cv::Mat &image, const std::string &format)
 Update the depth image stored for a node.
 
void updateLaserScan (int nodeId, const LaserScan &scan)
 Update the laser scan stored for a node.
 
Session exports and map artifacts

Statistics, preview image, optimized poses, 2D map, mesh and FLANN index.

+
+void addInfoAfterRun (int stMemSize, int lastSignAdded, int processMemUsed, int databaseMemUsed, int dictionarySize, const ParametersMap &parameters) const
 
void addStatistics (const Statistics &statistics, bool saveWmState) const
 Append a Statistics record for a processed node.
 
void savePreviewImage (const cv::Mat &image) const
 Save the map preview thumbnail in the Admin table.
 
+cv::Mat loadPreviewImage () const
 Load and uncompress the map preview thumbnail from the Admin table.
 
+void saveOptimizedPoses (const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const
 Persist graph-optimized poses and last localization pose.
 
+std::map< int, Transform > loadOptimizedPoses (Transform *lastlocalizationPose=0) const
 Load optimized poses; optional last localization pose output.
 
+void save2DMap (const cv::Mat &map, float xMin, float yMin, float cellSize) const
 Save the assembled 2D occupancy grid and its origin metadata.
 
+cv::Mat load2DMap (float &xMin, float &yMin, float &cellSize) const
 Load the 2D map and fill origin/cell size outputs.
 
void saveOptimizedMesh (const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) const
 Persist the global optimized 3D mesh to the database.
 
+cv::Mat loadOptimizedMesh (std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons=0, std::vector< std::vector< Eigen::Vector2f > > *texCoords=0, cv::Mat *textures=0) const
 
void saveFlannIndex (const std::vector< unsigned char > &indexData) const
 Persist the visual word dictionary FLANN index (serialized blob).
 
Connection and database introspection

Mutex-protected wrappers around protected *Query() methods.

+
+bool openConnection (const std::string &url, bool overwritten=false, bool readOnly=false)
 Open or create the database at url (empty url uses an in-memory database).
 
+void closeConnection (bool save=true, const std::string &outputUrl="")
 Close the connection; optionally flush trashes and save in-memory DB to outputUrl.
 
bool isConnected () const
 
+unsigned long getMemoryUsed () const
 
std::string getDatabaseVersion () const
 
+long getNodesMemoryUsed () const
 
+long getLinksMemoryUsed () const
 
+long getImagesMemoryUsed () const
 
+long getDepthImagesMemoryUsed () const
 
+long getCalibrationsMemoryUsed () const
 
+long getGridsMemoryUsed () const
 
+long getLaserScansMemoryUsed () const
 
+long getUserDataMemoryUsed () const
 
+long getWordsMemoryUsed () const
 
+long getFeaturesMemoryUsed () const
 
+long getStatisticsMemoryUsed () const
 
+int getLastNodesSize () const
 
+int getLastDictionarySize () const
 
+int getTotalNodesSize () const
 
+int getTotalDictionarySize () const
 
+ParametersMap getLastParameters () const
 
+std::map< std::string, float > getStatistics (int nodeId, double &stamp, std::vector< int > *wmState=0) const
 
+std::map< int, std::pair< std::map< std::string, float >, double > > getAllStatistics () const
 
+std::map< int, std::vector< int > > getAllStatisticsWmStates () const
 
Load and query

Load signatures, words, links and node metadata from the database.

+
+void load (VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const
 
+void loadLastNodes (std::list< Signature * > &signatures, bool loadWordIdsOnly=false) const
 
+Signature * loadSignature (int id, bool *loadedFromTrash=0)
 Load one signature by id; caller must delete the returned pointer.
 
+void loadSignatures (const std::list< int > &ids, std::list< Signature * > &signatures, std::set< int > *loadedFromTrash=0, bool loadWordIdsOnly=false)
 
+void loadWords (const std::set< int > &wordIds, std::list< VisualWord * > &vws)
 
+void loadNodeData (Signature &signature, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const
 
+void loadNodeData (std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const
 
+void getNodeData (int signatureId, SensorData &data, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const
 
+bool getCalibration (int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const
 
+bool getLaserScanInfo (int signatureId, LaserScan &info) const
 
+bool getNodeInfo (int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const
 
+void getLocalFeatures (int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const
 
+void loadLinks (int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) const
 Load outgoing links from signatureId, optionally filtered by type.
 
+void getWeight (int signatureId, int &weight) const
 
+void getLastNodeIds (std::set< int > &ids) const
 
+void getAllNodeIds (std::set< int > &ids, bool ignoreChildren=false, bool ignoreBadSignatures=false, bool ignoreIntermediateNodes=false) const
 
+void getAllOdomPoses (std::map< int, Transform > &poses, bool ignoreChildren=false, bool ignoreIntermediateNodes=false) const
 
+void getAllLinks (std::multimap< int, Link > &links, bool ignoreNullLinks=true, bool withLandmarks=false) const
 
+void getLastNodeId (int &id) const
 
+void getLastMapId (int &mapId) const
 
+void getLastWordId (int &id) const
 
+void getInvertedIndexNi (int signatureId, int &ni) const
 
+void getNodesObservingLandmark (int landmarkId, std::map< int, Link > &nodes) const
 
+void getNodeIdByLabel (const std::string &label, int &id) const
 
+void getAllLabels (std::map< int, std::string > &labels) const
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static DBDriver * create (const ParametersMap &parameters=ParametersMap())
 Factory: returns a SQLite database driver (DBDriverSqlite3).
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+ DBDriver (const ParametersMap &parameters=ParametersMap())
 Protected constructor for subclasses.
 
Backend implementation (subclass responsibility)

Pure virtual SQL/backend hooks invoked by public wrappers above.

+
+virtual bool connectDatabaseQuery (const std::string &url, bool overwritten=false, bool readOnly=false)=0
 
+virtual void disconnectDatabaseQuery (bool save=true, const std::string &outputUrl="")=0
 
+virtual bool isConnectedQuery () const =0
 
+virtual unsigned long getMemoryUsedQuery () const =0
 
+virtual bool getDatabaseVersionQuery (std::string &version) const =0
 
+virtual long getNodesMemoryUsedQuery () const =0
 
+virtual long getLinksMemoryUsedQuery () const =0
 
+virtual long getImagesMemoryUsedQuery () const =0
 
+virtual long getDepthImagesMemoryUsedQuery () const =0
 
+virtual long getCalibrationsMemoryUsedQuery () const =0
 
+virtual long getGridsMemoryUsedQuery () const =0
 
+virtual long getLaserScansMemoryUsedQuery () const =0
 
+virtual long getUserDataMemoryUsedQuery () const =0
 
+virtual long getWordsMemoryUsedQuery () const =0
 
+virtual long getFeaturesMemoryUsedQuery () const =0
 
+virtual long getStatisticsMemoryUsedQuery () const =0
 
+virtual int getLastNodesSizeQuery () const =0
 
+virtual int getLastDictionarySizeQuery () const =0
 
+virtual int getTotalNodesSizeQuery () const =0
 
+virtual int getTotalDictionarySizeQuery () const =0
 
+virtual ParametersMap getLastParametersQuery () const =0
 
+virtual std::map< std::string, float > getStatisticsQuery (int nodeId, double &stamp, std::vector< int > *wmState) const =0
 
+virtual std::map< int, std::pair< std::map< std::string, float >, double > > getAllStatisticsQuery () const =0
 
+virtual std::map< int, std::vector< int > > getAllStatisticsWmStatesQuery () const =0
 
+virtual void executeNoResultQuery (const std::string &sql) const =0
 
+virtual void getWeightQuery (int signatureId, int &weight) const =0
 
+virtual void saveQuery (const std::list< Signature * > &signatures)=0
 
+virtual void saveQuery (const std::list< VisualWord * > &words) const =0
 
+virtual void updateQuery (const std::list< Signature * > &signatures, bool updateTimestamp) const =0
 
+virtual void updateQuery (const std::list< VisualWord * > &words, bool updateTimestamp) const =0
 
+virtual void addLinkQuery (const Link &link) const =0
 
+virtual void updateLinkQuery (const Link &link) const =0
 
+virtual void updateOccupancyGridQuery (int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint) const =0
 
+virtual void updateCalibrationQuery (int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels) const =0
 
+virtual void updateDepthImageQuery (int nodeId, const cv::Mat &image, const std::string &format) const =0
 
+virtual void updateLaserScanQuery (int nodeId, const LaserScan &scan) const =0
 
+virtual void addStatisticsQuery (const Statistics &statistics, bool saveWmState) const =0
 
+virtual void savePreviewImageQuery (const cv::Mat &image) const =0
 
+virtual cv::Mat loadPreviewImageQuery () const =0
 
+virtual void saveOptimizedPosesQuery (const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const =0
 
+virtual std::map< int, Transform > loadOptimizedPosesQuery (Transform *lastlocalizationPose=0) const =0
 
+virtual void save2DMapQuery (const cv::Mat &map, float xMin, float yMin, float cellSize) const =0
 
+virtual cv::Mat load2DMapQuery (float &xMin, float &yMin, float &cellSize) const =0
 
+virtual void saveOptimizedMeshQuery (const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons, const std::vector< std::vector< Eigen::Vector2f > > &texCoords, const cv::Mat &textures) const =0
 
+virtual cv::Mat loadOptimizedMeshQuery (std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons, std::vector< std::vector< Eigen::Vector2f > > *texCoords, cv::Mat *textures) const =0
 
+virtual void saveFlannIndexQuery (const std::vector< unsigned char > &indexData) const =0
 
+virtual void loadQuery (VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const =0
 
+virtual void loadLastNodesQuery (std::list< Signature * > &signatures, bool loadWordIdsOnly) const =0
 
+virtual void loadSignaturesQuery (const std::list< int > &ids, std::list< Signature * > &signatures, bool loadWordIdsOnly) const =0
 
+virtual void loadWordsQuery (const std::set< int > &wordIds, std::list< VisualWord * > &vws) const =0
 
+virtual void loadLinksQuery (int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) const =0
 
+virtual void loadNodeDataQuery (std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const =0
 
+virtual bool getCalibrationQuery (int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const =0
 
+virtual bool getLaserScanInfoQuery (int signatureId, LaserScan &info) const =0
 
+virtual bool getNodeInfoQuery (int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const =0
 
+virtual void getLocalFeaturesQuery (int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const =0
 
+virtual void getLastNodeIdsQuery (std::set< int > &ids) const =0
 
+virtual void getAllNodeIdsQuery (std::set< int > &ids, bool ignoreChildren, bool ignoreBadSignatures, bool ignoreIntermediateNodes) const =0
 
+virtual void getAllOdomPosesQuery (std::map< int, Transform > &poses, bool ignoreChildren, bool ignoreIntermediateNodes) const =0
 
+virtual void getAllLinksQuery (std::multimap< int, Link > &links, bool ignoreNullLinks, bool withLandmarks) const =0
 
+virtual void getLastIdQuery (const std::string &tableName, int &id, const std::string &fieldName="id") const =0
 
+virtual void getInvertedIndexNiQuery (int signatureId, int &ni) const =0
 
+virtual void getNodesObservingLandmarkQuery (int landmarkId, std::map< int, Link > &nodes) const =0
 
+virtual void getNodeIdByLabelQuery (const std::string &label, int &id) const =0
 
+virtual void getAllLabelsQuery (std::map< int, std::string > &labels) const =0
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).

+

DBDriver is the persistence layer used by Memory, DBReader and tools that read or write .db files. The default implementation is DBDriverSqlite3, created by create().

+

The driver extends UThreadNode. Pending Signature and VisualWord objects are queued with asyncSave() and flushed to the database by emptyTrashes() (also called from the background thread on closeConnection()).

+

Public methods are thread-safe where noted (mutex-protected wrappers). Subclasses implement SQL-specific logic in protected *Query() virtual methods.

+
See also
DBDriverSqlite3
+
+Memory
+ +

Definition at line 71 of file DBDriver.h.

+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
static DBDriver * rtabmap::DBDriver::create (const ParametersMap & parameters = ParametersMap())
+
+static
+
+ +

Factory: returns a SQLite database driver (DBDriverSqlite3).

+
Parameters
+ + +
parametersOptional driver parameters (e.g. Parameters::kDbTargetVersion()).
+
+
+
Returns
New driver instance; caller owns the pointer.
+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriver::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Parse driver parameters from the map (e.g. target schema version).

+ +

Reimplemented in rtabmap::DBDriverSqlite3.

+ +
+
+ +

◆ isInMemory()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::DBDriver::isInMemory () const
+
+inlinevirtual
+
+ +

True when no database file URL was set at open time.

+
Note
DBDriverSqlite3 overrides this when Parameters::kDbSqlite3InMemory() is enabled.
+ +

Reimplemented in rtabmap::DBDriverSqlite3.

+ +

Definition at line 90 of file DBDriver.h.

+ +
+
+ +

◆ getUrl()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::DBDriver::getUrl () const
+
+inline
+
+
Returns
Database file path last passed to openConnection().
+ +

Definition at line 92 of file DBDriver.h.

+ +
+
+ +

◆ getTargetVersion()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::DBDriver::getTargetVersion () const
+
+inline
+
+
Returns
Target schema version for new databases (from parameters).
+ +

Definition at line 94 of file DBDriver.h.

+ +
+
+ +

◆ asyncSave()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriver::asyncSave (Signature * s)
+
+ +

Queue a signature for deferred save; ownership is transferred.

+
Note
Only the compressed sensor buffers are written (SensorData::imageCompressed(), depthOrRightCompressed(), laserScanCompressed(), ...). Raw matrices are ignored, so a signature carrying only raw data is stored with empty payloads. Memory compresses before saving; a caller driving the driver directly should compress first with compressImage2() / compressData2(), or pass the compressed buffers to SensorData::setRGBDImage() / setLaserScan(), which treat a 1-row CV_8UC1 matrix as already compressed.
+ +
+
+ +

◆ emptyTrashes()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriver::emptyTrashes (bool async = false)
+
+ +

Flush queued signatures and visual words to the database.

+
Parameters
+ + +
asyncIf true, signal the background thread instead of flushing synchronously.
+
+
+ +
+
+ +

◆ getEmptyTrashesTime()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::DBDriver::getEmptyTrashesTime () const
+
+inline
+
+ +

Definition at line 116 of file DBDriver.h.

+ +
+
+ +

◆ setTimestampUpdateEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::DBDriver::setTimestampUpdateEnabled (bool enabled)
+
+inline
+
+ +

Definition at line 117 of file DBDriver.h.

+ +
+
+ +

◆ generateGraph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::DBDriver::generateGraph (const std::string & fileName,
const std::set< int > & ids = std::set< int >(),
const std::map< int, Signature * > & otherSignatures = std::map< int, Signature * >() 
)
+
+ +

Export the pose graph to a Graphviz DOT file for visualization.

+

Reads nodes and links from the database (and optionally from otherSignatures not yet persisted) and writes fileName. Does not modify the database. If ids is empty, all node ids are included.

+ +
+
+ +

◆ updateOccupancyGrid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::DBDriver::updateOccupancyGrid (int nodeId,
const cv::Mat & ground,
const cv::Mat & obstacles,
const cv::Mat & empty,
float cellSize,
const cv::Point3f & viewpoint 
)
+
+ +

Update occupancy grid cells for a node.

+
Parameters
+ + + + +
groundGround cells (raw CV_32FC2/CV_32FC3, or compressed CV_8UC1 1×N).
obstaclesObstacle cells (same formats as ground).
emptyEmpty cells (same formats as ground; ignored on DB schema < 0.16.0). Raw mats are compressed internally via SensorData::setOccupancyGrid() before writing.
+
+
+ +
+
+ +

◆ updateDepthImage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::DBDriver::updateDepthImage (int nodeId,
const cv::Mat & image,
const std::string & format 
)
+
+ +

Update the depth image stored for a node.

+
Parameters
+ + + +
imageRaw depth image, or pre-compressed blob (CV_8UC1, single row).
formatCompression format when image is raw (e.g. ".png"); ignored if already compressed. Uncompressed images are compressed with compressImage2() before writing.
+
+
+ +
+
+ +

◆ updateLaserScan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::DBDriver::updateLaserScan (int nodeId,
const LaserScan & scan 
)
+
+ +

Update the laser scan stored for a node.

+
Parameters
+ + +
scanUncompressed scan, or already compressed (LaserScan::isCompressed()). Uncompressed data is compressed with compressData2() before writing.
+
+
+ +
+
+ +

◆ addStatistics()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::DBDriver::addStatistics (const Statistics & statistics,
bool saveWmState 
) const
+
+ +

Append a Statistics record for a processed node.

+
Parameters
+ + + +
statisticsMetrics for Statistics::refImageId() (insert skipped if id ≤ 0 or data empty).
saveWmStateIf true and schema ≥ 0.16.2, also store compressed working-memory state.
+
+
+ +
+
+ +

◆ savePreviewImage()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriver::savePreviewImage (const cv::Mat & image) const
+
+ +

Save the map preview thumbnail in the Admin table.

+
Parameters
+ + +
imageRaw image or JPEG-compressed blob (CV_8UC1, single row); empty clears it.
+
+
+
Note
Requires database schema ≥ 0.12.0.
+ +
+
+ +

◆ saveOptimizedMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::DBDriver::saveOptimizedMesh (const cv::Mat & cloud,
const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > & polygons = std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(),
const std::vector< std::vector< Eigen::Vector2f > > & texCoords = std::vector< std::vector< Eigen::Vector2f > >(),
const cv::Mat & textures = cv::Mat() 
) const
+
+ +

Persist the global optimized 3D mesh to the database.

+
Parameters
+ + + + + +
cloudPoint cloud (CV_32FC1 or CV_32FC3).
polygonsOptional per-texture polygon index lists (texture → polygon → vertex indices).
texCoordsOptional UV coordinates per texture (one per polygon vertex).
texturesOptional concatenated square texture images (same size per texture).
+
+
+ +
+
+ +

◆ saveFlannIndex()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriver::saveFlannIndex (const std::vector< unsigned char > & indexData) const
+
+ +

Persist the visual word dictionary FLANN index (serialized blob).

+
Parameters
+ + +
indexDataSerialized index from VWDictionary::serializeIndex(); pass empty to clear.
+
+
+
Note
Requires database schema ≥ 0.23.0. Used when Parameters::kKpFlannIndexSaved() is enabled.
+ +
+
+ +

◆ isConnected()

+ +
+
+ + + + + + + +
bool rtabmap::DBDriver::isConnected () const
+
+
Returns
True if a database connection is active.
+ +
+
+ +

◆ getDatabaseVersion()

+ +
+
+ + + + + + + +
std::string rtabmap::DBDriver::getDatabaseVersion () const
+
+
Returns
Schema version string stored in the database (e.g. "0.21.0").
+ +
+
+ +

◆ executeNoResult()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriver::executeNoResult (const std::string & sql) const
+
+ +

Run a SQL statement that does not return result rows.

+

Executes sql on the open database (e.g. INSERT, UPDATE, DELETE, CREATE, PRAGMA). Thread-safe wrapper around the backend's SQL execution.

+

For reads, use the dedicated loadSignature(), loadLinks() and related query methods instead of raw SQL.

+
Parameters
+ + +
sqlComplete SQL statement (SQLite syntax for DBDriverSqlite3).
+
+
+
Note
The connection must be open (isConnected()). On failure the driver aborts with an assertion (SQLite backend).
+
Warning
sql is passed verbatim; sanitize any user-controlled values before calling.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.js b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.js new file mode 100644 index 00000000..aac98c85 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver.js @@ -0,0 +1,35 @@ +var classrtabmap_1_1DBDriver = +[ + [ "DBDriver", "classrtabmap_1_1DBDriver.html#a5f90eb62bb559d42611dbe7ffe11328e", null ], + [ "parseParameters", "classrtabmap_1_1DBDriver.html#a3c73e045d9bdf8cad1c58efc9d930427", null ], + [ "isInMemory", "classrtabmap_1_1DBDriver.html#a0ecd6182f404d8e6822b66a54f1d248a", null ], + [ "getUrl", "classrtabmap_1_1DBDriver.html#a79365611bce06aeda0d078641be89cab", null ], + [ "getTargetVersion", "classrtabmap_1_1DBDriver.html#a456bc49e8e60e0c754078a4b09e3f1a1", null ], + [ "asyncSave", "classrtabmap_1_1DBDriver.html#ad1510e157f3ab8df3284528369a6d88f", null ], + [ "asyncSave", "classrtabmap_1_1DBDriver.html#a88eee22aa9707a6993f734fe29f6af5d", null ], + [ "emptyTrashes", "classrtabmap_1_1DBDriver.html#ab4a0036162994c2ef76d4236e2a7ea0a", null ], + [ "generateGraph", "classrtabmap_1_1DBDriver.html#abbf62fc6967cf618e6b2aece44f45230", null ], + [ "addLink", "classrtabmap_1_1DBDriver.html#acfb5fed58aad744050c392a8d346926b", null ], + [ "removeLink", "classrtabmap_1_1DBDriver.html#a7c3c7536423a956e74d3f609ee814717", null ], + [ "updateLink", "classrtabmap_1_1DBDriver.html#a94eb69c07a44343c008654b1401dce80", null ], + [ "updateOccupancyGrid", "classrtabmap_1_1DBDriver.html#a2f5e8e0b367e49cfbba7c96b28306a61", null ], + [ "updateCalibration", "classrtabmap_1_1DBDriver.html#a6d59931a9496cf1b23568f79fc421cc1", null ], + [ "updateDepthImage", "classrtabmap_1_1DBDriver.html#a3a02d595356e2dd0ed8b8933a6c4e811", null ], + [ "updateLaserScan", "classrtabmap_1_1DBDriver.html#a7d167e53d447d77dd3fe35665f8a661b", null ], + [ "addStatistics", "classrtabmap_1_1DBDriver.html#a4dbccd0dabf72da724488692b1713832", null ], + [ "savePreviewImage", "classrtabmap_1_1DBDriver.html#a8323a53d20e4ade6b1c7b268c473a170", null ], + [ "loadPreviewImage", "classrtabmap_1_1DBDriver.html#aa1423596308a8baf123ecbc7fdfc1e82", null ], + [ "saveOptimizedPoses", "classrtabmap_1_1DBDriver.html#ab91ad40e4273485e5f0951fac32c22e4", null ], + [ "loadOptimizedPoses", "classrtabmap_1_1DBDriver.html#a6ef8c39b350634d21b57b1c07b029e55", null ], + [ "save2DMap", "classrtabmap_1_1DBDriver.html#a5bed0d1f92c1cc864dedf99b99a44037", null ], + [ "load2DMap", "classrtabmap_1_1DBDriver.html#aa3d68850f4bb114e897e37af6b1c858a", null ], + [ "saveOptimizedMesh", "classrtabmap_1_1DBDriver.html#a22d5643353b8d49bcc94c5a4abbc9a39", null ], + [ "saveFlannIndex", "classrtabmap_1_1DBDriver.html#a33c2abff50e61f35efbbdbe530963fea", null ], + [ "openConnection", "classrtabmap_1_1DBDriver.html#ac6c0a2260ba2c3cc030136c9609142f5", null ], + [ "closeConnection", "classrtabmap_1_1DBDriver.html#abb644a203d148d0b29db41aea04c949f", null ], + [ "isConnected", "classrtabmap_1_1DBDriver.html#a7b1222cf6e75d7365b5b90c37bca2a85", null ], + [ "getDatabaseVersion", "classrtabmap_1_1DBDriver.html#a9adb7be1463016917f24a3db5f1e8264", null ], + [ "executeNoResult", "classrtabmap_1_1DBDriver.html#a835fc23bd4f6532af71f3aadfb8037d8", null ], + [ "loadSignature", "classrtabmap_1_1DBDriver.html#a0a713d7a6dabdcfbb8d733dba2a20120", null ], + [ "loadLinks", "classrtabmap_1_1DBDriver.html#aab00d50127b8b5bb92f8605e35aaca4d", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3-members.html new file mode 100644 index 00000000..4ced5acb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3-members.html @@ -0,0 +1,310 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::DBDriverSqlite3 Member List
+
+
+ +

This is the complete list of members for rtabmap::DBDriverSqlite3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ppDbrtabmap::DBDriverSqlite3protected
_versionrtabmap::DBDriverSqlite3protected
addInfoAfterRun(int stMemSize, int lastSignAdded, int processMemUsed, int databaseMemUsed, int dictionarySize, const ParametersMap &parameters) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
addLink(const Link &link)rtabmap::DBDriver
addLinkQuery(const Link &link) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
addStatistics(const Statistics &statistics, bool saveWmState) constrtabmap::DBDriver
addStatisticsQuery(const Statistics &statistics, bool saveWmState) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
asyncSave(Signature *s)rtabmap::DBDriver
asyncSave(VisualWord *vw)rtabmap::DBDriver
closeConnection(bool save=true, const std::string &outputUrl="")rtabmap::DBDriver
connectDatabaseQuery(const std::string &url, bool overwritten=false, bool readOnly=false) (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::DBDriverstatic
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
DBDriver(const ParametersMap &parameters=ParametersMap())rtabmap::DBDriverprotected
DBDriverSqlite3(const ParametersMap &parameters=ParametersMap())rtabmap::DBDriverSqlite3
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
disconnectDatabaseQuery(bool save=true, const std::string &outputUrl="") (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
emptyTrashes(bool async=false)rtabmap::DBDriver
executeNoResult(const std::string &sql) constrtabmap::DBDriver
executeNoResultQuery(const std::string &sql) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
generateGraph(const std::string &fileName, const std::set< int > &ids=std::set< int >(), const std::map< int, Signature * > &otherSignatures=std::map< int, Signature * >())rtabmap::DBDriver
getAllLabels(std::map< int, std::string > &labels) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllLabelsQuery(std::map< int, std::string > &labels) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getAllLinks(std::multimap< int, Link > &links, bool ignoreNullLinks=true, bool withLandmarks=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllLinksQuery(std::multimap< int, Link > &links, bool ignoreNullLinks, bool withLandmarks) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getAllNodeIds(std::set< int > &ids, bool ignoreChildren=false, bool ignoreBadSignatures=false, bool ignoreIntermediateNodes=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllNodeIdsQuery(std::set< int > &ids, bool ignoreChildren, bool ignoreBadSignatures, bool ignoreIntermediateNodes) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getAllOdomPoses(std::map< int, Transform > &poses, bool ignoreChildren=false, bool ignoreIntermediateNodes=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllOdomPosesQuery(std::map< int, Transform > &poses, bool ignoreChildren, bool ignoreIntermediateNodes) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getAllStatistics() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllStatisticsQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getAllStatisticsWmStates() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getAllStatisticsWmStatesQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getCalibration(int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getCalibrationQuery(int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getCalibrationsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getCalibrationsMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getDatabaseVersion() constrtabmap::DBDriver
getDatabaseVersionQuery(std::string &version) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getDepthImagesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getDepthImagesMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getEmptyTrashesTime() const (defined in rtabmap::DBDriver)rtabmap::DBDriverinline
getFeaturesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getFeaturesMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getGridsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getGridsMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getImagesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getImagesMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getInvertedIndexNi(int signatureId, int &ni) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getInvertedIndexNiQuery(int signatureId, int &ni) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLaserScanInfo(int signatureId, LaserScan &info) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLaserScanInfoQuery(int signatureId, LaserScan &info) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLaserScansMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLaserScansMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLastDictionarySize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastDictionarySizeQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLastIdQuery(const std::string &tableName, int &id, const std::string &fieldName="id") const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLastMapId(int &mapId) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodeId(int &id) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodeIds(std::set< int > &ids) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodeIdsQuery(std::set< int > &ids) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLastNodesSize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastNodesSizeQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLastParameters() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLastParametersQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLastWordId(int &id) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLinksMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLinksMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getLocalFeatures(int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getLocalFeaturesQuery(int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getNodeData(int signatureId, SensorData &data, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodeIdByLabel(const std::string &label, int &id) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodeIdByLabelQuery(const std::string &label, int &id) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getNodeInfo(int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodeInfoQuery(int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getNodesMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodesMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getNodesObservingLandmark(int landmarkId, std::map< int, Link > &nodes) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getNodesObservingLandmarkQuery(int landmarkId, std::map< int, Link > &nodes) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getStatistics(int nodeId, double &stamp, std::vector< int > *wmState=0) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getStatisticsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getStatisticsMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getStatisticsQuery(int nodeId, double &stamp, std::vector< int > *wmState) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getTargetVersion() constrtabmap::DBDriverinline
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
getTotalDictionarySize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getTotalDictionarySizeQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getTotalNodesSize() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getTotalNodesSizeQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getUrl() constrtabmap::DBDriverinline
getUserDataMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getUserDataMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getWeight(int signatureId, int &weight) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getWeightQuery(int signatureId, int &weight) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
getWordsMemoryUsed() const (defined in rtabmap::DBDriver)rtabmap::DBDriver
getWordsMemoryUsedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isConnected() constrtabmap::DBDriver
isConnectedQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
isCreating() constUThread
isIdle() constUThread
isInMemory() constrtabmap::DBDriverSqlite3inlinevirtual
isKilled() constUThread
isRunning() constUThread
join(bool killFirst=false)UThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
load(VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
load2DMap(float &xMin, float &yMin, float &cellSize) constrtabmap::DBDriver
load2DMapQuery(float &xMin, float &yMin, float &cellSize) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadLastNodes(std::list< Signature * > &signatures, bool loadWordIdsOnly=false) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadLastNodesQuery(std::list< Signature * > &signatures, bool loadWordIdsOnly) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadLinks(int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) constrtabmap::DBDriver
loadLinksQuery(int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadNodeData(Signature &signature, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadNodeData(std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadNodeDataQuery(std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadOptimizedMesh(std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons=0, std::vector< std::vector< Eigen::Vector2f > > *texCoords=0, cv::Mat *textures=0) const (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadOptimizedMeshQuery(std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons, std::vector< std::vector< Eigen::Vector2f > > *texCoords, cv::Mat *textures) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadOptimizedPoses(Transform *lastlocalizationPose=0) constrtabmap::DBDriver
loadOptimizedPosesQuery(Transform *lastlocalizationPose=0) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadPreviewImage() constrtabmap::DBDriver
loadPreviewImageQuery() const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadQuery(VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadSignature(int id, bool *loadedFromTrash=0)rtabmap::DBDriver
loadSignatures(const std::list< int > &ids, std::list< Signature * > &signatures, std::set< int > *loadedFromTrash=0, bool loadWordIdsOnly=false) (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadSignaturesQuery(const std::list< int > &ids, std::list< Signature * > &signatures, bool loadWordIdsOnly) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
loadWords(const std::set< int > &wordIds, std::list< VisualWord * > &vws) (defined in rtabmap::DBDriver)rtabmap::DBDriver
loadWordsQuery(const std::set< int > &wordIds, std::list< VisualWord * > &vws) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
openConnection(const std::string &url, bool overwritten=false, bool readOnly=false)rtabmap::DBDriver
parseParameters(const ParametersMap &parameters)rtabmap::DBDriverSqlite3virtual
Priority enum nameUThread
removeLink(int from, int to)rtabmap::DBDriver
save2DMap(const cv::Mat &map, float xMin, float yMin, float cellSize) constrtabmap::DBDriver
save2DMapQuery(const cv::Mat &map, float xMin, float yMin, float cellSize) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
saveFlannIndex(const std::vector< unsigned char > &indexData) constrtabmap::DBDriver
saveFlannIndexQuery(const std::vector< unsigned char > &indexData) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
saveOptimizedMesh(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) constrtabmap::DBDriver
saveOptimizedMeshQuery(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons, const std::vector< std::vector< Eigen::Vector2f > > &texCoords, const cv::Mat &textures) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
saveOptimizedPoses(const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) constrtabmap::DBDriver
saveOptimizedPosesQuery(const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
savePreviewImage(const cv::Mat &image) constrtabmap::DBDriver
savePreviewImageQuery(const cv::Mat &image) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
saveQuery(const std::list< Signature * > &signatures) (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
saveQuery(const std::list< VisualWord * > &words) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setCacheSize(unsigned int cacheSize)rtabmap::DBDriverSqlite3
setDbInMemory(bool dbInMemory)rtabmap::DBDriverSqlite3
setJournalMode(int journalMode)rtabmap::DBDriverSqlite3
setPriority(Priority priority)UThread
setSynchronous(int synchronous)rtabmap::DBDriverSqlite3
setTempStore(int tempStore)rtabmap::DBDriverSqlite3
setTimestampUpdateEnabled(bool enabled) (defined in rtabmap::DBDriver)rtabmap::DBDriverinline
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
updateCalibration(int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels)rtabmap::DBDriver
updateCalibrationQuery(int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
updateDepthImage(int nodeId, const cv::Mat &image, const std::string &format)rtabmap::DBDriver
updateDepthImageQuery(int nodeId, const cv::Mat &image, const std::string &format) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
updateLaserScan(int nodeId, const LaserScan &scan)rtabmap::DBDriver
updateLaserScanQuery(int nodeId, const LaserScan &scan) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
updateLink(const Link &link)rtabmap::DBDriver
updateLinkQuery(const Link &link) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
updateOccupancyGrid(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint)rtabmap::DBDriver
updateOccupancyGridQuery(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
updateQuery(const std::list< Signature * > &signatures, bool updateTimestamp) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
updateQuery(const std::list< VisualWord * > &words, bool updateTimestamp) const (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3protectedvirtual
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~DBDriver() (defined in rtabmap::DBDriver)rtabmap::DBDrivervirtual
~DBDriverSqlite3() (defined in rtabmap::DBDriverSqlite3)rtabmap::DBDriverSqlite3virtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.html b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.html new file mode 100644 index 00000000..cd6595b2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.html @@ -0,0 +1,3302 @@ + + + + + + + + +RTAB-Map: rtabmap::DBDriverSqlite3 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::DBDriverSqlite3 Class Reference
+
+
+ +

SQLite3 implementation of DBDriver for RTAB-Map map databases. + More...

+ +

#include <DBDriverSqlite3.h>

+
+Inheritance diagram for rtabmap::DBDriverSqlite3:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::DBDriverSqlite3:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DBDriverSqlite3 (const ParametersMap &parameters=ParametersMap())
 Construct driver with optional SQLite-specific parameters.
 
virtual void parseParameters (const ParametersMap &parameters)
 Apply SQLite parameters from the map; forwards to DBDriver::parseParameters().
 
virtual bool isInMemory () const
 True when the database runs in RAM instead of on disk.
 
+void setDbInMemory (bool dbInMemory)
 Enable or disable in-memory mode. If connected, the connection is closed and reopened with the new mode.
 
void setJournalMode (int journalMode)
 Set SQLite rollback journal mode (PRAGMA journal_mode).
 
void setCacheSize (unsigned int cacheSize)
 Set the number of database pages kept in SQLite's page cache (PRAGMA cache_size).
 
void setSynchronous (int synchronous)
 Set how aggressively SQLite syncs the database file to disk (PRAGMA synchronous).
 
void setTempStore (int tempStore)
 Set where SQLite stores temporary tables and indices (PRAGMA temp_store).
 
- Public Member Functions inherited from rtabmap::DBDriver
const std::string & getUrl () const
 
const std::string & getTargetVersion () const
 
void asyncSave (Signature *s)
 Queue a signature for deferred save; ownership is transferred.
 
+void asyncSave (VisualWord *vw)
 Queue a visual word for deferred save; ownership is transferred.
 
void emptyTrashes (bool async=false)
 Flush queued signatures and visual words to the database.
 
double getEmptyTrashesTime () const
 
void setTimestampUpdateEnabled (bool enabled)
 
void generateGraph (const std::string &fileName, const std::set< int > &ids=std::set< int >(), const std::map< int, Signature * > &otherSignatures=std::map< int, Signature * >())
 Export the pose graph to a Graphviz DOT file for visualization.
 
void executeNoResult (const std::string &sql) const
 Run a SQL statement that does not return result rows.
 
+void addLink (const Link &link)
 Insert or replace a link in the database.
 
+void removeLink (int from, int to)
 Remove a link between two nodes.
 
+void updateLink (const Link &link)
 Update an existing link in the database.
 
void updateOccupancyGrid (int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint)
 Update occupancy grid cells for a node.
 
+void updateCalibration (int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels)
 Update camera calibration stored for a node.
 
void updateDepthImage (int nodeId, const cv::Mat &image, const std::string &format)
 Update the depth image stored for a node.
 
void updateLaserScan (int nodeId, const LaserScan &scan)
 Update the laser scan stored for a node.
 
+void addInfoAfterRun (int stMemSize, int lastSignAdded, int processMemUsed, int databaseMemUsed, int dictionarySize, const ParametersMap &parameters) const
 
void addStatistics (const Statistics &statistics, bool saveWmState) const
 Append a Statistics record for a processed node.
 
void savePreviewImage (const cv::Mat &image) const
 Save the map preview thumbnail in the Admin table.
 
+cv::Mat loadPreviewImage () const
 Load and uncompress the map preview thumbnail from the Admin table.
 
+void saveOptimizedPoses (const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const
 Persist graph-optimized poses and last localization pose.
 
+std::map< int, Transform > loadOptimizedPoses (Transform *lastlocalizationPose=0) const
 Load optimized poses; optional last localization pose output.
 
+void save2DMap (const cv::Mat &map, float xMin, float yMin, float cellSize) const
 Save the assembled 2D occupancy grid and its origin metadata.
 
+cv::Mat load2DMap (float &xMin, float &yMin, float &cellSize) const
 Load the 2D map and fill origin/cell size outputs.
 
void saveOptimizedMesh (const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) const
 Persist the global optimized 3D mesh to the database.
 
+cv::Mat loadOptimizedMesh (std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons=0, std::vector< std::vector< Eigen::Vector2f > > *texCoords=0, cv::Mat *textures=0) const
 
void saveFlannIndex (const std::vector< unsigned char > &indexData) const
 Persist the visual word dictionary FLANN index (serialized blob).
 
+bool openConnection (const std::string &url, bool overwritten=false, bool readOnly=false)
 Open or create the database at url (empty url uses an in-memory database).
 
+void closeConnection (bool save=true, const std::string &outputUrl="")
 Close the connection; optionally flush trashes and save in-memory DB to outputUrl.
 
bool isConnected () const
 
+unsigned long getMemoryUsed () const
 
std::string getDatabaseVersion () const
 
+long getNodesMemoryUsed () const
 
+long getLinksMemoryUsed () const
 
+long getImagesMemoryUsed () const
 
+long getDepthImagesMemoryUsed () const
 
+long getCalibrationsMemoryUsed () const
 
+long getGridsMemoryUsed () const
 
+long getLaserScansMemoryUsed () const
 
+long getUserDataMemoryUsed () const
 
+long getWordsMemoryUsed () const
 
+long getFeaturesMemoryUsed () const
 
+long getStatisticsMemoryUsed () const
 
+int getLastNodesSize () const
 
+int getLastDictionarySize () const
 
+int getTotalNodesSize () const
 
+int getTotalDictionarySize () const
 
+ParametersMap getLastParameters () const
 
+std::map< std::string, float > getStatistics (int nodeId, double &stamp, std::vector< int > *wmState=0) const
 
+std::map< int, std::pair< std::map< std::string, float >, double > > getAllStatistics () const
 
+std::map< int, std::vector< int > > getAllStatisticsWmStates () const
 
+void load (VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const
 
+void loadLastNodes (std::list< Signature * > &signatures, bool loadWordIdsOnly=false) const
 
+Signature * loadSignature (int id, bool *loadedFromTrash=0)
 Load one signature by id; caller must delete the returned pointer.
 
+void loadSignatures (const std::list< int > &ids, std::list< Signature * > &signatures, std::set< int > *loadedFromTrash=0, bool loadWordIdsOnly=false)
 
+void loadWords (const std::set< int > &wordIds, std::list< VisualWord * > &vws)
 
+void loadNodeData (Signature &signature, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const
 
+void loadNodeData (std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const
 
+void getNodeData (int signatureId, SensorData &data, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const
 
+bool getCalibration (int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const
 
+bool getLaserScanInfo (int signatureId, LaserScan &info) const
 
+bool getNodeInfo (int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const
 
+void getLocalFeatures (int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const
 
+void loadLinks (int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) const
 Load outgoing links from signatureId, optionally filtered by type.
 
+void getWeight (int signatureId, int &weight) const
 
+void getLastNodeIds (std::set< int > &ids) const
 
+void getAllNodeIds (std::set< int > &ids, bool ignoreChildren=false, bool ignoreBadSignatures=false, bool ignoreIntermediateNodes=false) const
 
+void getAllOdomPoses (std::map< int, Transform > &poses, bool ignoreChildren=false, bool ignoreIntermediateNodes=false) const
 
+void getAllLinks (std::multimap< int, Link > &links, bool ignoreNullLinks=true, bool withLandmarks=false) const
 
+void getLastNodeId (int &id) const
 
+void getLastMapId (int &mapId) const
 
+void getLastWordId (int &id) const
 
+void getInvertedIndexNi (int signatureId, int &ni) const
 
+void getNodesObservingLandmark (int landmarkId, std::map< int, Link > &nodes) const
 
+void getNodeIdByLabel (const std::string &label, int &id) const
 
+void getAllLabels (std::map< int, std::string > &labels) const
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual bool connectDatabaseQuery (const std::string &url, bool overwritten=false, bool readOnly=false)
 
virtual void disconnectDatabaseQuery (bool save=true, const std::string &outputUrl="")
 
virtual bool isConnectedQuery () const
 
virtual unsigned long getMemoryUsedQuery () const
 
virtual bool getDatabaseVersionQuery (std::string &version) const
 
virtual long getNodesMemoryUsedQuery () const
 
virtual long getLinksMemoryUsedQuery () const
 
virtual long getImagesMemoryUsedQuery () const
 
virtual long getDepthImagesMemoryUsedQuery () const
 
virtual long getCalibrationsMemoryUsedQuery () const
 
virtual long getGridsMemoryUsedQuery () const
 
virtual long getLaserScansMemoryUsedQuery () const
 
virtual long getUserDataMemoryUsedQuery () const
 
virtual long getWordsMemoryUsedQuery () const
 
virtual long getFeaturesMemoryUsedQuery () const
 
virtual long getStatisticsMemoryUsedQuery () const
 
virtual int getLastNodesSizeQuery () const
 
virtual int getLastDictionarySizeQuery () const
 
virtual int getTotalNodesSizeQuery () const
 
virtual int getTotalDictionarySizeQuery () const
 
virtual ParametersMap getLastParametersQuery () const
 
virtual std::map< std::string, float > getStatisticsQuery (int nodeId, double &stamp, std::vector< int > *wmState) const
 
virtual std::map< int, std::pair< std::map< std::string, float >, double > > getAllStatisticsQuery () const
 
virtual std::map< int, std::vector< int > > getAllStatisticsWmStatesQuery () const
 
virtual void executeNoResultQuery (const std::string &sql) const
 
virtual void getWeightQuery (int signatureId, int &weight) const
 
virtual void saveQuery (const std::list< Signature * > &signatures)
 
virtual void saveQuery (const std::list< VisualWord * > &words) const
 
virtual void updateQuery (const std::list< Signature * > &signatures, bool updateTimestamp) const
 
virtual void updateQuery (const std::list< VisualWord * > &words, bool updateTimestamp) const
 
virtual void addLinkQuery (const Link &link) const
 
virtual void updateLinkQuery (const Link &link) const
 
virtual void updateOccupancyGridQuery (int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewpoint) const
 
virtual void updateCalibrationQuery (int nodeId, const std::vector< CameraModel > &models, const std::vector< StereoCameraModel > &stereoModels) const
 
virtual void updateDepthImageQuery (int nodeId, const cv::Mat &image, const std::string &format) const
 
void updateLaserScanQuery (int nodeId, const LaserScan &scan) const
 
virtual void addStatisticsQuery (const Statistics &statistics, bool saveWmState) const
 
virtual void savePreviewImageQuery (const cv::Mat &image) const
 
virtual cv::Mat loadPreviewImageQuery () const
 
virtual void saveOptimizedPosesQuery (const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const
 
virtual std::map< int, Transform > loadOptimizedPosesQuery (Transform *lastlocalizationPose=0) const
 
virtual void save2DMapQuery (const cv::Mat &map, float xMin, float yMin, float cellSize) const
 
virtual cv::Mat load2DMapQuery (float &xMin, float &yMin, float &cellSize) const
 
virtual void saveOptimizedMeshQuery (const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons, const std::vector< std::vector< Eigen::Vector2f > > &texCoords, const cv::Mat &textures) const
 
virtual cv::Mat loadOptimizedMeshQuery (std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons, std::vector< std::vector< Eigen::Vector2f > > *texCoords, cv::Mat *textures) const
 
virtual void saveFlannIndexQuery (const std::vector< unsigned char > &indexData) const
 
virtual void loadQuery (VWDictionary &dictionary, bool lastStateOnly=true, bool idsOnly=false) const
 
virtual void loadLastNodesQuery (std::list< Signature * > &signatures, bool loadWordIdsOnly) const
 
virtual void loadSignaturesQuery (const std::list< int > &ids, std::list< Signature * > &signatures, bool loadWordIdsOnly) const
 
virtual void loadWordsQuery (const std::set< int > &wordIds, std::list< VisualWord * > &vws) const
 
virtual void loadLinksQuery (int signatureId, std::multimap< int, Link > &links, Link::Type type=Link::kUndef) const
 
virtual void loadNodeDataQuery (std::list< Signature * > &signatures, bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true) const
 
virtual bool getCalibrationQuery (int signatureId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const
 
virtual bool getLaserScanInfoQuery (int signatureId, LaserScan &info) const
 
virtual bool getNodeInfoQuery (int signatureId, Transform &pose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruthPose, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors) const
 
virtual void getLocalFeaturesQuery (int signatureId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &points, cv::Mat &descriptors) const
 
virtual void getLastNodeIdsQuery (std::set< int > &ids) const
 
virtual void getAllNodeIdsQuery (std::set< int > &ids, bool ignoreChildren, bool ignoreBadSignatures, bool ignoreIntermediateNodes) const
 
virtual void getAllOdomPosesQuery (std::map< int, Transform > &poses, bool ignoreChildren, bool ignoreIntermediateNodes) const
 
virtual void getAllLinksQuery (std::multimap< int, Link > &links, bool ignoreNullLinks, bool withLandmarks) const
 
virtual void getLastIdQuery (const std::string &tableName, int &id, const std::string &fieldName="id") const
 
virtual void getInvertedIndexNiQuery (int signatureId, int &ni) const
 
virtual void getNodesObservingLandmarkQuery (int landmarkId, std::map< int, Link > &nodes) const
 
virtual void getNodeIdByLabelQuery (const std::string &label, int &id) const
 
virtual void getAllLabelsQuery (std::map< int, std::string > &labels) const
 
- Protected Member Functions inherited from rtabmap::DBDriver
+ DBDriver (const ParametersMap &parameters=ParametersMap())
 Protected constructor for subclasses.
 
+ + + + + + + +

+Protected Attributes

sqlite3 * _ppDb
 Open SQLite connection (null when disconnected)
 
std::string _version
 Schema version read from the database.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Static Public Member Functions inherited from rtabmap::DBDriver
static DBDriver * create (const ParametersMap &parameters=ParametersMap())
 Factory: returns a SQLite database driver (DBDriverSqlite3).
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

SQLite3 implementation of DBDriver for RTAB-Map map databases.

+

This is the default driver returned by DBDriver::create(). It stores signatures, links, visual words, statistics and sensor payloads in a single .db file using the SQLite C API.

+

Storage modes

    +
  • File-backed (default): the database is read/written directly on disk at getUrl().
  • +
  • In-memory: when isInMemory() is true, SQLite uses :memory: and the file at getUrl() (if any) is loaded at open and optionally saved on closeConnection().
  • +
+

SQLite PRAGMA tuning (applied on connect and when setters are called while connected):

+

Configure via Parameters::kDbSqlite3InMemory(), Parameters::kDbSqlite3CacheSize(), Parameters::kDbSqlite3JournalMode(), Parameters::kDbSqlite3Synchronous() and Parameters::kDbSqlite3TempStore(), or call the setters directly.

+
See also
DBDriver
+
+DBDriver::create()
+ +

Definition at line 70 of file DBDriverSqlite3.h.

+

Constructor & Destructor Documentation

+ +

◆ DBDriverSqlite3()

+ +
+
+ + + + + + + + +
rtabmap::DBDriverSqlite3::DBDriverSqlite3 (const ParametersMap & parameters = ParametersMap())
+
+ +

Construct driver with optional SQLite-specific parameters.

+
Parameters
+ + +
parametersMap of parameters (see class description).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Apply SQLite parameters from the map; forwards to DBDriver::parseParameters().

+ +

Reimplemented from rtabmap::DBDriver.

+ +
+
+ +

◆ isInMemory()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::DBDriverSqlite3::isInMemory () const
+
+inlinevirtual
+
+ +

True when the database runs in RAM instead of on disk.

+
Returns
True if getUrl() is empty or setDbInMemory() was used.
+ +

Reimplemented from rtabmap::DBDriver.

+ +

Definition at line 85 of file DBDriverSqlite3.h.

+ +
+
+ +

◆ setJournalMode()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriverSqlite3::setJournalMode (int journalMode)
+
+ +

Set SQLite rollback journal mode (PRAGMA journal_mode).

+

Controls how SQLite stores the transaction journal used for atomic commit and rollback. See https://www.sqlite.org/pragma.html#pragma_journal_mode

+
Parameters
+ + +
journalModeAccepted values (invalid values are ignored). RTAB-Map default: Parameters::defaultDbSqlite3JournalMode() = 3 (MEMORY) (Parameters::kDbSqlite3JournalMode()).
    +
  • 0 — DELETE (SQLite default): the journal file is deleted at the end of each transaction. Good general-purpose balance of safety and speed.
  • +
  • 1 — TRUNCATE: the journal is truncated to zero length instead of being unlinked; can be faster on some filesystems than DELETE.
  • +
  • 2 — PERSIST: the journal file is not deleted; only its header is zeroed after commit, reducing create/delete overhead at the cost of always keeping a journal file on disk.
  • +
  • 3 — MEMORY (RTAB-Map default): the journal is held in RAM only (not written to disk). Faster, but the database cannot be rolled back after a crash and may corrupt if the process dies mid-write.
  • +
  • 4 — OFF: no rollback journal. Fastest, but a crash or power loss during a write can leave the database inconsistent; transactions cannot be rolled back atomically.
  • +
+
+
+
+ +
+
+ +

◆ setCacheSize()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriverSqlite3::setCacheSize (unsigned int cacheSize)
+
+ +

Set the number of database pages kept in SQLite's page cache (PRAGMA cache_size).

+

A larger cache reduces disk I/O when the working set fits in memory. The effective memory is approximately cacheSize * page_size bytes (page size is usually 4096 bytes unless changed with PRAGMA page_size). Only positive values are used (page count); see https://www.sqlite.org/pragma.html#pragma_cache_size

+
Parameters
+ + +
cacheSizeNumber of pages to cache. RTAB-Map default: Parameters::defaultDbSqlite3CacheSize() = 10000 (Parameters::kDbSqlite3CacheSize()).
+
+
+ +
+
+ +

◆ setSynchronous()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriverSqlite3::setSynchronous (int synchronous)
+
+ +

Set how aggressively SQLite syncs the database file to disk (PRAGMA synchronous).

+

Trade-off between durability after a crash or power loss and write performance. See https://www.sqlite.org/pragma.html#pragma_synchronous

+
Parameters
+ + +
synchronousAccepted values (invalid values are ignored). RTAB-Map default: Parameters::defaultDbSqlite3Synchronous() = 0 (OFF) (Parameters::kDbSqlite3Synchronous()).
    +
  • 0 — OFF (RTAB-Map default): SQLite does not wait for data to reach persistent storage. Fastest; a system crash or power loss during a transaction may corrupt the database.
  • +
  • 1 — NORMAL: syncs at the most critical moments (SQLite default in many builds). A crash may lose the last transaction but the database file structure usually stays valid.
  • +
  • 2 — FULL: syncs after every transaction commit. Slowest; strongest guarantee that a committed transaction survives a power loss (when the OS honors fsync).
  • +
+
+
+
+ +
+
+ +

◆ setTempStore()

+ +
+
+ + + + + + + + +
void rtabmap::DBDriverSqlite3::setTempStore (int tempStore)
+
+ +

Set where SQLite stores temporary tables and indices (PRAGMA temp_store).

+

Affects internal temp storage used for some queries and operations, not RTAB-Map map data. See https://www.sqlite.org/pragma.html#pragma_temp_store

+
Parameters
+ + +
tempStoreAccepted values (invalid values are ignored). RTAB-Map default: Parameters::defaultDbSqlite3TempStore() = 2 (MEMORY) (Parameters::kDbSqlite3TempStore()).
    +
  • 0 — DEFAULT: use SQLite's compile-time default (often FILE, i.e. on-disk temp files).
  • +
  • 1 — FILE: store temporary tables and indices in temporary files in the directory given by PRAGMA temp_store_directory or the system temp folder.
  • +
  • 2 — MEMORY (RTAB-Map default): store temporary tables and indices in RAM. Can speed up heavy queries but increases memory use; large temp structures may still spill to disk depending on build.
  • +
+
+
+
+ +
+
+ +

◆ connectDatabaseQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::DBDriverSqlite3::connectDatabaseQuery (const std::string & url,
bool overwritten = false,
bool readOnly = false 
)
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ disconnectDatabaseQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::disconnectDatabaseQuery (bool save = true,
const std::string & outputUrl = "" 
)
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ isConnectedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::DBDriverSqlite3::isConnectedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual unsigned long rtabmap::DBDriverSqlite3::getMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getDatabaseVersionQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool rtabmap::DBDriverSqlite3::getDatabaseVersionQuery (std::string & version) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getNodesMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getNodesMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLinksMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getLinksMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getImagesMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getImagesMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getDepthImagesMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getDepthImagesMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getCalibrationsMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getCalibrationsMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getGridsMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getGridsMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLaserScansMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getLaserScansMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getUserDataMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getUserDataMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getWordsMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getWordsMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getFeaturesMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getFeaturesMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getStatisticsMemoryUsedQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long rtabmap::DBDriverSqlite3::getStatisticsMemoryUsedQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLastNodesSizeQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int rtabmap::DBDriverSqlite3::getLastNodesSizeQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLastDictionarySizeQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int rtabmap::DBDriverSqlite3::getLastDictionarySizeQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getTotalNodesSizeQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int rtabmap::DBDriverSqlite3::getTotalNodesSizeQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getTotalDictionarySizeQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int rtabmap::DBDriverSqlite3::getTotalDictionarySizeQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLastParametersQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ParametersMap rtabmap::DBDriverSqlite3::getLastParametersQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getStatisticsQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< std::string, float > rtabmap::DBDriverSqlite3::getStatisticsQuery (int nodeId,
double & stamp,
std::vector< int > * wmState 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getAllStatisticsQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::map< int, std::pair< std::map< std::string, float >, double > > rtabmap::DBDriverSqlite3::getAllStatisticsQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getAllStatisticsWmStatesQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::map< int, std::vector< int > > rtabmap::DBDriverSqlite3::getAllStatisticsWmStatesQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ executeNoResultQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::executeNoResultQuery (const std::string & sql) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getWeightQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getWeightQuery (int signatureId,
int & weight 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ saveQuery() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::saveQuery (const std::list< Signature * > & signatures)
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ saveQuery() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::saveQuery (const std::list< VisualWord * > & words) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ updateQuery() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::updateQuery (const std::list< Signature * > & signatures,
bool updateTimestamp 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ updateQuery() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::updateQuery (const std::list< VisualWord * > & words,
bool updateTimestamp 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ addLinkQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::addLinkQuery (const Link & link) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ updateLinkQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::updateLinkQuery (const Link & link) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ updateOccupancyGridQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::updateOccupancyGridQuery (int nodeId,
const cv::Mat & ground,
const cv::Mat & obstacles,
const cv::Mat & empty,
float cellSize,
const cv::Point3f & viewpoint 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ updateCalibrationQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::updateCalibrationQuery (int nodeId,
const std::vector< CameraModel > & models,
const std::vector< StereoCameraModel > & stereoModels 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ updateDepthImageQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::updateDepthImageQuery (int nodeId,
const cv::Mat & image,
const std::string & format 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ updateLaserScanQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::DBDriverSqlite3::updateLaserScanQuery (int nodeId,
const LaserScan & scan 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ addStatisticsQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::addStatisticsQuery (const Statistics & statistics,
bool saveWmState 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ savePreviewImageQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::savePreviewImageQuery (const cv::Mat & image) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadPreviewImageQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual cv::Mat rtabmap::DBDriverSqlite3::loadPreviewImageQuery () const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ saveOptimizedPosesQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::saveOptimizedPosesQuery (const std::map< int, Transform > & optimizedPoses,
const Transform & lastlocalizationPose 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadOptimizedPosesQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::map< int, Transform > rtabmap::DBDriverSqlite3::loadOptimizedPosesQuery (Transform * lastlocalizationPose = 0) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ save2DMapQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::save2DMapQuery (const cv::Mat & map,
float xMin,
float yMin,
float cellSize 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ load2DMapQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual cv::Mat rtabmap::DBDriverSqlite3::load2DMapQuery (float & xMin,
float & yMin,
float & cellSize 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ saveOptimizedMeshQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::saveOptimizedMeshQuery (const cv::Mat & cloud,
const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > & polygons,
const std::vector< std::vector< Eigen::Vector2f > > & texCoords,
const cv::Mat & textures 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadOptimizedMeshQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual cv::Mat rtabmap::DBDriverSqlite3::loadOptimizedMeshQuery (std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > * polygons,
std::vector< std::vector< Eigen::Vector2f > > * texCoords,
cv::Mat * textures 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ saveFlannIndexQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::saveFlannIndexQuery (const std::vector< unsigned char > & indexData) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::loadQuery (VWDictionary & dictionary,
bool lastStateOnly = true,
bool idsOnly = false 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadLastNodesQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::loadLastNodesQuery (std::list< Signature * > & signatures,
bool loadWordIdsOnly 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadSignaturesQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::loadSignaturesQuery (const std::list< int > & ids,
std::list< Signature * > & signatures,
bool loadWordIdsOnly 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadWordsQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::loadWordsQuery (const std::set< int > & wordIds,
std::list< VisualWord * > & vws 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadLinksQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::loadLinksQuery (int signatureId,
std::multimap< int, Link > & links,
Link::Type type = Link::kUndef 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ loadNodeDataQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::loadNodeDataQuery (std::list< Signature * > & signatures,
bool images = true,
bool scan = true,
bool userData = true,
bool occupancyGrid = true 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getCalibrationQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::DBDriverSqlite3::getCalibrationQuery (int signatureId,
std::vector< CameraModel > & models,
std::vector< StereoCameraModel > & stereoModels 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLaserScanInfoQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::DBDriverSqlite3::getLaserScanInfoQuery (int signatureId,
LaserScan & info 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getNodeInfoQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::DBDriverSqlite3::getNodeInfoQuery (int signatureId,
Transform & pose,
int & mapId,
int & weight,
std::string & label,
double & stamp,
Transform & groundTruthPose,
std::vector< float > & velocity,
GPS & gps,
EnvSensors & sensors 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLocalFeaturesQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getLocalFeaturesQuery (int signatureId,
std::multimap< int, int > & words,
std::vector< cv::KeyPoint > & keypoints,
std::vector< cv::Point3f > & points,
cv::Mat & descriptors 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLastNodeIdsQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getLastNodeIdsQuery (std::set< int > & ids) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getAllNodeIdsQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getAllNodeIdsQuery (std::set< int > & ids,
bool ignoreChildren,
bool ignoreBadSignatures,
bool ignoreIntermediateNodes 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getAllOdomPosesQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getAllOdomPosesQuery (std::map< int, Transform > & poses,
bool ignoreChildren,
bool ignoreIntermediateNodes 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getAllLinksQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getAllLinksQuery (std::multimap< int, Link > & links,
bool ignoreNullLinks,
bool withLandmarks 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getLastIdQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getLastIdQuery (const std::string & tableName,
int & id,
const std::string & fieldName = "id" 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getInvertedIndexNiQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getInvertedIndexNiQuery (int signatureId,
int & ni 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getNodesObservingLandmarkQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getNodesObservingLandmarkQuery (int landmarkId,
std::map< int, Link > & nodes 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getNodeIdByLabelQuery()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getNodeIdByLabelQuery (const std::string & label,
int & id 
) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+ +

◆ getAllLabelsQuery()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::DBDriverSqlite3::getAllLabelsQuery (std::map< int, std::string > & labels) const
+
+protectedvirtual
+
+ +

Implements rtabmap::DBDriver.

+ +
+
+

Member Data Documentation

+ +

◆ _ppDb

+ +
+
+ + + + + +
+ + + + +
sqlite3* rtabmap::DBDriverSqlite3::_ppDb
+
+protected
+
+ +

Open SQLite connection (null when disconnected)

+ +

Definition at line 307 of file DBDriverSqlite3.h.

+ +
+
+ +

◆ _version

+ +
+
+ + + + + +
+ + + + +
std::string rtabmap::DBDriverSqlite3::_version
+
+protected
+
+ +

Schema version read from the database.

+ +

Definition at line 308 of file DBDriverSqlite3.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.js b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.js new file mode 100644 index 00000000..1d3c9a32 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3.js @@ -0,0 +1,13 @@ +var classrtabmap_1_1DBDriverSqlite3 = +[ + [ "DBDriverSqlite3", "classrtabmap_1_1DBDriverSqlite3.html#a471f26a35b093bbd5a59766735a94fd1", null ], + [ "parseParameters", "classrtabmap_1_1DBDriverSqlite3.html#ab1933c0cad6c69c3ae788854731cdeec", null ], + [ "isInMemory", "classrtabmap_1_1DBDriverSqlite3.html#af9cf8fda0fcc032efb44981d908b4e55", null ], + [ "setDbInMemory", "classrtabmap_1_1DBDriverSqlite3.html#a0722fcddc772af1cc03a7fe8b410d137", null ], + [ "setJournalMode", "classrtabmap_1_1DBDriverSqlite3.html#ae3c445bedd62088bb20e76eda6cfe64d", null ], + [ "setCacheSize", "classrtabmap_1_1DBDriverSqlite3.html#afc148e17cf8cc6ed4565c5519b06fc5c", null ], + [ "setSynchronous", "classrtabmap_1_1DBDriverSqlite3.html#a187e2bbb52ae7f32a0fc79540f0f104b", null ], + [ "setTempStore", "classrtabmap_1_1DBDriverSqlite3.html#a8f4adea749a2d30340715002056f9062", null ], + [ "_ppDb", "classrtabmap_1_1DBDriverSqlite3.html#a073748d5c4dac2e01966147c022ea943", null ], + [ "_version", "classrtabmap_1_1DBDriverSqlite3.html#a0aa18124e40d2ac53e0e1b450d7399b8", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.map new file mode 100644 index 00000000..3f6f38f0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.md5 new file mode 100644 index 00000000..5e9a6bda --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.md5 @@ -0,0 +1 @@ +bdd0bdfe5df4b340d3db97667ffa2ad9 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..79579002c06052c4855390146f312802f5cf6470 GIT binary patch literal 9517 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 Nzj{lpM8zWHzX6*F{8In` literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.map new file mode 100644 index 00000000..3f6f38f0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.md5 new file mode 100644 index 00000000..5e9a6bda --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.md5 @@ -0,0 +1 @@ +bdd0bdfe5df4b340d3db97667ffa2ad9 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriverSqlite3__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..79579002c06052c4855390146f312802f5cf6470 GIT binary patch literal 9517 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 Nzj{lpM8zWHzX6*F{8In` literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.map new file mode 100644 index 00000000..f8a4d40c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.md5 new file mode 100644 index 00000000..2f28aaa5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.md5 @@ -0,0 +1 @@ +522aae097c7f426cfd8582030669d6b1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ba3ad40c6b3235757ef2993fe00f39b1257fa339 GIT binary patch literal 6375 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 VxG+5t{%Z{AzWO7zvb$Dc{{eCvDt!O| literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.map new file mode 100644 index 00000000..fb9f46db --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.md5 new file mode 100644 index 00000000..343bddcf --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.md5 @@ -0,0 +1 @@ +4d977177fc99ad3b85224bb032e5a251 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1DBDriver__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5b08b556131174c704d324e2a53fdde93b55acda GIT binary patch literal 9596 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader-members.html new file mode 100644 index 00000000..81681711 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader-members.html @@ -0,0 +1,144 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::DBReader Member List
+
+
+ +

This is the complete list of members for rtabmap::DBReader, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Camera(float imageRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Cameraprotected
captureImage(SensorCaptureInfo *info=0) (defined in rtabmap::DBReader)rtabmap::DBReaderprotectedvirtual
DBReader(const std::string &databasePath, float frameRate=0.0f, bool odometryIgnored=false, bool ignoreGoalDelay=false, bool goalsIgnored=false, int startId=0, const std::vector< unsigned int > &cameraIndices=std::vector< unsigned int >(), int stopId=0, bool intermediateNodesIgnored=false, bool landmarksIgnored=false, bool featuresIgnored=false, int startMapId=0, int stopMapId=-1, bool priorsIgnored=false, bool imuIgnored=false, bool intermediateNodesAreNormalNodes=false, const std::vector< Transform > &cameraLocalTransformOverrides=std::vector< Transform >()) (defined in rtabmap::DBReader)rtabmap::DBReader
DBReader(const std::list< std::string > &databasePaths, float frameRate=0.0f, bool odometryIgnored=false, bool ignoreGoalDelay=false, bool goalsIgnored=false, int startId=0, const std::vector< unsigned int > &cameraIndices=std::vector< unsigned int >(), int stopId=0, bool intermediateNodesIgnored=false, bool landmarksIgnored=false, bool featuresIgnored=false, int startMapId=0, int stopMapId=-1, bool priorsIgnored=false, bool imuIgnored=false, bool intermediateNodesAreNormalNodes=false, const std::vector< Transform > &cameraLocalTransformOverrides=std::vector< Transform >()) (defined in rtabmap::DBReader)rtabmap::DBReader
driver() const (defined in rtabmap::DBReader)rtabmap::DBReaderinline
getFrameRate() constrtabmap::SensorCaptureinline
getImageRate() const (defined in rtabmap::Camera)rtabmap::Camerainline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::DBReadervirtual
getSerial() constrtabmap::DBReadervirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")rtabmap::DBReadervirtual
initFromFile(const std::string &calibrationPath) (defined in rtabmap::Camera)rtabmap::Camera
isCalibrated() const (defined in rtabmap::DBReader)rtabmap::DBReadervirtual
isInterIMUPublishing() const (defined in rtabmap::Camera)rtabmap::Camerainline
odomProvided() constrtabmap::DBReaderinlinevirtual
postInterIMU(const IMU &imu, double stamp) (defined in rtabmap::Camera)rtabmap::Cameraprotected
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setImageRate(float imageRate) (defined in rtabmap::Camera)rtabmap::Camerainline
setInterIMUPublishing(bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false) (defined in rtabmap::Camera)rtabmap::Camera
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeImage(SensorCaptureInfo *info=0) (defined in rtabmap::Camera)rtabmap::Camerainline
~Camera() (defined in rtabmap::Camera)rtabmap::Cameravirtual
~DBReader() (defined in rtabmap::DBReader)rtabmap::DBReadervirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader.html b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader.html new file mode 100644 index 00000000..35239f80 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader.html @@ -0,0 +1,498 @@ + + + + + + + + +RTAB-Map: rtabmap::DBReader Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::DBReader Class Reference
+
+
+
+Inheritance diagram for rtabmap::DBReader:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::DBReader:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ DBReader (const std::string &databasePath, float frameRate=0.0f, bool odometryIgnored=false, bool ignoreGoalDelay=false, bool goalsIgnored=false, int startId=0, const std::vector< unsigned int > &cameraIndices=std::vector< unsigned int >(), int stopId=0, bool intermediateNodesIgnored=false, bool landmarksIgnored=false, bool featuresIgnored=false, int startMapId=0, int stopMapId=-1, bool priorsIgnored=false, bool imuIgnored=false, bool intermediateNodesAreNormalNodes=false, const std::vector< Transform > &cameraLocalTransformOverrides=std::vector< Transform >())
 
+ DBReader (const std::list< std::string > &databasePaths, float frameRate=0.0f, bool odometryIgnored=false, bool ignoreGoalDelay=false, bool goalsIgnored=false, int startId=0, const std::vector< unsigned int > &cameraIndices=std::vector< unsigned int >(), int stopId=0, bool intermediateNodesIgnored=false, bool landmarksIgnored=false, bool featuresIgnored=false, int startMapId=0, int stopMapId=-1, bool priorsIgnored=false, bool imuIgnored=false, bool intermediateNodesAreNormalNodes=false, const std::vector< Transform > &cameraLocalTransformOverrides=std::vector< Transform >())
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")
 Initializes the sensor.
 
virtual bool isCalibrated () const
 
virtual std::string getSerial () const
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
const DBDriver * driver () const
 
- Public Member Functions inherited from rtabmap::Camera
SensorData takeImage (SensorCaptureInfo *info=0)
 
float getImageRate () const
 
void setImageRate (float imageRate)
 
+void setInterIMUPublishing (bool enabled, IMUFilter *filter=0, bool baseFrameConversion=false)
 
bool isInterIMUPublishing () const
 
+bool initFromFile (const std::string &calibrationPath)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureImage (SensorCaptureInfo *info=0)
 
- Protected Member Functions inherited from rtabmap::Camera
 Camera (float imageRate=0, const Transform &localTransform=Transform::getIdentity())
 
+void postInterIMU (const IMU &imu, double stamp)
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 46 of file DBReader.h.

+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::DBReader::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ isCalibrated()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::DBReader::isCalibrated () const
+
+virtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::DBReader::getSerial () const
+
+virtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::DBReader::odomProvided () const
+
+inlinevirtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +

Definition at line 90 of file DBReader.h.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::DBReader::getPose (double stamp,
Transform & pose,
cv::Mat & covariance,
double maxWaitTime = 0.06 
)
+
+virtual
+
+ +

Gets the sensor's pose estimate at a specific timestamp.

+

Queries the sensor for its pose estimate at the given timestamp. This is typically used for sensors that provide visual-inertial odometry or other pose estimation capabilities.

+
Parameters
+ + + + + +
stampTimestamp in seconds for which to query the pose
[out]poseOutput transform representing the sensor pose
[out]covarianceOutput covariance matrix (6x6) representing twist uncertainty
maxWaitTimeMaximum time in seconds to wait for pose data (default: 0.06)
+
+
+
Returns
True if pose was successfully retrieved, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
odomProvided()
+ +

Reimplemented from rtabmap::SensorCapture.

+ +
+
+ +

◆ driver()

+ +
+
+ + + + + +
+ + + + + + + +
const DBDriver * rtabmap::DBReader::driver () const
+
+inline
+
+ +

Definition at line 93 of file DBReader.h.

+ +
+
+ +

◆ captureImage()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::DBReader::captureImage (SensorCaptureInfo * info = 0)
+
+protectedvirtual
+
+ +

Implements rtabmap::Camera.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader.js b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader.js new file mode 100644 index 00000000..a82d5f60 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1DBReader = +[ + [ "init", "classrtabmap_1_1DBReader.html#a31b8ffc3d213da7ab58a85ce89b8055e", null ], + [ "getSerial", "classrtabmap_1_1DBReader.html#ac6e8622842447cdccfaab061c1cab3c4", null ], + [ "odomProvided", "classrtabmap_1_1DBReader.html#a24351b1eb5776a83548a1d972e489dba", null ], + [ "getPose", "classrtabmap_1_1DBReader.html#abd2b32ae00a05810465f63d63c44d5ed", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.map new file mode 100644 index 00000000..311cf8e6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.md5 new file mode 100644 index 00000000..78279bd9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.md5 @@ -0,0 +1 @@ +cd514b4d0d6e6d454bfdc86b5b398ec0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..78b6f75ba61eee92452106b6f434194b9bc25788 GIT binary patch literal 6698 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.md5 new file mode 100644 index 00000000..78279bd9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.md5 @@ -0,0 +1 @@ +cd514b4d0d6e6d454bfdc86b5b398ec0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1DBReader__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..78b6f75ba61eee92452106b6f434194b9bc25788 GIT binary patch literal 6698 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::EnvSensor Member List
+
+ +
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.html b/preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.html new file mode 100644 index 00000000..233b2523 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.html @@ -0,0 +1,427 @@ + + + + + + + + +RTAB-Map: rtabmap::EnvSensor Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::EnvSensor Class Reference
+
+
+ +

Single environmental measurement (type, value, timestamp). + More...

+ +

#include <EnvSensor.h>

+ + + + + +

+Public Types

enum  Type {
+  kUndefined = 0 +, kWifiSignalStrength +, kAmbientTemperature +, kAmbientAirPressure +,
+  kAmbientLight +, kAmbientRelativeHumidity +, kCustomSensor1 = 100 +, kCustomSensor2 +,
+  kCustomSensor3 +, kCustomSensor4 +, kCustomSensor5 +, kCustomSensor6 +,
+  kCustomSensor7 +, kCustomSensor8 +, kCustomSensor9 +
+ }
 Environmental sensor channel identifier. More...
 
+ + + + + + + + + + + + + +

+Public Member Functions

 EnvSensor ()
 Default constructor: kUndefined type, zero value and stamp.
 
 EnvSensor (const Type &type, const double &value, const double &stamp=0)
 Constructs a reading with the given type, value, and optional stamp.
 
const Type & type () const
 
const double & value () const
 
const double & stamp () const
 
+

Detailed Description

+

Single environmental measurement (type, value, timestamp).

+

Built-in Type values cover common phone/robot sensors; kCustomSensor1 through kCustomSensor9 are reserved for application-specific channels. Units depend on the type (see Type).

+

Samples are stored per node in SensorData via EnvSensors (one entry per type). Persisted in the database with node records (DBDriver).

+
See also
SensorData::setEnvSensors()
+
+SensorData::addEnvSensor()
+
+SensorData::envSensors()
+ +

Definition at line 50 of file EnvSensor.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::EnvSensor::Type
+
+ +

Environmental sensor channel identifier.

+

Built-in types use fixed units; custom types (≥ kCustomSensor1) have application-defined meaning and units.

+ + + + + + + + + + + + + + + + +
Enumerator
kUndefined 

Uninitialized / unknown channel.

+
kWifiSignalStrength 

Wi‑Fi signal strength (dBm).

+
kAmbientTemperature 

Ambient temperature (°C).

+
kAmbientAirPressure 

Ambient air pressure (hPa).

+
kAmbientLight 

Ambient illuminance (lx).

+
kAmbientRelativeHumidity 

Relative humidity (%).

+
kCustomSensor1 

User-defined sensor slot 1.

+
kCustomSensor2 

User-defined sensor slot 2.

+
kCustomSensor3 

User-defined sensor slot 3.

+
kCustomSensor4 

User-defined sensor slot 4.

+
kCustomSensor5 

User-defined sensor slot 5.

+
kCustomSensor6 

User-defined sensor slot 6.

+
kCustomSensor7 

User-defined sensor slot 7.

+
kCustomSensor8 

User-defined sensor slot 8.

+
kCustomSensor9 

User-defined sensor slot 9.

+
+ +

Definition at line 59 of file EnvSensor.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ EnvSensor() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::EnvSensor::EnvSensor ()
+
+inline
+
+ +

Default constructor: kUndefined type, zero value and stamp.

+ +

Definition at line 80 of file EnvSensor.h.

+ +
+
+ +

◆ EnvSensor() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::EnvSensor::EnvSensor (const Type & type,
const double & value,
const double & stamp = 0 
)
+
+inline
+
+ +

Constructs a reading with the given type, value, and optional stamp.

+
Parameters
+ + + + +
typeSensor channel (Type).
valueMeasurement in the units for type.
stampTimestamp in seconds (0 if unknown).
+
+
+ +

Definition at line 92 of file EnvSensor.h.

+ +
+
+ +

◆ ~EnvSensor()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::EnvSensor::~EnvSensor ()
+
+inlinevirtual
+
+ +

Definition at line 98 of file EnvSensor.h.

+ +
+
+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
const Type & rtabmap::EnvSensor::type () const
+
+inline
+
+
Returns
Sensor channel.
+ +

Definition at line 101 of file EnvSensor.h.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::EnvSensor::value () const
+
+inline
+
+
Returns
Measurement value (units depend on type()).
+ +

Definition at line 103 of file EnvSensor.h.

+ +
+
+ +

◆ stamp()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::EnvSensor::stamp () const
+
+inline
+
+
Returns
Timestamp in seconds.
+ +

Definition at line 105 of file EnvSensor.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.js b/preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.js new file mode 100644 index 00000000..f53b12f0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1EnvSensor.js @@ -0,0 +1,25 @@ +var classrtabmap_1_1EnvSensor = +[ + [ "Type", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30f", [ + [ "kUndefined", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fad06ac95d82e3fceb18e1f3dfd190931a", null ], + [ "kWifiSignalStrength", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa1bc42ead6237eb515f301b39e162dee2", null ], + [ "kAmbientTemperature", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa9e348acef07abec64edef43b58ea1b83", null ], + [ "kAmbientAirPressure", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa2659626ccc2aa59e2d83a57f34e400f0", null ], + [ "kAmbientLight", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa8eee701051a2603e162a65d4948a64d8", null ], + [ "kAmbientRelativeHumidity", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa7c238626943b1254027ed1b5454ae101", null ], + [ "kCustomSensor1", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa88e60173d5f413f4ab490a99c034453e", null ], + [ "kCustomSensor2", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa9bb90358c0c69177bb8a918cd38aee8a", null ], + [ "kCustomSensor3", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa7bcfccab26830a87edcf9dbf7d7b166b", null ], + [ "kCustomSensor4", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa53762a7b85a4a07845e8c447e0ba19e7", null ], + [ "kCustomSensor5", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fafd5342a456a7e150c2d7598a7b297c92", null ], + [ "kCustomSensor6", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30faef0358209e8fe8218ab939fa9ab4a693", null ], + [ "kCustomSensor7", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30faeb1ce734601c915d6a411c76ff4bb8f8", null ], + [ "kCustomSensor8", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa24c103c2769770dd36d87e0567be9140", null ], + [ "kCustomSensor9", "classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa669f9ca8a243a813b981ff2b672b0f89", null ] + ] ], + [ "EnvSensor", "classrtabmap_1_1EnvSensor.html#a512758b1afef465b24ce24de8a705dc9", null ], + [ "EnvSensor", "classrtabmap_1_1EnvSensor.html#a8b2f05e0297750a60ccd05c56f141a1b", null ], + [ "type", "classrtabmap_1_1EnvSensor.html#abae79475fe7e568269a4b4ef4c5a7d24", null ], + [ "value", "classrtabmap_1_1EnvSensor.html#a27b343c9be68fd326c10157102bb750f", null ], + [ "stamp", "classrtabmap_1_1EnvSensor.html#a1bbcf9a834523dd2e91ef1ab8d31d5e4", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry-members.html new file mode 100644 index 00000000..eb97d42f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry-members.html @@ -0,0 +1,138 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::EpipolarGeometry Member List
+
+
+ +

This is the complete list of members for rtabmap::EpipolarGeometry, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
check(const Signature *ssA, const Signature *ssB) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometry
EpipolarGeometry(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometry
findEpipolesFromF(const cv::Mat &fundamentalMatrix, cv::Vec3d &e1, cv::Vec3d &e2) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
findFFromCalibratedStereoCameras(double fx, double fy, double cx, double cy, double Tx, double Ty) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
findFFromWords(const std::list< std::pair< int, std::pair< cv::KeyPoint, cv::KeyPoint > > > &pairs, std::vector< uchar > &status, double ransacReprojThreshold=3.0, double ransacConfidence=0.99) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
findPairs(const std::map< int, T > &wordsA, const std::map< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)rtabmap::EpipolarGeometryinlinestatic
findPairs(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)rtabmap::EpipolarGeometryinlinestatic
findPairsAll(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)rtabmap::EpipolarGeometryinlinestatic
findPairsUnique(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)rtabmap::EpipolarGeometryinlinestatic
findPFromE(const cv::Mat &E, const cv::Mat &x, const cv::Mat &xp) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
findRTFromP(const cv::Mat &p, cv::Mat &r, cv::Mat &t) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
getMatchCountMinAccepted() const (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometryinline
getRansacParam1() const (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometryinline
getRansacParam2() const (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometryinline
iterativeLinearLSTriangulation(cv::Point3d u, const cv::Matx34d &P, cv::Point3d u1, const cv::Matx34d &P1) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
linearLSTriangulation(cv::Point3d u, cv::Matx34d P, cv::Point3d u1, cv::Matx34d P1) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
parseParameters(const ParametersMap &parameters) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometry
setMatchCountMinAccepted(int matchCountMinAccepted) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometryinline
setRansacParam1(double ransacParam1) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometryinline
setRansacParam2(double ransacParam2) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometryinline
triangulatePoints(const cv::Mat &pt_set1, const cv::Mat &pt_set2, const cv::Mat &P, const cv::Mat &P1, pcl::PointCloud< pcl::PointXYZ >::Ptr &pointcloud, std::vector< double > &reproj_errors) (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometrystatic
~EpipolarGeometry() (defined in rtabmap::EpipolarGeometry)rtabmap::EpipolarGeometryvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry.html b/preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry.html new file mode 100644 index 00000000..16aa6d28 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1EpipolarGeometry.html @@ -0,0 +1,566 @@ + + + + + + + + +RTAB-Map: rtabmap::EpipolarGeometry Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::EpipolarGeometry Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ EpipolarGeometry (const ParametersMap &parameters=ParametersMap())
 
+bool check (const Signature *ssA, const Signature *ssB)
 
+void parseParameters (const ParametersMap &parameters)
 
int getMatchCountMinAccepted () const
 
double getRansacParam1 () const
 
double getRansacParam2 () const
 
void setMatchCountMinAccepted (int matchCountMinAccepted)
 
void setRansacParam1 (double ransacParam1)
 
void setRansacParam2 (double ransacParam2)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void findEpipolesFromF (const cv::Mat &fundamentalMatrix, cv::Vec3d &e1, cv::Vec3d &e2)
 
+static cv::Mat findPFromE (const cv::Mat &E, const cv::Mat &x, const cv::Mat &xp)
 
+static cv::Mat findFFromWords (const std::list< std::pair< int, std::pair< cv::KeyPoint, cv::KeyPoint > > > &pairs, std::vector< uchar > &status, double ransacReprojThreshold=3.0, double ransacConfidence=0.99)
 
+static void findRTFromP (const cv::Mat &p, cv::Mat &r, cv::Mat &t)
 
+static cv::Mat findFFromCalibratedStereoCameras (double fx, double fy, double cx, double cy, double Tx, double Ty)
 
template<typename T >
static int findPairs (const std::map< int, T > &wordsA, const std::map< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
 
template<typename T >
static int findPairs (const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
 
template<typename T >
static int findPairsUnique (const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
 
template<typename T >
static int findPairsAll (const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)
 
+static cv::Mat linearLSTriangulation (cv::Point3d u, cv::Matx34d P, cv::Point3d u1, cv::Matx34d P1)
 
+static cv::Mat iterativeLinearLSTriangulation (cv::Point3d u, const cv::Matx34d &P, cv::Point3d u1, const cv::Matx34d &P1)
 
+static double triangulatePoints (const cv::Mat &pt_set1, const cv::Mat &pt_set2, const cv::Mat &P, const cv::Mat &P1, pcl::PointCloud< pcl::PointXYZ >::Ptr &pointcloud, std::vector< double > &reproj_errors)
 
+

Detailed Description

+
+

Definition at line 49 of file EpipolarGeometry.h.

+

Member Function Documentation

+ +

◆ getMatchCountMinAccepted()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::EpipolarGeometry::getMatchCountMinAccepted () const
+
+inline
+
+ +

Definition at line 57 of file EpipolarGeometry.h.

+ +
+
+ +

◆ getRansacParam1()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::EpipolarGeometry::getRansacParam1 () const
+
+inline
+
+ +

Definition at line 58 of file EpipolarGeometry.h.

+ +
+
+ +

◆ getRansacParam2()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::EpipolarGeometry::getRansacParam2 () const
+
+inline
+
+ +

Definition at line 59 of file EpipolarGeometry.h.

+ +
+
+ +

◆ setMatchCountMinAccepted()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::EpipolarGeometry::setMatchCountMinAccepted (int matchCountMinAccepted)
+
+inline
+
+ +

Definition at line 61 of file EpipolarGeometry.h.

+ +
+
+ +

◆ setRansacParam1()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::EpipolarGeometry::setRansacParam1 (double ransacParam1)
+
+inline
+
+ +

Definition at line 62 of file EpipolarGeometry.h.

+ +
+
+ +

◆ setRansacParam2()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::EpipolarGeometry::setRansacParam2 (double ransacParam2)
+
+inline
+
+ +

Definition at line 63 of file EpipolarGeometry.h.

+ +
+
+ +

◆ findPairs() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int rtabmap::EpipolarGeometry::findPairs (const std::map< int, T > & wordsA,
const std::map< int, T > & wordsB,
std::list< std::pair< int, std::pair< T, T > > > & pairs,
bool ignoreNegativeIds = true 
)
+
+inlinestatic
+
+

if a=[1 2 3 4 6], b=[1 2 4 5 6], results= [(1,1) (2,2) (4,4) (6,6)] realPairsCount = 4

+ +

Definition at line 100 of file EpipolarGeometry.h.

+ +
+
+ +

◆ findPairs() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int rtabmap::EpipolarGeometry::findPairs (const std::multimap< int, T > & wordsA,
const std::multimap< int, T > & wordsB,
std::list< std::pair< int, std::pair< T, T > > > & pairs,
bool ignoreNegativeIds = true 
)
+
+inlinestatic
+
+

if a=[1 2 3 4 6 6], b=[1 1 2 4 5 6 6], results= [(1,1a) (2,2) (4,4) (6a,6a) (6b,6b)] realPairsCount = 5

+ +

Definition at line 128 of file EpipolarGeometry.h.

+ +
+
+ +

◆ findPairsUnique()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int rtabmap::EpipolarGeometry::findPairsUnique (const std::multimap< int, T > & wordsA,
const std::multimap< int, T > & wordsB,
std::list< std::pair< int, std::pair< T, T > > > & pairs,
bool ignoreNegativeIds = true 
)
+
+inlinestatic
+
+

if a=[1 2 3 4 6 6], b=[1 1 2 4 5 6 6], results= [(2,2) (4,4)] realPairsCount = 5

+ +

Definition at line 162 of file EpipolarGeometry.h.

+ +
+
+ +

◆ findPairsAll()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int rtabmap::EpipolarGeometry::findPairsAll (const std::multimap< int, T > & wordsA,
const std::multimap< int, T > & wordsB,
std::list< std::pair< int, std::pair< T, T > > > & pairs,
bool ignoreNegativeIds = true 
)
+
+inlinestatic
+
+

if a=[1 2 3 4 6 6], b=[1 1 2 4 5 6 6], results= [(1,1a) (1,1b) (2,2) (4,4) (6a,6a) (6a,6b) (6b,6a) (6b,6b)] realPairsCount = 5

+ +

Definition at line 197 of file EpipolarGeometry.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1FAST-members.html new file mode 100644 index 00000000..b1b3b6a4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::FAST Member List
+
+
+ +

This is the complete list of members for rtabmap::FAST, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
FAST(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::FAST)rtabmap::FAST
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::FAST)rtabmap::FASTinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::FASTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::FAST)rtabmap::FASTvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~FAST() (defined in rtabmap::FAST)rtabmap::FASTvirtual
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST.html b/preview/pr-1773/api/latest/classrtabmap_1_1FAST.html new file mode 100644 index 00000000..0a876929 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST.html @@ -0,0 +1,372 @@ + + + + + + + + +RTAB-Map: rtabmap::FAST Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::FAST Class Reference
+
+
+ +

FAST corner detector only (no descriptor). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::FAST:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::FAST:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ FAST (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

FAST corner detector only (no descriptor).

+ +

Definition at line 415 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::FAST::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::FAST::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 422 of file Features2d.h.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::FAST::isGpuAvailable () const
+
+overridevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST.js b/preview/pr-1773/api/latest/classrtabmap_1_1FAST.js new file mode 100644 index 00000000..32de46f5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1FAST = +[ + [ "isGpuAvailable", "classrtabmap_1_1FAST.html#a1418ac4de2bdf5815df888a4d1f50b2e", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF-members.html new file mode 100644 index 00000000..ebde8319 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::FAST_BRIEF Member List
+
+
+ +

This is the complete list of members for rtabmap::FAST_BRIEF, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
FAST(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::FAST)rtabmap::FAST
FAST_BRIEF(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::FAST_BRIEF)rtabmap::FAST_BRIEF
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::FAST_BRIEF)rtabmap::FAST_BRIEFinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::FASTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::FAST_BRIEF)rtabmap::FAST_BRIEFvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~FAST() (defined in rtabmap::FAST)rtabmap::FASTvirtual
~FAST_BRIEF() (defined in rtabmap::FAST_BRIEF)rtabmap::FAST_BRIEFvirtual
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF.html b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF.html new file mode 100644 index 00000000..8349cec2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::FAST_BRIEF Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::FAST_BRIEF Class Reference
+
+
+ +

FAST corners + BRIEF descriptors. + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::FAST_BRIEF:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::FAST_BRIEF:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ FAST_BRIEF (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::FAST
+ FAST (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

FAST corners + BRIEF descriptors.

+ +

Definition at line 452 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::FAST_BRIEF::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::FAST.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::FAST_BRIEF::getType () const
+
+inlineoverridevirtual
+
+ +

Reimplemented from rtabmap::FAST.

+ +

Definition at line 459 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.map new file mode 100644 index 00000000..2fd82ee3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.md5 new file mode 100644 index 00000000..50e4ef3a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.md5 @@ -0,0 +1 @@ +c13468118d510cc6c0a2f605f7461e30 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a585498c6feb82a521eb7adabd532ad3de766894 GIT binary patch literal 6510 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 NG*q;eKPg&-{Rfu(znK64 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.map new file mode 100644 index 00000000..2fd82ee3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.md5 new file mode 100644 index 00000000..50e4ef3a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.md5 @@ -0,0 +1 @@ +c13468118d510cc6c0a2f605f7461e30 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__BRIEF__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a585498c6feb82a521eb7adabd532ad3de766894 GIT binary patch literal 6510 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 NG*q;eKPg&-{Rfu(znK64 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK-members.html new file mode 100644 index 00000000..36128b70 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::FAST_FREAK Member List
+
+
+ +

This is the complete list of members for rtabmap::FAST_FREAK, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
FAST(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::FAST)rtabmap::FAST
FAST_FREAK(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::FAST_FREAK)rtabmap::FAST_FREAK
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::FAST_FREAK)rtabmap::FAST_FREAKinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::FASTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::FAST_FREAK)rtabmap::FAST_FREAKvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~FAST() (defined in rtabmap::FAST)rtabmap::FASTvirtual
~FAST_FREAK() (defined in rtabmap::FAST_FREAK)rtabmap::FAST_FREAKvirtual
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK.html b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK.html new file mode 100644 index 00000000..cf0ef1c9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::FAST_FREAK Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::FAST_FREAK Class Reference
+
+
+ +

FAST corners + FREAK descriptors. + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::FAST_FREAK:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::FAST_FREAK:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ FAST_FREAK (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::FAST
+ FAST (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

FAST corners + FREAK descriptors.

+ +

Definition at line 471 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::FAST_FREAK::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::FAST.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::FAST_FREAK::getType () const
+
+inlineoverridevirtual
+
+ +

Reimplemented from rtabmap::FAST.

+ +

Definition at line 478 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.map new file mode 100644 index 00000000..6d2ef73f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.md5 new file mode 100644 index 00000000..d0c03a23 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.md5 @@ -0,0 +1 @@ +f56eb4d063f1b2de25fb3e5e5ce0f291 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0baa07f5baaccc510a786d65592bf61338d1afc4 GIT binary patch literal 6534 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.md5 new file mode 100644 index 00000000..d0c03a23 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.md5 @@ -0,0 +1 @@ +f56eb4d063f1b2de25fb3e5e5ce0f291 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__FREAK__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0baa07f5baaccc510a786d65592bf61338d1afc4 GIT binary patch literal 6534 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.md5 new file mode 100644 index 00000000..2555cf2b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.md5 @@ -0,0 +1 @@ +e56ba15ee1b9367a6f832e7fa9464329 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c642a347c2c607bc3e97a003f049a1f44794a7b1 GIT binary patch literal 4158 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.map new file mode 100644 index 00000000..453ba0d7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.md5 new file mode 100644 index 00000000..e9d0fca7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.md5 @@ -0,0 +1 @@ +11032a1c022c4c436cfa3c0604bdc839 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1FAST__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7935cc4f60c51bdaa5e0b566828064bc8e96a8fe GIT binary patch literal 10022 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Feature2D Member List
+
+
+ +

This is the complete list of members for rtabmap::Feature2D, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const =0 (defined in rtabmap::Feature2D)rtabmap::Feature2Dpure virtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() constrtabmap::Feature2Dinlinevirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.html b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.html new file mode 100644 index 00000000..2a1f4b95 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.html @@ -0,0 +1,583 @@ + + + + + + + + +RTAB-Map: rtabmap::Feature2D Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract 2D feature detector and descriptor extractor for visual SLAM. + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::Feature2D:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + +

+Public Types

enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
+virtual void parseParameters (const ParametersMap &parameters)
 
virtual const ParametersMap & getParameters () const
 
+virtual Feature2D::Type getType () const =0
 
virtual bool isGpuAvailable () const
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
+ + + +

+Protected Member Functions

+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

Abstract 2D feature detector and descriptor extractor for visual SLAM.

+

Factory create() builds a concrete detector from Type or from Kp/DetectorStrategy in a ParametersMap. Common tuning keys include Kp/MaxFeatures, Kp/GridRows, Kp/GridCols, Kp/SSC, depth filters (Kp/MinDepth, Kp/MaxDepth), ROI (Kp/RoiRatios), and sub-pixel refinement.

+

Pipeline: generateKeypoints() (grid + ROI + optional mask) then generateDescriptors(). Static helpers filter or cap keypoints before/after matching. generateKeypoints3D() projects features using stereo or depth when available in SensorData.

+
See also
Memory
+
+RegistrationVis
+ +

Definition at line 145 of file Features2d.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::Feature2D::Type
+
+ +

Built-in detector/descriptor strategy (Kp/DetectorStrategy).

+ +

Definition at line 148 of file Features2d.h.

+ +
+
+

Member Function Documentation

+ +

◆ typeName()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::Feature2D::typeName (Type type)
+
+inlinestatic
+
+
Returns
Human-readable name for type (e.g. "ORB", "GFTT+BRIEF").
+ +

Definition at line 169 of file Features2d.h.

+ +
+
+ +

◆ getMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Feature2D::getMaxFeatures () const
+
+inline
+
+ +

Definition at line 260 of file Features2d.h.

+ +
+
+ +

◆ getSSC()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Feature2D::getSSC () const
+
+inline
+
+ +

Definition at line 261 of file Features2d.h.

+ +
+
+ +

◆ getMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Feature2D::getMinDepth () const
+
+inline
+
+ +

Definition at line 262 of file Features2d.h.

+ +
+
+ +

◆ getMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Feature2D::getMaxDepth () const
+
+inline
+
+ +

Definition at line 263 of file Features2d.h.

+ +
+
+ +

◆ getGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Feature2D::getGridRows () const
+
+inline
+
+ +

Definition at line 264 of file Features2d.h.

+ +
+
+ +

◆ getGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Feature2D::getGridCols () const
+
+inline
+
+ +

Definition at line 265 of file Features2d.h.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const ParametersMap & rtabmap::Feature2D::getParameters () const
+
+inlinevirtual
+
+ +

Definition at line 284 of file Features2d.h.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Feature2D::isGpuAvailable () const
+
+inlinevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented in rtabmap::SURF, rtabmap::SIFT, rtabmap::ORB, rtabmap::FAST, rtabmap::GFTT, rtabmap::SuperPointTorch, and rtabmap::SuperPointRpautrat.

+ +

Definition at line 294 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.js b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.js new file mode 100644 index 00000000..5844fbc2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D.js @@ -0,0 +1,28 @@ +var classrtabmap_1_1Feature2D = +[ + [ "Type", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde", [ + [ "kFeatureUndef", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea28c1d7a18f104b89b61308b51189d541", null ], + [ "kFeatureSurf", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea66282227676e7ac7e7f8b82a6e05b1f0", null ], + [ "kFeatureSift", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdeafdbc7c366fae363d518072279dc598d7", null ], + [ "kFeatureOrb", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdeac5baae74f8b80e9fe766abd07601eecc", null ], + [ "kFeatureFastFreak", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea2f5914ba417f6411d3b147b4915e065f", null ], + [ "kFeatureFastBrief", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea4b8bbd89c3369c165351e921bf9bc456", null ], + [ "kFeatureGfttFreak", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea52538bdcc7e3ae16141b726ff5773de3", null ], + [ "kFeatureGfttBrief", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdeaae3911c349328ac7670c180e42be99b0", null ], + [ "kFeatureBrisk", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea2b540dfad27995f77823be3355b27c91", null ], + [ "kFeatureGfttOrb", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdead56b2244090d6faa64f8f1483d712853", null ], + [ "kFeatureKaze", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea902c847bfeef306fc7aa578ac7ef6f9a", null ], + [ "kFeatureOrbOctree", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdeacacbf9c806debc5165b4609cb43639f5", null ], + [ "kFeatureSuperPointTorch", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdeaff6ab4f56cb5c55cd4fcad7765455490", null ], + [ "kFeatureSurfFreak", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea824e33331c9b5fdf7e3f6bc0bb643563", null ], + [ "kFeatureGfttDaisy", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdea0ea255d845ee2cd2f2889140fa16bbf3", null ], + [ "kFeatureSurfDaisy", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdeaf07356b61730b6cd1b16600908517640", null ], + [ "kFeaturePyDetector", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdead8913f72d6353ac08559a6ccee433174", null ], + [ "kFeatureSuperPointRpautrat", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdeaca045b13036052150345d539588623aa", null ], + [ "kFeatureEnd", "classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fdead5d59eeecae124833d8248767a9a9ab3", null ] + ] ], + [ "generateKeypoints", "classrtabmap_1_1Feature2D.html#a78d70d2150b42203ffd1c94d79661248", null ], + [ "generateDescriptors", "classrtabmap_1_1Feature2D.html#abaca942668ac3d2f16d3e78797ff0fb9", null ], + [ "generateKeypoints3D", "classrtabmap_1_1Feature2D.html#ae01a548fe993a7aa309cce96645693ce", null ], + [ "isGpuAvailable", "classrtabmap_1_1Feature2D.html#a8d330b2b7db059f59c257cde6c9b6a99", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.map new file mode 100644 index 00000000..323a47bd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.map @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.md5 new file mode 100644 index 00000000..a2791eb3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.md5 @@ -0,0 +1 @@ +a39fcfc767182bbd4eea66e9f463501c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Feature2D__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5536373550412f1b4c72897eaa0d2d1736aceafd GIT binary patch literal 66093 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA-members.html new file mode 100644 index 00000000..4c6c2c5b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA-members.html @@ -0,0 +1,121 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::FeatureBA Member List
+
+
+ +

This is the complete list of members for rtabmap::FeatureBA, including all inherited members.

+ + + + + + +
cameraIndexrtabmap::FeatureBA
depthrtabmap::FeatureBA
descriptorrtabmap::FeatureBA
FeatureBA(const cv::KeyPoint &kptIn, const float &depthIn=0.0f, const cv::Mat &descriptorIn=cv::Mat(), int cameraIndexIn=0) (defined in rtabmap::FeatureBA)rtabmap::FeatureBAinline
kptrtabmap::FeatureBA
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.html b/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.html new file mode 100644 index 00000000..54396058 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.html @@ -0,0 +1,276 @@ + + + + + + + + +RTAB-Map: rtabmap::FeatureBA Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::FeatureBA Class Reference
+
+
+ +

A single bundle adjustment feature observation: one keypoint seen in one frame. + More...

+ +

#include <Optimizer.h>

+ + + + +

+Public Member Functions

 FeatureBA (const cv::KeyPoint &kptIn, const float &depthIn=0.0f, const cv::Mat &descriptorIn=cv::Mat(), int cameraIndexIn=0)
 
+ + + + + + + + + + + + + +

+Public Attributes

cv::KeyPoint kpt
 2D image keypoint.
 
float depth
 Depth at kpt in meters, or 0 if unknown (monocular).
 
cv::Mat descriptor
 Optional descriptor for the keypoint (used when re-matching is enabled).
 
int cameraIndex
 Index into the frame's camera model list for multi-camera rigs.
 
+

Detailed Description

+

A single bundle adjustment feature observation: one keypoint seen in one frame.

+

Used as the per-frame value in the wordReferences map (<wordId, <frameId, FeatureBA>>) passed to Optimizer::optimizeBA(). depth is in meters when available (RGB-D / stereo with disparity) or 0 if unknown (monocular). descriptor and cameraIndex are optional; cameraIndex selects which CameraModel of a multi-camera rig the keypoint belongs to.

+ +

Definition at line 51 of file Optimizer.h.

+

Constructor & Destructor Documentation

+ +

◆ FeatureBA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::FeatureBA::FeatureBA (const cv::KeyPoint & kptIn,
const float & depthIn = 0.0f,
const cv::Mat & descriptorIn = cv::Mat(),
int cameraIndexIn = 0 
)
+
+inline
+
+ +

Definition at line 54 of file Optimizer.h.

+ +
+
+

Member Data Documentation

+ +

◆ kpt

+ +
+
+ + + + +
cv::KeyPoint rtabmap::FeatureBA::kpt
+
+ +

2D image keypoint.

+ +

Definition at line 62 of file Optimizer.h.

+ +
+
+ +

◆ depth

+ +
+
+ + + + +
float rtabmap::FeatureBA::depth
+
+ +

Depth at kpt in meters, or 0 if unknown (monocular).

+ +

Definition at line 63 of file Optimizer.h.

+ +
+
+ +

◆ descriptor

+ +
+
+ + + + +
cv::Mat rtabmap::FeatureBA::descriptor
+
+ +

Optional descriptor for the keypoint (used when re-matching is enabled).

+ +

Definition at line 64 of file Optimizer.h.

+ +
+
+ +

◆ cameraIndex

+ +
+
+ + + + +
int rtabmap::FeatureBA::cameraIndex
+
+ +

Index into the frame's camera model list for multi-camera rigs.

+ +

Definition at line 65 of file Optimizer.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.js b/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.js new file mode 100644 index 00000000..7426ff92 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FeatureBA.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1FeatureBA = +[ + [ "kpt", "classrtabmap_1_1FeatureBA.html#a2bea5690d958d81f5edfa6df954d4a8b", null ], + [ "depth", "classrtabmap_1_1FeatureBA.html#ad48600a5b6ed17e7713f1485c4317948", null ], + [ "descriptor", "classrtabmap_1_1FeatureBA.html#a7db630b2f418b05d2fbd772d1caadf48", null ], + [ "cameraIndex", "classrtabmap_1_1FeatureBA.html#a8db953b6f93249d5c28c25073cd4e095", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex-members.html new file mode 100644 index 00000000..d8c02433 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex-members.html @@ -0,0 +1,138 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::FlannIndex Member List
+
+
+ +

This is the complete list of members for rtabmap::FlannIndex, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
addPoints(const cv::Mat &features)rtabmap::FlannIndex
buildIndex(flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f)rtabmap::FlannIndex
featuresDim() constrtabmap::FlannIndexinline
featuresType() constrtabmap::FlannIndexinline
flann_algorithm_t enum namertabmap::FlannIndex
FLANN_INDEX_KDTREE enum valuertabmap::FlannIndex
FLANN_INDEX_KDTREE_SINGLE enum valuertabmap::FlannIndex
FLANN_INDEX_LINEAR enum valuertabmap::FlannIndex
FLANN_INDEX_LSH enum valuertabmap::FlannIndex
FlannIndex() (defined in rtabmap::FlannIndex)rtabmap::FlannIndex
indexedFeatures() constrtabmap::FlannIndex
isBuilt()rtabmap::FlannIndex
knnSearch(const cv::Mat &query, cv::Mat &indices, cv::Mat &dists, int knn, int checks=32, float eps=0.0, bool sorted=true, int cores=1) constrtabmap::FlannIndex
loadIndex(const std::vector< unsigned char > &indexData, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)rtabmap::FlannIndex
loadIndex(const unsigned char *indexData, size_t indexDataSize, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)rtabmap::FlannIndex
memoryUsed() constrtabmap::FlannIndex
NANOFLANN_INDEX_KDTREE_SINGLE enum valuertabmap::FlannIndex
radiusSearch(const cv::Mat &query, std::vector< std::vector< size_t > > &indices, std::vector< std::vector< float > > &dists, float radius, int maxNeighbors=0, int checks=32, float eps=0.0, bool sorted=true, int cores=1) constrtabmap::FlannIndex
release()rtabmap::FlannIndex
removePoint(unsigned int index)rtabmap::FlannIndex
serializeIndex(bool computeChecksum=true) constrtabmap::FlannIndex
~FlannIndex() (defined in rtabmap::FlannIndex)rtabmap::FlannIndexvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.html b/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.html new file mode 100644 index 00000000..078e710e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.html @@ -0,0 +1,691 @@ + + + + + + + + +RTAB-Map: rtabmap::FlannIndex Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::FlannIndex Class Reference
+
+
+ +

Nearest neighbor index over a set of features. + More...

+ +

#include <FlannIndex.h>

+ + + + + +

+Public Types

enum  flann_algorithm_t {
+  FLANN_INDEX_LINEAR = 0 +, FLANN_INDEX_KDTREE = 1 +, FLANN_INDEX_KDTREE_SINGLE = 4 +, FLANN_INDEX_LSH = 6 +,
+  NANOFLANN_INDEX_KDTREE_SINGLE = 100 +
+ }
 The index structure built by buildIndex() More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void release ()
 Drop the index and everything it holds, back to the state of a new one.
 
std::vector< unsigned char > serializeIndex (bool computeChecksum=true) const
 Serialize the index, to be given back to loadIndex()
 
size_t indexedFeatures () const
 
size_t memoryUsed () const
 
void buildIndex (flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f)
 Build the index over the given features, releasing any previous one.
 
bool loadIndex (const std::vector< unsigned char > &indexData, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)
 Load an index serialized by serializeIndex(), releasing any previous one.
 
+bool loadIndex (const unsigned char *indexData, size_t indexDataSize, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)
 Load an index from a raw buffer, see the overload above.
 
bool isBuilt ()
 
int featuresType () const
 
int featuresDim () const
 
std::vector< unsigned int > addPoints (const cv::Mat &features)
 Add features to the index.
 
void removePoint (unsigned int index)
 Remove an indexed feature, by the index addPoints() gave for it.
 
void knnSearch (const cv::Mat &query, cv::Mat &indices, cv::Mat &dists, int knn, int checks=32, float eps=0.0, bool sorted=true, int cores=1) const
 Search the k nearest neighbors of each query.
 
void radiusSearch (const cv::Mat &query, std::vector< std::vector< size_t > > &indices, std::vector< std::vector< float > > &dists, float radius, int maxNeighbors=0, int checks=32, float eps=0.0, bool sorted=true, int cores=1) const
 Search the neighbors of each query within a radius.
 
+

Detailed Description

+

Nearest neighbor index over a set of features.

+

Wraps the search structures of the vendored rtflann and nanoflann libraries behind one interface, the structure being chosen with flann_algorithm_t at build time. Used for the visual word dictionary (VWDictionary) and for the 2D point searches of visual registration (RegistrationVis).

+

The features are not copied: the index refers to the matrices it is given and keeps them alive, cv::Mat data being reference counted, so they must not be modified in place while it is in use. Every point it holds is designated by an index, assigned in the order the points were added and stable for the lifetime of the index: removePoint() leaves a hole rather than renumbering the points after it.

+ +

Definition at line 55 of file FlannIndex.h.

+

Member Enumeration Documentation

+ +

◆ flann_algorithm_t

+ +
+
+ +

The index structure built by buildIndex()

+

The values under 8 are forwarded from rtflann's own enum and have to match it (see src/rtflann/defines.h); the nanoflann ones are rtabmap-specific and kept outside its range (0-7, 254, 255). A value is written in the serialized index header and checked back on load, so none of them may be renumbered.

+

The nanoflann structures take float features only (nanoflann has no Hamming metric) and search exactly, ignoring "checks". That makes them the fastest ones for 2D and 3D points, and the wrong ones for descriptors: an exact search visits more and more of the tree as the dimension grows, down to being as slow as an exhaustive search. Prefer the approximate rtflann kd-trees for those.

+ + + + + + +
Enumerator
FLANN_INDEX_LINEAR 

Exhaustive search.

+
FLANN_INDEX_KDTREE 

4 randomized kd-trees, searched approximately

+
FLANN_INDEX_KDTREE_SINGLE 

Single kd-tree, searched exactly.

+
FLANN_INDEX_LSH 

Locality-Sensitive Hashing (binary descriptors)

+
NANOFLANN_INDEX_KDTREE_SINGLE 

nanoflann kd-tree. With a rebalancing factor of 1 it is built once, which is the cheapest to build and to search; over 1 it is the weight-balanced tree accepting addPoints()/removePoint(), which cannot be serialized while some of its points are removed.

+
+ +

Definition at line 75 of file FlannIndex.h.

+ +
+
+

Member Function Documentation

+ +

◆ serializeIndex()

+ +
+
+ + + + + + + + +
std::vector< unsigned char > rtabmap::FlannIndex::serializeIndex (bool computeChecksum = true) const
+
+ +

Serialize the index, to be given back to loadIndex()

+
Parameters
+ + +
computeChecksumAdd a checksum of the indexed features to the data, which loadIndex() compares against the features it is given
+
+
+
Returns
The serialized index, empty when there is nothing to serialize or when the structure in use cannot be
+

The format depends on the architecture and on the versions of the vendored libraries: loadIndex() refuses an index it cannot read, leaving it to be rebuilt.

+ +
+
+ +

◆ indexedFeatures()

+ +
+
+ + + + + + + +
size_t rtabmap::FlannIndex::indexedFeatures () const
+
+
Returns
Number of indexed features, the removed ones excluded.
+ +
+
+ +

◆ memoryUsed()

+ +
+
+ + + + + + + +
size_t rtabmap::FlannIndex::memoryUsed () const
+
+
Returns
Bytes used by the index, the features themselves excluded as they are only referred to.
+ +
+
+ +

◆ buildIndex()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::FlannIndex::buildIndex (flann_algorithm_t algorithm,
const cv::Mat & features,
bool useDistanceL1 = false,
float rebalancingFactor = 2.0f 
)
+
+ +

Build the index over the given features, releasing any previous one.

+
Parameters
+ + + + + +
algorithmThe structure to build
featuresOne feature per row, CV_32FC1 or, for the rtflann structures only, CV_8UC1 for binary descriptors (Hamming distance)
useDistanceL1Search with the L1 distance instead of L2, ignored by LSH and by the binary descriptors
rebalancingFactorFraction (factor-1)/factor of the index that can be left removed before it is rebuilt, e.g. half of it for 2. Set to 1 to never rebuild it.
+
+
+ +
+
+ +

◆ loadIndex()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::FlannIndex::loadIndex (const std::vector< unsigned char > & indexData,
flann_algorithm_t algorithm,
const cv::Mat & features,
bool useDistanceL1 = false,
float rebalancingFactor = 2.0f,
std::string * errorMsg = NULL 
)
+
+ +

Load an index serialized by serializeIndex(), releasing any previous one.

+
Parameters
+ + + + + + + +
indexDataThe serialized index
algorithmThe structure it was built with
featuresThe very same features it was built with, in the same order: the index refers to them by their row
useDistanceL1The distance it was built with
rebalancingFactorSee buildIndex(). The serialized data carries the one the index was built with, which is deprecated and ignored: this one is used instead.
errorMsgFilled with what didn't match when the index is refused
+
+
+
Returns
False if the data doesn't correspond to the given features and parameters, in which case the index is left released
+ +
+
+ +

◆ isBuilt()

+ +
+
+ + + + + + + +
bool rtabmap::FlannIndex::isBuilt ()
+
+
Returns
Whether an index has been built or loaded.
+ +
+
+ +

◆ featuresType()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::FlannIndex::featuresType () const
+
+inline
+
+
Returns
Type of the indexed features (CV_32FC1 or CV_8UC1).
+ +

Definition at line 169 of file FlannIndex.h.

+ +
+
+ +

◆ featuresDim()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::FlannIndex::featuresDim () const
+
+inline
+
+
Returns
Dimension of the indexed features.
+ +

Definition at line 171 of file FlannIndex.h.

+ +
+
+ +

◆ addPoints()

+ +
+
+ + + + + + + + +
std::vector< unsigned int > rtabmap::FlannIndex::addPoints (const cv::Mat & features)
+
+ +

Add features to the index.

+
Parameters
+ + +
featuresOne feature per row, of the type and dimension the index was built with
+
+
+
Returns
The index assigned to each of them, empty when the structure doesn't accept points after it is built
+ +
+
+ +

◆ removePoint()

+ +
+
+ + + + + + + + +
void rtabmap::FlannIndex::removePoint (unsigned int index)
+
+ +

Remove an indexed feature, by the index addPoints() gave for it.

+

The feature is only marked as removed: it is skipped by the searches, but keeps taking memory until the index is rebuilt (see the rebalancing factor of buildIndex()). Not supported by every structure.

+ +
+
+ +

◆ knnSearch()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::FlannIndex::knnSearch (const cv::Mat & query,
cv::Mat & indices,
cv::Mat & dists,
int knn,
int checks = 32,
float eps = 0.0,
bool sorted = true,
int cores = 1 
) const
+
+ +

Search the k nearest neighbors of each query.

+
Parameters
+ + + + + + + + + +
queryOne feature per row, of the type and dimension the index was built with
indicesNeighbors found, one query per row, CV_32SC1. The neighbors that couldn't be found are set to -1.
distsTheir squared distances, CV_32FC1, or CV_32SC1 for the Hamming distances of binary descriptors
knnNumber of neighbors to search for
checksNumber of leaves an approximate search visits, the exact structures ignoring it
epsSearch for eps-approximate neighbors
sortedGive the neighbors back by increasing distance
coresThreads for the batch search (0 = all available)
+
+
+ +
+
+ +

◆ radiusSearch()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::FlannIndex::radiusSearch (const cv::Mat & query,
std::vector< std::vector< size_t > > & indices,
std::vector< std::vector< float > > & dists,
float radius,
int maxNeighbors = 0,
int checks = 32,
float eps = 0.0,
bool sorted = true,
int cores = 1 
) const
+
+ +

Search the neighbors of each query within a radius.

+
Parameters
+ + + + + + + + + + +
queryOne feature per row, of the type and dimension the index was built with
indicesNeighbors found, one vector per query
distsTheir squared distances, one vector per query
radiusSearch radius, squared internally: it is a distance, not a squared one
maxNeighborsMaximum number of neighbors per query, the nearest ones being kept. 0 for all of them.
checksNumber of leaves an approximate search visits, the exact structures ignoring it
epsSearch for eps-approximate neighbors
sortedGive the neighbors back by increasing distance
coresThreads for the batch search (0 = all available)
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.js b/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.js new file mode 100644 index 00000000..a86ad66b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1FlannIndex.js @@ -0,0 +1,24 @@ +var classrtabmap_1_1FlannIndex = +[ + [ "flann_algorithm_t", "classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010", [ + [ "FLANN_INDEX_LINEAR", "classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010ad91d542360e077f1f119dca41dcef818", null ], + [ "FLANN_INDEX_KDTREE", "classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a4e3f4b810ce249000373d41046ab273d", null ], + [ "FLANN_INDEX_KDTREE_SINGLE", "classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a519b6d4008708066a792ac2929607081", null ], + [ "FLANN_INDEX_LSH", "classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a9f4f22cd092844bde159ebc0b004a5c8", null ], + [ "NANOFLANN_INDEX_KDTREE_SINGLE", "classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a4132d1ad7d7b3717b83f71aa60fa39e3", null ] + ] ], + [ "release", "classrtabmap_1_1FlannIndex.html#a6eb4692afb561932aa6a20f7ebdee6c4", null ], + [ "serializeIndex", "classrtabmap_1_1FlannIndex.html#a1f2bf8718a75aa0b5dded8c287293c23", null ], + [ "indexedFeatures", "classrtabmap_1_1FlannIndex.html#a759817fbddaf8c6bdb04ba0a44e9847a", null ], + [ "memoryUsed", "classrtabmap_1_1FlannIndex.html#a5a2eed18fe1216142d09c05243e9d06f", null ], + [ "buildIndex", "classrtabmap_1_1FlannIndex.html#aad2f29314c6b021d1c53217a7a041521", null ], + [ "loadIndex", "classrtabmap_1_1FlannIndex.html#a826b3a33e22f455f04688df9d0d25b0b", null ], + [ "loadIndex", "classrtabmap_1_1FlannIndex.html#a028eac4aeef64d62b9edea1f7b38a71e", null ], + [ "isBuilt", "classrtabmap_1_1FlannIndex.html#a4a5c33446a515bd8f0c2f73a1adaeb23", null ], + [ "featuresType", "classrtabmap_1_1FlannIndex.html#ace329768df8b54b935fbe7a8921efe69", null ], + [ "featuresDim", "classrtabmap_1_1FlannIndex.html#a8191e3ba9cc7a5361443430171691df3", null ], + [ "addPoints", "classrtabmap_1_1FlannIndex.html#a8bd8312e92376d6bf2885907f5d93c68", null ], + [ "removePoint", "classrtabmap_1_1FlannIndex.html#a7d78d049ac4afb9f90fc0705506a6ce0", null ], + [ "knnSearch", "classrtabmap_1_1FlannIndex.html#aee58e859aa067646b4c6ffd63b593928", null ], + [ "radiusSearch", "classrtabmap_1_1FlannIndex.html#a28052e827934cfbc6a9ce14f8b5714df", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT-members.html new file mode 100644 index 00000000..9f6b3e8b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GFTT Member List
+
+
+ +

This is the complete list of members for rtabmap::GFTT, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const =0 (defined in rtabmap::Feature2D)rtabmap::Feature2Dpure virtual
GFTT(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT)rtabmap::GFTT
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::GFTTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::GFTT)rtabmap::GFTTvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~GFTT() (defined in rtabmap::GFTT)rtabmap::GFTTvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT.html new file mode 100644 index 00000000..1da14374 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT.html @@ -0,0 +1,348 @@ + + + + + + + + +RTAB-Map: rtabmap::GFTT Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GFTT Class Reference
+
+
+ +

Good-features-to-track detector (Shi–Tomasi / Harris). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::GFTT:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::GFTT:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GFTT (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+virtual Feature2D::Type getType () const =0
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

Good-features-to-track detector (Shi–Tomasi / Harris).

+ +

Definition at line 493 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GFTT::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::GFTT::isGpuAvailable () const
+
+overridevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT.js b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT.js new file mode 100644 index 00000000..ba35af23 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1GFTT = +[ + [ "isGpuAvailable", "classrtabmap_1_1GFTT.html#a05151f04cf624576783837dc48ddf744", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF-members.html new file mode 100644 index 00000000..a7488056 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GFTT_BRIEF Member List
+
+
+ +

This is the complete list of members for rtabmap::GFTT_BRIEF, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::GFTT_BRIEF)rtabmap::GFTT_BRIEFinlinevirtual
GFTT(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT)rtabmap::GFTT
GFTT_BRIEF(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT_BRIEF)rtabmap::GFTT_BRIEF
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::GFTTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::GFTT_BRIEF)rtabmap::GFTT_BRIEFvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~GFTT() (defined in rtabmap::GFTT)rtabmap::GFTTvirtual
~GFTT_BRIEF() (defined in rtabmap::GFTT_BRIEF)rtabmap::GFTT_BRIEFvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF.html new file mode 100644 index 00000000..adb3ab76 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::GFTT_BRIEF Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GFTT_BRIEF Class Reference
+
+
+ +

GFTT corners + BRIEF descriptors. + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::GFTT_BRIEF:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::GFTT_BRIEF:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GFTT_BRIEF (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::GFTT
+ GFTT (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

GFTT corners + BRIEF descriptors.

+ +

Definition at line 518 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GFTT_BRIEF::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::GFTT.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::GFTT_BRIEF::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 525 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.map new file mode 100644 index 00000000..bf6e6f72 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.md5 new file mode 100644 index 00000000..2ca05c83 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.md5 @@ -0,0 +1 @@ +8b57ac3922ea422557f4b5b9fbd7cded \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f05143e8cd9a81b7cecfe10cbc52cb57caf3d8af GIT binary patch literal 6091 zcmc&&g;$i{x*kNjrD2FcF;JvCMrlPtrE`YvhCxa?1PK*ILg_B)?vM@7J*Sshz~vy3$sn& zf^VX%CW;n(@}qSgFO|wWPp>7Q46x#uc#J@KF(cmmhn~ z*}XIs+I|Y0^o(~9LY+Y3y>~I*tLNkWx*UxXj%lwxegBO&A1eaI1o@RP0KYma<UBSr6sHCj?1I281{ZyCU1jGKm$7yF)%D4Kl0%c05uz&zHYG+pd z#fx_j`_>H{93FaXPNbC%baY(D!^3Nrt|}fxqEI5zXPW{`%gbp61thJltxC_H1=rS! zK{{8gOiZqMdwZXpoUrrr-xwSm)Z0?YNh`|BYu%cvcGrEu!^FfiJTVcToDB6#Qp)@s zpHMtFUuNEiKq3P^8F>*!@nvRavh(mzgoK1ZXug`NsZlsg*94R_Uoh=79G5OsBRe_R4`cJMUN?#CQ)?2?ku zZ{NN>?e6RCm3jOaN8v3~2pl_4ks$8QWxR56epXsq+A@-%h_thd5<&Y=--x)*=63?K zv9+b5p$X2+yv4xGj0-v1ni4?_%+3}S6={w)IL%)(@;%h_xj0>6kn*Y+Wq>^3=006H z&2(KEgx$YSLPkcGAnMF9USd21cSxOW!mQuloT^q^gJx%CwT_HX6=)SL*viSv!}$29 zU@+KIbfmvOq~QXyfqN7eA0P5OL*Z|?D+;BEK(H4ZH%IfCcIEm+KY#w*^K7e{ikUfb zcvxNO*1Ogq{_A=qMbB=_dUyzbe4rbckid}e`SZPVE9%HjLUQu1mugaY5Gy-7ITsgx zhnc#N!;N42-Ms??@`{QCCMG6M*c0dA;NZFb&jJa&$ZKZ&j8%^4=${4JrpvwYC&$f~ zZ+CZ{JiWX)9zG;@{nOvdc6p*0F2~WZKPUm=wNm-~ER;pU1JN3Y$7NepS(#Q-!$83% zeI1hZ_YpA(2^AGp0NA|#uW&ZB&puhUN>XTV@6&{&B#McouV2{$gM#7*k(!#c;t~?H z>mNRTNm>nBh(=##%e5S!+ey*>tZ*%U7VH@)D@;b36p?_#bL_~zW zh>fN6L!X}=Gj==M4SkWqR&ncBmFkvTSQq}8sYm@rp?$kqB|TGJ8mxcZwm>3VEd~-h zFOUCrvk7!D?C&y`2yR?doQy| z#a9MXBqpltnR|PChet;P2M1LJ1qD-catIU@6d({d93CQseDnxH&LZ9s)7a2(QZg_w zfHW})B%;2(J7s5Y@4Pa|^7dy%Rh8Dsx059X2$Y588?qhWZ*ytsdKUv17uWF5pCKhp zm^Wx`W8;|hb(>0W<~L1f5_in1`~Dx5{uBxN7kL`?dPC#?H>p-Q(jh4XzLkE_qAK zJ8WgGUN7CrXJ%%c_m-Y~Uv`1S@Js;G;VYB|@CT?PeV|hc0c2x?SCyYn?Ck7JNJiFq zu=ax>1+F1Zw&nQxOdl%Y5e0u9!z$HQ=e|KnOB>SC@~Ec1J|jC@Va?gk&(HI8`P2N$ zO4#4U?wh>4lz;#JmEAV25ejpKeN0Rwwzaht6%&K8vqMa~qdTkYr{-2ybG01v2az%| z*NP46@zvDS0HY!{#*47D7wTu>(a~K1#n1Khdc*X%;uqRNNU(eWxZpW029t?+czCYk zGg}y%XV6s?HYASm|Vj|aDW+o=5{XYXZLz=Fx0$@|;7Z%#k z-0C^i7lZQ|iZSZCxeCllG=H^z8j@pSk8yh5Gm#&ad zRYeCu*x8YS(u-n)8(BZeEe;O8&f8_wGdRe4uwMbVF!nICY9|R-uHH}8N)bz7LHKGk z{IVrVIx{C{qaKeR;+4f2D4X`b$Io}~e;v#O%wu#>6lLY*aVaT9MMk7=u%~957&YM< z2{MdB=Ugs}URT1A^cx4n#7XU!{ug`FNo5DNBO???>-B7Dh^Q0|%P*5V;Z%p6%jL~{ z2o_O6u}^brWXz(qP2T*sDzbl;k})TQ<2*+|7{26x4Q0e^_YA9B2^GR9%WR8_iiim(VkI3rdN5~YwlJC*wl5U!kLO-rmz;G4Pe$s@R&$Vc5FCwmo(reN1 zd$XX-WA9clm11oFKoH~%m`i&mDEoGo%#6Ev4fvj2VY*NRV{5=TWv&8@G$0h-b_I(nn0rzbqz(?|KB zsCu^Tbbn=jZLJ4B*xgM4$L`|7iwg^bbslsD6H!AXFTxOJW@9^kH*emgp`~40xJTX- zPQG=FeobL%X{n>Dn+Aw)YikQ&u^W(cIKXV%>F59a!3Ud{CI0c_$K3q*yW=I0Wo3V4ym%r~7en zaRFCmZK@zY|Gy{_3ipGirKKfEpdL0fHsU}4dFK`vhkpLdDC{^Jg}%HvK3RINMhVQ} z_O`Ik3~Em6do9U>;l0 zXg0-Y=)5d5EiImafB@tX@T?ssd|HJ%I1tLnPS5Syl@GJ|P}PC&-<9MP6!u)tq9w$| zA(Bn0>zYPJ(V)=SfTzC8!$V*ig+{H9-J5RmO=8Odt-!5YX2Y(xH9+6u`zzpFx88%> zV{0-5=x94Aa1|95A04klvPU~LJG51x1G%h>i=%p`q5`9fq^)vCp=>KGUQbU?Lm;0X z8ZP|mMIw=eBqXv(B&@Bijph$URkn~|V7;0xF#TV?u=+iC-&5+op{1d%ol#gw3VcF% zc(}SJ=QV#&Rr|(puLDA0&e}U7sKdsBZrcb0F{-HefJUP>7Zw87e&pN~64G2tkb{&| zsO|0TwFTf304x#%3|uMd*ci=JwWFew6YrHU7U@^F_4O&wJD(lzguQ=H?c?kF&2>dp zM@I)S-xeaf-rCh=F(E`yM~UliSnq)ZKOrO~?a0?GxI(uCYJ0AHNIIyo@jMnIOmh;|47Nm z7;#fEdM+bI`l^%qGmsPpir8-!EUCaLMvKins4I2Vl`_w&jMSR$;3gfESF$4qp38Yt zlLW5;;7`!Ljk-T+%=Jj7IMzqEW#-7Di>zjr`#!nrsadAcM#yO|xtun;onL<62+8Vr zwk>`1iX766w~AE7zWsrMhla`&APe?B-|@c(KPTOwJ4EF9N$^VoQ8R_6x1??4r16=Ck66M( z!@+&fcK+|kY0LMP2CUv%j%1ANK!Q72EQWA)eHQkrl*#ottZsy81uc;(Gw!ZN40J)m ztauerHiE%Gc$tNHsk)Jj1PQqlQn#BRkHsB(A3e7c%JgHh@K0-|820F4{}+IqN;p{0xr&4%H|-s08r zgu{)GJPvmdW|KB-19@-SllpZ5!HZwY`$yu)xNfy4c7#b8mm%yDul*A-v)CpF){)3u7=2FEJ`}F16F27i;8&g@x-j`YBVU2_dl3%Acq^ zfj>t^0>UWRxa@b1fBo|I^t7sk$>6_y`7(pQq9Xf$yrDq4OcJ2)(a{%I0Z9!Nt)9$S zS|!}C+IdkyDeJ{`0s`BDj_~K&+F@9%4BTtYEz~Yo35dA8<$L8i) zZHo;J4NiX-I$^&+oqq4{hdQaE>p0>F!P>6S9m&%~7`^!64@eqh{|PK`aBzsbo!#6z z7CIx(e5E0!4m0A<5(S?u`vHsr74i5!R84>0*@YB;eIdy&AOMSh`VG-~ZDMLFqq33~ zP@W9XD$os|)`G@;zIiR*%-p=Szn}EJRw2Xa#l^vReBW}7&nbVE-S2CFrhxm9wH^f8 z?zGTBv^iZ%4dNS5%vuhC)VBIDMZChlH^TDED|{g#q1=*^m7Suk*+yp2MugVaOT2sc zE*9w3n>WNxPy#R+PzA(n!z*mFC#1&jTzqtN^eXlNO}XjXXcks#acRlyS+XdVySsah z%QEri<|ZWz3mI?+ZEZ4=p1Y8Xi;M6#Zx&+2bU@s~V_272X5r^29nA)h{_ue&i_es_ zwzf7w+E*L|1}7`*aZ2FL>x*$yNj7>*6(P5~yXz0u1R9!bm*|KHBG4Ee?Vw|TEh1;o z^BtMEzZF4!XSW`GPQJapO&KA_^@+fCybuQhnm>a^FIowYP5+=ET##0D4c&YAP{G86 z!@$5m-M}CU1O@DzoOoJVS`hzo%OMUJ3U<*6g&oIE@ftgP;WKp=-Q7334GeSIVlN>(N`FSK3WuaTuUC^2Fh3*u4g?-l=J9WPu>2R*EJ;Is1T<#fsj) zA9-1qn@b4nELIfcP}0)UHYw%vo@EY?9{InRX>tWBeid^0NfmE9;~+p2S6We_QEU8i zNZT~6vb>zxO;uNy5y&0r?^OJV{+bQ5K%pPHfS6-zb_%}gJO~Bb4+I&gvAer9P-8D| zYkT|UAZAKRf8g~rG&NyTQijN;s&UVtwW2--Szsow1RmrtSNYRZ*U71=IN+unn@;g( zXJ;uRFwL!*B|=4A4zCUkKjkx3S60IA+#%Rs8B(;d;R4CkpfU8o{p`p->)RG3+%0`8 z5u8tHbv1o|qj~h=N!AG1FwMblWo2!9%YDupBQ=_wL*39gd zYO-hmPt(aY;7nGxw-xmDr%D~nt(AA~ZvlfazqB;ABkAhu8XOWbKb$5D?ifdgt&dD{ zmw=27yU2FgQjPW_(bm?!#mR{TM&Nr-&ts6%f#TzJU)LBLALo*E=!#+lZ9O{^GczEU zQV>l&<_X7`Iy#mdCceL;)|KSg6w%NinVFq^wb;^c-vW}7m;pFL$Evdri@C+3gR-(X z0TGp2jilqS33wmb(a_N?fTZQzs3K4Ahk~M_?fGoOXjseQ;v&5(w0ft9gi$sgFyPA9 z*GBUS;vfdGu^FD6#FPNchBr;E*&A?(9z-Yj3yFvd zogUq c-;XXR_Ek|D&M~s#Af1Oikyn)~mO%vm3nC=Q(EtDd literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.map new file mode 100644 index 00000000..bf6e6f72 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.md5 new file mode 100644 index 00000000..2ca05c83 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.md5 @@ -0,0 +1 @@ +8b57ac3922ea422557f4b5b9fbd7cded \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__BRIEF__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f05143e8cd9a81b7cecfe10cbc52cb57caf3d8af GIT binary patch literal 6091 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY-members.html new file mode 100644 index 00000000..8b4663be --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GFTT_DAISY Member List
+
+
+ +

This is the complete list of members for rtabmap::GFTT_DAISY, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::GFTT_DAISY)rtabmap::GFTT_DAISYinlinevirtual
GFTT(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT)rtabmap::GFTT
GFTT_DAISY(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT_DAISY)rtabmap::GFTT_DAISY
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::GFTTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::GFTT_DAISY)rtabmap::GFTT_DAISYvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~GFTT() (defined in rtabmap::GFTT)rtabmap::GFTTvirtual
~GFTT_DAISY() (defined in rtabmap::GFTT_DAISY)rtabmap::GFTT_DAISYvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY.html new file mode 100644 index 00000000..f2cb8697 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::GFTT_DAISY Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GFTT_DAISY Class Reference
+
+
+ +

GFTT corners + DAISY descriptors (OpenCV 3+ xfeatures2d). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::GFTT_DAISY:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::GFTT_DAISY:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GFTT_DAISY (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::GFTT
+ GFTT (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

GFTT corners + DAISY descriptors (OpenCV 3+ xfeatures2d).

+ +

Definition at line 723 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GFTT_DAISY::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::GFTT.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::GFTT_DAISY::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 730 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.map new file mode 100644 index 00000000..3d2add0c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.md5 new file mode 100644 index 00000000..4180bd05 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.md5 @@ -0,0 +1 @@ +acd7925d4a27c53057c573337726a1c6 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e107cd8a26ac4218250a2e014a31544be6d41946 GIT binary patch literal 6525 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 o!1mP$iTd{sE6|U*{-782|tP literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.map new file mode 100644 index 00000000..3d2add0c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.md5 new file mode 100644 index 00000000..4180bd05 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.md5 @@ -0,0 +1 @@ +acd7925d4a27c53057c573337726a1c6 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__DAISY__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e107cd8a26ac4218250a2e014a31544be6d41946 GIT binary patch literal 6525 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 o!1mP$iTd{sE6|U*{-782|tP literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK-members.html new file mode 100644 index 00000000..c1d85439 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GFTT_FREAK Member List
+
+
+ +

This is the complete list of members for rtabmap::GFTT_FREAK, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::GFTT_FREAK)rtabmap::GFTT_FREAKinlinevirtual
GFTT(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT)rtabmap::GFTT
GFTT_FREAK(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT_FREAK)rtabmap::GFTT_FREAK
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::GFTTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::GFTT_FREAK)rtabmap::GFTT_FREAKvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~GFTT() (defined in rtabmap::GFTT)rtabmap::GFTTvirtual
~GFTT_FREAK() (defined in rtabmap::GFTT_FREAK)rtabmap::GFTT_FREAKvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK.html new file mode 100644 index 00000000..8b27b7c9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::GFTT_FREAK Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GFTT_FREAK Class Reference
+
+
+ +

GFTT corners + FREAK descriptors. + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::GFTT_FREAK:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::GFTT_FREAK:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GFTT_FREAK (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::GFTT
+ GFTT (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

GFTT corners + FREAK descriptors.

+ +

Definition at line 537 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GFTT_FREAK::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::GFTT.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::GFTT_FREAK::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 544 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.map new file mode 100644 index 00000000..ecd8d35c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.md5 new file mode 100644 index 00000000..f8b1d99c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.md5 @@ -0,0 +1 @@ +64e5f6b35c54d56433ee54729aa7a08c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..22b24f4a0e7bfd0d9f42d0ad20def3d671406096 GIT binary patch literal 6376 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.map new file mode 100644 index 00000000..ecd8d35c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.md5 new file mode 100644 index 00000000..f8b1d99c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.md5 @@ -0,0 +1 @@ +64e5f6b35c54d56433ee54729aa7a08c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__FREAK__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..22b24f4a0e7bfd0d9f42d0ad20def3d671406096 GIT binary patch literal 6376 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB-members.html new file mode 100644 index 00000000..2c4b39ec --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GFTT_ORB Member List
+
+
+ +

This is the complete list of members for rtabmap::GFTT_ORB, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::GFTT_ORB)rtabmap::GFTT_ORBinlinevirtual
GFTT(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT)rtabmap::GFTT
GFTT_ORB(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GFTT_ORB)rtabmap::GFTT_ORB
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::GFTTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::GFTT_ORB)rtabmap::GFTT_ORBvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~GFTT() (defined in rtabmap::GFTT)rtabmap::GFTTvirtual
~GFTT_ORB() (defined in rtabmap::GFTT_ORB)rtabmap::GFTT_ORBvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB.html b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB.html new file mode 100644 index 00000000..fb48f217 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::GFTT_ORB Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GFTT_ORB Class Reference
+
+
+ +

GFTT corners + ORB descriptors (common default when SURF is unavailable). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::GFTT_ORB:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::GFTT_ORB:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GFTT_ORB (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::GFTT
+ GFTT (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

GFTT corners + ORB descriptors (common default when SURF is unavailable).

+ +

Definition at line 581 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GFTT_ORB::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::GFTT.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::GFTT_ORB::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 588 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.map new file mode 100644 index 00000000..7fb9f87d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.md5 new file mode 100644 index 00000000..80e7ac14 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.md5 @@ -0,0 +1 @@ +793e800baefb515ee99a2226b4f2ec5d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9222b2ff3d160dbe7ff824632c948e879f41f4ec GIT binary patch literal 6209 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.md5 new file mode 100644 index 00000000..80e7ac14 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.md5 @@ -0,0 +1 @@ +793e800baefb515ee99a2226b4f2ec5d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__ORB__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9222b2ff3d160dbe7ff824632c948e879f41f4ec GIT binary patch literal 6209 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.md5 new file mode 100644 index 00000000..25dae58f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.md5 @@ -0,0 +1 @@ +db11e38c00aeb2804a24a394c9cc7674 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..557b6a77ff4b3b83dcdbc764e7e7d1368bc52ef6 GIT binary patch literal 4014 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 + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.md5 new file mode 100644 index 00000000..3a00b07c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.md5 @@ -0,0 +1 @@ +e3a9c71ccd759b43992c038a47127bf0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GFTT__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ca3310fe5d72220b4eae457e414eff0eafcf9e87 GIT binary patch literal 13971 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GPS-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GPS-members.html new file mode 100644 index 00000000..deaa3f7c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GPS-members.html @@ -0,0 +1,125 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GPS Member List
+
+
+ +

This is the complete list of members for rtabmap::GPS, including all inherited members.

+ + + + + + + + + + +
altitude() constrtabmap::GPSinline
bearing() constrtabmap::GPSinline
error() constrtabmap::GPSinline
GPS()rtabmap::GPSinline
GPS(const double &stamp, const double &longitude, const double &latitude, const double &altitude, const double &error, const double &bearing)rtabmap::GPSinline
latitude() constrtabmap::GPSinline
longitude() constrtabmap::GPSinline
stamp() constrtabmap::GPSinline
toGeodeticCoords() constrtabmap::GPSinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GPS.html b/preview/pr-1773/api/latest/classrtabmap_1_1GPS.html new file mode 100644 index 00000000..ae3b6049 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GPS.html @@ -0,0 +1,459 @@ + + + + + + + + +RTAB-Map: rtabmap::GPS Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GPS Class Reference
+
+
+ +

WGS84 GPS fix attached to a sensor sample or graph node. + More...

+ +

#include <GPS.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 GPS ()
 Default-constructs a fix at the origin with zero stamp and error.
 
 GPS (const double &stamp, const double &longitude, const double &latitude, const double &altitude, const double &error, const double &bearing)
 Constructs a GPS fix.
 
const double & stamp () const
 
const double & longitude () const
 
const double & latitude () const
 
const double & altitude () const
 
const double & error () const
 
const double & bearing () const
 
GeodeticCoords toGeodeticCoords () const
 
+

Detailed Description

+

WGS84 GPS fix attached to a sensor sample or graph node.

+

Stores a timestamped geographic position with horizontal accuracy and bearing. Values are persisted in the database as six doubles in the order stamp, longitude, latitude, altitude, error, bearing.

+
See also
SensorData::gps()
+
+GeodeticCoords
+ +

Definition at line 46 of file GPS.h.

+

Constructor & Destructor Documentation

+ +

◆ GPS() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::GPS::GPS ()
+
+inline
+
+ +

Default-constructs a fix at the origin with zero stamp and error.

+ +

Definition at line 50 of file GPS.h.

+ +
+
+ +

◆ GPS() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::GPS::GPS (const double & stamp,
const double & longitude,
const double & latitude,
const double & altitude,
const double & error,
const double & bearing 
)
+
+inline
+
+ +

Constructs a GPS fix.

+
Parameters
+ + + + + + + +
stampTimestamp in seconds.
longitudeLongitude in decimal degrees (DD, east positive).
latitudeLatitude in decimal degrees (DD, north positive).
altitudeAltitude in meters above the WGS84 ellipsoid.
errorHorizontal position error radius in meters.
bearingHeading in degrees, 0 = north, increasing clockwise.
+
+
+ +

Definition at line 67 of file GPS.h.

+ +
+
+

Member Function Documentation

+ +

◆ stamp()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GPS::stamp () const
+
+inline
+
+
Returns
Timestamp in seconds.
+ +

Definition at line 81 of file GPS.h.

+ +
+
+ +

◆ longitude()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GPS::longitude () const
+
+inline
+
+
Returns
Longitude in decimal degrees (DD).
+ +

Definition at line 83 of file GPS.h.

+ +
+
+ +

◆ latitude()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GPS::latitude () const
+
+inline
+
+
Returns
Latitude in decimal degrees (DD).
+ +

Definition at line 85 of file GPS.h.

+ +
+
+ +

◆ altitude()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GPS::altitude () const
+
+inline
+
+
Returns
Altitude in meters.
+ +

Definition at line 87 of file GPS.h.

+ +
+
+ +

◆ error()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GPS::error () const
+
+inline
+
+
Returns
Horizontal position error in meters.
+ +

Definition at line 89 of file GPS.h.

+ +
+
+ +

◆ bearing()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GPS::bearing () const
+
+inline
+
+
Returns
Bearing in degrees (north = 0, clockwise).
+ +

Definition at line 91 of file GPS.h.

+ +
+
+ +

◆ toGeodeticCoords()

+ +
+
+ + + + + +
+ + + + + + + +
GeodeticCoords rtabmap::GPS::toGeodeticCoords () const
+
+inline
+
+
Returns
GeodeticCoords built from latitude(), longitude() and altitude().
+ +

Definition at line 96 of file GPS.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/GPS.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GPS.js b/preview/pr-1773/api/latest/classrtabmap_1_1GPS.js new file mode 100644 index 00000000..cdf79855 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GPS.js @@ -0,0 +1,12 @@ +var classrtabmap_1_1GPS = +[ + [ "GPS", "classrtabmap_1_1GPS.html#a4ea914df744ae5a9ff60eff6bb2c734d", null ], + [ "GPS", "classrtabmap_1_1GPS.html#a488bb172e3b8836387e0994a31e709ef", null ], + [ "stamp", "classrtabmap_1_1GPS.html#a8620d60c593c641eb3be44ae41bec799", null ], + [ "longitude", "classrtabmap_1_1GPS.html#ac848af004f6581d42d55568d72332793", null ], + [ "latitude", "classrtabmap_1_1GPS.html#a9b20f8a5bf2cba909b53ecd83d2b4c08", null ], + [ "altitude", "classrtabmap_1_1GPS.html#a50ae4bb38ab5dc1fef49ff367b602adc", null ], + [ "error", "classrtabmap_1_1GPS.html#acf16049cca9dfc2fdb46705818f3bb34", null ], + [ "bearing", "classrtabmap_1_1GPS.html#a9285c1d2e97f83dc0b8df3666b912169", null ], + [ "toGeodeticCoords", "classrtabmap_1_1GPS.html#a2eeb2607721870789914f12688cbc375", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator-members.html new file mode 100644 index 00000000..ec66e495 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator-members.html @@ -0,0 +1,130 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GainCompensator Member List
+
+
+ +

This is the complete list of members for rtabmap::GainCompensator, including all inherited members.

+ + + + + + + + + + + + + + + +
apply(int id, pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, bool rgb=true) const (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
apply(int id, pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool rgb=true) const (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
apply(int id, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool rgb=true) const (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
apply(int id, cv::Mat &image, bool rgb=true) const (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
feed(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudA, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudB, const Transform &transformB) (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
feed(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudA, const pcl::IndicesPtr &indicesA, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudB, const pcl::IndicesPtr &indicesB, const Transform &transformB) (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
feed(const std::map< int, pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds, const std::multimap< int, Link > &links) (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
feed(const std::map< int, pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds, const std::map< int, pcl::IndicesPtr > &indices, const std::multimap< int, Link > &links) (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
feed(const std::map< int, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr > &clouds, const std::map< int, pcl::IndicesPtr > &indices, const std::multimap< int, Link > &links) (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
feed(const std::map< int, std::pair< pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr, pcl::IndicesPtr > > &clouds, const std::multimap< int, Link > &links) (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
GainCompensator(double maxCorrespondenceDistance=0.02, double minOverlap=0.0, double alpha=0.01, double beta=10) (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
getGain(int id, double *r=0, double *g=0, double *b=0) const (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
getIndex(int id) const (defined in rtabmap::GainCompensator)rtabmap::GainCompensator
~GainCompensator() (defined in rtabmap::GainCompensator)rtabmap::GainCompensatorvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator.html b/preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator.html new file mode 100644 index 00000000..4a7853bf --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GainCompensator.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: rtabmap::GainCompensator Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GainCompensator Class Reference
+
+
+ +

#include <GainCompensator.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GainCompensator (double maxCorrespondenceDistance=0.02, double minOverlap=0.0, double alpha=0.01, double beta=10)
 
+void feed (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudA, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudB, const Transform &transformB)
 
+void feed (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudA, const pcl::IndicesPtr &indicesA, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloudB, const pcl::IndicesPtr &indicesB, const Transform &transformB)
 
+void feed (const std::map< int, pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds, const std::multimap< int, Link > &links)
 
+void feed (const std::map< int, pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds, const std::map< int, pcl::IndicesPtr > &indices, const std::multimap< int, Link > &links)
 
+void feed (const std::map< int, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr > &clouds, const std::map< int, pcl::IndicesPtr > &indices, const std::multimap< int, Link > &links)
 
+void feed (const std::map< int, std::pair< pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr, pcl::IndicesPtr > > &clouds, const std::multimap< int, Link > &links)
 
+void apply (int id, pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, bool rgb=true) const
 
+void apply (int id, pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool rgb=true) const
 
+void apply (int id, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool rgb=true) const
 
+void apply (int id, cv::Mat &image, bool rgb=true) const
 
+double getGain (int id, double *r=0, double *g=0, double *b=0) const
 
+int getIndex (int id) const
 
+

Detailed Description

+

Works like cv::GainCompensator but with point clouds

+ +

Definition at line 44 of file GainCompensator.h.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords-members.html new file mode 100644 index 00000000..e4f6c96f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords-members.html @@ -0,0 +1,130 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GeodeticCoords Member List
+
+
+ +

This is the complete list of members for rtabmap::GeodeticCoords, including all inherited members.

+ + + + + + + + + + + + + + + +
altitude() constrtabmap::GeodeticCoordsinline
ENU_WGS84ToGeocentric_WGS84(const cv::Point3d &enu, const GeodeticCoords &origin)rtabmap::GeodeticCoordsstatic
fromENU_WGS84(const cv::Point3d &enu, const GeodeticCoords &origin)rtabmap::GeodeticCoords
fromGeocentric_WGS84(const cv::Point3d &geocentric)rtabmap::GeodeticCoords
Geocentric_WGS84ToENU_WGS84(const cv::Point3d &geocentric_WGS84, const cv::Point3d &origin_geocentric_WGS84, const GeodeticCoords &origin)rtabmap::GeodeticCoordsstatic
GeodeticCoords()rtabmap::GeodeticCoords
GeodeticCoords(double latitude, double longitude, double altitude)rtabmap::GeodeticCoords
latitude() constrtabmap::GeodeticCoordsinline
longitude() constrtabmap::GeodeticCoordsinline
setAltitude(const double &value)rtabmap::GeodeticCoordsinline
setLatitude(const double &value)rtabmap::GeodeticCoordsinline
setLongitude(const double &value)rtabmap::GeodeticCoordsinline
toENU_WGS84(const GeodeticCoords &origin) constrtabmap::GeodeticCoords
toGeocentric_WGS84() constrtabmap::GeodeticCoords
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.html b/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.html new file mode 100644 index 00000000..83d21e23 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.html @@ -0,0 +1,520 @@ + + + + + + + + +RTAB-Map: rtabmap::GeodeticCoords Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GeodeticCoords Class Reference
+
+
+ +

WGS84 geodetic latitude, longitude and altitude with coordinate conversions. + More...

+ +

#include <GeodeticCoords.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GeodeticCoords ()
 Default-constructs coordinates at (0°, 0°, 0 m).
 
 GeodeticCoords (double latitude, double longitude, double altitude)
 Constructs geodetic coordinates.
 
const double & latitude () const
 
const double & longitude () const
 
const double & altitude () const
 
void setLatitude (const double &value)
 Sets latitude in decimal degrees.
 
void setLongitude (const double &value)
 Sets longitude in decimal degrees.
 
void setAltitude (const double &value)
 Sets altitude in meters.
 
cv::Point3d toGeocentric_WGS84 () const
 
cv::Point3d toENU_WGS84 (const GeodeticCoords &origin) const
 
+void fromGeocentric_WGS84 (const cv::Point3d &geocentric)
 Sets this point from ECEF geocentric geocentric coordinates.
 
+void fromENU_WGS84 (const cv::Point3d &enu, const GeodeticCoords &origin)
 Sets this point from an ENU offset relative to origin.
 
+ + + + + +

+Static Public Member Functions

static cv::Point3d ENU_WGS84ToGeocentric_WGS84 (const cv::Point3d &enu, const GeodeticCoords &origin)
 
static cv::Point3d Geocentric_WGS84ToENU_WGS84 (const cv::Point3d &geocentric_WGS84, const cv::Point3d &origin_geocentric_WGS84, const GeodeticCoords &origin)
 
+

Detailed Description

+

WGS84 geodetic latitude, longitude and altitude with coordinate conversions.

+

Conversions follow the WGS84 reference ellipsoid (MRPT-derived implementation). ENU frames use east = X, north = Y, up = Z relative to a local origin.

+
See also
GPS::toGeodeticCoords()
+ +

Definition at line 61 of file GeodeticCoords.h.

+

Constructor & Destructor Documentation

+ +

◆ GeodeticCoords()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::GeodeticCoords::GeodeticCoords (double latitude,
double longitude,
double altitude 
)
+
+ +

Constructs geodetic coordinates.

+
Parameters
+ + + + +
latitudeLatitude in decimal degrees (DD, north positive).
longitudeLongitude in decimal degrees (DD, east positive).
altitudeAltitude in meters above the WGS84 ellipsoid.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ latitude()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GeodeticCoords::latitude () const
+
+inline
+
+
Returns
Latitude in decimal degrees.
+ +

Definition at line 75 of file GeodeticCoords.h.

+ +
+
+ +

◆ longitude()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GeodeticCoords::longitude () const
+
+inline
+
+
Returns
Longitude in decimal degrees.
+ +

Definition at line 77 of file GeodeticCoords.h.

+ +
+
+ +

◆ altitude()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::GeodeticCoords::altitude () const
+
+inline
+
+
Returns
Altitude in meters.
+ +

Definition at line 79 of file GeodeticCoords.h.

+ +
+
+ +

◆ setLatitude()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::GeodeticCoords::setLatitude (const double & value)
+
+inline
+
+ +

Sets latitude in decimal degrees.

+ +

Definition at line 82 of file GeodeticCoords.h.

+ +
+
+ +

◆ setLongitude()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::GeodeticCoords::setLongitude (const double & value)
+
+inline
+
+ +

Sets longitude in decimal degrees.

+ +

Definition at line 84 of file GeodeticCoords.h.

+ +
+
+ +

◆ setAltitude()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::GeodeticCoords::setAltitude (const double & value)
+
+inline
+
+ +

Sets altitude in meters.

+ +

Definition at line 86 of file GeodeticCoords.h.

+ +
+
+ +

◆ toGeocentric_WGS84()

+ +
+
+ + + + + + + +
cv::Point3d rtabmap::GeodeticCoords::toGeocentric_WGS84 () const
+
+
Returns
ECEF geocentric coordinates (meters) in the WGS84 frame.
+ +
+
+ +

◆ toENU_WGS84()

+ +
+
+ + + + + + + + +
cv::Point3d rtabmap::GeodeticCoords::toENU_WGS84 (const GeodeticCoords & origin) const
+
+
Returns
ENU offset (meters) from origin to this point. East = X, north = Y, up = Z.
+ +
+
+ +

◆ ENU_WGS84ToGeocentric_WGS84()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static cv::Point3d rtabmap::GeodeticCoords::ENU_WGS84ToGeocentric_WGS84 (const cv::Point3d & enu,
const GeodeticCoords & origin 
)
+
+static
+
+
Returns
ECEF geocentric coordinates of ENU point enu relative to origin.
+ +
+
+ +

◆ Geocentric_WGS84ToENU_WGS84()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static cv::Point3d rtabmap::GeodeticCoords::Geocentric_WGS84ToENU_WGS84 (const cv::Point3d & geocentric_WGS84,
const cv::Point3d & origin_geocentric_WGS84,
const GeodeticCoords & origin 
)
+
+static
+
+
Returns
ENU offset from geocentric origin_geocentric_WGS84 to geocentric_WGS84.
+
Parameters
+ + +
originGeodetic origin used to define the local ENU basis.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.js b/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.js new file mode 100644 index 00000000..4a9ed5b9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GeodeticCoords.js @@ -0,0 +1,15 @@ +var classrtabmap_1_1GeodeticCoords = +[ + [ "GeodeticCoords", "classrtabmap_1_1GeodeticCoords.html#a41294c28a20d82ca1cee7f7038255d64", null ], + [ "GeodeticCoords", "classrtabmap_1_1GeodeticCoords.html#a0e70bc5a1464b930fafc579322912a68", null ], + [ "latitude", "classrtabmap_1_1GeodeticCoords.html#ac6f662384e5b4ac613d5678307eb95a7", null ], + [ "longitude", "classrtabmap_1_1GeodeticCoords.html#a68e16e48c8ede571e20e9889547fd509", null ], + [ "altitude", "classrtabmap_1_1GeodeticCoords.html#a3a0d110deb25400137d4fe552742970a", null ], + [ "setLatitude", "classrtabmap_1_1GeodeticCoords.html#a9113dd2d169f83e68b1dd0b12f8f24da", null ], + [ "setLongitude", "classrtabmap_1_1GeodeticCoords.html#aac1f8d7bcf0aff48aa8c7aefa91c72d3", null ], + [ "setAltitude", "classrtabmap_1_1GeodeticCoords.html#afe3c631b5f01246840f8591fc8dc834e", null ], + [ "toGeocentric_WGS84", "classrtabmap_1_1GeodeticCoords.html#ae92c7ff2c0b5c5a41902bdfd589d5c10", null ], + [ "toENU_WGS84", "classrtabmap_1_1GeodeticCoords.html#aedf48d8bfb2c8c181b1382919bf7b44c", null ], + [ "fromGeocentric_WGS84", "classrtabmap_1_1GeodeticCoords.html#ae37435ee904b9782fcddbf0f72f388bd", null ], + [ "fromENU_WGS84", "classrtabmap_1_1GeodeticCoords.html#abc69e5c7f8e473fe6788042237992d43", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor-members.html new file mode 100644 index 00000000..baa5cb29 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor-members.html @@ -0,0 +1,122 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GlobalDescriptor Member List
+
+
+ +

This is the complete list of members for rtabmap::GlobalDescriptor, including all inherited members.

+ + + + + + + +
data() const (defined in rtabmap::GlobalDescriptor)rtabmap::GlobalDescriptorinline
GlobalDescriptor(int type, const cv::Mat &data, const cv::Mat &info=cv::Mat()) (defined in rtabmap::GlobalDescriptor)rtabmap::GlobalDescriptorinline
GlobalDescriptor() (defined in rtabmap::GlobalDescriptor)rtabmap::GlobalDescriptorinline
info() const (defined in rtabmap::GlobalDescriptor)rtabmap::GlobalDescriptorinline
type() const (defined in rtabmap::GlobalDescriptor)rtabmap::GlobalDescriptorinline
~GlobalDescriptor() (defined in rtabmap::GlobalDescriptor)rtabmap::GlobalDescriptorinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor.html b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor.html new file mode 100644 index 00000000..1b0cf7d8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptor.html @@ -0,0 +1,316 @@ + + + + + + + + +RTAB-Map: rtabmap::GlobalDescriptor Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GlobalDescriptor Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

 GlobalDescriptor (int type, const cv::Mat &data, const cv::Mat &info=cv::Mat())
 
int type () const
 
const cv::Mat info () const
 
const cv::Mat data () const
 
+

Detailed Description

+
+

Definition at line 35 of file GlobalDescriptor.h.

+

Constructor & Destructor Documentation

+ +

◆ GlobalDescriptor() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::GlobalDescriptor::GlobalDescriptor (int type,
const cv::Mat & data,
const cv::Mat & info = cv::Mat() 
)
+
+inline
+
+ +

Definition at line 39 of file GlobalDescriptor.h.

+ +
+
+ +

◆ GlobalDescriptor() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::GlobalDescriptor::GlobalDescriptor ()
+
+inline
+
+ +

Definition at line 44 of file GlobalDescriptor.h.

+ +
+
+ +

◆ ~GlobalDescriptor()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::GlobalDescriptor::~GlobalDescriptor ()
+
+inlinevirtual
+
+ +

Definition at line 47 of file GlobalDescriptor.h.

+ +
+
+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::GlobalDescriptor::type () const
+
+inline
+
+ +

Definition at line 49 of file GlobalDescriptor.h.

+ +
+
+ +

◆ info()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat rtabmap::GlobalDescriptor::info () const
+
+inline
+
+ +

Definition at line 50 of file GlobalDescriptor.h.

+ +
+
+ +

◆ data()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat rtabmap::GlobalDescriptor::data () const
+
+inline
+
+ +

Definition at line 51 of file GlobalDescriptor.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor-members.html new file mode 100644 index 00000000..e724ddae --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor-members.html @@ -0,0 +1,127 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GlobalDescriptorExtractor Member List
+
+
+ +

This is the complete list of members for rtabmap::GlobalDescriptorExtractor, including all inherited members.

+ + + + + + + + + + + + +
create(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorstatic
create(GlobalDescriptorExtractor::Type type, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorstatic
extract(const SensorData &data) const =0 (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorpure virtual
getType() const =0 (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorpure virtual
GlobalDescriptorExtractor(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorprotected
kPyDescriptor enum value (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractor
kUndef enum value (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractor
parseParameters(const ParametersMap &parameters) (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorinlinevirtual
Type enum name (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractor
typeName(Type type) (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorinlinestatic
~GlobalDescriptorExtractor() (defined in rtabmap::GlobalDescriptorExtractor)rtabmap::GlobalDescriptorExtractorvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor.html b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor.html new file mode 100644 index 00000000..fa1c5f41 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalDescriptorExtractor.html @@ -0,0 +1,236 @@ + + + + + + + + +RTAB-Map: rtabmap::GlobalDescriptorExtractor Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GlobalDescriptorExtractor Class Referenceabstract
+
+
+ + + + +

+Public Types

enum  Type { kUndef =0 +, kPyDescriptor =1 + }
 
+ + + + + + + +

+Public Member Functions

+virtual GlobalDescriptor extract (const SensorData &data) const =0
 
virtual void parseParameters (const ParametersMap &parameters)
 
+virtual GlobalDescriptorExtractor::Type getType () const =0
 
+ + + + + + + +

+Static Public Member Functions

static std::string typeName (Type type)
 
+static GlobalDescriptorExtractor * create (const ParametersMap &parameters=ParametersMap())
 
+static GlobalDescriptorExtractor * create (GlobalDescriptorExtractor::Type type, const ParametersMap &parameters=ParametersMap())
 
+ + + +

+Protected Member Functions

+ GlobalDescriptorExtractor (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+
+

Definition at line 40 of file GlobalDescriptorExtractor.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::GlobalDescriptorExtractor::Type
+
+ +

Definition at line 42 of file GlobalDescriptorExtractor.h.

+ +
+
+

Member Function Documentation

+ +

◆ typeName()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::GlobalDescriptorExtractor::typeName (Type type)
+
+inlinestatic
+
+ +

Definition at line 46 of file GlobalDescriptorExtractor.h.

+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GlobalDescriptorExtractor::parseParameters (const ParametersMap & parameters)
+
+inlinevirtual
+
+ +

Definition at line 64 of file GlobalDescriptorExtractor.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap-members.html new file mode 100644 index 00000000..1d6c0543 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap-members.html @@ -0,0 +1,145 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GlobalMap Member List
+
+
+ +

This is the complete list of members for rtabmap::GlobalMap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addAssembledNode(int id, const Transform &pose)rtabmap::GlobalMapprotected
addedNodes() constrtabmap::GlobalMapinline
assemble(const std::list< std::pair< int, Transform > > &newPoses)=0rtabmap::GlobalMapprotectedpure virtual
assembledNodes() constrtabmap::GlobalMapinlineprotected
cache() constrtabmap::GlobalMapinlineprotected
cellSize_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
clear()rtabmap::GlobalMapvirtual
fullUpdateNeeded(const std::map< int, Transform > &poses) constrtabmap::GlobalMap
getCellSize() constrtabmap::GlobalMapinline
getGridMax(double &x, double &y) constrtabmap::GlobalMapinline
getGridMax(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getMemoryUsed() constrtabmap::GlobalMapvirtual
getUpdateError() constrtabmap::GlobalMapinline
GlobalMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())rtabmap::GlobalMapprotected
isNodeAssembled(int id)rtabmap::GlobalMapinlineprotected
logodds(double probability)rtabmap::GlobalMapinlinestatic
logOddsClampingMax_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsClampingMin_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsHit_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsMiss_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
maxValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
minValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
occupancyThr_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
probability(double logodds)rtabmap::GlobalMapinlinestatic
update(const std::map< int, Transform > &poses)rtabmap::GlobalMap
updateError_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
~GlobalMap() (defined in rtabmap::GlobalMap)rtabmap::GlobalMapvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.html b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.html new file mode 100644 index 00000000..dd478b6d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.html @@ -0,0 +1,1041 @@ + + + + + + + + +RTAB-Map: rtabmap::GlobalMap Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract base for assembling per-node LocalGrid data into a global map. + More...

+ +

#include <GlobalMap.h>

+
+Inheritance diagram for rtabmap::GlobalMap:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool fullUpdateNeeded (const std::map< int, Transform > &poses) const
 True if the map should be rebuilt from cache (loop closure or disjoint graph).
 
bool update (const std::map< int, Transform > &poses)
 Incrementally assemble new nodes from poses.
 
virtual void clear ()
 Clears assembled nodes and grid bounds; does not clear LocalGridCache.
 
float getCellSize () const
 
float getUpdateError () const
 
const std::map< int, Transform > & addedNodes () const
 
void getGridMin (double &x, double &y) const
 2D grid minimum (x, y) in meters.
 
void getGridMax (double &x, double &y) const
 2D grid maximum (x, y) in meters.
 
void getGridMin (double &x, double &y, double &z) const
 3D grid minimum (x, y, z) in meters.
 
void getGridMax (double &x, double &y, double &z) const
 3D grid maximum (x, y, z) in meters.
 
virtual unsigned long getMemoryUsed () const
 Approximate memory used by assembled-node bookkeeping (bytes).
 
+ + + + + + + +

+Static Public Member Functions

static float logodds (double probability)
 Converts probability in (0, 1) to log-odds.
 
static double probability (double logodds)
 Converts log-odds back to probability in (0, 1).
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

 GlobalMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 Constructs the base map; subclasses call from their constructor.
 
virtual void assemble (const std::list< std::pair< int, Transform > > &newPoses)=0
 Subclass hook: merge newPoses into the global map; call addAssembledNode().
 
const std::map< int, LocalGrid > & cache () const
 
const std::map< int, Transform > & assembledNodes () const
 
bool isNodeAssembled (int id)
 
+void addAssembledNode (int id, const Transform &pose)
 Records a successfully assembled node (ids <= 0 are ignored).
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

float cellSize_
 
float updateError_
 
float occupancyThr_
 
float logOddsHit_
 
float logOddsMiss_
 
float logOddsClampingMin_
 
float logOddsClampingMax_
 
double minValues_ [3]
 
double maxValues_ [3]
 
+

Detailed Description

+

Abstract base for assembling per-node LocalGrid data into a global map.

+

Subclasses (OccupancyGrid, OctoMap, GridMap, CloudMap) implement assemble() to merge new node poses from LocalGridCache into their representation.

+

update() decides which poses need assembly (not yet in addedNodes(), present in cache, id > 0) and may call clear() when fullUpdateNeeded() detects graph optimization or a disjoint pose set (see Parameters::kGridGlobalUpdateError()).

+

Log-odds helpers logodds() and probability() convert between occupancy probability and the internal log-odds representation used for global hit/miss/clamping parameters (GridGlobal/Prob*).

+ +

Definition at line 55 of file GlobalMap.h.

+

Constructor & Destructor Documentation

+ +

◆ GlobalMap()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::GlobalMap::GlobalMap (const LocalGridCache * cache,
const ParametersMap & parameters = ParametersMap() 
)
+
+protected
+
+ +

Constructs the base map; subclasses call from their constructor.

+
Parameters
+ + + +
cacheNon-null cache of per-node local grids.
parametersOptional Grid/ and GridGlobal/ parameter overrides.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ logodds()

+ +
+
+ + + + + +
+ + + + + + + + +
static float rtabmap::GlobalMap::logodds (double probability)
+
+inlinestatic
+
+ +

Converts probability in (0, 1) to log-odds.

+ +

Definition at line 59 of file GlobalMap.h.

+ +
+
+ +

◆ probability()

+ +
+
+ + + + + +
+ + + + + + + + +
static double rtabmap::GlobalMap::probability (double logodds)
+
+inlinestatic
+
+ +

Converts log-odds back to probability in (0, 1).

+ +

Definition at line 65 of file GlobalMap.h.

+ +
+
+ +

◆ fullUpdateNeeded()

+ +
+
+ + + + + + + + +
bool rtabmap::GlobalMap::fullUpdateNeeded (const std::map< int, Transform > & poses) const
+
+ +

True if the map should be rebuilt from cache (loop closure or disjoint graph).

+

Compares poses to addedNodes() using getUpdateError(), which is set from Grid/GlobalUpdateError (Parameters::kGridGlobalUpdateError()): if any assembled node's pose moved farther than that threshold (meters), or if none of the assembled nodes appear in poses, returns true and update() will call clear() first.

+
Parameters
+ + +
posesCurrent graph poses (node id → transform).
+
+
+ +
+
+ +

◆ update()

+ +
+
+ + + + + + + + +
bool rtabmap::GlobalMap::update (const std::map< int, Transform > & poses)
+
+ +

Incrementally assemble new nodes from poses.

+
Parameters
+ + +
posesGraph poses; ids > 0 with a cached LocalGrid are candidates.
+
+
+
Returns
True if assemble() was called (at least one new pose processed).
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void rtabmap::GlobalMap::clear ()
+
+virtual
+
+ +

Clears assembled nodes and grid bounds; does not clear LocalGridCache.

+ +

Reimplemented in rtabmap::CloudMap, rtabmap::GridMap, rtabmap::OccupancyGrid, and rtabmap::OctoMap.

+ +
+
+ +

◆ getCellSize()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::GlobalMap::getCellSize () const
+
+inline
+
+
Returns
Grid cell size in meters (Grid/CellSize).
+ +

Definition at line 96 of file GlobalMap.h.

+ +
+
+ +

◆ getUpdateError()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::GlobalMap::getUpdateError () const
+
+inline
+
+
Returns
Pose change threshold for full rebuild (Grid/GlobalUpdateError).
+ +

Definition at line 98 of file GlobalMap.h.

+ +
+
+ +

◆ addedNodes()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Transform > & rtabmap::GlobalMap::addedNodes () const
+
+inline
+
+
Returns
Poses of nodes already assembled into the global map.
+ +

Definition at line 100 of file GlobalMap.h.

+ +
+
+ +

◆ getGridMin() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::GlobalMap::getGridMin (double & x,
double & y 
) const
+
+inline
+
+ +

2D grid minimum (x, y) in meters.

+ +

Definition at line 103 of file GlobalMap.h.

+ +
+
+ +

◆ getGridMax() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::GlobalMap::getGridMax (double & x,
double & y 
) const
+
+inline
+
+ +

2D grid maximum (x, y) in meters.

+ +

Definition at line 105 of file GlobalMap.h.

+ +
+
+ +

◆ getGridMin() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::GlobalMap::getGridMin (double & x,
double & y,
double & z 
) const
+
+inline
+
+ +

3D grid minimum (x, y, z) in meters.

+ +

Definition at line 107 of file GlobalMap.h.

+ +
+
+ +

◆ getGridMax() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::GlobalMap::getGridMax (double & x,
double & y,
double & z 
) const
+
+inline
+
+ +

3D grid maximum (x, y, z) in meters.

+ +

Definition at line 109 of file GlobalMap.h.

+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual unsigned long rtabmap::GlobalMap::getMemoryUsed () const
+
+virtual
+
+ +

Approximate memory used by assembled-node bookkeeping (bytes).

+ +

Reimplemented in rtabmap::CloudMap, rtabmap::OccupancyGrid, and rtabmap::OctoMap.

+ +
+
+ +

◆ assemble()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GlobalMap::assemble (const std::list< std::pair< int, Transform > > & newPoses)
+
+protectedpure virtual
+
+ +

Subclass hook: merge newPoses into the global map; call addAssembledNode().

+ +

Implemented in rtabmap::CloudMap, rtabmap::GridMap, rtabmap::OccupancyGrid, and rtabmap::OctoMap.

+ +
+
+ +

◆ cache()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, LocalGrid > & rtabmap::GlobalMap::cache () const
+
+inlineprotected
+
+
Returns
Cached local grids keyed by node id.
+ +

Definition at line 126 of file GlobalMap.h.

+ +
+
+ +

◆ assembledNodes()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Transform > & rtabmap::GlobalMap::assembledNodes () const
+
+inlineprotected
+
+
Returns
Poses of nodes already assembled (same as addedNodes()).
+ +

Definition at line 129 of file GlobalMap.h.

+ +
+
+ +

◆ isNodeAssembled()

+ +
+
+ + + + + +
+ + + + + + + + +
bool rtabmap::GlobalMap::isNodeAssembled (int id)
+
+inlineprotected
+
+
Returns
True if id is already in the assembled set.
+ +

Definition at line 131 of file GlobalMap.h.

+ +
+
+

Member Data Documentation

+ +

◆ cellSize_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::GlobalMap::cellSize_
+
+protected
+
+ +

Definition at line 136 of file GlobalMap.h.

+ +
+
+ +

◆ updateError_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::GlobalMap::updateError_
+
+protected
+
+ +

Definition at line 137 of file GlobalMap.h.

+ +
+
+ +

◆ occupancyThr_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::GlobalMap::occupancyThr_
+
+protected
+
+ +

Definition at line 139 of file GlobalMap.h.

+ +
+
+ +

◆ logOddsHit_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::GlobalMap::logOddsHit_
+
+protected
+
+ +

Definition at line 140 of file GlobalMap.h.

+ +
+
+ +

◆ logOddsMiss_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::GlobalMap::logOddsMiss_
+
+protected
+
+ +

Definition at line 141 of file GlobalMap.h.

+ +
+
+ +

◆ logOddsClampingMin_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::GlobalMap::logOddsClampingMin_
+
+protected
+
+ +

Definition at line 142 of file GlobalMap.h.

+ +
+
+ +

◆ logOddsClampingMax_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::GlobalMap::logOddsClampingMax_
+
+protected
+
+ +

Definition at line 143 of file GlobalMap.h.

+ +
+
+ +

◆ minValues_

+ +
+
+ + + + + +
+ + + + +
double rtabmap::GlobalMap::minValues_[3]
+
+protected
+
+ +

Definition at line 145 of file GlobalMap.h.

+ +
+
+ +

◆ maxValues_

+ +
+
+ + + + + +
+ + + + +
double rtabmap::GlobalMap::maxValues_[3]
+
+protected
+
+ +

Definition at line 146 of file GlobalMap.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.js b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.js new file mode 100644 index 00000000..2e407d42 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap.js @@ -0,0 +1,20 @@ +var classrtabmap_1_1GlobalMap = +[ + [ "GlobalMap", "classrtabmap_1_1GlobalMap.html#a03581caaa2a313b131726af4e4a6b714", null ], + [ "fullUpdateNeeded", "classrtabmap_1_1GlobalMap.html#a11e9ba83337edf7f08f3c50064be028a", null ], + [ "update", "classrtabmap_1_1GlobalMap.html#aa21a1e3baba94ded5663a8057a3b8cd6", null ], + [ "clear", "classrtabmap_1_1GlobalMap.html#aa6701a09e2532877e73d5b1ba8cb1213", null ], + [ "getCellSize", "classrtabmap_1_1GlobalMap.html#a445f18d347d5624a012f756eb9fe5320", null ], + [ "getUpdateError", "classrtabmap_1_1GlobalMap.html#a99c3840a89e76a091cf59cfaf1a8bcc4", null ], + [ "addedNodes", "classrtabmap_1_1GlobalMap.html#a98c2c10030cfa64c1b72d17f046243f4", null ], + [ "getGridMin", "classrtabmap_1_1GlobalMap.html#aaf028c4c070aa8568eaaf3dae4b926ee", null ], + [ "getGridMax", "classrtabmap_1_1GlobalMap.html#aa840b2e62893de929f952b8511df6164", null ], + [ "getGridMin", "classrtabmap_1_1GlobalMap.html#a37adbbb0e80ba76cfa080cec9811cca3", null ], + [ "getGridMax", "classrtabmap_1_1GlobalMap.html#a060366742fc8f51deaf7dd75b66615c7", null ], + [ "getMemoryUsed", "classrtabmap_1_1GlobalMap.html#a20031690daf7a7e9195ae97abf46522b", null ], + [ "assemble", "classrtabmap_1_1GlobalMap.html#ae622850e2447bf1cc3e99ee9dcd4b65f", null ], + [ "cache", "classrtabmap_1_1GlobalMap.html#a632f06ccce72bce66a9fd38d37f23b80", null ], + [ "assembledNodes", "classrtabmap_1_1GlobalMap.html#a7fc3f43e65401d3842419066242e081d", null ], + [ "isNodeAssembled", "classrtabmap_1_1GlobalMap.html#a9c853fcade3b4b9bd4f49b6a07025e6d", null ], + [ "addAssembledNode", "classrtabmap_1_1GlobalMap.html#a0b95370df2582da48ff0e1e405cccda2", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.map new file mode 100644 index 00000000..aac75644 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.md5 new file mode 100644 index 00000000..c22847f6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.md5 @@ -0,0 +1 @@ +8d427454b28808662072ef9544efed17 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GlobalMap__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7bd7292398a40b6684cc95b0bac1b5c059af68 GIT binary patch literal 13175 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

wThq?dsJq z;IXdZ<3|7~DFa*(UkNn=2>-a-Qj^NHUzmvM1XX`y0l?}1jtau)}_A83?Tc9J&x>vH!RcjFv&~n6>-`8HlB#c)@f{MDS&@WayDIVjpZ@A&%)BG zhW8!_Y~A|$dSjr{7#MC+QnDHt81$w+Ck8b`NcCntewioalO`6WfJG!6Kn}7a9xuJl+k5+qO^s`IzLknvuFzWbvy7YD!RTZ7oD&z~|N&eJ@rZ zk-q{XDg)VP0%!di9 z*!g0e@ZHe;{Agir%Ac<6(Y)Y47l~&Q67snTr-^%doL@l7Fj8SV(`x6jA!BD}mo*dj z&^ms1c|aamYUTs9a|$N5o;-QaZ!@j|1_t6$ftQ!pxGC^<*<4r{$u%OP=+lkA)n~sf z2IQ(7mKdNq^IG(?Xd^Mt!FUCz-E{488x>#?DFtm3tGAl(^a3xv)SnfBv39bkyVVJY zWgOrz$rH#&>IcNsLNEOYC{=zcf%YTapuumu>(Rz=v_CQ319*5ZB#rrCZd_wyV=EA^ zG=l?RuZ$NdV!c3)E{#`~^yg`-i=7`Djh$bdE{My65Wu)Om~wlyq%jj0N|h7j91VzFl#kQ7fw%ix_c{ZjYcZ%Gd~Y|E6>;XK?FwE)jerzZ7s}8;W6^Frjzg^xIsrp zr%jVA=Bb4NhRvx4CDvDx7~AnWuj`D7ZFAM0?T@Jx=!qhELuf_WAk1&l(Q!d0m9R5= z(`001jClIcin^)7r;XdAIm;G)0R}<`YtVp;aeUsIpPwHp@HRU&6VgOCoJkS$tg=oZ z*K>JV-_Rf>DHq(?*Z0cnXpa2Gjkd0?XeiL_{&Zd}47V>Jwo$RGgZaAJPypmv!BUpi_GLi)}@>y*ctzm7(Z{chpX|IGnq-Xz>{Z`deQ z7K9?{85xkw7-ZSn-Y)hen`1(@T8wYBYq$~?B9c5YmryZ4f+i4m!^ zQu4@VTnNN7^5g4Z1gLh!MlD3^zfWwOR)-DBy`~!jAc1f|hk<(QwR7j8)$nU=aiH75 zeDBAViN?`rO3;*GL9hanmG)%h6-OQ|riFq^A!WF%vo_ILs}@j}k=8lcs3pV}#65Z* zThOj^{XS%Xa>eY6rA^viG?w76)0-+QkQG4x9efxC?t6a{vAN_wm_opVWGJ zZh<^vU;koHpW@XUwzX%F#KT2KcrBrHnJ{2{T3)PNNNzA}^OP68INiC=$T-r;A9?X$ z0z##y#@!hz4%QPW50KNEsb$*HybE1P?VzTx8k^VuZ95~K>U1)ouFqpR$N@#Ph3sZZ8VQhz>*Pw_f7|Ni~^FfVjimrBNfU@btXKRA@A%c$dKaz8<)n+SFCC^pn>ls?jZvB7Bi09HYI#~) z&`u6ZuWBNlIH4>CQ}AHFL%Ww|QwqJiYd!jl)fNdVB`D!_p!K?X?HcPY)&9y*C@6OD z-ot5kK!`Dh_U4CfI$p3lNvy_lDBs1!h1=`YMH{*FH|=@qfubg=dL#;K*1WTTSHum97Jc8n-={#Z>>m+{}X7^LX>VA5&{ck8w#Q$g3*0ME7*|GJbqp|!F6bA+aW#r@-L`Bhq z(WV`-e;_hqh3%Q3pp=gNt`L!vm9-rfqpsZeee!0wkRCu1BSr!v3ytf$(z=_dM~oS1 zX~nM@OD9)*g>!2CdOg$p1tU3`5(BNH>a57~ZSVZ(ThLI7d(%`Qkz>mR>BGqoOv$eE zl;Jk!+m06$lqBC zU!6^Uhq|aD?|7Q1Y-;=A!v`U+(~1U1Xt2^i*Yf!)X3*O^k&u*8ROF1rgA9HYY`NT@ zb-ESmeP38OZgKIA{|U#28;fk^m*&Z-DFbKw{s2;Dmy5FlVW(9J=q3%IU4=;e-hKa?h9&L6d2zrG8}(UJ6MC||-k`2$VErO{vJ9|tT3-(l_~;55=+W_YHc=mpN*j|6CW6 z#sax&K`d45ec^>nkO;DjfR6PhW;_HSa;W%sdrwz$Abo#vZB6&h>=n?Tfg%Ye%S_M$ zIjjzc!_CIfr%_Q+Qfg{yMJwCCC4-K2I9bnoX}y&LgE%)1FNqya;usnk#qpX1T0c_% zt)5f-LHKH2J6CN7=uY82Brtj#KplO5Mw}w*zCY}l0^VC#Wsg zY%K7GD{SvUjphX0Yo-9Kr-8ve0{zfcJrjR0ipLLnu;Do|@ZS_fH_?jW=H#DWmO~-X zz`ZKBLEB~d7u$`-p+A778=$7kzI;gnvoJF^HwhOP*ZKKDEk+9oV`DpvJo<|b&LEJw zeED)uhCF#RhvqYY=%AW@%|y4o<*3RI=$cF3{AEx|6qN1^}2|pMdO9 z$Z`1=ARa5s^$VD~qpJxmq9Lp%AUph^!TX3=BXlLUm2`_)THXi6*$hVE+SeBW3HZUx8Mq7}ro6o7Z2 z>*BW_jfD3Gn6yX#g@!_{Ku-}i7XVJh?(3jdlzs7{1te&g1AxY|_m_F!*s+P$ATPc1 z)hf`tjm`Z%Z3l~(jTD;%(~8D}fqCBa+@%t2MU7iYptjW2`QW&&S1yp;z=R2$Sa-DwhLhf`SIn3+XHrUR{qqqoATW@P|Gv8N zR?Plkkcy5KoU)~}^9$>%ADhrT_2p>`!q{c(p3gp!gU|%grbeY5BY=5^)7mJsfc}66 z#TEl>%Y%6kb*J?Z!1$tEtgHcG1xzmt!QWivxMFor4job)?RvOr0KJPWpxWKL-+H#$ z3##kk0gI!h?B1s{bk_(7?!!6(bf=hI2q_sEZr$og38k2a(8$QhILzj&Cv)xk^=TOK?m!^f3pr#p85-;@56o#1o6JQTmjhlx13$c8RQ}H` zNc?Q+#pxWEcPdP7W%{`rwHIQrCrAf$^4R=?=QLyEv@-YwhVk&&SQ%B-TL2Rng`$g_ zn+ON^x1fiF92`}udu|THNPx*Rn~5TrtNl%IadCU0ppTVZiP44%3mdD?AtA6-@q-$P zDY>w?sQ_nUE%s*M!(3VNT59sQp_ ze>@JS{1sBf(1W^0aEguu!B7Z4*fQ3crFcSf%4cQf1J03zj+5rM8X*;bVGf^JzcPZ1 zjLa12`_&8vm1&>5w)9#DmV>{tMG^l3bSnesVE-rgykcH9A7L`vwOR=IHD0?p}A~tk8iIhe7y#+$?R}n%h!=<7kFA#4-qv+2Ea@2zg z3jR|AoA5-cncVr3$_AMqj}G$?h~isLt@ulU%DeLsvvv-QiH}FYgI(83hhky%>A2i) z>nJ0KcqAY;;@E#hVx&(b+k;xSIG5F8yGUIPaVB7EatbkK0HY;F%M7W8a5+MiQagV6 z8Gu64T6h#EIG6ac#SbdaL7$dn`1Wyb*Z=WROe6q+JIIcp_AqN&q=>IvYV}I$xF7AS z|2E>N0iaC&AMxt{ + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::GridMap Member List
+
+
+ +

This is the complete list of members for rtabmap::GridMap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addAssembledNode(int id, const Transform &pose)rtabmap::GlobalMapprotected
addedNodes() constrtabmap::GlobalMapinline
assemble(const std::list< std::pair< int, Transform > > &newPoses)rtabmap::GridMapprotectedvirtual
assembledNodes() constrtabmap::GlobalMapinlineprotected
cache() constrtabmap::GlobalMapinlineprotected
cellSize_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
clear()rtabmap::GridMapvirtual
createColorMap(float &xMin, float &yMin, float &cellSize) const (defined in rtabmap::GridMap)rtabmap::GridMap
createHeightMap(float &xMin, float &yMin, float &cellSize) const (defined in rtabmap::GridMap)rtabmap::GridMap
createTerrainCloud() const (defined in rtabmap::GridMap)rtabmap::GridMap
createTerrainMesh() const (defined in rtabmap::GridMap)rtabmap::GridMap
fullUpdateNeeded(const std::map< int, Transform > &poses) constrtabmap::GlobalMap
getCellSize() constrtabmap::GlobalMapinline
getGridMax(double &x, double &y) constrtabmap::GlobalMapinline
getGridMax(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getMemoryUsed() constrtabmap::GlobalMapvirtual
getUpdateError() constrtabmap::GlobalMapinline
GlobalMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())rtabmap::GlobalMapprotected
gridMap() const (defined in rtabmap::GridMap)rtabmap::GridMapinline
GridMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::GridMap)rtabmap::GridMap
isNodeAssembled(int id)rtabmap::GlobalMapinlineprotected
logodds(double probability)rtabmap::GlobalMapinlinestatic
logOddsClampingMax_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsClampingMin_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsHit_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsMiss_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
maxValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
minValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
occupancyThr_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
probability(double logodds)rtabmap::GlobalMapinlinestatic
update(const std::map< int, Transform > &poses)rtabmap::GlobalMap
updateError_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
~GlobalMap() (defined in rtabmap::GlobalMap)rtabmap::GlobalMapvirtual
~GridMap() (defined in rtabmap::GridMap)rtabmap::GridMapvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap.html b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap.html new file mode 100644 index 00000000..869e14e2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap.html @@ -0,0 +1,332 @@ + + + + + + + + +RTAB-Map: rtabmap::GridMap Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::GridMap Class Reference
+
+
+
+Inheritance diagram for rtabmap::GridMap:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::GridMap:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ GridMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 
virtual void clear ()
 Clears assembled nodes and grid bounds; does not clear LocalGridCache.
 
const grid_map::GridMap * gridMap () const
 
+cv::Mat createHeightMap (float &xMin, float &yMin, float &cellSize) const
 
+cv::Mat createColorMap (float &xMin, float &yMin, float &cellSize) const
 
+pcl::PointCloud< pcl::PointXYZRGB >::Ptr createTerrainCloud () const
 
+pcl::PolygonMesh::Ptr createTerrainMesh () const
 
- Public Member Functions inherited from rtabmap::GlobalMap
bool fullUpdateNeeded (const std::map< int, Transform > &poses) const
 True if the map should be rebuilt from cache (loop closure or disjoint graph).
 
bool update (const std::map< int, Transform > &poses)
 Incrementally assemble new nodes from poses.
 
float getCellSize () const
 
float getUpdateError () const
 
const std::map< int, Transform > & addedNodes () const
 
void getGridMin (double &x, double &y) const
 2D grid minimum (x, y) in meters.
 
void getGridMax (double &x, double &y) const
 2D grid maximum (x, y) in meters.
 
void getGridMin (double &x, double &y, double &z) const
 3D grid minimum (x, y, z) in meters.
 
void getGridMax (double &x, double &y, double &z) const
 3D grid maximum (x, y, z) in meters.
 
virtual unsigned long getMemoryUsed () const
 Approximate memory used by assembled-node bookkeeping (bytes).
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void assemble (const std::list< std::pair< int, Transform > > &newPoses)
 Subclass hook: merge newPoses into the global map; call addAssembledNode().
 
- Protected Member Functions inherited from rtabmap::GlobalMap
 GlobalMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 Constructs the base map; subclasses call from their constructor.
 
const std::map< int, LocalGrid > & cache () const
 
const std::map< int, Transform > & assembledNodes () const
 
bool isNodeAssembled (int id)
 
+void addAssembledNode (int id, const Transform &pose)
 Records a successfully assembled node (ids <= 0 are ignored).
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from rtabmap::GlobalMap
static float logodds (double probability)
 Converts probability in (0, 1) to log-odds.
 
static double probability (double logodds)
 Converts log-odds back to probability in (0, 1).
 
- Protected Attributes inherited from rtabmap::GlobalMap
float cellSize_
 
float updateError_
 
float occupancyThr_
 
float logOddsHit_
 
float logOddsMiss_
 
float logOddsClampingMin_
 
float logOddsClampingMax_
 
double minValues_ [3]
 
double maxValues_ [3]
 
+

Detailed Description

+
+

Definition at line 44 of file GridMap.h.

+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void rtabmap::GridMap::clear ()
+
+virtual
+
+ +

Clears assembled nodes and grid bounds; does not clear LocalGridCache.

+ +

Reimplemented from rtabmap::GlobalMap.

+ +
+
+ +

◆ gridMap()

+ +
+
+ + + + + +
+ + + + + + + +
const grid_map::GridMap * rtabmap::GridMap::gridMap () const
+
+inline
+
+ +

Definition at line 52 of file GridMap.h.

+ +
+
+ +

◆ assemble()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::GridMap::assemble (const std::list< std::pair< int, Transform > > & newPoses)
+
+protectedvirtual
+
+ +

Subclass hook: merge newPoses into the global map; call addAssembledNode().

+ +

Implements rtabmap::GlobalMap.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/global_map/GridMap.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap.js b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap.js new file mode 100644 index 00000000..1952eaa0 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1GridMap = +[ + [ "clear", "classrtabmap_1_1GridMap.html#a2a3b8ba591cf41da62e5486bb62b8f51", null ], + [ "assemble", "classrtabmap_1_1GridMap.html#a57ad9df30e61345ec23a45bcda0f2e93", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.map new file mode 100644 index 00000000..c3cf58cc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.md5 new file mode 100644 index 00000000..4bda067d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.md5 @@ -0,0 +1 @@ +a40bbcf0f292ffee2fc803c8693a3706 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ff19b9221a9a79243f57121dbafc89a8fd510d06 GIT binary patch literal 4291 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 Mc-aI+L^{R(2l|ODg#Z8m literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.map new file mode 100644 index 00000000..c3cf58cc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.md5 new file mode 100644 index 00000000..4bda067d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.md5 @@ -0,0 +1 @@ +a40bbcf0f292ffee2fc803c8693a3706 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1GridMap__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ff19b9221a9a79243f57121dbafc89a8fd510d06 GIT binary patch literal 4291 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 Mc-aI+L^{R(2l|ODg#Z8m literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMU-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMU-members.html new file mode 100644 index 00000000..bc05e9ea --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMU-members.html @@ -0,0 +1,128 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::IMU Member List
+
+
+ +

This is the complete list of members for rtabmap::IMU, including all inherited members.

+ + + + + + + + + + + + + +
angularVelocity() constrtabmap::IMUinline
angularVelocityCovariance() constrtabmap::IMUinline
convertToBaseFrame()rtabmap::IMU
empty() constrtabmap::IMUinline
IMU()rtabmap::IMUinline
IMU(const cv::Vec4d &orientation, const cv::Mat &orientationCovariance, const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())rtabmap::IMUinline
IMU(const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())rtabmap::IMUinline
linearAcceleration() constrtabmap::IMUinline
linearAccelerationCovariance() constrtabmap::IMUinline
localTransform() constrtabmap::IMUinline
orientation() constrtabmap::IMUinline
orientationCovariance() constrtabmap::IMUinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMU.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMU.html new file mode 100644 index 00000000..7b9f1907 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMU.html @@ -0,0 +1,594 @@ + + + + + + + + +RTAB-Map: rtabmap::IMU Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::IMU Class Reference
+
+
+ +

Inertial measurement sample (ROS sensor_msgs/Imu-like fields). + More...

+ +

#include <IMU.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IMU ()
 Default-constructs an empty sample (null localTransform()).
 
 IMU (const cv::Vec4d &orientation, const cv::Mat &orientationCovariance, const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())
 Constructs a sample with orientation and motion data.
 
 IMU (const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())
 Constructs a sample without orientation (e.g. no magnetometer / no attitude).
 
const cv::Vec4d & orientation () const
 
const cv::Mat & orientationCovariance () const
 
const cv::Vec3d & angularVelocity () const
 
const cv::Mat & angularVelocityCovariance () const
 
const cv::Vec3d & linearAcceleration () const
 
const cv::Mat & linearAccelerationCovariance () const
 
const Transform & localTransform () const
 
void convertToBaseFrame ()
 Rotate motion (and optionally orientation) into the base frame.
 
bool empty () const
 True when localTransform() is null (placeholder / unset sample).
 
+

Detailed Description

+

Inertial measurement sample (ROS sensor_msgs/Imu-like fields).

+

Holds orientation (quaternion), angular velocity, linear acceleration, optional 3×3 row-major covariance matrices (double), and an optional Transform expressing the IMU frame relative to the robot base.

+

empty() is true when localTransform() is null (default constructor). A sample constructed with Transform::getIdentity() is not empty.

+

convertToBaseFrame() rotates linear/angular velocity (and orientation when quaternion x/y/z are non-zero) into the base frame, then clears rotation in localTransform() while keeping translation.

+
See also
SensorData::imu()
+
+IMUEvent
+ +

Definition at line 56 of file IMU.h.

+

Constructor & Destructor Documentation

+ +

◆ IMU() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::IMU::IMU ()
+
+inline
+
+ +

Default-constructs an empty sample (null localTransform()).

+ +

Definition at line 60 of file IMU.h.

+ +
+
+ +

◆ IMU() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::IMU::IMU (const cv::Vec4d & orientation,
const cv::Mat & orientationCovariance,
const cv::Vec3d & angularVelocity,
const cv::Mat & angularVelocityCovariance,
const cv::Vec3d & linearAcceleration,
const cv::Mat & linearAccelerationCovariance,
const Transform & localTransform = Transform::getIdentity() 
)
+
+inline
+
+ +

Constructs a sample with orientation and motion data.

+
Parameters
+ + + + + + + + +
orientationUnit quaternion (qx, qy, qz, qw).
orientationCovariance3×3 row-major covariance about x, y, z (empty if unused).
angularVelocityRad/s about x, y, z.
angularVelocityCovariance3×3 row-major covariance (empty if unused).
linearAccelerationm/s² about x, y, z.
linearAccelerationCovariance3×3 row-major covariance (empty if unused).
localTransformIMU frame in base coordinates (default identity).
+
+
+ +

Definition at line 72 of file IMU.h.

+ +
+
+ +

◆ IMU() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::IMU::IMU (const cv::Vec3d & angularVelocity,
const cv::Mat & angularVelocityCovariance,
const cv::Vec3d & linearAcceleration,
const cv::Mat & linearAccelerationCovariance,
const Transform & localTransform = Transform::getIdentity() 
)
+
+inline
+
+ +

Constructs a sample without orientation (e.g. no magnetometer / no attitude).

+
Parameters
+ + + + + + +
angularVelocityRad/s about x, y, z.
angularVelocityCovariance3×3 row-major covariance (empty if unused).
linearAccelerationm/s² about x, y, z.
linearAccelerationCovariance3×3 row-major covariance (empty if unused).
localTransformIMU frame in base coordinates (default identity).
+
+
+ +

Definition at line 97 of file IMU.h.

+ +
+
+

Member Function Documentation

+ +

◆ orientation()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Vec4d & rtabmap::IMU::orientation () const
+
+inline
+
+
Returns
Orientation quaternion (qx, qy, qz, qw).
+ +

Definition at line 111 of file IMU.h.

+ +
+
+ +

◆ orientationCovariance()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::IMU::orientationCovariance () const
+
+inline
+
+
Returns
3×3 orientation covariance (row-major, empty if orientation unset).
+ +

Definition at line 113 of file IMU.h.

+ +
+
+ +

◆ angularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Vec3d & rtabmap::IMU::angularVelocity () const
+
+inline
+
+
Returns
Angular velocity (rad/s).
+ +

Definition at line 116 of file IMU.h.

+ +
+
+ +

◆ angularVelocityCovariance()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::IMU::angularVelocityCovariance () const
+
+inline
+
+
Returns
3×3 angular velocity covariance (row-major, empty if unused).
+ +

Definition at line 118 of file IMU.h.

+ +
+
+ +

◆ linearAcceleration()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Vec3d & rtabmap::IMU::linearAcceleration () const
+
+inline
+
+
Returns
Linear acceleration (m/s²).
+ +

Definition at line 121 of file IMU.h.

+ +
+
+ +

◆ linearAccelerationCovariance()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::IMU::linearAccelerationCovariance () const
+
+inline
+
+
Returns
3×3 linear acceleration covariance (row-major, empty if unused).
+ +

Definition at line 123 of file IMU.h.

+ +
+
+ +

◆ localTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::IMU::localTransform () const
+
+inline
+
+
Returns
Transform from IMU frame to base frame.
+ +

Definition at line 126 of file IMU.h.

+ +
+
+ +

◆ convertToBaseFrame()

+ +
+
+ + + + + + + +
void rtabmap::IMU::convertToBaseFrame ()
+
+ +

Rotate motion (and optionally orientation) into the base frame.

+

Applies localTransform() rotation to vectors and covariances, then sets rotational part of localTransform() to identity (translation unchanged). No-op if localTransform() is null or rotation is identity. Orientation is updated only when quaternion qx, qy, qz, qw are not all zero.

+ +
+
+ +

◆ empty()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::IMU::empty () const
+
+inline
+
+ +

True when localTransform() is null (placeholder / unset sample).

+ +

Definition at line 141 of file IMU.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/IMU.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMU.js b/preview/pr-1773/api/latest/classrtabmap_1_1IMU.js new file mode 100644 index 00000000..94a35250 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMU.js @@ -0,0 +1,15 @@ +var classrtabmap_1_1IMU = +[ + [ "IMU", "classrtabmap_1_1IMU.html#a76e674d3ef1865369e1416ae5ff76483", null ], + [ "IMU", "classrtabmap_1_1IMU.html#a8db1233b6871dcbd58f1862cee2826fa", null ], + [ "IMU", "classrtabmap_1_1IMU.html#a3171afc29cdf8587a401b6da1b1908e6", null ], + [ "orientation", "classrtabmap_1_1IMU.html#a2160e6d59e4f9e3ffc84a2b7d62bdabd", null ], + [ "orientationCovariance", "classrtabmap_1_1IMU.html#ab7668040b92bfa5532c5e1c19ddbf429", null ], + [ "angularVelocity", "classrtabmap_1_1IMU.html#ad0160a803d2005f3f4db27c402e6bceb", null ], + [ "angularVelocityCovariance", "classrtabmap_1_1IMU.html#a660c82c641525ff24aefa7e03ebf7d4a", null ], + [ "linearAcceleration", "classrtabmap_1_1IMU.html#a8fde3445664329d6432b632fca9db17a", null ], + [ "linearAccelerationCovariance", "classrtabmap_1_1IMU.html#a2ee035bffb85f1681ad3525c32ba1243", null ], + [ "localTransform", "classrtabmap_1_1IMU.html#a10cfadbe31bbf80822a9ab92c0892b33", null ], + [ "convertToBaseFrame", "classrtabmap_1_1IMU.html#a1ccae83f46e87d28e56bcfc4a25fafb8", null ], + [ "empty", "classrtabmap_1_1IMU.html#ace111e68ca49e6d47cc92f53a0be87ef", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent-members.html new file mode 100644 index 00000000..6d51776f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent-members.html @@ -0,0 +1,124 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::IMUEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::IMUEvent, including all inherited members.

+ + + + + + + + + +
getClassName() constrtabmap::IMUEventinlinevirtual
getCode() constUEventinline
getData() constrtabmap::IMUEventinline
getStamp() constrtabmap::IMUEventinline
IMUEvent()rtabmap::IMUEventinline
IMUEvent(const IMU &data, double stamp)rtabmap::IMUEventinline
UEvent(int code=0)UEventinlineprotected
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.html new file mode 100644 index 00000000..774b8c01 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.html @@ -0,0 +1,338 @@ + + + + + + + + +RTAB-Map: rtabmap::IMUEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::IMUEvent Class Reference
+
+
+ +

UEvent carrying an IMU sample and timestamp. + More...

+ +

#include <IMU.h>

+
+Inheritance diagram for rtabmap::IMUEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::IMUEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 IMUEvent ()
 Default-constructs an event with zero stamp.
 
 IMUEvent (const IMU &data, double stamp)
 Constructs an event with IMU data and stamp.
 
virtual std::string getClassName () const
 
const IMU & getData () const
 
double getStamp () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

UEvent carrying an IMU sample and timestamp.

+ +

Definition at line 163 of file IMU.h.

+

Constructor & Destructor Documentation

+ +

◆ IMUEvent() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::IMUEvent::IMUEvent ()
+
+inline
+
+ +

Default-constructs an event with zero stamp.

+ +

Definition at line 167 of file IMU.h.

+ +
+
+ +

◆ IMUEvent() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::IMUEvent::IMUEvent (const IMU & data,
double stamp 
)
+
+inline
+
+ +

Constructs an event with IMU data and stamp.

+
Parameters
+ + + +
dataIMU sample.
stampTimestamp in seconds.
+
+
+ +

Definition at line 175 of file IMU.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::IMUEvent::getClassName () const
+
+inlinevirtual
+
+
Returns
Event type name for the utilite event system.
+ +

Implements UEvent.

+ +

Definition at line 181 of file IMU.h.

+ +
+
+ +

◆ getData()

+ +
+
+ + + + + +
+ + + + + + + +
const IMU & rtabmap::IMUEvent::getData () const
+
+inline
+
+
Returns
IMU payload.
+ +

Definition at line 183 of file IMU.h.

+ +
+
+ +

◆ getStamp()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::IMUEvent::getStamp () const
+
+inline
+
+
Returns
Timestamp in seconds.
+ +

Definition at line 185 of file IMU.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/IMU.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.js new file mode 100644 index 00000000..19e85f58 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent.js @@ -0,0 +1,8 @@ +var classrtabmap_1_1IMUEvent = +[ + [ "IMUEvent", "classrtabmap_1_1IMUEvent.html#a1ab86d7c16b1cadb44f0440808a9a81b", null ], + [ "IMUEvent", "classrtabmap_1_1IMUEvent.html#af041b297fa5f621dbc4fd085b16da800", null ], + [ "getClassName", "classrtabmap_1_1IMUEvent.html#adf3482d48ccbf36daa039efb596405d0", null ], + [ "getData", "classrtabmap_1_1IMUEvent.html#a3ebdf9e3cb56c153bf76d4aad5a6b44e", null ], + [ "getStamp", "classrtabmap_1_1IMUEvent.html#ac1dc5e7e806fbe05ee5fec562384924f", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.map new file mode 100644 index 00000000..4361a521 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.md5 new file mode 100644 index 00000000..859f9b89 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.md5 @@ -0,0 +1 @@ +d60f00bea9c6214f630c960fadc3db2e \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3fd4bfcf3aa03c65a0e3edd1377213af0bc298 GIT binary patch literal 3775 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.map new file mode 100644 index 00000000..4361a521 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.md5 new file mode 100644 index 00000000..859f9b89 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.md5 @@ -0,0 +1 @@ +d60f00bea9c6214f630c960fadc3db2e \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1IMUEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3fd4bfcf3aa03c65a0e3edd1377213af0bc298 GIT binary patch literal 3775 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter-members.html new file mode 100644 index 00000000..9c5ed957 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter-members.html @@ -0,0 +1,128 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::IMUFilter Member List
+
+
+ +

This is the complete list of members for rtabmap::IMUFilter, including all inherited members.

+ + + + + + + + + + + + + +
create(const ParametersMap &parameters=ParametersMap())rtabmap::IMUFilterstatic
create(IMUFilter::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::IMUFilterstatic
getOrientation(double &qx, double &qy, double &qz, double &qw) const =0rtabmap::IMUFilterpure virtual
IMUFilter(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::IMUFilter)rtabmap::IMUFilterinlineprotected
kComplementaryFilter enum valuertabmap::IMUFilter
kMadgwick enum valuertabmap::IMUFilter
parseParameters(const ParametersMap &parameters)rtabmap::IMUFilterinlinevirtual
reset(double qx=0.0, double qy=0.0, double qz=0.0, double qw=1.0)=0rtabmap::IMUFilterpure virtual
Type enum namertabmap::IMUFilter
type() const =0rtabmap::IMUFilterpure virtual
update(double gx, double gy, double gz, double ax, double ay, double az, double stamp)rtabmap::IMUFilter
~IMUFilter() (defined in rtabmap::IMUFilter)rtabmap::IMUFilterinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.html new file mode 100644 index 00000000..c87f1e24 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.html @@ -0,0 +1,594 @@ + + + + + + + + +RTAB-Map: rtabmap::IMUFilter Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Fuses gyroscope and accelerometer samples into an orientation quaternion. + More...

+ +

#include <IMUFilter.h>

+ + + + + +

+Public Types

enum  Type { kMadgwick = 0 +, kComplementaryFilter = 1 + }
 Orientation fusion algorithm. More...
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual void parseParameters (const ParametersMap &parameters)
 Re-reads filter parameters from parameters.
 
void update (double gx, double gy, double gz, double ax, double ay, double az, double stamp)
 Integrates one IMU sample and updates the internal orientation estimate.
 
virtual IMUFilter::Type type () const =0
 
virtual void getOrientation (double &qx, double &qy, double &qz, double &qw) const =0
 Current orientation estimate.
 
virtual void reset (double qx=0.0, double qy=0.0, double qz=0.0, double qw=1.0)=0
 Resets internal state to the given orientation.
 
+ + + + + + + +

+Static Public Member Functions

static IMUFilter * create (const ParametersMap &parameters=ParametersMap())
 Creates a filter using type parsed from parameters.
 
static IMUFilter * create (IMUFilter::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a filter of the given type.
 
+ + + +

+Protected Member Functions

 IMUFilter (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

Fuses gyroscope and accelerometer samples into an orientation quaternion.

+

Implementations integrate angular rates and correct drift using the measured gravity vector. The public update() API takes timestamps and computes the time step between consecutive calls.

+

Factory methods create() return heap-allocated instances; the caller owns the pointer (e.g. SensorCaptureThread, IMUThread, Camera).

+

Output orientation from getOrientation() is a unit quaternion (qx, qy, qz, qw) in the same convention as IMU (body frame).

+

Filter tuning parameters are read from ParametersMap (ImuFilter/... keys); see kComplementaryFilter and kMadgwick (the latter only when RTAB-Map is built with Madgwick support).

+
See also
IMU
+
+SensorCaptureThread::enableIMUFiltering()
+ +

Definition at line 58 of file IMUFilter.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::IMUFilter::Type
+
+ +

Orientation fusion algorithm.

+ + + +
Enumerator
kMadgwick 

Madgwick AHRS (attitude and heading reference system). RTAB-Map must be built with Madgwick support.

+
kComplementaryFilter 

Complementary filter (always available).

+
+ +

Definition at line 64 of file IMUFilter.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~IMUFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::IMUFilter::~IMUFilter ()
+
+inlinevirtual
+
+ +

Definition at line 85 of file IMUFilter.h.

+ +
+
+ +

◆ IMUFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::IMUFilter::IMUFilter (const ParametersMap & parameters = ParametersMap())
+
+inlineprotected
+
+ +

Definition at line 130 of file IMUFilter.h.

+ +
+
+

Member Function Documentation

+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static IMUFilter * rtabmap::IMUFilter::create (const ParametersMap & parameters = ParametersMap())
+
+static
+
+ +

Creates a filter using type parsed from parameters.

+
Parameters
+ + +
parametersOptional ImuFilter/... tuning parameters.
+
+
+
Returns
New filter instance (caller owns the pointer).
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static IMUFilter * rtabmap::IMUFilter::create (IMUFilter::Type type,
const ParametersMap & parameters = ParametersMap() 
)
+
+static
+
+ +

Creates a filter of the given type.

+
Parameters
+ + + +
typeFusion algorithm; falls back to kComplementaryFilter if kMadgwick is requested but not compiled in.
parametersOptional ImuFilter/... tuning parameters.
+
+
+
Returns
New filter instance (caller owns the pointer).
+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::IMUFilter::parseParameters (const ParametersMap & parameters)
+
+inlinevirtual
+
+ +

Re-reads filter parameters from parameters.

+
Parameters
+ + +
parametersImuFilter/... keys (implementation-specific).
+
+
+ +

Definition at line 91 of file IMUFilter.h.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::IMUFilter::update (double gx,
double gy,
double gz,
double ax,
double ay,
double az,
double stamp 
)
+
+ +

Integrates one IMU sample and updates the internal orientation estimate.

+
Parameters
+ + + + + + + + +
gxGyroscope x angular rate (rad/s).
gyGyroscope y angular rate (rad/s).
gzGyroscope z angular rate (rad/s).
axAccelerometer x (m/s²; magnitude ~9.81 when stationary).
ayAccelerometer y (m/s²).
azAccelerometer z (m/s²).
stampSample time (seconds); used with the previous stamp to compute dt.
+
+
+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual IMUFilter::Type rtabmap::IMUFilter::type () const
+
+pure virtual
+
+
Returns
Active fusion algorithm type.
+ +
+
+ +

◆ getOrientation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::IMUFilter::getOrientation (double & qx,
double & qy,
double & qz,
double & qw 
) const
+
+pure virtual
+
+ +

Current orientation estimate.

+
Parameters
+ + + + + +
qxQuaternion x
qyQuaternion y
qzQuaternion z
qwQuaternion w (scalar)
+
+
+ +
+
+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void rtabmap::IMUFilter::reset (double qx = 0.0,
double qy = 0.0,
double qz = 0.0,
double qw = 1.0 
)
+
+pure virtual
+
+ +

Resets internal state to the given orientation.

+
Parameters
+ + + + + +
qxQuaternion x (default 0)
qyQuaternion y (default 0)
qzQuaternion z (default 0)
qwQuaternion w (default 1, identity)
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.js b/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.js new file mode 100644 index 00000000..079192e1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUFilter.js @@ -0,0 +1,12 @@ +var classrtabmap_1_1IMUFilter = +[ + [ "Type", "classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83", [ + [ "kMadgwick", "classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83aa1f642678d0846f51590e4f69a585c09", null ], + [ "kComplementaryFilter", "classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83a13d263540bc4ee0b91102547c8eb1ae2", null ] + ] ], + [ "parseParameters", "classrtabmap_1_1IMUFilter.html#a26022384205491695e5fbea349e6363a", null ], + [ "update", "classrtabmap_1_1IMUFilter.html#ab02c81af3543cfb1d53b4a0b064a0363", null ], + [ "type", "classrtabmap_1_1IMUFilter.html#ab6dc95a6f031745a33599646e75ff9f6", null ], + [ "getOrientation", "classrtabmap_1_1IMUFilter.html#ae32dda362d720f964781f1681fa6a973", null ], + [ "reset", "classrtabmap_1_1IMUFilter.html#a45b68e2127fc5a687ef6b7920bf9b39b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread-members.html new file mode 100644 index 00000000..e61419d9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread-members.html @@ -0,0 +1,164 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::IMUThread Member List
+
+
+ +

This is the complete list of members for rtabmap::IMUThread, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
disableIMUFiltering()rtabmap::IMUThread
enableIMUFiltering(int filteringStrategy=1, const ParametersMap &parameters=ParametersMap(), bool baseFrameConversion=false)rtabmap::IMUThread
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
IMUThread(int rate, const Transform &localTransform)rtabmap::IMUThread
init(const std::string &path)rtabmap::IMUThread
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
join(bool killFirst=false)UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
post(UEvent *event, bool async=true) constUEventsSenderprotected
Priority enum nameUThread
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setPriority(Priority priority)UThread
setRate(int rate)rtabmap::IMUThread
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UEventsSender() (defined in UEventsSender)UEventsSenderinline
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~IMUThread() (defined in rtabmap::IMUThread)rtabmap::IMUThreadvirtual
~UEventsSender() (defined in UEventsSender)UEventsSendervirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.html b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.html new file mode 100644 index 00000000..c6353630 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.html @@ -0,0 +1,394 @@ + + + + + + + + +RTAB-Map: rtabmap::IMUThread Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::IMUThread Class Reference
+
+
+ +

Background thread that replays IMU measurements from a CSV file. + More...

+ +

#include <IMUThread.h>

+
+Inheritance diagram for rtabmap::IMUThread:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::IMUThread:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IMUThread (int rate, const Transform &localTransform)
 Constructs the replay thread.
 
bool init (const std::string &path)
 Opens and validates an IMU CSV file.
 
+void setRate (int rate)
 Sets the target playback rate in Hz.
 
void enableIMUFiltering (int filteringStrategy=1, const ParametersMap &parameters=ParametersMap(), bool baseFrameConversion=false)
 Enables orientation fusion on replayed samples.
 
+void disableIMUFiltering ()
 Disables fusion and deletes the internal IMUFilter.
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Protected Member Functions inherited from UEventsSender
void post (UEvent *event, bool async=true) const
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

Background thread that replays IMU measurements from a CSV file.

+

Reads gyroscope and accelerometer samples from a comma-separated file (EuRoC-style or epoch timestamps), optionally fuses them with IMUFilter, and posts IMUEvent on each step.

+

CSV format:

    +
  • First line: header (skipped).
  • +
  • Following lines: stamp,gx,gy,gz,ax,ay,az (stamp in seconds with a decimal point, or EuRoC nanoseconds without one).
  • +
+

Playback rate is limited by setRate() when rate > 0; otherwise samples are read as fast as possible (or spaced using inter-sample timestamps after the first pair). When the file ends, the thread posts an empty IMUEvent and stops.

+
See also
IMUEvent
+
+IMUFilter
+
+SensorCaptureThread::enableIMUFiltering()
+ +

Definition at line 65 of file IMUThread.h.

+

Constructor & Destructor Documentation

+ +

◆ IMUThread()

+ +
+
+ + + + + + + + + + + + + + + + + + +
rtabmap::IMUThread::IMUThread (int rate,
const Transform & localTransform 
)
+
+ +

Constructs the replay thread.

+
Parameters
+ + + +
rateTarget playback rate in Hz (0 = no rate cap until timestamps apply).
localTransformIMU frame relative to the robot base (stored in each IMU).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + + + + +
bool rtabmap::IMUThread::init (const std::string & path)
+
+ +

Opens and validates an IMU CSV file.

+
Parameters
+ + +
pathPath to the CSV file.
+
+
+
Returns
False if the file is missing or contains no data rows.
+ +
+
+ +

◆ enableIMUFiltering()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::IMUThread::enableIMUFiltering (int filteringStrategy = 1,
const ParametersMap & parameters = ParametersMap(),
bool baseFrameConversion = false 
)
+
+ +

Enables orientation fusion on replayed samples.

+
Parameters
+ + + + +
filteringStrategyIMUFilter::Type index (0 = Madgwick, 1 = complementary).
parametersOptional ImuFilter/... tuning parameters.
baseFrameConversionIf true, rotate IMU vectors into the base frame before filtering.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.js b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.js new file mode 100644 index 00000000..bbbeadab --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread.js @@ -0,0 +1,8 @@ +var classrtabmap_1_1IMUThread = +[ + [ "IMUThread", "classrtabmap_1_1IMUThread.html#a97a2c48c6bb7e29ae64147fc9f032ac3", null ], + [ "init", "classrtabmap_1_1IMUThread.html#aeed84fd5d571a5e9af54c8c3ea16ef9d", null ], + [ "setRate", "classrtabmap_1_1IMUThread.html#a3b646ffce1964e2ab6bc314dc4b27deb", null ], + [ "enableIMUFiltering", "classrtabmap_1_1IMUThread.html#ad7e54aa5d2c6a9354e38bda9f01c89ab", null ], + [ "disableIMUFiltering", "classrtabmap_1_1IMUThread.html#a7934573b7f4899278f1b048cf9a686bc", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.map new file mode 100644 index 00000000..02926b5b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.md5 new file mode 100644 index 00000000..485e9d3e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.md5 @@ -0,0 +1 @@ +a45442278ea3ee1f1cc0193684240d5c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5eed9e65cbbface8a4640dd75ed9a9365251f37c GIT binary patch literal 8912 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 + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.md5 new file mode 100644 index 00000000..485e9d3e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.md5 @@ -0,0 +1 @@ +a45442278ea3ee1f1cc0193684240d5c \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1IMUThread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5eed9e65cbbface8a4640dd75ed9a9365251f37c GIT binary patch literal 8912 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::KAZE Member List
+
+
+ +

This is the complete list of members for rtabmap::KAZE, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::KAZE)rtabmap::KAZEinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() constrtabmap::Feature2Dinlinevirtual
KAZE(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::KAZE)rtabmap::KAZE
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::KAZE)rtabmap::KAZEvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~KAZE() (defined in rtabmap::KAZE)rtabmap::KAZEvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1KAZE.html b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE.html new file mode 100644 index 00000000..128467b6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE.html @@ -0,0 +1,339 @@ + + + + + + + + +RTAB-Map: rtabmap::KAZE Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::KAZE Class Reference
+
+
+ +

KAZE detector and descriptor (OpenCV 3+). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::KAZE:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::KAZE:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ KAZE (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
virtual bool isGpuAvailable () const
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

KAZE detector and descriptor (OpenCV 3+).

+ +

Definition at line 620 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::KAZE::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::KAZE::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 627 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.map new file mode 100644 index 00000000..13cb9e34 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.md5 new file mode 100644 index 00000000..a56dee3e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.md5 @@ -0,0 +1 @@ +3897632e8065b53e0d3828894a9dbde9 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..13a3f8cb53e4fd1ca2429aa520980f052f2911dc GIT binary patch literal 4329 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.md5 new file mode 100644 index 00000000..a56dee3e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.md5 @@ -0,0 +1 @@ +3897632e8065b53e0d3828894a9dbde9 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1KAZE__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..13a3f8cb53e4fd1ca2429aa520980f052f2911dc GIT binary patch literal 4329 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Landmark Member List
+
+
+ +

This is the complete list of members for rtabmap::Landmark, including all inherited members.

+ + + + + + + + + +
covariance() constrtabmap::Landmarkinline
id() constrtabmap::Landmarkinline
Landmark()rtabmap::Landmarkinline
Landmark(const int &id, const float &size, const Transform &pose, const cv::Mat &covariance)rtabmap::Landmarkinline
Landmark(const int &id, const Transform &pose, const cv::Mat &covariance)rtabmap::Landmarkinline
pose() constrtabmap::Landmarkinline
size() constrtabmap::Landmarkinline
~Landmark() (defined in rtabmap::Landmark)rtabmap::Landmarkinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Landmark.html b/preview/pr-1773/api/latest/classrtabmap_1_1Landmark.html new file mode 100644 index 00000000..69ce12b7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Landmark.html @@ -0,0 +1,433 @@ + + + + + + + + +RTAB-Map: rtabmap::Landmark Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Landmark Class Reference
+
+
+ +

Optimized pose of a visual landmark (e.g. ArUco/AprilTag) in the map. + More...

+ +

#include <Landmark.h>

+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Landmark ()
 Default-constructs an invalid landmark (id == 0).
 
 Landmark (const int &id, const float &size, const Transform &pose, const cv::Mat &covariance)
 Constructs a landmark with size, pose, and covariance.
 
RTABMAP_DEPRECATED Landmark (const int &id, const Transform &pose, const cv::Mat &covariance)
 Deprecated; use the constructor with explicit size (0 if unknown).
 
const int & id () const
 
const float & size () const
 
const Transform & pose () const
 
const cv::Mat & covariance () const
 
+

Detailed Description

+

Optimized pose of a visual landmark (e.g. ArUco/AprilTag) in the map.

+

Stores a positive landmark id(), optional physical size() (m), world pose(), and a 6×6 pose covariance matrix (x, y, z, roll, pitch, yaw).

+

Used in Landmarks maps on SensorData and in memory during SLAM. Graph constraints to landmarks use Link::kLandmark with a negative landmark id on the link (to is typically -id()).

+

Covariance diagonal entries must be finite and strictly positive. Use a large value (e.g. 9999) on angular axes when orientation uncertainty is unknown.

+
See also
SensorData::setLandmarks()
+
+Signature::addLandmark()
+ +

Definition at line 56 of file Landmark.h.

+

Constructor & Destructor Documentation

+ +

◆ Landmark() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::Landmark::Landmark ()
+
+inline
+
+ +

Default-constructs an invalid landmark (id == 0).

+ +

Definition at line 60 of file Landmark.h.

+ +
+
+ +

◆ Landmark() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::Landmark::Landmark (const int & id,
const float & size,
const Transform & pose,
const cv::Mat & covariance 
)
+
+inline
+
+ +

Constructs a landmark with size, pose, and covariance.

+
Parameters
+ + + + + +
idPositive landmark identifier.
sizePhysical size of the marker (m); 0 if unknown.
poseLandmark pose in the base frame (typically the robot frame).
covariance6×6 CV_64FC1 covariance (diagonal entries must be > 0).
+
+
+ +

Definition at line 72 of file Landmark.h.

+ +
+
+ +

◆ Landmark() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::Landmark::Landmark (const int & id,
const Transform & pose,
const cv::Mat & covariance 
)
+
+inline
+
+ +

Deprecated; use the constructor with explicit size (0 if unknown).

+ +

Definition at line 115 of file Landmark.h.

+ +
+
+ +

◆ ~Landmark()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::Landmark::~Landmark ()
+
+inlinevirtual
+
+ +

Definition at line 94 of file Landmark.h.

+ +
+
+

Member Function Documentation

+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
const int & rtabmap::Landmark::id () const
+
+inline
+
+
Returns
Positive landmark id (map key in Landmarks).
+ +

Definition at line 97 of file Landmark.h.

+ +
+
+ +

◆ size()

+ +
+
+ + + + + +
+ + + + + + + +
const float & rtabmap::Landmark::size () const
+
+inline
+
+
Returns
Marker size in metres (0 if unknown).
+ +

Definition at line 99 of file Landmark.h.

+ +
+
+ +

◆ pose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Landmark::pose () const
+
+inline
+
+
Returns
Landmark pose in the map frame.
+ +

Definition at line 101 of file Landmark.h.

+ +
+
+ +

◆ covariance()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::Landmark::covariance () const
+
+inline
+
+
Returns
6×6 pose covariance (CV_64FC1).
+ +

Definition at line 103 of file Landmark.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Landmark.js b/preview/pr-1773/api/latest/classrtabmap_1_1Landmark.js new file mode 100644 index 00000000..fef7cac6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Landmark.js @@ -0,0 +1,10 @@ +var classrtabmap_1_1Landmark = +[ + [ "Landmark", "classrtabmap_1_1Landmark.html#a6ba2b53d996e0fa62a8023917e515a06", null ], + [ "Landmark", "classrtabmap_1_1Landmark.html#a1fda87c27ac931dcf9815921b53c1f19", null ], + [ "Landmark", "classrtabmap_1_1Landmark.html#a92311f7550e395fea804c5438e9085ff", null ], + [ "id", "classrtabmap_1_1Landmark.html#a2b5a5cbdb313813e3bb473a05b1145e2", null ], + [ "size", "classrtabmap_1_1Landmark.html#acba351c01c619a0d78e52e7bfca94111", null ], + [ "pose", "classrtabmap_1_1Landmark.html#ac6bfc77e153b0877c4c1cc3d97327a88", null ], + [ "covariance", "classrtabmap_1_1Landmark.html#a1c1e20cccc5f659743ba48c8afe1a8a0", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan-members.html new file mode 100644 index 00000000..505f0eb2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan-members.html @@ -0,0 +1,184 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::LaserScan Member List
+
+
+ +

This is the complete list of members for rtabmap::LaserScan, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
angleIncrement() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
angleMax() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
angleMin() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
backwardCompatibility(const cv::Mat &oldScanFormat, int maxPoints=0, int maxRange=0, const Transform &localTransform=Transform::getIdentity())rtabmap::LaserScanstatic
backwardCompatibility(const cv::Mat &oldScanFormat, float minRange, float maxRange, float angleMin, float angleMax, float angleInc, const Transform &localTransform=Transform::getIdentity())rtabmap::LaserScanstatic
channels(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
channels() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
clear()rtabmap::LaserScaninline
clone() const (defined in rtabmap::LaserScan)rtabmap::LaserScan
data() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
dataType() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
densify() const (defined in rtabmap::LaserScan)rtabmap::LaserScan
empty() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
field(unsigned int pointIndex, unsigned int channelOffset)rtabmap::LaserScan
format() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
Format enum namertabmap::LaserScan
formatName(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
formatName() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
getIntensityOffset() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
getNormalsOffset() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
getRGBOffset() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
getRingOffset() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
getTimeOffset() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
hasIntensity() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
hasNormals() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
hasRGB() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
hasRing() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
hasTime() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
is2d() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
isCompressed() constrtabmap::LaserScaninline
isEmpty() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
isOrganized() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
isScan2d(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
isScanHasIntensity(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
isScanHasNormals(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
isScanHasRGB(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
isScanHasRing(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
isScanHasTime(const Format &format) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
kUnknown enum valuertabmap::LaserScan
kXY enum valuertabmap::LaserScan
kXYI enum valuertabmap::LaserScan
kXYINormal enum valuertabmap::LaserScan
kXYNormal enum valuertabmap::LaserScan
kXYZ enum valuertabmap::LaserScan
kXYZI enum valuertabmap::LaserScan
kXYZINormal enum valuertabmap::LaserScan
kXYZIRT enum valuertabmap::LaserScan
kXYZIT enum valuertabmap::LaserScan
kXYZNormal enum valuertabmap::LaserScan
kXYZRGB enum valuertabmap::LaserScan
kXYZRGBNormal enum valuertabmap::LaserScan
LaserScan() (defined in rtabmap::LaserScan)rtabmap::LaserScan
LaserScan(const LaserScan &data, int maxPoints, float maxRange, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::LaserScan)rtabmap::LaserScan
LaserScan(const LaserScan &data, int maxPoints, float maxRange, Format format, const Transform &localTransform=Transform::getIdentity())rtabmap::LaserScan
LaserScan(const cv::Mat &data, int maxPoints, float maxRange, Format format, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::LaserScan)rtabmap::LaserScan
LaserScan(const LaserScan &data, Format format, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity())rtabmap::LaserScan
LaserScan(const LaserScan &data, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::LaserScan)rtabmap::LaserScan
LaserScan(const cv::Mat &data, Format format, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity()) (defined in rtabmap::LaserScan)rtabmap::LaserScan
localTransform() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
maxPoints() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
operator+(const LaserScan &)rtabmap::LaserScan
operator+=(const LaserScan &)rtabmap::LaserScan
packRGB(unsigned char r, unsigned char g, unsigned char b) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
rangeMax() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
rangeMin() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
setLocalTransform(const Transform &t) (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
size() const (defined in rtabmap::LaserScan)rtabmap::LaserScaninline
unpackRGB(float rgb, unsigned char &r, unsigned char &g, unsigned char &b) (defined in rtabmap::LaserScan)rtabmap::LaserScanstatic
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.html b/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.html new file mode 100644 index 00000000..f5c8ea1f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.html @@ -0,0 +1,1315 @@ + + + + + + + + +RTAB-Map: rtabmap::LaserScan Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::LaserScan Class Reference
+
+
+ +

Represents 2D or 3D laser scan data with support for multiple point data formats. + More...

+ +

#include <LaserScan.h>

+ + + + + +

+Public Types

enum  Format {
+  kUnknown =0 +, kXY =1 +, kXYI =2 +, kXYNormal =3 +,
+  kXYINormal =4 +, kXYZ =5 +, kXYZI =6 +, kXYZRGB =7 +,
+  kXYZNormal =8 +, kXYZINormal =9 +, kXYZRGBNormal =10 +, kXYZIT =11 +,
+  kXYZIRT =12 +
+ }
 Enumeration of possible formats for laser scan data. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructors
+ LaserScan (const LaserScan &data, int maxPoints, float maxRange, const Transform &localTransform=Transform::getIdentity())
 
RTABMAP_DEPRECATED LaserScan (const LaserScan &data, int maxPoints, float maxRange, Format format, const Transform &localTransform=Transform::getIdentity())
 
+ LaserScan (const cv::Mat &data, int maxPoints, float maxRange, Format format, const Transform &localTransform=Transform::getIdentity())
 
RTABMAP_DEPRECATED LaserScan (const LaserScan &data, Format format, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity())
 
+ LaserScan (const LaserScan &data, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity())
 
+ LaserScan (const cv::Mat &data, Format format, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity())
 
Accessors
const cv::Mat & data () const
 
Format format () const
 
std::string formatName () const
 
int channels () const
 
int maxPoints () const
 
float rangeMin () const
 
float rangeMax () const
 
float angleMin () const
 
float angleMax () const
 
float angleIncrement () const
 
void setLocalTransform (const Transform &t)
 
Transform localTransform () const
 
Status and Format Checks
bool empty () const
 
bool isEmpty () const
 
int size () const
 
int dataType () const
 
bool is2d () const
 
bool hasNormals () const
 
bool hasRGB () const
 
bool hasIntensity () const
 
bool hasTime () const
 
bool hasRing () const
 
bool isCompressed () const
 True if the scan is stored compressed (single-row CV_8UC1 blob) instead of raw points.
 
bool isOrganized () const
 
+LaserScan clone () const
 
+LaserScan densify () const
 
Operations
int getIntensityOffset () const
 
int getRGBOffset () const
 
int getNormalsOffset () const
 
int getRingOffset () const
 
int getTimeOffset () const
 
float & field (unsigned int pointIndex, unsigned int channelOffset)
 Access a specific field value of a point.
 
void clear ()
 Clear the scan data.
 
+LaserScan & operator+= (const LaserScan &)
 Concatenate scan's data (localTransform is ignored).
 
+LaserScan operator+ (const LaserScan &)
 Concatenate scan's data (localTransform is ignored).
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

Static Utility Functions
+static std::string formatName (const Format &format)
 
+static int channels (const Format &format)
 
+static bool isScan2d (const Format &format)
 
+static bool isScanHasNormals (const Format &format)
 
+static bool isScanHasRGB (const Format &format)
 
+static bool isScanHasIntensity (const Format &format)
 
+static bool isScanHasTime (const Format &format)
 
+static bool isScanHasRing (const Format &format)
 
+static float packRGB (unsigned char r, unsigned char g, unsigned char b)
 
+static void unpackRGB (float rgb, unsigned char &r, unsigned char &g, unsigned char &b)
 
+static LaserScan backwardCompatibility (const cv::Mat &oldScanFormat, int maxPoints=0, int maxRange=0, const Transform &localTransform=Transform::getIdentity())
 Converts legacy scan format to a LaserScan object.
 
+static LaserScan backwardCompatibility (const cv::Mat &oldScanFormat, float minRange, float maxRange, float angleMin, float angleMax, float angleInc, const Transform &localTransform=Transform::getIdentity())
 Converts legacy scan format with additional metadata to a LaserScan.
 
+

Detailed Description

+

Represents 2D or 3D laser scan data with support for multiple point data formats.

+

The LaserScan class stores structured laser scan data used in SLAM, mapping, and perception. It supports various formats including point coordinates, intensity, normals, RGB colors, and timestamps. Utility methods are provided for format checking, cloning, and combining scans.

+ +

Definition at line 45 of file LaserScan.h.

+

Member Enumeration Documentation

+ +

◆ Format

+ +
+
+ + + + +
enum rtabmap::LaserScan::Format
+
+ +

Enumeration of possible formats for laser scan data.

+

These values represent different combinations of point attributes that can be stored in a laser scan. The format determines how each point in the scan is structured.

+ + + + + + + + + + + + + + +
Enumerator
kUnknown 

Unknown format.

+
kXY 

2D points with X and Y coordinates.

+
kXYI 

2D points with X, Y and intensity.

+
kXYNormal 

2D points with X, Y and normal vectors.

+
kXYINormal 

2D points with X, Y, intensity and normal vectors.

+
kXYZ 

3D points with X, Y and Z coordinates.

+
kXYZI 

3D points with X, Y, Z and intensity.

+
kXYZRGB 

3D points with X, Y, Z and RGB color.

+
kXYZNormal 

3D points with X, Y, Z and normal vectors.

+
kXYZINormal 

3D points with X, Y, Z, intensity and normal vectors.

+
kXYZRGBNormal 

3D points with X, Y, Z, RGB color and normal vectors.

+
kXYZIT 

3D points with X, Y, Z, intensity and time.

+
kXYZIRT 

3D points with X, Y, Z, intensity, ring and time.

+
+ +

Definition at line 55 of file LaserScan.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ LaserScan() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RTABMAP_DEPRECATED rtabmap::LaserScan::LaserScan (const LaserScan & data,
int maxPoints,
float maxRange,
Format format,
const Transform & localTransform = Transform::getIdentity() 
)
+
+
Deprecated:
Use constructor without format argument.
+ +
+
+ +

◆ LaserScan() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RTABMAP_DEPRECATED rtabmap::LaserScan::LaserScan (const LaserScan & data,
Format format,
float minRange,
float maxRange,
float angleMin,
float angleMax,
float angleIncrement,
const Transform & localTransform = Transform::getIdentity() 
)
+
+
Deprecated:
Use constructor without format argument.
+ +
+
+

Member Function Documentation

+ +

◆ data()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::LaserScan::data () const
+
+inline
+
+ +

Definition at line 156 of file LaserScan.h.

+ +
+
+ +

◆ format()

+ +
+
+ + + + + +
+ + + + + + + +
Format rtabmap::LaserScan::format () const
+
+inline
+
+ +

Definition at line 157 of file LaserScan.h.

+ +
+
+ +

◆ formatName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string rtabmap::LaserScan::formatName () const
+
+inline
+
+ +

Definition at line 158 of file LaserScan.h.

+ +
+
+ +

◆ channels()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::channels () const
+
+inline
+
+ +

Definition at line 159 of file LaserScan.h.

+ +
+
+ +

◆ maxPoints()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::maxPoints () const
+
+inline
+
+ +

Definition at line 160 of file LaserScan.h.

+ +
+
+ +

◆ rangeMin()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::LaserScan::rangeMin () const
+
+inline
+
+ +

Definition at line 161 of file LaserScan.h.

+ +
+
+ +

◆ rangeMax()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::LaserScan::rangeMax () const
+
+inline
+
+ +

Definition at line 162 of file LaserScan.h.

+ +
+
+ +

◆ angleMin()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::LaserScan::angleMin () const
+
+inline
+
+ +

Definition at line 163 of file LaserScan.h.

+ +
+
+ +

◆ angleMax()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::LaserScan::angleMax () const
+
+inline
+
+ +

Definition at line 164 of file LaserScan.h.

+ +
+
+ +

◆ angleIncrement()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::LaserScan::angleIncrement () const
+
+inline
+
+ +

Definition at line 165 of file LaserScan.h.

+ +
+
+ +

◆ setLocalTransform()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::LaserScan::setLocalTransform (const Transform & t)
+
+inline
+
+ +

Definition at line 166 of file LaserScan.h.

+ +
+
+ +

◆ localTransform()

+ +
+
+ + + + + +
+ + + + + + + +
Transform rtabmap::LaserScan::localTransform () const
+
+inline
+
+ +

Definition at line 167 of file LaserScan.h.

+ +
+
+ +

◆ empty()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::empty () const
+
+inline
+
+ +

Definition at line 172 of file LaserScan.h.

+ +
+
+ +

◆ isEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::isEmpty () const
+
+inline
+
+ +

Definition at line 173 of file LaserScan.h.

+ +
+
+ +

◆ size()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::size () const
+
+inline
+
+ +

Definition at line 174 of file LaserScan.h.

+ +
+
+ +

◆ dataType()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::dataType () const
+
+inline
+
+ +

Definition at line 175 of file LaserScan.h.

+ +
+
+ +

◆ is2d()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::is2d () const
+
+inline
+
+ +

Definition at line 176 of file LaserScan.h.

+ +
+
+ +

◆ hasNormals()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::hasNormals () const
+
+inline
+
+ +

Definition at line 177 of file LaserScan.h.

+ +
+
+ +

◆ hasRGB()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::hasRGB () const
+
+inline
+
+ +

Definition at line 178 of file LaserScan.h.

+ +
+
+ +

◆ hasIntensity()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::hasIntensity () const
+
+inline
+
+ +

Definition at line 179 of file LaserScan.h.

+ +
+
+ +

◆ hasTime()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::hasTime () const
+
+inline
+
+ +

Definition at line 180 of file LaserScan.h.

+ +
+
+ +

◆ hasRing()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::hasRing () const
+
+inline
+
+ +

Definition at line 181 of file LaserScan.h.

+ +
+
+ +

◆ isCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::isCompressed () const
+
+inline
+
+ +

True if the scan is stored compressed (single-row CV_8UC1 blob) instead of raw points.

+ +

Definition at line 183 of file LaserScan.h.

+ +
+
+ +

◆ isOrganized()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LaserScan::isOrganized () const
+
+inline
+
+ +

Definition at line 184 of file LaserScan.h.

+ +
+
+ +

◆ getIntensityOffset()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::getIntensityOffset () const
+
+inline
+
+ +

Definition at line 191 of file LaserScan.h.

+ +
+
+ +

◆ getRGBOffset()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::getRGBOffset () const
+
+inline
+
+ +

Definition at line 192 of file LaserScan.h.

+ +
+
+ +

◆ getNormalsOffset()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::getNormalsOffset () const
+
+inline
+
+ +

Definition at line 193 of file LaserScan.h.

+ +
+
+ +

◆ getRingOffset()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::getRingOffset () const
+
+inline
+
+ +

Definition at line 194 of file LaserScan.h.

+ +
+
+ +

◆ getTimeOffset()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::LaserScan::getTimeOffset () const
+
+inline
+
+ +

Definition at line 195 of file LaserScan.h.

+ +
+
+ +

◆ field()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float & rtabmap::LaserScan::field (unsigned int pointIndex,
unsigned int channelOffset 
)
+
+ +

Access a specific field value of a point.

+
Parameters
+ + + +
pointIndexIndex of the point.
channelOffsetChannel offset to access (e.g., 0=X, 1=Y, 2=Z if 2D, for other fields, use corresponding getter functions).
+
+
+
Returns
Reference to the field value.
+
See also
getIntensityOffset() getRGBOffset() getNormalsOffset() getTimeOffset()
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + +
void rtabmap::LaserScan::clear ()
+
+inline
+
+ +

Clear the scan data.

+ +

Definition at line 209 of file LaserScan.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.js b/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.js new file mode 100644 index 00000000..8d4f244e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LaserScan.js @@ -0,0 +1,25 @@ +var classrtabmap_1_1LaserScan = +[ + [ "Format", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007", [ + [ "kUnknown", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a068e1caebd3d8c939887dce363abd24d", null ], + [ "kXY", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a4f3e7340e44a01b48ccaf8e1f8dca3e1", null ], + [ "kXYI", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007abb92c193b2eb76045e1a141c2a42cc00", null ], + [ "kXYNormal", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ad4c3ec9f057875ade4f21f52901bceb5", null ], + [ "kXYINormal", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a799064c7e31b99134871b5d7d2906f97", null ], + [ "kXYZ", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a0c376810ac499a8a93a02bd0d4a19267", null ], + [ "kXYZI", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a5efd7fbf18cee72d9eb2daa4ea818e42", null ], + [ "kXYZRGB", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a500cf2179e454d8d5a74895b301c0829", null ], + [ "kXYZNormal", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a09e67f9495016103a162854b8e852bbc", null ], + [ "kXYZINormal", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a3fdc082afb503bb197e2651b6fc565b8", null ], + [ "kXYZRGBNormal", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007af2d5b7ff94aeac818000d840e257ac07", null ], + [ "kXYZIT", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ab169cf98665cb3f33d81240b37cc501c", null ], + [ "kXYZIRT", "classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a7df3c8f97dd52461787060befaf7f2d7", null ] + ] ], + [ "LaserScan", "classrtabmap_1_1LaserScan.html#a0cb5ba7c590cea1b36c81804acdbf302", null ], + [ "LaserScan", "classrtabmap_1_1LaserScan.html#aaf554921f866f90c48a6174d5f97a016", null ], + [ "isCompressed", "classrtabmap_1_1LaserScan.html#a25e8e9681240f4a21960977f5c12bcd9", null ], + [ "field", "classrtabmap_1_1LaserScan.html#a61d7ecfee5d444fdde06efb0f13ed68d", null ], + [ "clear", "classrtabmap_1_1LaserScan.html#af0ad1e84f0be48a84b772385249adb45", null ], + [ "operator+=", "classrtabmap_1_1LaserScan.html#af9f9a32f97cfbac321fc2509f0d1bd04", null ], + [ "operator+", "classrtabmap_1_1LaserScan.html#ab952e27e94b2fa942efe98ea651f4475", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar-members.html new file mode 100644 index 00000000..6efa27bf --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar-members.html @@ -0,0 +1,132 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Lidar Member List
+
+
+ +

This is the complete list of members for rtabmap::Lidar, including all inherited members.

+ + + + + + + + + + + + + + + + + +
captureData(SensorCaptureInfo *info=0)=0rtabmap::SensorCaptureprotectedpure virtual
getFrameRate() constrtabmap::SensorCaptureinline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() const =0rtabmap::SensorCapturepure virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")=0rtabmap::SensorCapturepure virtual
Lidar(float lidarRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Lidarinlineprotected
odomProvided() constrtabmap::SensorCaptureinlinevirtual
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
~Lidar() (defined in rtabmap::Lidar)rtabmap::Lidarinlinevirtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar.html b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar.html new file mode 100644 index 00000000..5436c4c3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar.html @@ -0,0 +1,276 @@ + + + + + + + + +RTAB-Map: rtabmap::Lidar Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Lidar Class Reference
+
+
+ +

#include <Lidar.h>

+
+Inheritance diagram for rtabmap::Lidar:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::Lidar:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Protected Member Functions

 Lidar (float lidarRate=0, const Transform &localTransform=Transform::getIdentity())
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
virtual SensorData captureData (SensorCaptureInfo *info=0)=0
 Pure virtual method to capture sensor data.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")=0
 Initializes the sensor.
 
virtual std::string getSerial () const =0
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+

Detailed Description

+

Class Lidar

+ +

Definition at line 40 of file Lidar.h.

+

Constructor & Destructor Documentation

+ +

◆ ~Lidar()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::Lidar::~Lidar ()
+
+inlinevirtual
+
+ +

Definition at line 43 of file Lidar.h.

+ +
+
+ +

◆ Lidar()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::Lidar::Lidar (float lidarRate = 0,
const Transform & localTransform = Transform::getIdentity() 
)
+
+inlineprotected
+
+

Constructor

+
Parameters
+ + + +
lidarRatethe frame rate (Hz), 0 for fast as the lidar can
localTransformthe transform from base frame to lidar frame
+
+
+ +

Definition at line 52 of file Lidar.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/Lidar.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar.js b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar.js new file mode 100644 index 00000000..907e814d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1Lidar = +[ + [ "Lidar", "classrtabmap_1_1Lidar.html#a9d14987cd20918960d6b3705b66241ed", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16-members.html new file mode 100644 index 00000000..5b07450f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16-members.html @@ -0,0 +1,137 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::LidarVLP16 Member List
+
+
+ +

This is the complete list of members for rtabmap::LidarVLP16, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
captureData(SensorCaptureInfo *info=0) overridertabmap::LidarVLP16protectedvirtual
getFrameRate() constrtabmap::SensorCaptureinline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() const overridertabmap::LidarVLP16inlinevirtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="") overridertabmap::LidarVLP16virtual
Lidar(float lidarRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::Lidarinlineprotected
LidarVLP16(const std::string &pcapFile, bool organized=false, bool stampLast=true, float frameRate=0.0f, Transform localTransform=Transform::getIdentity()) (defined in rtabmap::LidarVLP16)rtabmap::LidarVLP16
LidarVLP16(const boost::asio::ip::address &ipAddress, const std::uint16_t port=2368, bool organized=false, bool useHostTime=true, bool stampLast=true, float frameRate=0.0f, Transform localTransform=Transform::getIdentity()) (defined in rtabmap::LidarVLP16)rtabmap::LidarVLP16
odomProvided() constrtabmap::SensorCaptureinlinevirtual
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
setOrganized(bool enable) (defined in rtabmap::LidarVLP16)rtabmap::LidarVLP16
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
takeScan(SensorCaptureInfo *info=0) (defined in rtabmap::LidarVLP16)rtabmap::LidarVLP16inline
~Lidar() (defined in rtabmap::Lidar)rtabmap::Lidarinlinevirtual
~LidarVLP16() (defined in rtabmap::LidarVLP16)rtabmap::LidarVLP16virtual
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.html b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.html new file mode 100644 index 00000000..5ce0748b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.html @@ -0,0 +1,381 @@ + + + + + + + + +RTAB-Map: rtabmap::LidarVLP16 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::LidarVLP16 Class Reference
+
+
+
+Inheritance diagram for rtabmap::LidarVLP16:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::LidarVLP16:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ LidarVLP16 (const std::string &pcapFile, bool organized=false, bool stampLast=true, float frameRate=0.0f, Transform localTransform=Transform::getIdentity())
 
+ LidarVLP16 (const boost::asio::ip::address &ipAddress, const std::uint16_t port=2368, bool organized=false, bool useHostTime=true, bool stampLast=true, float frameRate=0.0f, Transform localTransform=Transform::getIdentity())
 
SensorData takeScan (SensorCaptureInfo *info=0)
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="") override
 Initializes the sensor.
 
virtual std::string getSerial () const override
 Returns the sensor's serial number or unique identifier.
 
+void setOrganized (bool enable)
 
- Public Member Functions inherited from rtabmap::SensorCapture
+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + + + + + + + + + + +

+Protected Member Functions

virtual SensorData captureData (SensorCaptureInfo *info=0) override
 Pure virtual method to capture sensor data.
 
- Protected Member Functions inherited from rtabmap::Lidar
 Lidar (float lidarRate=0, const Transform &localTransform=Transform::getIdentity())
 
- Protected Member Functions inherited from rtabmap::SensorCapture
 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+
+

Definition at line 61 of file LidarVLP16.h.

+

Member Function Documentation

+ +

◆ takeScan()

+ +
+
+ + + + + +
+ + + + + + + + +
SensorData rtabmap::LidarVLP16::takeScan (SensorCaptureInfo * info = 0)
+
+inline
+
+ +

Definition at line 79 of file LidarVLP16.h.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::LidarVLP16::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+overridevirtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::LidarVLP16::getSerial () const
+
+inlineoverridevirtual
+
+ +

Returns the sensor's serial number or unique identifier.

+

Pure virtual method that must be implemented by derived classes to return a unique identifier for the sensor (e.g., device serial number, file path, or other identifier).

+
Returns
String identifier for the sensor
+ +

Implements rtabmap::SensorCapture.

+ +

Definition at line 82 of file LidarVLP16.h.

+ +
+
+ +

◆ captureData()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::LidarVLP16::captureData (SensorCaptureInfo * info = 0)
+
+overrideprotectedvirtual
+
+ +

Pure virtual method to capture sensor data.

+

This method must be implemented by derived classes to perform the actual sensor data capture. It is called by takeData() after frame rate throttling.

+

The returned SensorData should:

    +
  • Have rectified images if calibration was loaded during init()
  • +
  • Include proper timestamps
  • +
  • Contain valid sensor data (images, depth, laser scans, etc.)
  • +
+
Parameters
+ + +
infoOptional pointer to SensorCaptureInfo to fill with capture metadata. The base class will fill ID, timestamp, and capture time, but derived classes can add additional information.
+
+
+
Returns
SensorData containing the captured sensor data
+
Note
If capture fails, return an empty SensorData (id=0, stamp=0.0).
+
+RGB and depth images should be already rectified if calibration was loaded.
+
See also
takeData()
+ +

Implements rtabmap::SensorCapture.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.js b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.js new file mode 100644 index 00000000..de18349c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1LidarVLP16 = +[ + [ "init", "classrtabmap_1_1LidarVLP16.html#a80162804e05013f64c6868084f460ab0", null ], + [ "getSerial", "classrtabmap_1_1LidarVLP16.html#a9d533721703457a60e94124d840fee95", null ], + [ "captureData", "classrtabmap_1_1LidarVLP16.html#a60d8190947d474e0557695c1032c40b8", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.map new file mode 100644 index 00000000..d20f2010 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.md5 new file mode 100644 index 00000000..cd93a94d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.md5 @@ -0,0 +1 @@ +c42e24aff3ee311da9e5dd31941e1c1f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1174d7fd21170832a3e4d86b11f66cac40d265b7 GIT binary patch literal 10242 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.map new file mode 100644 index 00000000..d20f2010 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.md5 new file mode 100644 index 00000000..cd93a94d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.md5 @@ -0,0 +1 @@ +c42e24aff3ee311da9e5dd31941e1c1f \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1LidarVLP16__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1174d7fd21170832a3e4d86b11f66cac40d265b7 GIT binary patch literal 10242 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.map new file mode 100644 index 00000000..bbe30762 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.md5 new file mode 100644 index 00000000..973ebf86 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.md5 @@ -0,0 +1 @@ +103b329e8022c780143221bbdb498639 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8161a3f5621cfbb028931dcbbcfafacd7395ba4f GIT binary patch literal 4411 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.md5 new file mode 100644 index 00000000..f3bed1ba --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.md5 @@ -0,0 +1 @@ +f40df56eb3690496b25cb07fbad49cf2 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Lidar__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..837eb3f7528c19db034b8d66ec44b4b231d27b21 GIT binary patch literal 6572 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Link Member List
+
+
+ +

This is the complete list of members for rtabmap::Link, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
from() constrtabmap::Linkinline
infMatrix() const (defined in rtabmap::Link)rtabmap::Linkinline
inverse() constrtabmap::Link
isValid() constrtabmap::Linkinline
kAllWithLandmarks enum valuertabmap::Link
kAllWithoutLandmarks enum valuertabmap::Link
kEnd enum valuertabmap::Link
kGlobalClosure enum valuertabmap::Link
kGravity enum valuertabmap::Link
kLandmark enum valuertabmap::Link
kLocalSpaceClosure enum valuertabmap::Link
kLocalTimeClosure enum valuertabmap::Link
kNeighbor enum valuertabmap::Link
kNeighborMerged enum valuertabmap::Link
kPosePrior enum valuertabmap::Link
kSelfRefLink enum valuertabmap::Link
kUndef enum valuertabmap::Link
kUserClosure enum valuertabmap::Link
kVirtualClosure enum valuertabmap::Link
Link()rtabmap::Link
Link(int from, int to, Type type, const Transform &transform, const cv::Mat &infMatrix=cv::Mat::eye(6, 6, CV_64FC1), const cv::Mat &userData=cv::Mat())rtabmap::Link
merge(const Link &link, Type outputType) constrtabmap::Link
rotVariance(bool minimum=true) constrtabmap::Link
setFrom(int from) (defined in rtabmap::Link)rtabmap::Linkinline
setInfMatrix(const cv::Mat &infMatrix)rtabmap::Link
setTo(int to) (defined in rtabmap::Link)rtabmap::Linkinline
setTransform(const Transform &transform) (defined in rtabmap::Link)rtabmap::Linkinline
setType(Type type) (defined in rtabmap::Link)rtabmap::Linkinline
to() constrtabmap::Linkinline
transform() constrtabmap::Linkinline
transVariance(bool minimum=true) constrtabmap::Link
type() constrtabmap::Linkinline
Type enum namertabmap::Link
typeName(Type type)rtabmap::Linkstatic
typeName() const (defined in rtabmap::Link)rtabmap::Linkinline
uncompressUserData()rtabmap::Link
uncompressUserDataConst() constrtabmap::Link
userDataCompressed() constrtabmap::Linkinline
userDataRaw() constrtabmap::Linkinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Link.html b/preview/pr-1773/api/latest/classrtabmap_1_1Link.html new file mode 100644 index 00000000..d7d19b51 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Link.html @@ -0,0 +1,863 @@ + + + + + + + + +RTAB-Map: rtabmap::Link Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Directed constraint between two nodes in RTAB-Map's pose graph. + More...

+ +

#include <Link.h>

+ + + + + +

+Public Types

enum  Type {
+  kNeighbor +, kGlobalClosure +, kLocalSpaceClosure +, kLocalTimeClosure +,
+  kUserClosure +, kVirtualClosure +, kNeighborMerged +, kPosePrior +,
+  kLandmark +, kGravity +, kEnd +, kSelfRefLink = 97 +,
+  kAllWithLandmarks = 98 +, kAllWithoutLandmarks = 99 +, kUndef = 99 +
+ }
 Link category and filter sentinels. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ Link ()
 Default constructor; creates an invalid link (kUndef).
 
 Link (int from, int to, Type type, const Transform &transform, const cv::Mat &infMatrix=cv::Mat::eye(6, 6, CV_64FC1), const cv::Mat &userData=cv::Mat())
 Constructs a link between two nodes.
 
bool isValid () const
 
int from () const
 
int to () const
 
const Transform & transform () const
 
Type type () const
 
std::string typeName () const
 
const cv::Mat & infMatrix () const
 
double rotVariance (bool minimum=true) const
 Rotation variance derived from the information matrix diagonal (roll, pitch, yaw).
 
double transVariance (bool minimum=true) const
 Translation variance derived from the information matrix diagonal (x, y, z).
 
void setFrom (int from)
 
void setTo (int to)
 
void setTransform (const Transform &transform)
 
void setType (Type type)
 
+void setInfMatrix (const cv::Mat &infMatrix)
 Sets the 6x6 information matrix (CV_64FC1); diagonal entries must be positive and finite.
 
const cv::Mat & userDataRaw () const
 
const cv::Mat & userDataCompressed () const
 
+void uncompressUserData ()
 Decompresses user data into userDataRaw() if compressed data is stored.
 
cv::Mat uncompressUserDataConst () const
 
Link merge (const Link &link, Type outputType) const
 Chains this link (from → to) with link (to → link.to).
 
Link inverse () const
 
+ + + +

+Static Public Member Functions

static std::string typeName (Type type)
 
+

Detailed Description

+

Directed constraint between two nodes in RTAB-Map's pose graph.

+

A link connects signature from() to signature to() with a relative Transform and an information matrix (inverse covariance) used by graph optimization. Links are stored on Signature objects and persisted in the database; they define odometry chains, loop closures, landmarks, and priors.

+

The transform is expressed from the from node frame to the to node frame (i.e. pose of to relative to from), unless type() indicates a special semantics (e.g. kPosePrior, kLandmark).

+
See also
Signature
+
+Memory::addLink()
+ +

Definition at line 54 of file Link.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::Link::Type
+
+ +

Link category and filter sentinels.

+

Values kSelfRefLink, kAllWithLandmarks, kAllWithoutLandmarks and kUndef are also used as query filters when retrieving links from memory or the database (they are not stored as link types on signatures).

+ + + + + + + + + + + + + + + + +
Enumerator
kNeighbor 

Sequential odometry link between consecutive nodes.

+
kGlobalClosure 

Global loop closure added by global loop closure detection (i.e., using bags-of-words to find loop closures with other nodes in WM without using current estimated pose).

+
kLocalSpaceClosure 

Local loop closure added by proximity detection by space (i.e. using current estimated pose to find loop closures with nearby nodes in WM).

+
kLocalTimeClosure 

Local loop closure added by proximity detection by time (i.e. between nodes in STM).

+
kUserClosure 

User-defined loop closure constraint.

+
kVirtualClosure 

Virtual link added to keep the path linked to local map.

+
kNeighborMerged 

Merged neighbor link after graph reduction.

+
kPosePrior 

Absolute pose prior in the world frame (from == to).

+
kLandmark 

Observation of a landmark: from is the observer node, to is a negative landmark id.

+
kGravity 

Gravity direction constraint on the base frame (from == to).

+
kEnd 

Sentinel: number of link types that can be stored.

+
kSelfRefLink 

Filter: links where from == to (e.g. kPosePrior, kGravity).

+
kAllWithLandmarks 

Filter: all link types including kLandmark.

+
kAllWithoutLandmarks 

Filter: all link types except kLandmark.

+
kUndef 

Undefined type or invalid link.

+
+ +

Definition at line 64 of file Link.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Link()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::Link::Link (int from,
int to,
Type type,
const Transform & transform,
const cv::Mat & infMatrix = cv::Mat::eye(6, 6, CV_64FC1),
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Constructs a link between two nodes.

+
Parameters
+ + + + + + + +
fromSource signature id.
toTarget signature id (negative for landmarks when type is kLandmark).
typeLink category.
transformRelative transform from from to to.
infMatrix6x6 information matrix (inverse covariance)
userDataOptional payload; compressed automatically if not already CV_8UC1.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ typeName() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::Link::typeName (Type type)
+
+static
+
+
Returns
Human-readable name for type (e.g. "Neighbor", "GlobalClosure").
+ +
+
+ +

◆ isValid()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Link::isValid () const
+
+inline
+
+
Returns
True if ids, transform, and type are valid for use in the graph.
+ +

Definition at line 104 of file Link.h.

+ +
+
+ +

◆ from()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Link::from () const
+
+inline
+
+
Returns
Source signature id.
+ +

Definition at line 107 of file Link.h.

+ +
+
+ +

◆ to()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Link::to () const
+
+inline
+
+
Returns
Target signature id (negative for a landmark).
+ +

Definition at line 109 of file Link.h.

+ +
+
+ +

◆ transform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Link::transform () const
+
+inline
+
+
Returns
Relative transform, from the from() frame to the to() frame.
+ +

Definition at line 111 of file Link.h.

+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
Type rtabmap::Link::type () const
+
+inline
+
+
Returns
Link category (see Type).
+ +

Definition at line 113 of file Link.h.

+ +
+
+ +

◆ typeName() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
std::string rtabmap::Link::typeName () const
+
+inline
+
+ +

Definition at line 114 of file Link.h.

+ +
+
+ +

◆ infMatrix()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::Link::infMatrix () const
+
+inline
+
+ +

Definition at line 115 of file Link.h.

+ +
+
+ +

◆ rotVariance()

+ +
+
+ + + + + + + + +
double rtabmap::Link::rotVariance (bool minimum = true) const
+
+ +

Rotation variance derived from the information matrix diagonal (roll, pitch, yaw).

+
Parameters
+ + +
minimumIf true, returns the largest diagonal entry (most uncertain axis); if false, returns the smallest non-zero entry.
+
+
+ +
+
+ +

◆ transVariance()

+ +
+
+ + + + + + + + +
double rtabmap::Link::transVariance (bool minimum = true) const
+
+ +

Translation variance derived from the information matrix diagonal (x, y, z).

+
Parameters
+ + +
minimumIf true, returns the largest diagonal entry; if false, the smallest non-zero entry.
+
+
+ +
+
+ +

◆ setFrom()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Link::setFrom (int from)
+
+inline
+
+ +

Definition at line 129 of file Link.h.

+ +
+
+ +

◆ setTo()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Link::setTo (int to)
+
+inline
+
+ +

Definition at line 130 of file Link.h.

+ +
+
+ +

◆ setTransform()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Link::setTransform (const Transform & transform)
+
+inline
+
+ +

Definition at line 131 of file Link.h.

+ +
+
+ +

◆ setType()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Link::setType (Type type)
+
+inline
+
+ +

Definition at line 132 of file Link.h.

+ +
+
+ +

◆ userDataRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::Link::userDataRaw () const
+
+inline
+
+
Returns
Uncompressed user data, empty unless it was set raw or uncompressUserData() was called.
+ +

Definition at line 137 of file Link.h.

+ +
+
+ +

◆ userDataCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::Link::userDataCompressed () const
+
+inline
+
+
Returns
User data as stored/persisted, in compressed form.
+ +

Definition at line 139 of file Link.h.

+ +
+
+ +

◆ uncompressUserDataConst()

+ +
+
+ + + + + + + +
cv::Mat rtabmap::Link::uncompressUserDataConst () const
+
+
Returns
Uncompressed user data without modifying internal storage.
+ +
+
+ +

◆ merge()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Link rtabmap::Link::merge (const Link & link,
Type outputType 
) const
+
+ +

Chains this link (from → to) with link (to → link.to).

+
Parameters
+ + + +
linkSecond link; must satisfy this->to() == link.from().
outputTypeType of the merged link.
+
+
+
Returns
Single link from from() to link.to() with transform (T_{ac} = T_{ab} T_{bc}) (or null if either input transform is null). Information matrix handling depends on outputType:
    +
  • kNeighborMerged: (\Omega_{ac} = (\Omega_{ab}^{-1} + \Omega_{bc}^{-1})^{-1}) (covariances add when both legs are diagonal and independent).
  • +
  • Other types: keeps the full information matrix of link unless (\Omega_{ab}(0,0) < \Omega_{bc}(0,0)) (i.e. the smaller x information entry).
  • +
+
+ +
+
+ +

◆ inverse()

+ +
+
+ + + + + + + +
Link rtabmap::Link::inverse () const
+
+
Returns
Link with swapped endpoints and inverted transform.
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/Link.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Link.js b/preview/pr-1773/api/latest/classrtabmap_1_1Link.js new file mode 100644 index 00000000..bfa1f6f6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Link.js @@ -0,0 +1,36 @@ +var classrtabmap_1_1Link = +[ + [ "Type", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e", [ + [ "kNeighbor", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf", null ], + [ "kGlobalClosure", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae963042a31afec63e8c0683696ac6791", null ], + [ "kLocalSpaceClosure", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea9195217dc75001841fce507de43fb0db", null ], + [ "kLocalTimeClosure", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae0b352e9cbb32d357ce59f09159c09fb", null ], + [ "kUserClosure", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea878009c73fbfa2736f438b748afbc1f6", null ], + [ "kVirtualClosure", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eaf74a4b0552da7509b16f8c4b8baf85c7", null ], + [ "kNeighborMerged", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db", null ], + [ "kPosePrior", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea56caa6c8eeab867bb16f763f3ddbd9b1", null ], + [ "kLandmark", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9", null ], + [ "kGravity", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea37d186f2447908a27d531be74a2f6983", null ], + [ "kEnd", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eaa071317c0618d61e3b2cde25e1095c00", null ], + [ "kSelfRefLink", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e", null ], + [ "kAllWithLandmarks", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eacc2cbab0ea322149df37addb91cb75ac", null ], + [ "kAllWithoutLandmarks", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae8ffae7407e28cf7a125f76bea2864a5", null ], + [ "kUndef", "classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4", null ] + ] ], + [ "Link", "classrtabmap_1_1Link.html#a2dce9c7a3ef04085d51f702002107c7b", null ], + [ "Link", "classrtabmap_1_1Link.html#a8f624aa84862d7abafae5cfc7175f885", null ], + [ "isValid", "classrtabmap_1_1Link.html#a53974a2cea4315106cf12065ace8bb96", null ], + [ "from", "classrtabmap_1_1Link.html#a185194e8e766ca979e4de7e179f0e534", null ], + [ "to", "classrtabmap_1_1Link.html#a8d534b311c37d789276dd58bd7dc89e4", null ], + [ "transform", "classrtabmap_1_1Link.html#a49186880bde84ca3dd43c2d95449fbfb", null ], + [ "type", "classrtabmap_1_1Link.html#a17ea666cb54c4f7cce1c80bc2e1950c3", null ], + [ "rotVariance", "classrtabmap_1_1Link.html#a00cecebc9adf3ee5afb66d6ad63871e4", null ], + [ "transVariance", "classrtabmap_1_1Link.html#a3c4344c01b4f32a8b4a957b979fea84e", null ], + [ "setInfMatrix", "classrtabmap_1_1Link.html#a3a82104ae4195beff134811a3a19d939", null ], + [ "userDataRaw", "classrtabmap_1_1Link.html#a1fce4ae495f2a4f5e0f7ac10551983ac", null ], + [ "userDataCompressed", "classrtabmap_1_1Link.html#abdec9d745b1b4679a87b944cd5b48213", null ], + [ "uncompressUserData", "classrtabmap_1_1Link.html#adb075101cafb535fc4a9b74f7afae521", null ], + [ "uncompressUserDataConst", "classrtabmap_1_1Link.html#ac425a90800494da64512011315c47e62", null ], + [ "merge", "classrtabmap_1_1Link.html#a953a029f601d7ca3efbb12ca22da4542", null ], + [ "inverse", "classrtabmap_1_1Link.html#a0d5dcb7392f6ac89ca8b4de202ca07d3", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid-members.html new file mode 100644 index 00000000..c66abf0c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid-members.html @@ -0,0 +1,124 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::LocalGrid Member List
+
+
+ +

This is the complete list of members for rtabmap::LocalGrid, including all inherited members.

+ + + + + + + + + +
cellSizertabmap::LocalGrid
emptyCellsrtabmap::LocalGrid
groundCellsrtabmap::LocalGrid
is3D() constrtabmap::LocalGrid
LocalGrid(const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))rtabmap::LocalGrid
obstacleCellsrtabmap::LocalGrid
viewPointrtabmap::LocalGrid
~LocalGrid() (defined in rtabmap::LocalGrid)rtabmap::LocalGridinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.html b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.html new file mode 100644 index 00000000..b1b7cefe --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.html @@ -0,0 +1,369 @@ + + + + + + + + +RTAB-Map: rtabmap::LocalGrid Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::LocalGrid Class Reference
+
+
+ +

Local occupancy grid cells for one map node (ground, obstacles, empty). + More...

+ +

#include <LocalGrid.h>

+ + + + + + + +

+Public Member Functions

 LocalGrid (const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))
 Builds a local grid from cell matrices.
 
bool is3D () const
 
+ + + + + + + + + + + + + + + + +

+Public Attributes

cv::Mat groundCells
 Ground cells (1×N, CV_32FC2–CV_32FC7, see class doc).
 
cv::Mat obstacleCells
 Obstacle cells (same layout as groundCells).
 
cv::Mat emptyCells
 Empty/free cells (same layout as groundCells).
 
float cellSize
 Cell size in meters.
 
cv::Point3f viewPoint
 View point used to build the grid.
 
+

Detailed Description

+

Local occupancy grid cells for one map node (ground, obstacles, empty).

+

Each layer is stored as a 1×N cv::Mat of cell coordinates in the robot/base frame. Layouts match LaserScan grid storage (LaserScan::Format):

    +
  • CV_32FC2 (2 ch): kXY — (x, y)
  • +
  • CV_32FC3 (3 ch): kXYZ or kXYI — (x, y, z) or (x, y, intensity)
  • +
  • CV_32FC4 (4 ch): kXYZI or kXYZRGB — (x, y, z, intensity) or (x, y, z, RGB)
  • +
  • CV_32FC5 (5 ch): kXYNormal or kXYZIT — 2D (x, y, nx, ny, nz) or 3D (x, y, z, intensity, time)
  • +
  • CV_32FC6 (6 ch): kXYINormal, kXYZNormal or kXYZIRT
  • +
  • CV_32FC7 (7 ch): kXYZINormal or kXYZRGBNormal
  • +
+

is3D() is true when every non-empty layer is CV_32FC3, CV_32FC4 or CV_32FC6 (5-channel layers are treated as 2D by OccupancyGrid). Extra fields are not used for pose/projection. cellSize is the grid resolution in meters (must be > 0). viewPoint is the sensor/view origin used when the grid was built.

+
See also
LaserScan
+
+LocalGridMaker
+
+OccupancyGrid
+
+LocalGridCache
+ +

Definition at line 61 of file LocalGrid.h.

+

Constructor & Destructor Documentation

+ +

◆ LocalGrid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::LocalGrid::LocalGrid (const cv::Mat & ground,
const cv::Mat & obstacles,
const cv::Mat & empty,
float cellSize,
const cv::Point3f & viewPoint = cv::Point3f(0, 0, 0) 
)
+
+ +

Builds a local grid from cell matrices.

+
Parameters
+ + + + + + +
groundGround cell coordinates (may be empty).
obstaclesObstacle cell coordinates (may be empty).
emptyEmpty/free cell coordinates (may be empty).
cellSizeGrid cell size in meters (must be > 0).
viewPointView/sensor origin in the grid frame.
+
+
+ +
+
+ +

◆ ~LocalGrid()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::LocalGrid::~LocalGrid ()
+
+inlinevirtual
+
+ +

Definition at line 77 of file LocalGrid.h.

+ +
+
+

Member Function Documentation

+ +

◆ is3D()

+ +
+
+ + + + + + + +
bool rtabmap::LocalGrid::is3D () const
+
+
Returns
True if every non-empty layer is CV_32FC3, CV_32FC4 or CV_32FC6 (see class doc).
+ +
+
+

Member Data Documentation

+ +

◆ groundCells

+ +
+
+ + + + +
cv::Mat rtabmap::LocalGrid::groundCells
+
+ +

Ground cells (1×N, CV_32FC2–CV_32FC7, see class doc).

+ +

Definition at line 82 of file LocalGrid.h.

+ +
+
+ +

◆ obstacleCells

+ +
+
+ + + + +
cv::Mat rtabmap::LocalGrid::obstacleCells
+
+ +

Obstacle cells (same layout as groundCells).

+ +

Definition at line 83 of file LocalGrid.h.

+ +
+
+ +

◆ emptyCells

+ +
+
+ + + + +
cv::Mat rtabmap::LocalGrid::emptyCells
+
+ +

Empty/free cells (same layout as groundCells).

+ +

Definition at line 84 of file LocalGrid.h.

+ +
+
+ +

◆ cellSize

+ +
+
+ + + + +
float rtabmap::LocalGrid::cellSize
+
+ +

Cell size in meters.

+ +

Definition at line 85 of file LocalGrid.h.

+ +
+
+ +

◆ viewPoint

+ +
+
+ + + + +
cv::Point3f rtabmap::LocalGrid::viewPoint
+
+ +

View point used to build the grid.

+ +

Definition at line 86 of file LocalGrid.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.js b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.js new file mode 100644 index 00000000..2c2f6e19 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGrid.js @@ -0,0 +1,10 @@ +var classrtabmap_1_1LocalGrid = +[ + [ "LocalGrid", "classrtabmap_1_1LocalGrid.html#a42d930cf05d39ecbbd2e3678f8d0b47a", null ], + [ "is3D", "classrtabmap_1_1LocalGrid.html#af4bac3ac9ffd57653dee619b5be2b4f7", null ], + [ "groundCells", "classrtabmap_1_1LocalGrid.html#a1d828782755374c7601810b35f99a9e5", null ], + [ "obstacleCells", "classrtabmap_1_1LocalGrid.html#abe290c60168557fb899914f53e4ad1a1", null ], + [ "emptyCells", "classrtabmap_1_1LocalGrid.html#a7d0a732be74bd5c46e9029982bf4972b", null ], + [ "cellSize", "classrtabmap_1_1LocalGrid.html#a13abf7a3ed9d8680ea339551401b62f5", null ], + [ "viewPoint", "classrtabmap_1_1LocalGrid.html#aa8f5a6219144d584cde0fe6b565ac0bb", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache-members.html new file mode 100644 index 00000000..555b7f5e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache-members.html @@ -0,0 +1,129 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::LocalGridCache Member List
+
+
+ +

This is the complete list of members for rtabmap::LocalGridCache, including all inherited members.

+ + + + + + + + + + + + + + +
add(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))rtabmap::LocalGridCache
add(int nodeId, const LocalGrid &localGrid)rtabmap::LocalGridCache
begin() const (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinline
clear(bool temporaryOnly=false)rtabmap::LocalGridCache
empty() const (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinline
end() const (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinline
find(int nodeId) const (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinline
getMemoryUsed() constrtabmap::LocalGridCache
LocalGridCache() (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinline
localGrids() const (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinline
shareTo(int nodeId, LocalGridCache &anotherCache) constrtabmap::LocalGridCache
size() const (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinline
~LocalGridCache() (defined in rtabmap::LocalGridCache)rtabmap::LocalGridCacheinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.html b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.html new file mode 100644 index 00000000..96248358 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.html @@ -0,0 +1,440 @@ + + + + + + + + +RTAB-Map: rtabmap::LocalGridCache Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::LocalGridCache Class Reference
+
+
+ +

Cache of LocalGrid entries keyed by map node id. + More...

+ +

#include <LocalGrid.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void add (int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))
 Inserts or replaces the grid for nodeId (from separate cell mats).
 
+void add (int nodeId, const LocalGrid &localGrid)
 Inserts or replaces the grid for nodeId.
 
bool shareTo (int nodeId, LocalGridCache &anotherCache) const
 Copies a grid to anotherCache if present here and absent there.
 
+unsigned long getMemoryUsed () const
 Approximate memory used by cached grids (bytes).
 
void clear (bool temporaryOnly=false)
 Removes cached grids.
 
size_t size () const
 
bool empty () const
 
const std::map< int, LocalGrid > & localGrids () const
 
std::map< int, LocalGrid >::const_iterator find (int nodeId) const
 
std::map< int, LocalGrid >::const_iterator begin () const
 
std::map< int, LocalGrid >::const_iterator end () const
 
+

Detailed Description

+

Cache of LocalGrid entries keyed by map node id.

+

Used by GlobalMap and its subclasses (e.g. OccupancyGrid) to hold per-node local grids before assembly. Node id 0 is stored as -1 (temporary grid). Negative ids passed to add() are rejected.

+ +

Definition at line 97 of file LocalGrid.h.

+

Constructor & Destructor Documentation

+ +

◆ LocalGridCache()

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::LocalGridCache::LocalGridCache ()
+
+inline
+
+ +

Definition at line 100 of file LocalGrid.h.

+ +
+
+ +

◆ ~LocalGridCache()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::LocalGridCache::~LocalGridCache ()
+
+inlinevirtual
+
+ +

Definition at line 101 of file LocalGrid.h.

+ +
+
+

Member Function Documentation

+ +

◆ shareTo()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::LocalGridCache::shareTo (int nodeId,
LocalGridCache & anotherCache 
) const
+
+ +

Copies a grid to anotherCache if present here and absent there.

+
Returns
True if a grid was shared.
+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + + +
void rtabmap::LocalGridCache::clear (bool temporaryOnly = false)
+
+ +

Removes cached grids.

+
Parameters
+ + +
temporaryOnlyIf true, removes only entries with negative ids (e.g. -1).
+
+
+ +
+
+ +

◆ size()

+ +
+
+ + + + + +
+ + + + + + + +
size_t rtabmap::LocalGridCache::size () const
+
+inline
+
+ +

Definition at line 129 of file LocalGrid.h.

+ +
+
+ +

◆ empty()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LocalGridCache::empty () const
+
+inline
+
+ +

Definition at line 130 of file LocalGrid.h.

+ +
+
+ +

◆ localGrids()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, LocalGrid > & rtabmap::LocalGridCache::localGrids () const
+
+inline
+
+ +

Definition at line 131 of file LocalGrid.h.

+ +
+
+ +

◆ find()

+ +
+
+ + + + + +
+ + + + + + + + +
std::map< int, LocalGrid >::const_iterator rtabmap::LocalGridCache::find (int nodeId) const
+
+inline
+
+ +

Definition at line 133 of file LocalGrid.h.

+ +
+
+ +

◆ begin()

+ +
+
+ + + + + +
+ + + + + + + +
std::map< int, LocalGrid >::const_iterator rtabmap::LocalGridCache::begin () const
+
+inline
+
+ +

Definition at line 134 of file LocalGrid.h.

+ +
+
+ +

◆ end()

+ +
+
+ + + + + +
+ + + + + + + +
std::map< int, LocalGrid >::const_iterator rtabmap::LocalGridCache::end () const
+
+inline
+
+ +

Definition at line 135 of file LocalGrid.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.js b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.js new file mode 100644 index 00000000..84e3309e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridCache.js @@ -0,0 +1,8 @@ +var classrtabmap_1_1LocalGridCache = +[ + [ "add", "classrtabmap_1_1LocalGridCache.html#a2e83e9c0c11051b5da84bf04b603a99b", null ], + [ "add", "classrtabmap_1_1LocalGridCache.html#a765142f021aa580bcfdd84545ebc044f", null ], + [ "shareTo", "classrtabmap_1_1LocalGridCache.html#a6350523acd5ce71be45cd653071837fc", null ], + [ "getMemoryUsed", "classrtabmap_1_1LocalGridCache.html#ab72a88b5c00d2a104ac1055538960acb", null ], + [ "clear", "classrtabmap_1_1LocalGridCache.html#a4068440ef10859d05f252e36f916604b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker-members.html new file mode 100644 index 00000000..920dffb4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker-members.html @@ -0,0 +1,154 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::LocalGridMaker Member List
+
+
+ +

This is the complete list of members for rtabmap::LocalGridMaker, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cellSize_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
cloudDecimation_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
clusterRadius_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
createLocalMap(const Signature &node, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPoint)rtabmap::LocalGridMaker
createLocalMap(const LaserScan &cloud, const Transform &pose, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPointInOut) constrtabmap::LocalGridMaker
flatObstaclesDetected_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
footprintHeight_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
footprintLength_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
footprintWidth_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
getCellSize() constrtabmap::LocalGridMakerinline
grid3D_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
groundIsObstacle_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
groundNormalsUp_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
isGridFromDepth() constrtabmap::LocalGridMakerinline
isMapFrameProjection() constrtabmap::LocalGridMakerinline
LocalGridMaker(const ParametersMap &parameters=ParametersMap())rtabmap::LocalGridMaker
maxGroundAngle_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
maxGroundHeight_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
maxObstacleHeight_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
minClusterSize_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
minGroundHeight_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
noiseFilteringMinNeighbors_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
noiseFilteringRadius_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
normalKSearch_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
normalsSegmentation_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
occupancySensor_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
parameters_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
parseParameters(const ParametersMap &parameters)rtabmap::LocalGridMakervirtual
preVoxelFiltering_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
projMapFrame_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
rangeMax_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
rangeMin_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
rayTracing_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
roiRatios_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
scan2dUnknownSpaceFilled_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
scanDecimation_ (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakerprotected
segmentCloud(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &pose, const cv::Point3f &viewPoint, pcl::IndicesPtr &groundIndices, pcl::IndicesPtr &obstaclesIndices, pcl::IndicesPtr *flatObstacles=0) constrtabmap::LocalGridMaker
~LocalGridMaker() (defined in rtabmap::LocalGridMaker)rtabmap::LocalGridMakervirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.html b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.html new file mode 100644 index 00000000..1391a9ac --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.html @@ -0,0 +1,1218 @@ + + + + + + + + +RTAB-Map: rtabmap::LocalGridMaker Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::LocalGridMaker Class Reference
+
+
+ +

Builds per-node local occupancy grids from laser scans or depth clouds. + More...

+ +

#include <LocalGridMaker.h>

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ LocalGridMaker (const ParametersMap &parameters=ParametersMap())
 Constructs with parseParameters() on parameters (or defaults).
 
+virtual void parseParameters (const ParametersMap &parameters)
 Updates grid settings from Grid/ entries in parameters.
 
float getCellSize () const
 
bool isGridFromDepth () const
 
bool isMapFrameProjection () const
 
template<typename PointT >
pcl::PointCloud< PointT >::Ptr segmentCloud (const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &pose, const cv::Point3f &viewPoint, pcl::IndicesPtr &groundIndices, pcl::IndicesPtr &obstaclesIndices, pcl::IndicesPtr *flatObstacles=0) const
 Segments a point cloud into ground and obstacle indices.
 
void createLocalMap (const Signature &node, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPoint)
 Creates a local grid from a Signature's laser scan or depth data.
 
void createLocalMap (const LaserScan &cloud, const Transform &pose, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPointInOut) const
 Creates a local grid from a 3D (or organized) LaserScan.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

ParametersMap parameters_
 
unsigned int cloudDecimation_
 
float rangeMax_
 
float rangeMin_
 
std::vector< float > roiRatios_
 
float footprintLength_
 
float footprintWidth_
 
float footprintHeight_
 
int scanDecimation_
 
float cellSize_
 
bool preVoxelFiltering_
 
int occupancySensor_
 
bool projMapFrame_
 
float maxObstacleHeight_
 
int normalKSearch_
 
float groundNormalsUp_
 
float maxGroundAngle_
 
float clusterRadius_
 
int minClusterSize_
 
bool flatObstaclesDetected_
 
float minGroundHeight_
 
float maxGroundHeight_
 
bool normalsSegmentation_
 
bool grid3D_
 
bool groundIsObstacle_
 
float noiseFilteringRadius_
 
int noiseFilteringMinNeighbors_
 
bool scan2dUnknownSpaceFilled_
 
bool rayTracing_
 
+

Detailed Description

+

Builds per-node local occupancy grids from laser scans or depth clouds.

+

Configured via Grid/ parameters (parseParameters()). Used by Memory to populate LocalGrid cells (ground / obstacles / empty) stored on SensorData and cached in LocalGridCache for global maps (OccupancyGrid, OctoMap, GridMap).

+

Sensor source (Grid/Sensor, isGridFromDepth()):

    +
  • 0 — laser scan only
  • +
  • 1 — depth image(s) only (default)
  • +
  • 2 — laser scan and depth
  • +
+

2D laser path: projects a 2D LaserScan with util3d::occupancy2DFromLaserScan().

+

3D path: segments the scan/cloud into ground and obstacles (segmentCloud()), then outputs LocalGrid cell matrices (2D projection or 3D cells per Grid/3D).

+
See also
LocalGrid
+
+Memory
+ +

Definition at line 64 of file LocalGridMaker.h.

+

Member Function Documentation

+ +

◆ getCellSize()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::LocalGridMaker::getCellSize () const
+
+inline
+
+
Returns
Current Grid/CellSize (m).
+ +

Definition at line 75 of file LocalGridMaker.h.

+ +
+
+ +

◆ isGridFromDepth()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LocalGridMaker::isGridFromDepth () const
+
+inline
+
+
Returns
True if occupancy is built from depth (Grid/Sensor is 1 or 2).
+ +

Definition at line 77 of file LocalGridMaker.h.

+ +
+
+ +

◆ isMapFrameProjection()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::LocalGridMaker::isMapFrameProjection () const
+
+inline
+
+
Returns
True if Grid/MapFrameProjection is enabled.
+ +

Definition at line 79 of file LocalGridMaker.h.

+ +
+
+ +

◆ segmentCloud()

+ +
+
+
+template<typename PointT >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
pcl::PointCloud< PointT >::Ptr rtabmap::LocalGridMaker::segmentCloud (const typename pcl::PointCloud< PointT >::Ptr & cloud,
const pcl::IndicesPtr & indices,
const Transform & pose,
const cv::Point3f & viewPoint,
pcl::IndicesPtr & groundIndices,
pcl::IndicesPtr & obstaclesIndices,
pcl::IndicesPtr * flatObstacles = 0 
) const
+
+ +

Segments a point cloud into ground and obstacle indices.

+

Applies optional voxel filtering (Grid/PreVoxelFiltering, leaf size Grid/CellSize), footprint crop, height filtering, then either normal-based ground segmentation (Grid/NormalsSegmentation) or Z passthrough.

+
Parameters
+ + + + + + + + +
cloudInput cloud (sensor frame, transformed internally using pose). Must be non-null; an empty cloud is allowed and returns empty outputs.
indicesSubset of cloud to process (must be non-null; empty = all points when the cloud is dense).
poseNode pose (used for map-frame projection and footprint).
viewPointSensor origin for segmentation / ray tracing.
groundIndicesOutput indices of ground points.
obstaclesIndicesOutput indices of obstacle points.
flatObstaclesOptional output for flat obstacle clusters.
+
+
+
Returns
Segmented cloud (voxel-downsampled when Grid/PreVoxelFiltering is true, using Grid/CellSize).
+ +

Definition at line 68 of file LocalMapMaker.hpp.

+ +
+
+ +

◆ createLocalMap() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::LocalGridMaker::createLocalMap (const Signature & node,
cv::Mat & groundCells,
cv::Mat & obstacleCells,
cv::Mat & emptyCells,
cv::Point3f & viewPoint 
)
+
+ +

Creates a local grid from a Signature's laser scan or depth data.

+
Parameters
+ + + + + + +
nodeSignature with sensor data (pose used for 3D scans).
groundCellsOutput ground cells (LocalGrid format).
obstacleCellsOutput obstacle cells.
emptyCellsOutput empty/free cells. Behavior depends on the sensor path:
    +
  • 2D laser, laser-only mode (Grid/Sensor=0 and a 2D LaserScan): uses util3d::occupancy2DFromLaserScan() / util3d::create2DMap(). Free space along each hit beam is always ray-traced (sensor → obstacle). Grid/Scan2dUnknownSpaceFilled is separate: when true, it additionally sweeps unknown angular gaps between the first and last hit (sparse FOV / “holes” in coverage) out to Grid/RangeMax or scan max range.
  • +
  • Other cases (3D scan, depth, Grid/Sensor=2, etc.): see the LaserScan overload of createLocalMap().
  • +
+
viewPointOutput view point used for the grid.
+
+
+ +
+
+ +

◆ createLocalMap() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::LocalGridMaker::createLocalMap (const LaserScan & cloud,
const Transform & pose,
cv::Mat & groundCells,
cv::Mat & obstacleCells,
cv::Mat & emptyCells,
cv::Point3f & viewPointInOut 
) const
+
+ +

Creates a local grid from a 3D (or organized) LaserScan.

+
Parameters
+ + + + + + + +
cloudInput scan in sensor frame.
poseNode pose in map/odom frame.
groundCellsOutput ground cells.
obstacleCellsOutput obstacle cells.
emptyCellsOutput empty/free cells. Filled when Grid/RayTracing is true: 3D via OctoMap if Grid/3D and OctoMap support are enabled (Grid/RangeMax, Grid/CellSize); otherwise 2D ray fill via occupancy2DFromLaserScan when Grid/3D is false (Grid/RangeMax, Grid/CellSize).
viewPointInOutView point (may be rotated if isMapFrameProjection()).
+
+
+ +
+
+

Member Data Documentation

+ +

◆ parameters_

+ +
+
+ + + + + +
+ + + + +
ParametersMap rtabmap::LocalGridMaker::parameters_
+
+protected
+
+ +

Definition at line 172 of file LocalGridMaker.h.

+ +
+
+ +

◆ cloudDecimation_

+ +
+
+ + + + + +
+ + + + +
unsigned int rtabmap::LocalGridMaker::cloudDecimation_
+
+protected
+
+ +

Definition at line 174 of file LocalGridMaker.h.

+ +
+
+ +

◆ rangeMax_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::rangeMax_
+
+protected
+
+ +

Definition at line 175 of file LocalGridMaker.h.

+ +
+
+ +

◆ rangeMin_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::rangeMin_
+
+protected
+
+ +

Definition at line 176 of file LocalGridMaker.h.

+ +
+
+ +

◆ roiRatios_

+ +
+
+ + + + + +
+ + + + +
std::vector<float> rtabmap::LocalGridMaker::roiRatios_
+
+protected
+
+ +

Definition at line 177 of file LocalGridMaker.h.

+ +
+
+ +

◆ footprintLength_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::footprintLength_
+
+protected
+
+ +

Definition at line 178 of file LocalGridMaker.h.

+ +
+
+ +

◆ footprintWidth_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::footprintWidth_
+
+protected
+
+ +

Definition at line 179 of file LocalGridMaker.h.

+ +
+
+ +

◆ footprintHeight_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::footprintHeight_
+
+protected
+
+ +

Definition at line 180 of file LocalGridMaker.h.

+ +
+
+ +

◆ scanDecimation_

+ +
+
+ + + + + +
+ + + + +
int rtabmap::LocalGridMaker::scanDecimation_
+
+protected
+
+ +

Definition at line 181 of file LocalGridMaker.h.

+ +
+
+ +

◆ cellSize_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::cellSize_
+
+protected
+
+ +

Definition at line 182 of file LocalGridMaker.h.

+ +
+
+ +

◆ preVoxelFiltering_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::preVoxelFiltering_
+
+protected
+
+ +

Definition at line 183 of file LocalGridMaker.h.

+ +
+
+ +

◆ occupancySensor_

+ +
+
+ + + + + +
+ + + + +
int rtabmap::LocalGridMaker::occupancySensor_
+
+protected
+
+ +

Definition at line 184 of file LocalGridMaker.h.

+ +
+
+ +

◆ projMapFrame_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::projMapFrame_
+
+protected
+
+ +

Definition at line 185 of file LocalGridMaker.h.

+ +
+
+ +

◆ maxObstacleHeight_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::maxObstacleHeight_
+
+protected
+
+ +

Definition at line 186 of file LocalGridMaker.h.

+ +
+
+ +

◆ normalKSearch_

+ +
+
+ + + + + +
+ + + + +
int rtabmap::LocalGridMaker::normalKSearch_
+
+protected
+
+ +

Definition at line 187 of file LocalGridMaker.h.

+ +
+
+ +

◆ groundNormalsUp_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::groundNormalsUp_
+
+protected
+
+ +

Definition at line 188 of file LocalGridMaker.h.

+ +
+
+ +

◆ maxGroundAngle_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::maxGroundAngle_
+
+protected
+
+ +

Definition at line 189 of file LocalGridMaker.h.

+ +
+
+ +

◆ clusterRadius_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::clusterRadius_
+
+protected
+
+ +

Definition at line 190 of file LocalGridMaker.h.

+ +
+
+ +

◆ minClusterSize_

+ +
+
+ + + + + +
+ + + + +
int rtabmap::LocalGridMaker::minClusterSize_
+
+protected
+
+ +

Definition at line 191 of file LocalGridMaker.h.

+ +
+
+ +

◆ flatObstaclesDetected_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::flatObstaclesDetected_
+
+protected
+
+ +

Definition at line 192 of file LocalGridMaker.h.

+ +
+
+ +

◆ minGroundHeight_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::minGroundHeight_
+
+protected
+
+ +

Definition at line 193 of file LocalGridMaker.h.

+ +
+
+ +

◆ maxGroundHeight_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::maxGroundHeight_
+
+protected
+
+ +

Definition at line 194 of file LocalGridMaker.h.

+ +
+
+ +

◆ normalsSegmentation_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::normalsSegmentation_
+
+protected
+
+ +

Definition at line 195 of file LocalGridMaker.h.

+ +
+
+ +

◆ grid3D_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::grid3D_
+
+protected
+
+ +

Definition at line 196 of file LocalGridMaker.h.

+ +
+
+ +

◆ groundIsObstacle_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::groundIsObstacle_
+
+protected
+
+ +

Definition at line 197 of file LocalGridMaker.h.

+ +
+
+ +

◆ noiseFilteringRadius_

+ +
+
+ + + + + +
+ + + + +
float rtabmap::LocalGridMaker::noiseFilteringRadius_
+
+protected
+
+ +

Definition at line 198 of file LocalGridMaker.h.

+ +
+
+ +

◆ noiseFilteringMinNeighbors_

+ +
+
+ + + + + +
+ + + + +
int rtabmap::LocalGridMaker::noiseFilteringMinNeighbors_
+
+protected
+
+ +

Definition at line 199 of file LocalGridMaker.h.

+ +
+
+ +

◆ scan2dUnknownSpaceFilled_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::scan2dUnknownSpaceFilled_
+
+protected
+
+ +

Definition at line 200 of file LocalGridMaker.h.

+ +
+
+ +

◆ rayTracing_

+ +
+
+ + + + + +
+ + + + +
bool rtabmap::LocalGridMaker::rayTracing_
+
+protected
+
+ +

Definition at line 201 of file LocalGridMaker.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.js b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.js new file mode 100644 index 00000000..8cfec16b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1LocalGridMaker.js @@ -0,0 +1,11 @@ +var classrtabmap_1_1LocalGridMaker = +[ + [ "LocalGridMaker", "classrtabmap_1_1LocalGridMaker.html#a70040df32d1949125f24a193581b8183", null ], + [ "parseParameters", "classrtabmap_1_1LocalGridMaker.html#a6395948673108c87dd371cb7b4a29026", null ], + [ "getCellSize", "classrtabmap_1_1LocalGridMaker.html#a305865c8f98b498b13a35ef0b790f926", null ], + [ "isGridFromDepth", "classrtabmap_1_1LocalGridMaker.html#a60f571f0fd1e58a1a82eb39bfeafda2a", null ], + [ "isMapFrameProjection", "classrtabmap_1_1LocalGridMaker.html#ae8fcd8ed901bc23bac3f14efb48567a9", null ], + [ "segmentCloud", "classrtabmap_1_1LocalGridMaker.html#ad54b92f6d04b76a550483a7a68f45bda", null ], + [ "createLocalMap", "classrtabmap_1_1LocalGridMaker.html#a97d17a585226dcffe580406736e00117", null ], + [ "createLocalMap", "classrtabmap_1_1LocalGridMaker.html#a3d43b8e022d7638262282ab2c7da0ead", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector-members.html new file mode 100644 index 00000000..ee43a7b8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector-members.html @@ -0,0 +1,124 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::MarkerDetector Member List
+
+
+ +

This is the complete list of members for rtabmap::MarkerDetector, including all inherited members.

+ + + + + + + + + +
detect(const cv::Mat &image, const std::vector< CameraModel > &models, const cv::Mat &depth=cv::Mat(), const std::map< int, float > &markerLengths=std::map< int, float >(), cv::Mat *imageWithDetections=0) (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetector
detect(const cv::Mat &image, const CameraModel &model, const cv::Mat &depth=cv::Mat(), const std::map< int, float > &markerLengths=std::map< int, float >(), cv::Mat *imageWithDetections=0) (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetector
kStrategyApriltag enum value (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetector
kStrategyOpencv enum value (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetector
MarkerDetector(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetector
parseParameters(const ParametersMap &parameters) (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetector
Strategy enum name (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetector
~MarkerDetector() (defined in rtabmap::MarkerDetector)rtabmap::MarkerDetectorvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector.html b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector.html new file mode 100644 index 00000000..37c9a076 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerDetector.html @@ -0,0 +1,164 @@ + + + + + + + + +RTAB-Map: rtabmap::MarkerDetector Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::MarkerDetector Class Reference
+
+
+ + + + +

+Public Types

enum  Strategy { kStrategyOpencv +, kStrategyApriltag + }
 
+ + + + + + + + + +

+Public Member Functions

+ MarkerDetector (const ParametersMap &parameters=ParametersMap())
 
+void parseParameters (const ParametersMap &parameters)
 
+std::map< int, MarkerInfo > detect (const cv::Mat &image, const std::vector< CameraModel > &models, const cv::Mat &depth=cv::Mat(), const std::map< int, float > &markerLengths=std::map< int, float >(), cv::Mat *imageWithDetections=0)
 
+std::map< int, MarkerInfo > detect (const cv::Mat &image, const CameraModel &model, const cv::Mat &depth=cv::Mat(), const std::map< int, float > &markerLengths=std::map< int, float >(), cv::Mat *imageWithDetections=0)
 
+

Detailed Description

+
+

Definition at line 59 of file MarkerDetector.h.

+

Member Enumeration Documentation

+ +

◆ Strategy

+ +
+
+ + + + +
enum rtabmap::MarkerDetector::Strategy
+
+ +

Definition at line 62 of file MarkerDetector.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo-members.html new file mode 100644 index 00000000..e724086a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo-members.html @@ -0,0 +1,120 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::MarkerInfo Member List
+
+
+ +

This is the complete list of members for rtabmap::MarkerInfo, including all inherited members.

+ + + + + +
id() const (defined in rtabmap::MarkerInfo)rtabmap::MarkerInfoinline
length() const (defined in rtabmap::MarkerInfo)rtabmap::MarkerInfoinline
MarkerInfo(int id, float length, Transform pose) (defined in rtabmap::MarkerInfo)rtabmap::MarkerInfoinline
pose() const (defined in rtabmap::MarkerInfo)rtabmap::MarkerInfoinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo.html b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo.html new file mode 100644 index 00000000..e3fb3146 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1MarkerInfo.html @@ -0,0 +1,262 @@ + + + + + + + + +RTAB-Map: rtabmap::MarkerInfo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::MarkerInfo Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

 MarkerInfo (int id, float length, Transform pose)
 
int id () const
 
float length () const
 
const Transform & pose () const
 
+

Detailed Description

+
+

Definition at line 43 of file MarkerDetector.h.

+

Constructor & Destructor Documentation

+ +

◆ MarkerInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::MarkerInfo::MarkerInfo (int id,
float length,
Transform pose 
)
+
+inline
+
+ +

Definition at line 45 of file MarkerDetector.h.

+ +
+
+

Member Function Documentation

+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::MarkerInfo::id () const
+
+inline
+
+ +

Definition at line 50 of file MarkerDetector.h.

+ +
+
+ +

◆ length()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::MarkerInfo::length () const
+
+inline
+
+ +

Definition at line 51 of file MarkerDetector.h.

+ +
+
+ +

◆ pose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::MarkerInfo::pose () const
+
+inline
+
+ +

Definition at line 52 of file MarkerDetector.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Memory-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Memory-members.html new file mode 100644 index 00000000..d6f8fb60 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Memory-members.html @@ -0,0 +1,222 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Memory Member List
+
+
+ +

This is the complete list of members for rtabmap::Memory, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_dbDriverrtabmap::Memoryprotected
addLink(const Link &link, bool addInDatabase=false)rtabmap::Memory
allNodesInWM() constrtabmap::Memoryinline
cleanup()rtabmap::Memory
cleanupLocalGrids(const std::map< int, Transform > &poses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)rtabmap::Memory
close(bool databaseSaved=true, bool postInitClosingEvents=false, const std::string &ouputDatabasePath="")rtabmap::Memory
computeIcpTransform(const Signature &fromS, const Signature &toS, Transform guess, RegistrationInfo *info=0) constrtabmap::Memory
computeIcpTransformMulti(int newId, int oldId, const std::map< int, Transform > &poses, RegistrationInfo *info=0)rtabmap::Memory
computeLikelihood(const Signature *signature, const std::list< int > &ids)rtabmap::Memory
computeTransform(Signature &fromS, Signature &toS, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false) constrtabmap::Memory
computeTransform(int fromId, int toId, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false)rtabmap::Memory
convertToIntermediate(int locationId)rtabmap::Memory
deleteLocation(int locationId, std::list< int > *deletedWords=0, bool keepLinkedInDb=false)rtabmap::Memory
dumpDictionary(const char *fileNameRef, const char *fileNameDesc) constrtabmap::Memory
dumpMemory(std::string directory) constrtabmap::Memoryvirtual
dumpMemoryTree(const char *fileNameTree) constrtabmap::Memory
dumpSignatures(const char *fileNameSign, bool words3D) constrtabmap::Memoryvirtual
emptyTrash()rtabmap::Memory
forget(const std::set< int > &ignoredIds=std::set< int >())rtabmap::Memory
generateGraph(const std::string &fileName, const std::set< int > &ids=std::set< int >())rtabmap::Memory
getAllLabels() constrtabmap::Memoryinline
getAllLinks(bool lookInDatabase, bool ignoreNullLinks=true, bool withLandmarks=false) constrtabmap::Memory
getAllSignatureIds(bool ignoreChildren=true) constrtabmap::Memory
getDatabaseMemoryUsed() constrtabmap::Memory
getDatabaseUrl() constrtabmap::Memory
getDatabaseVersion() constrtabmap::Memory
getDbSavingTime() constrtabmap::Memory
getFeature2D() constrtabmap::Memoryinline
getGPS(int id, GPS &gps, Transform &offsetENU, bool lookInDatabase, int maxGraphDepth=0) constrtabmap::Memory
getGroundTruthPose(int signatureId, bool lookInDatabase=false) constrtabmap::Memory
getGroundTruths() constrtabmap::Memoryinline
getImageCompressed(int signatureId) constrtabmap::Memory
getLandmarksIndex() constrtabmap::Memoryinline
getLastGlobalLoopClosureId() constrtabmap::Memoryinline
getLastSignatureId() constrtabmap::Memory
getLastWorkingSignature(bool ignoreIntermediateNodes) constrtabmap::Memory
getLinks(int signatureId, bool lookInDatabase=false, bool withLandmarks=false) constrtabmap::Memory
getLoopClosureLinks(int signatureId, bool lookInDatabase=false) constrtabmap::Memory
getMapId(int id, bool lookInDatabase=false) constrtabmap::Memory
getMaxStMemSize() constrtabmap::Memoryinline
getMemoryUsed() constrtabmap::Memory
getMetricConstraints(const std::set< int > &ids, std::map< int, Transform > &poses, std::multimap< int, Link > &links, bool lookInDatabase=false, bool landmarksAdded=false)rtabmap::Memory
getNeighborLinks(int signatureId, bool lookInDatabase=false) constrtabmap::Memory
getNeighborsId(int signatureId, int maxGraphDepth, int maxCheckedInDatabase=-1, bool incrementMarginOnLoop=false, bool ignoreLoopIds=false, bool ignoreIntermediateNodes=false, bool ignoreLocalSpaceLoopIds=false, const std::set< int > &nodesSet=std::set< int >(), double *dbAccessTime=0) constrtabmap::Memory
getNeighborsIdRadius(int signatureId, float radius, const std::map< int, Transform > &optimizedPoses, int maxGraphDepth) constrtabmap::Memory
getNodeCalibration(int nodeId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) constrtabmap::Memory
getNodeData(int locationId, bool images, bool scan, bool userData, bool occupancyGrid) constrtabmap::Memory
getNodeInfo(int signatureId, Transform &odomPose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruth, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors, bool lookInDatabase=false) constrtabmap::Memory
getNodesObservingLandmark(int landmarkId, bool lookInDatabase) constrtabmap::Memory
getNodeWordsAndGlobalDescriptors(int nodeId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &wordsKpts, std::vector< cv::Point3f > &words3, cv::Mat &wordsDescriptors, std::vector< GlobalDescriptor > &globalDescriptors) constrtabmap::Memory
getOdomMaxInf() constrtabmap::Memoryinline
getOdomPose(int signatureId, bool lookInDatabase=false) constrtabmap::Memory
getParameters() constrtabmap::Memoryinlinevirtual
getSignature(int id) constrtabmap::Memory
getSignatureIdByLabel(const std::string &label, bool lookInDatabase=true) constrtabmap::Memory
getSimilarityThreshold() constrtabmap::Memoryinline
getStMem() constrtabmap::Memoryinline
getStMemIntermediateNodesCount() constrtabmap::Memoryinline
getVWDictionary() constrtabmap::Memory
getWeights() constrtabmap::Memory
getWorkingMem() constrtabmap::Memoryinline
getWorkingMemIntermediateNodesCount() constrtabmap::Memoryinline
getWorkingMemSize(bool ignoreIntermediateNodes=false) constrtabmap::Memory
incrementMapId(std::map< int, int > *reducedIds=0)rtabmap::Memory
init(const std::string &dbUrl, bool dbOverwritten=false, const ParametersMap &parameters=ParametersMap(), bool postInitClosingEvents=false)rtabmap::Memory
isBinDataKept() constrtabmap::Memoryinline
isGraphReduced() constrtabmap::Memoryinline
isIDsGenerated() constrtabmap::Memoryinline
isIncremental() constrtabmap::Memoryinline
isInLTM(int signatureId) constrtabmap::Memoryinline
isInSTM(int signatureId) constrtabmap::Memoryinline
isInWM(int signatureId) constrtabmap::Memoryinline
isLocalizationDataSaved() constrtabmap::Memoryinline
isOdomGravityUsed() constrtabmap::Memoryinline
isReadOnly() constrtabmap::Memoryinline
joinTrashThread()rtabmap::Memory
kIdInvalidrtabmap::Memorystatic
kIdStartrtabmap::Memorystatic
kIdVirtualrtabmap::Memorystatic
labelSignature(int id, const std::string &label)rtabmap::Memory
load2DMap(float &xMin, float &yMin, float &cellSize) constrtabmap::Memory
loadOptimizedMesh(std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons=0, std::vector< std::vector< Eigen::Vector2f > > *texCoords=0, cv::Mat *textures=0) constrtabmap::Memory
loadOptimizedPoses(Transform *lastlocalizationPose) constrtabmap::Memory
loadPreviewImage() constrtabmap::Memory
Memory(const ParametersMap &parameters=ParametersMap())rtabmap::Memory
memoryChanged() constrtabmap::Memoryinline
parseParameters(const ParametersMap &parameters)rtabmap::Memoryvirtual
reactivateSignatures(const std::list< int > &ids, unsigned int maxLoaded, double &timeDbAccess)rtabmap::Memory
reduceNode(int id, float maxDistance=0.0f, bool keepLinkedInDb=false, int direction=0)rtabmap::Memory
removeAllVirtualLinks()rtabmap::Memory
removeLink(int idA, int idB)rtabmap::Memory
removeRawData(int id, bool image=true, bool scan=true, bool userData=true, bool occupancyGrid=true)rtabmap::Memory
removeVirtualLinks(int signatureId)rtabmap::Memory
save2DMap(const cv::Mat &map, float xMin, float yMin, float cellSize) constrtabmap::Memory
saveLocationData(int locationId)rtabmap::Memory
saveOptimizedMesh(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) constrtabmap::Memory
saveOptimizedPoses(const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) constrtabmap::Memory
savePreviewImage(const cv::Mat &image) constrtabmap::Memory
saveStatistics(const Statistics &statistics, bool saveWMState)rtabmap::Memory
setDummyDictionary(bool enabled)rtabmap::Memory
setUserData(int id, const cv::Mat &data)rtabmap::Memory
update(const SensorData &data, Statistics *stats=0)rtabmap::Memory
update(const SensorData &data, const Transform &pose, const cv::Mat &covariance, const std::vector< float > &velocity=std::vector< float >(), Statistics *stats=0)rtabmap::Memory
updateAge(int signatureId)rtabmap::Memory
updateLink(const Link &link, bool updateInDatabase=false)rtabmap::Memory
~Memory() (defined in rtabmap::Memory)rtabmap::Memoryvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Memory.html b/preview/pr-1773/api/latest/classrtabmap_1_1Memory.html new file mode 100644 index 00000000..967a86dd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Memory.html @@ -0,0 +1,3134 @@ + + + + + + + + +RTAB-Map: rtabmap::Memory Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Three-tiered memory management (STM, WM, LTM) for RTAB-Map. + More...

+ +

#include <Memory.h>

+
+Collaboration diagram for rtabmap::Memory:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Memory (const ParametersMap &parameters=ParametersMap())
 Constructs a Memory instance with the given parameters.
 
virtual void parseParameters (const ParametersMap &parameters)
 Re-parses parameters and propagates them to owned sub-objects.
 
virtual const ParametersMap & getParameters () const
 
bool update (const SensorData &data, Statistics *stats=0)
 Adds a sensor observation to the map (overload without odometry pose).
 
bool update (const SensorData &data, const Transform &pose, const cv::Mat &covariance, const std::vector< float > &velocity=std::vector< float >(), Statistics *stats=0)
 Adds a sensor observation with odometry pose and velocity to the map.
 
bool init (const std::string &dbUrl, bool dbOverwritten=false, const ParametersMap &parameters=ParametersMap(), bool postInitClosingEvents=false)
 Opens or creates a database and loads existing state into WM.
 
void close (bool databaseSaved=true, bool postInitClosingEvents=false, const std::string &ouputDatabasePath="")
 Flushes pending data and closes the database connection.
 
std::map< int, float > computeLikelihood (const Signature *signature, const std::list< int > &ids)
 Computes loop-closure likelihood of signature against a set of WM ids.
 
int incrementMapId (std::map< int, int > *reducedIds=0)
 Starts a new map id, breaking session continuity (e.g. after localization loss).
 
void updateAge (int signatureId)
 Refreshes the age of signatureId in working memory, marking it as recent.
 
std::list< int > forget (const std::set< int > &ignoredIds=std::set< int >())
 Transfers oldest signatures from WM to LTM to respect memory and/or time limits.
 
std::set< int > reactivateSignatures (const std::list< int > &ids, unsigned int maxLoaded, double &timeDbAccess)
 Reloads signatures from LTM into WM.
 
int cleanup ()
 Drops the last signature if flagged as bad, or any signature in localization mode.
 
+void saveStatistics (const Statistics &statistics, bool saveWMState)
 Persists statistics to the database; saveWMState records the WM id list.
 
+void savePreviewImage (const cv::Mat &image) const
 Stores a preview image (typically a thumbnail of the last frame) in the database.
 
+cv::Mat loadPreviewImage () const
 Loads the preview image previously written by savePreviewImage().
 
+void saveOptimizedPoses (const std::map< int, Transform > &optimizedPoses, const Transform &lastlocalizationPose) const
 Persists an optimized pose graph and the last localization pose for next session.
 
+std::map< int, Transform > loadOptimizedPoses (Transform *lastlocalizationPose) const
 Loads optimized poses previously written by saveOptimizedPoses().
 
+void save2DMap (const cv::Mat &map, float xMin, float yMin, float cellSize) const
 Persists a 2D occupancy grid (origin xMin, yMin and resolution cellSize).
 
+cv::Mat load2DMap (float &xMin, float &yMin, float &cellSize) const
 Loads the 2D occupancy grid previously written by save2DMap().
 
void saveOptimizedMesh (const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) const
 Persists an optimized textured/colored mesh to the database.
 
+cv::Mat loadOptimizedMesh (std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > *polygons=0, std::vector< std::vector< Eigen::Vector2f > > *texCoords=0, cv::Mat *textures=0) const
 Loads the optimized mesh previously written by saveOptimizedMesh().
 
+void emptyTrash ()
 Forces the database driver to flush any queued signature/word saves.
 
+void joinTrashThread ()
 Blocks until the asynchronous database write thread has finished pending work.
 
bool addLink (const Link &link, bool addInDatabase=false)
 Adds a graph link between two signatures.
 
+void updateLink (const Link &link, bool updateInDatabase=false)
 Replaces an existing link with link (same endpoints and type).
 
+void removeAllVirtualLinks ()
 Removes every virtual link in WM.
 
+void removeVirtualLinks (int signatureId)
 Removes virtual links attached to signatureId.
 
std::map< int, int > getNeighborsId (int signatureId, int maxGraphDepth, int maxCheckedInDatabase=-1, bool incrementMarginOnLoop=false, bool ignoreLoopIds=false, bool ignoreIntermediateNodes=false, bool ignoreLocalSpaceLoopIds=false, const std::set< int > &nodesSet=std::set< int >(), double *dbAccessTime=0) const
 Breadth-first walk of the pose graph from signatureId.
 
std::map< int, float > getNeighborsIdRadius (int signatureId, float radius, const std::map< int, Transform > &optimizedPoses, int maxGraphDepth) const
 Returns neighbor ids within a Euclidean radius using optimized poses.
 
+void convertToIntermediate (int locationId)
 Marks locationId as intermediate (weight = -1); excludes it from loop closure.
 
void deleteLocation (int locationId, std::list< int > *deletedWords=0, bool keepLinkedInDb=false)
 Removes locationId from WM/STM and the database.
 
+void saveLocationData (int locationId)
 Forces locationId to be flushed to the database.
 
+void removeLink (int idA, int idB)
 Removes any link between idA and idB (both directions).
 
+void removeRawData (int id, bool image=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
 Strips raw images, scan, user data and/or occupancy grid from id to save memory (RAM). This doesn't clear any compressed data.
 
int reduceNode (int id, float maxDistance=0.0f, bool keepLinkedInDb=false, int direction=0)
 Merges id with a close neighbor (graph reduction).
 
void setDummyDictionary (bool enabled)
 Enables a dummy visual word dictionary (no descriptors kept, word ids only).
 
const std::map< int, double > & getWorkingMem () const
 
size_t getWorkingMemSize (bool ignoreIntermediateNodes=false) const
 Returns the number of signatures in working memory, excluding the virtual place.
 
int getWorkingMemIntermediateNodesCount () const
 
int getStMemIntermediateNodesCount () const
 
const std::set< int > & getStMem () const
 
int getMaxStMemSize () const
 
+std::multimap< int, Link > getNeighborLinks (int signatureId, bool lookInDatabase=false) const
 Returns neighbor (sequential) links of signatureId; lookInDatabase also checks LTM.
 
+std::multimap< int, Link > getLoopClosureLinks (int signatureId, bool lookInDatabase=false) const
 Returns loop-closure links of signatureId; lookInDatabase also checks LTM.
 
std::multimap< int, Link > getLinks (int signatureId, bool lookInDatabase=false, bool withLandmarks=false) const
 Returns all links of signatureId (neighbor, loop, prior, gravity, ...).
 
+std::multimap< int, Link > getAllLinks (bool lookInDatabase, bool ignoreNullLinks=true, bool withLandmarks=false) const
 Returns links of every signature; ignoreNullLinks drops empty placeholders.
 
bool isBinDataKept () const
 
float getSimilarityThreshold () const
 
std::map< int, int > getWeights () const
 
int getLastSignatureId () const
 
const Signature * getLastWorkingSignature (bool ignoreIntermediateNodes) const
 Returns the most recent WM signature.
 
+std::map< int, Link > getNodesObservingLandmark (int landmarkId, bool lookInDatabase) const
 Returns all nodes observing landmark landmarkId, mapped to the observation link.
 
int getSignatureIdByLabel (const std::string &label, bool lookInDatabase=true) const
 
bool labelSignature (int id, const std::string &label)
 Assigns or removes a label on id.
 
const std::map< int, std::string > & getAllLabels () const
 
const std::map< int, std::set< int > > & getLandmarksIndex () const
 
bool allNodesInWM () const
 
bool setUserData (int id, const cv::Mat &data)
 Attaches user data to signature id, compressing it on the fly if needed.
 
int getDatabaseMemoryUsed () const
 
std::string getDatabaseVersion () const
 
std::string getDatabaseUrl () const
 
double getDbSavingTime () const
 
int getMapId (int id, bool lookInDatabase=false) const
 
Transform getOdomPose (int signatureId, bool lookInDatabase=false) const
 
Transform getGroundTruthPose (int signatureId, bool lookInDatabase=false) const
 
const std::map< int, Transform > & getGroundTruths () const
 
void getGPS (int id, GPS &gps, Transform &offsetENU, bool lookInDatabase, int maxGraphDepth=0) const
 Returns a GPS fix for id, falling back to the nearest GPS-tagged neighbor.
 
bool getNodeInfo (int signatureId, Transform &odomPose, int &mapId, int &weight, std::string &label, double &stamp, Transform &groundTruth, std::vector< float > &velocity, GPS &gps, EnvSensors &sensors, bool lookInDatabase=false) const
 Reads metadata of signatureId (no images/scan/words).
 
cv::Mat getImageCompressed (int signatureId) const
 
SensorData getNodeData (int locationId, bool images, bool scan, bool userData, bool occupancyGrid) const
 Loads sensor data of locationId from WM or LTM.
 
+void getNodeWordsAndGlobalDescriptors (int nodeId, std::multimap< int, int > &words, std::vector< cv::KeyPoint > &wordsKpts, std::vector< cv::Point3f > &words3, cv::Mat &wordsDescriptors, std::vector< GlobalDescriptor > &globalDescriptors) const
 Loads the visual words, 3D points and global descriptors stored with nodeId.
 
+void getNodeCalibration (int nodeId, std::vector< CameraModel > &models, std::vector< StereoCameraModel > &stereoModels) const
 Loads mono and/or stereo camera calibration stored with nodeId.
 
std::set< int > getAllSignatureIds (bool ignoreChildren=true) const
 Returns all signature ids in WM, STM and LTM.
 
bool memoryChanged () const
 Reports whether the in-memory map has been modified since the database was last loaded or reset. close() uses this flag to decide whether the database needs to be rewritten.
 
bool isIncremental () const
 
bool isReadOnly () const
 
bool isLocalizationDataSaved () const
 
const Signature * getSignature (int id) const
 
bool isInSTM (int signatureId) const
 
bool isInWM (int signatureId) const
 
bool isInLTM (int signatureId) const
 
bool isIDsGenerated () const
 
int getLastGlobalLoopClosureId () const
 
const Feature2D * getFeature2D () const
 
bool isGraphReduced () const
 
const std::vector< double > & getOdomMaxInf () const
 
bool isOdomGravityUsed () const
 
+void dumpMemoryTree (const char *fileNameTree) const
 Writes a human-readable dump of WM/STM, links and weights to fileNameTree.
 
+virtual void dumpMemory (std::string directory) const
 Dumps every internal map (signatures, words, dictionary) to text files in directory.
 
+virtual void dumpSignatures (const char *fileNameSign, bool words3D) const
 Dumps signatures' word ids (and 3D positions if words3D) to fileNameSign.
 
+void dumpDictionary (const char *fileNameRef, const char *fileNameDesc) const
 Dumps the visual word dictionary: references to fileNameRef, descriptors to fileNameDesc.
 
unsigned long getMemoryUsed () const
 
void generateGraph (const std::string &fileName, const std::set< int > &ids=std::set< int >())
 Writes a Graphviz DOT file of the pose graph.
 
int cleanupLocalGrids (const std::map< int, Transform > &poses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)
 Removes spurious obstacle points from each node's local grid using a reference 2D map.
 
const VWDictionary * getVWDictionary () const
 
void getMetricConstraints (const std::set< int > &ids, std::map< int, Transform > &poses, std::multimap< int, Link > &links, bool lookInDatabase=false, bool landmarksAdded=false)
 Extracts a sub-graph (poses + links) for a set of node ids.
 
Transform computeTransform (Signature &fromS, Signature &toS, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false) const
 Computes the relative transform from fromS to toS using the registration pipeline.
 
+Transform computeTransform (int fromId, int toId, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false)
 Convenience overload: loads signatures by id and forwards to the Signature variant.
 
Transform computeIcpTransform (const Signature &fromS, const Signature &toS, Transform guess, RegistrationInfo *info=0) const
 Refines a transform using ICP alignment of laser scans only.
 
Transform computeIcpTransformMulti (int newId, int oldId, const std::map< int, Transform > &poses, RegistrationInfo *info=0)
 ICP registration of one node against an assembled cloud from multiple neighbors.
 
+ + + + + + + + + + +

+Static Public Attributes

static const int kIdStart
 First valid signature id assigned to a new signature (positive integer).
 
static const int kIdVirtual
 Reserved id for the "virtual place" used by the Bayes filter (negative).
 
static const int kIdInvalid
 Sentinel value indicating an invalid signature id (zero).
 
+ + + + +

+Protected Attributes

DBDriver * _dbDriver
 Database driver owning the persistent storage (created by init()).
 
+

Detailed Description

+

Three-tiered memory management (STM, WM, LTM) for RTAB-Map.

+

Memory is the core map data structure used by Rtabmap. It stores observations as Signature nodes connected by Link edges and orchestrates their lifecycle across three tiers:

+
    +
  • Short-Term Memory (STM): most recently added signatures, kept at a fixed size (see Parameters::kMemSTMSize()). Used to delay recently observed places before they become candidates for loop closure.
  • +
  • Working Memory (WM): signatures available for loop-closure likelihood computation in the current iteration. Older signatures are transferred from WM to LTM by forget() to bound iteration time.
  • +
  • Long-Term Memory (LTM): persisted in the database via DBDriver. Signatures can be brought back to WM with reactivateSignatures() when their neighbors still in WM are good loop-closure candidates.
  • +
+

The class also owns a visual word dictionary (VWDictionary), feature extractor (Feature2D) and registration pipelines (Registration, RegistrationVis, RegistrationIcp) used to compute relative transforms between signatures.

+

Typical iteration: update() adds a new SensorData as a Signature in STM; computeLikelihood() scores it against WM; the Rtabmap caller decides on loop closures with BayesFilter; cleanup() drops bad signatures; forget() transfers oldest WM signatures to LTM and reactivateSignatures() pulls relevant ones back.

+
See also
Signature
+
+DBDriver
+
+VWDictionary
+
+Rtabmap
+ +

Definition at line 101 of file Memory.h.

+

Constructor & Destructor Documentation

+ +

◆ Memory()

+ +
+
+ + + + + + + + +
rtabmap::Memory::Memory (const ParametersMap & parameters = ParametersMap())
+
+ +

Constructs a Memory instance with the given parameters.

+

The database is not opened here; call init() to open or create a database and load persisted state. parameters may include any key from Parameters (memory, keypoint, registration, etc.); missing keys fall back to defaults.

+ +
+
+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::Memory::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Re-parses parameters and propagates them to owned sub-objects.

+

Forwards the relevant subset to VWDictionary, Feature2D, the registration pipelines and the database driver. Safe to call at runtime to change settings.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const ParametersMap & rtabmap::Memory::getParameters () const
+
+inlinevirtual
+
+
Returns
The most recent parameter map applied via the constructor or parseParameters().
+ +

Definition at line 130 of file Memory.h.

+ +
+
+ +

◆ update() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Memory::update (const SensorData & data,
Statistics * stats = 0 
)
+
+ +

Adds a sensor observation to the map (overload without odometry pose).

+

Equivalent to calling the full update() with an identity pose and empty covariance. The new signature is added to STM; oldest STM entries are promoted to WM as needed.

+
Parameters
+ + + +
dataSensor data (images, scan, user data, odometry features) for this frame.
statsOptional output statistics receiver for timing/diagnostic values.
+
+
+
Returns
True if a signature was successfully created and added, false otherwise.
+ +
+
+ +

◆ update() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::Memory::update (const SensorData & data,
const Transform & pose,
const cv::Mat & covariance,
const std::vector< float > & velocity = std::vector< float >(),
Statistics * stats = 0 
)
+
+ +

Adds a sensor observation with odometry pose and velocity to the map.

+

Creates a new Signature, extracts visual words, links it to the previous STM signature with a neighbor link, runs rehearsal against STM and promotes the oldest STM signature to WM if STM is full.

+
Parameters
+ + + + + + +
dataSensor data (images, scan, user data, odometry features).
poseOdometry pose at this frame (null if odometry not used).
covariance6x6 odometry covariance (or empty if null odometry is provided).
velocityOptional 6-vector (vx, vy, vz, vroll, vpitch, vyaw).
statsOptional output statistics receiver.
+
+
+
Returns
True on success, false if signature creation failed.
+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::Memory::init (const std::string & dbUrl,
bool dbOverwritten = false,
const ParametersMap & parameters = ParametersMap(),
bool postInitClosingEvents = false 
)
+
+ +

Opens or creates a database and loads existing state into WM.

+
Parameters
+ + + + + +
dbUrlPath to the database file (empty for in-memory).
dbOverwrittenIf true, deletes the existing file before opening.
parametersOptional parameter override applied before loading.
postInitClosingEventsIf true, posts RtabmapEventInit events for progress reporting (used by GUI).
+
+
+
Returns
True on success, false if the database could not be opened.
+ +
+
+ +

◆ close()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Memory::close (bool databaseSaved = true,
bool postInitClosingEvents = false,
const std::string & ouputDatabasePath = "" 
)
+
+ +

Flushes pending data and closes the database connection.

+
Parameters
+ + + + +
databaseSavedIf true, persists STM/WM signatures and statistics before closing. If false, in-memory state is discarded.
postInitClosingEventsIf true, posts progress events while closing.
ouputDatabasePathIf non-empty, the database is copied to this path on close. If a database on disk was initially created/loaded on a different path, it will be updated with latest changes and renamed to the output path.
+
+
+ +
+
+ +

◆ computeLikelihood()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::map< int, float > rtabmap::Memory::computeLikelihood (const Signature * signature,
const std::list< int > & ids 
)
+
+ +

Computes loop-closure likelihood of signature against a set of WM ids.

+

Compares visual words (tf-idf if enabled) between signature and each id in ids and returns a normalized likelihood per id.

+
Parameters
+ + + +
signatureQuery signature (typically the last added one).
idsCandidate signature ids in working memory.
+
+
+
Returns
Map from id to likelihood score.
+ +
+
+ +

◆ incrementMapId()

+ +
+
+ + + + + + + + +
int rtabmap::Memory::incrementMapId (std::map< int, int > * reducedIds = 0)
+
+ +

Starts a new map id, breaking session continuity (e.g. after localization loss).

+
Parameters
+ + +
reducedIdsIf non-null, populated with id remappings produced by graph reduction triggered by the new map.
+
+
+
Returns
The new map id (auto-incremented).
+ +
+
+ +

◆ updateAge()

+ +
+
+ + + + + + + + +
void rtabmap::Memory::updateAge (int signatureId)
+
+ +

Refreshes the age of signatureId in working memory, marking it as recent.

+

Used to keep loop-closure hypotheses active so they are not transferred to LTM during the next forget() call.

+ +
+
+ +

◆ forget()

+ +
+
+ + + + + + + + +
std::list< int > rtabmap::Memory::forget (const std::set< int > & ignoredIds = std::set< int >())
+
+ +

Transfers oldest signatures from WM to LTM to respect memory and/or time limits.

+

Two regimes are used depending on the visual word dictionary state:

    +
  • Word-count regime: active only when mapping mode is on, the VWDictionary is in incremental mode, contains at least one word, and is not using incremental FLANN. In this regime, signatures are transferred until the number of visual words removed from the dictionary catches up with the number of new words indexed since the previous iteration.
  • +
  • Signature-count regime: used in every other case (localization mode, dictionary not incremental, dictionary still empty – e.g. lidar-only mapping or no feature extraction – or incremental FLANN, where the word count is no longer the bottleneck). In this regime, at least one more signature than the count added/retrieved in the previous iteration is transferred, regardless of words.
  • +
+

In both regimes, candidate selection (see getRemovableSignatures()) honors ignoredIds, skips intermediate nodes, and excludes WM nodes linked to STM (to preserve rehearsal). Intermediate (weight==-1) nodes linked to a transferred signature are dragged out with it.

+
Parameters
+ + +
ignoredIdsSignatures that must not be transferred (e.g. STM, retrieved ids, on the planned path).
+
+
+
Returns
Ids of signatures moved to LTM, in transfer order.
+ +
+
+ +

◆ reactivateSignatures()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::set< int > rtabmap::Memory::reactivateSignatures (const std::list< int > & ids,
unsigned int maxLoaded,
double & timeDbAccess 
)
+
+ +

Reloads signatures from LTM into WM.

+
Parameters
+ + + + +
idsCandidate ids; those already in WM/STM are ignored.
maxLoadedHard cap on number of ids actually loaded (0 = unlimited).
timeDbAccessOutput: time spent in the database driver (seconds).
+
+
+
Returns
Ids effectively brought back to WM.
+ +
+
+ +

◆ cleanup()

+ +
+
+ + + + + + + +
int rtabmap::Memory::cleanup ()
+
+ +

Drops the last signature if flagged as bad, or any signature in localization mode.

+
Returns
Id of the removed signature, or 0 if none was removed.
+ +
+
+ +

◆ saveOptimizedMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Memory::saveOptimizedMesh (const cv::Mat & cloud,
const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > & polygons = std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(),
const std::vector< std::vector< Eigen::Vector2f > > & texCoords = std::vector< std::vector< Eigen::Vector2f > >(),
const cv::Mat & textures = cv::Mat() 
) const
+
+ +

Persists an optimized textured/colored mesh to the database.

+
Parameters
+ + + + + +
cloudPoint cloud (XYZRGB) of vertices.
polygonsPer-texture list of polygons; each polygon is a list of vertex indices.
texCoordsPer-texture list of UV coords matching polygons.
texturesConcatenated texture images (square, equal-sized).
+
+
+ +
+
+ +

◆ addLink()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Memory::addLink (const Link & link,
bool addInDatabase = false 
)
+
+ +

Adds a graph link between two signatures.

+
Parameters
+ + + +
linkLink to add (type, transform, covariance).
addInDatabaseIf true, the link is also added when one of the ids is only in LTM.
+
+
+
Returns
True if the link was added, false on conflict or missing nodes.
+ +
+
+ +

◆ getNeighborsId()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, int > rtabmap::Memory::getNeighborsId (int signatureId,
int maxGraphDepth,
int maxCheckedInDatabase = -1,
bool incrementMarginOnLoop = false,
bool ignoreLoopIds = false,
bool ignoreIntermediateNodes = false,
bool ignoreLocalSpaceLoopIds = false,
const std::set< int > & nodesSet = std::set< int >(),
double * dbAccessTime = 0 
) const
+
+ +

Breadth-first walk of the pose graph from signatureId.

+

Visits neighbor and (optionally) loop-closure neighbors up to maxGraphDepth.

+
Parameters
+ + + + + + + + + + +
signatureIdStarting node.
maxGraphDepthMaximum graph distance (0 = infinite graph depth).
maxCheckedInDatabaseCap on LTM look-ups (-1 = unlimited, 0 = WM only).
incrementMarginOnLoopIf true, loop-closure links count toward depth.
ignoreLoopIdsIf true, loop-closure neighbors are not traversed.
ignoreIntermediateNodesIf true, weight==-1 intermediate nodes are skipped.
ignoreLocalSpaceLoopIdsIf true, only global loop closures are traversed.
nodesSetIf non-empty, traversal is constrained to these ids.
dbAccessTimeOutput: time spent in database access (seconds).
+
+
+
Returns
Map from visited node id to graph depth, including signatureId (with graph depth of 0)
+ +
+
+ +

◆ getNeighborsIdRadius()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, float > rtabmap::Memory::getNeighborsIdRadius (int signatureId,
float radius,
const std::map< int, Transform > & optimizedPoses,
int maxGraphDepth 
) const
+
+ +

Returns neighbor ids within a Euclidean radius using optimized poses.

+
Parameters
+ + + + + +
signatureIdQuery node id.
radiusMaximum distance from signatureId (meters).
optimizedPosesPose graph after optimization (used for distances).
maxGraphDepthMaximum graph distance (in terms of nodes) to bound the search.
+
+
+
Returns
Map from node id to squared distance from signatureId.
+ +
+
+ +

◆ deleteLocation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Memory::deleteLocation (int locationId,
std::list< int > * deletedWords = 0,
bool keepLinkedInDb = false 
)
+
+ +

Removes locationId from WM/STM and the database.

+
Parameters
+ + + + +
locationIdId of the signature to delete.
deletedWordsOptional output: words whose reference count dropped to zero.
keepLinkedInDbIf true, the location keeps its links, weight and label and stays part of the graph in the database. If false (default), it is unlinked first – links removed on both sides, weight invalidated, label cleared – so at best it is kept as history only and no longer appears in getAllSignatureIds(). An unlinked location is written to the database only if it was already saved there or if Parameters::kMemNotLinkedNodesKept() is true (default); otherwise it is discarded outright.
+
+
+ +
+
+ +

◆ reduceNode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int rtabmap::Memory::reduceNode (int id,
float maxDistance = 0.0f,
bool keepLinkedInDb = false,
int direction = 0 
)
+
+ +

Merges id with a close neighbor (graph reduction).

+
Parameters
+ + + + + +
idNode to reduce.
maxDistanceMaximum distance to a neighbor to allow the merge (meters).
keepLinkedInDbSame meaning as in deleteLocation(): if true, the merged node keeps its links, weight and label and stays part of the graph in the database. If false (default), it is unlinked first – links removed on both sides, weight invalidated, label cleared – so at best it is kept as history only and no longer appears in getAllSignatureIds(). An unlinked node is written to the database only if it was already saved there or if Parameters::kMemNotLinkedNodesKept() is true (default); otherwise it is discarded outright.
directionRestrict merge target: 0=any, 1=previous neighbor, 2=next neighbor.
+
+
+
Returns
Id of the node id was merged into, or 0 if no reduction was performed.
+ +
+
+ +

◆ setDummyDictionary()

+ +
+
+ + + + + + + + +
void rtabmap::Memory::setDummyDictionary (bool enabled)
+
+ +

Enables a dummy visual word dictionary (no descriptors kept, word ids only).

+
Note
Must be called before init(); ignored (with an error logged) once the database driver is set.
+
+Silently disabled by init() when the database holds no dictionary, since there would be nothing to skip loading, and the memory would otherwise be left unable to add new nodes.
+ +
+
+ +

◆ getWorkingMem()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, double > & rtabmap::Memory::getWorkingMem () const
+
+inline
+
+
Returns
Working memory as { signature id, age } (does not include STM).
+ +

Definition at line 400 of file Memory.h.

+ +
+
+ +

◆ getWorkingMemSize()

+ +
+
+ + + + + + + + +
size_t rtabmap::Memory::getWorkingMemSize (bool ignoreIntermediateNodes = false) const
+
+ +

Returns the number of signatures in working memory, excluding the virtual place.

+
Parameters
+ + +
ignoreIntermediateNodesIf true, intermediate nodes (weight = -1) are not counted.
+
+
+ +
+
+ +

◆ getWorkingMemIntermediateNodesCount()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Memory::getWorkingMemIntermediateNodesCount () const
+
+inline
+
+
Returns
Number of intermediate nodes (weight = -1) currently in working memory.
+ +

Definition at line 407 of file Memory.h.

+ +
+
+ +

◆ getStMemIntermediateNodesCount()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Memory::getStMemIntermediateNodesCount () const
+
+inline
+
+
Returns
Number of intermediate nodes (weight = -1) currently in short-term memory.
+ +

Definition at line 409 of file Memory.h.

+ +
+
+ +

◆ getStMem()

+ +
+
+ + + + + +
+ + + + + + + +
const std::set< int > & rtabmap::Memory::getStMem () const
+
+inline
+
+
Returns
Set of signature ids currently in short-term memory.
+ +

Definition at line 411 of file Memory.h.

+ +
+
+ +

◆ getMaxStMemSize()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Memory::getMaxStMemSize () const
+
+inline
+
+
Returns
Configured maximum STM size (Parameters::kMemSTMSize()).
+ +

Definition at line 413 of file Memory.h.

+ +
+
+ +

◆ getLinks()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::multimap< int, Link > rtabmap::Memory::getLinks (int signatureId,
bool lookInDatabase = false,
bool withLandmarks = false 
) const
+
+ +

Returns all links of signatureId (neighbor, loop, prior, gravity, ...).

+
Parameters
+ + + + +
signatureIdSource node id (can also be a landmark id).
lookInDatabaseAlso query LTM for links.
withLandmarksInclude landmark links in the result.
+
+
+ +
+
+ +

◆ isBinDataKept()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::isBinDataKept () const
+
+inline
+
+
Returns
True if raw binary data (images, scans) is kept in memory after compression.
+ +

Definition at line 432 of file Memory.h.

+ +
+
+ +

◆ getSimilarityThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Memory::getSimilarityThreshold () const
+
+inline
+
+
Returns
Similarity threshold used by rehearsal (Parameters::kMemRehearsalSimilarity()).
+ +

Definition at line 434 of file Memory.h.

+ +
+
+ +

◆ getWeights()

+ +
+
+ + + + + + + +
std::map< int, int > rtabmap::Memory::getWeights () const
+
+
Returns
Map from signature id to weight (rehearsal accumulation count) for WM and STM.
+ +
+
+ +

◆ getLastSignatureId()

+ +
+
+ + + + + + + +
int rtabmap::Memory::getLastSignatureId () const
+
+
Returns
Id of the most recently added signature, or 0 if none.
+ +
+
+ +

◆ getLastWorkingSignature()

+ +
+
+ + + + + + + + +
const Signature * rtabmap::Memory::getLastWorkingSignature (bool ignoreIntermediateNodes) const
+
+ +

Returns the most recent WM signature.

+
Parameters
+ + +
ignoreIntermediateNodesIf true, skips weight==-1 placeholder nodes.
+
+
+ +
+
+ +

◆ getSignatureIdByLabel()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int rtabmap::Memory::getSignatureIdByLabel (const std::string & label,
bool lookInDatabase = true 
) const
+
+
Returns
Signature id labeled label, or 0 if not found.
+ +
+
+ +

◆ labelSignature()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Memory::labelSignature (int id,
const std::string & label 
)
+
+ +

Assigns or removes a label on id.

+
Parameters
+ + + +
idSignature id; pass 0 to remove an existing label by name.
labelLabel text; empty to remove.
+
+
+
Returns
True if the label was applied.
+ +
+
+ +

◆ getAllLabels()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, std::string > & rtabmap::Memory::getAllLabels () const
+
+inline
+
+
Returns
Map from signature id to non-empty label (including STM+WM+LTM).
+ +

Definition at line 456 of file Memory.h.

+ +
+
+ +

◆ getLandmarksIndex()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, std::set< int > > & rtabmap::Memory::getLandmarksIndex () const
+
+inline
+
+
Returns
Reverse landmark index: { landmark id (negative), nodes observing it }.
+ +

Definition at line 458 of file Memory.h.

+ +
+
+ +

◆ allNodesInWM()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::allNodesInWM () const
+
+inline
+
+
Returns
True if every persisted node (in LTM) is currently loaded in WM/STM.
+ +

Definition at line 460 of file Memory.h.

+ +
+
+ +

◆ setUserData()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Memory::setUserData (int id,
const cv::Mat & data 
)
+
+ +

Attaches user data to signature id, compressing it on the fly if needed.

+

The format is detected automatically: a single-row CV_8UC1 matrix is treated as already-compressed data and stored as-is; anything else is considered raw and compressed before being stored.

+
Note
If you pass one-dimensional unsigned 8-bit raw data, transpose it so it has multiple rows (not multiple columns), otherwise it will be misdetected as already compressed.
+
Parameters
+ + + +
idTarget signature id (must be in WM/STM or LTM).
dataRaw or pre-compressed user data.
+
+
+
Returns
True if the data was attached, false if id was not found.
+ +
+
+ +

◆ getDatabaseMemoryUsed()

+ +
+
+ + + + + + + +
int rtabmap::Memory::getDatabaseMemoryUsed () const
+
+
Returns
On-disk database size in bytes.
+ +
+
+ +

◆ getDatabaseVersion()

+ +
+
+ + + + + + + +
std::string rtabmap::Memory::getDatabaseVersion () const
+
+
Returns
Schema version of the open database (e.g. "0.20.0").
+ +
+
+ +

◆ getDatabaseUrl()

+ +
+
+ + + + + + + +
std::string rtabmap::Memory::getDatabaseUrl () const
+
+
Returns
File path of the open database (empty if in-memory).
+ +
+
+ +

◆ getDbSavingTime()

+ +
+
+ + + + + + + +
double rtabmap::Memory::getDbSavingTime () const
+
+
Returns
Last emptyTrash() flush time in seconds.
+ +
+
+ +

◆ getMapId()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int rtabmap::Memory::getMapId (int id,
bool lookInDatabase = false 
) const
+
+
Returns
Map id of signature id; lookInDatabase also queries LTM.
+ +
+
+ +

◆ getOdomPose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform rtabmap::Memory::getOdomPose (int signatureId,
bool lookInDatabase = false 
) const
+
+
Returns
Odometry pose stored with signatureId (null if unknown).
+ +
+
+ +

◆ getGroundTruthPose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform rtabmap::Memory::getGroundTruthPose (int signatureId,
bool lookInDatabase = false 
) const
+
+
Returns
Ground-truth pose stored with signatureId (null if unknown).
+ +
+
+ +

◆ getGroundTruths()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Transform > & rtabmap::Memory::getGroundTruths () const
+
+inline
+
+
Returns
Ground-truth poses for nodes currently in WM/STM.
+ +

Definition at line 493 of file Memory.h.

+ +
+
+ +

◆ getGPS()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Memory::getGPS (int id,
GPS & gps,
Transform & offsetENU,
bool lookInDatabase,
int maxGraphDepth = 0 
) const
+
+ +

Returns a GPS fix for id, falling back to the nearest GPS-tagged neighbor.

+

Two cases:

    +
  • If id has a GPS fix attached, gps is set to that fix and offsetENU is left at identity.
  • +
  • Otherwise, the graph is searched (via getNeighborsId() with depth maxGraphDepth, ignoring loop closures) for the closest neighbor that has a GPS fix. When one is found, gps is set to that neighbor's fix and offsetENU is the rigid transform from that neighbor's pose to id, expressed in ENU coordinates (derived from the neighbor's heading/bearing). Applying offsetENU on top of the GPS-derived pose of the neighbor yields the ENU pose of id.
  • +
+

If no GPS fix is found on id or any reachable neighbor, gps is returned empty (gps.stamp()==0) and offsetENU is identity.

+
Parameters
+ + + + + + +
idQuery signature id.
gpsOutput GPS fix (empty if none found).
offsetENUOutput ENU-frame offset from the GPS-tagged node to id (identity when id itself carries the GPS fix or when none is found).
lookInDatabaseIf true, also fetch missing nodes from LTM during the search.
maxGraphDepthMaximum graph depth used to look for a GPS-tagged neighbor when id has none (0 = no depth limit, i.e. search the whole reachable graph).
+
+
+ +
+
+ +

◆ getNodeInfo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::Memory::getNodeInfo (int signatureId,
Transform & odomPose,
int & mapId,
int & weight,
std::string & label,
double & stamp,
Transform & groundTruth,
std::vector< float > & velocity,
GPS & gps,
EnvSensors & sensors,
bool lookInDatabase = false 
) const
+
+ +

Reads metadata of signatureId (no images/scan/words).

+
Parameters
+ + + + + + + + + + + + +
signatureIdNode id.
odomPoseOutput odometry pose (null if not set).
mapIdOutput map id.
weightOutput rehearsal weight.
labelOutput label (empty if none).
stampOutput timestamp (seconds, epoch).
groundTruthOutput ground-truth pose (null if not set).
velocityOutput 6-vector velocity (empty if not set).
gpsOutput GPS fix (invalid if not set).
sensorsOutput environmental sensor readings.
lookInDatabaseAlso query LTM.
+
+
+
Returns
True if signatureId was found.
+ +
+
+ +

◆ getImageCompressed()

+ +
+
+ + + + + + + + +
cv::Mat rtabmap::Memory::getImageCompressed (int signatureId) const
+
+
Returns
Compressed image blob for signatureId (empty if not stored).
+ +
+
+ +

◆ getNodeData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SensorData rtabmap::Memory::getNodeData (int locationId,
bool images,
bool scan,
bool userData,
bool occupancyGrid 
) const
+
+ +

Loads sensor data of locationId from WM or LTM.

+
Parameters
+ + + + + +
imagesInclude compressed RGB/depth images.
scanInclude laser scan blob.
userDataInclude user data blob.
occupancyGridInclude occupancy grid cells.
+
+
+ +
+
+ +

◆ getAllSignatureIds()

+ +
+
+ + + + + + + + +
std::set< int > rtabmap::Memory::getAllSignatureIds (bool ignoreChildren = true) const
+
+ +

Returns all signature ids in WM, STM and LTM.

+
Parameters
+ + +
ignoreChildrenIf true, nodes not linked to graph anymore are excluded
+
+
+ +
+
+ +

◆ memoryChanged()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::memoryChanged () const
+
+inline
+
+ +

Reports whether the in-memory map has been modified since the database was last loaded or reset. close() uses this flag to decide whether the database needs to be rewritten.

+

The flag is cleared to false on construction, by close() and when the memory is cleared, and is raised to true on any of the following events:

+ +

Note that link-only modifications (e.g. addLink(), updateLink(), removeLink()) update an independent _linksChanged flag, not this one.

+
Returns
True if the memory has changed and would need to be persisted.
+ +

Definition at line 602 of file Memory.h.

+ +
+
+ +

◆ isIncremental()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::isIncremental () const
+
+inline
+
+
Returns
True if the memory grows on update() (mapping mode), false in localization mode.
+
See also
Parameters::kMemIncrementalMemory()
+ +

Definition at line 607 of file Memory.h.

+ +
+
+ +

◆ isReadOnly()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::isReadOnly () const
+
+inline
+
+
Returns
True in localization mode when database writes are disabled (i.e. isIncremental() is false and Parameters::kMemLocalizationReadOnly() is enabled).
+
See also
Parameters::kMemIncrementalMemory()
+
+Parameters::kMemLocalizationReadOnly()
+ +

Definition at line 614 of file Memory.h.

+ +
+
+ +

◆ isLocalizationDataSaved()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::isLocalizationDataSaved () const
+
+inline
+
+
Returns
True if data added during localization is persisted to the database.
+
See also
Parameters::kMemLocalizationDataSaved()
+ +

Definition at line 619 of file Memory.h.

+ +
+
+ +

◆ getSignature()

+ +
+
+ + + + + + + + +
const Signature * rtabmap::Memory::getSignature (int id) const
+
+
Returns
Signature with id in WM/STM, or null if not loaded.
+ +
+
+ +

◆ isInSTM()

+ +
+
+ + + + + +
+ + + + + + + + +
bool rtabmap::Memory::isInSTM (int signatureId) const
+
+inline
+
+
Returns
True if signatureId is in short-term memory.
+ +

Definition at line 623 of file Memory.h.

+ +
+
+ +

◆ isInWM()

+ +
+
+ + + + + +
+ + + + + + + + +
bool rtabmap::Memory::isInWM (int signatureId) const
+
+inline
+
+
Returns
True if signatureId is in working memory.
+ +

Definition at line 625 of file Memory.h.

+ +
+
+ +

◆ isInLTM()

+ +
+
+ + + + + +
+ + + + + + + + +
bool rtabmap::Memory::isInLTM (int signatureId) const
+
+inline
+
+
Returns
True if signatureId is not in STM/WM, so when it is in LTM or non-existing.
+ +

Definition at line 627 of file Memory.h.

+ +
+
+ +

◆ isIDsGenerated()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::isIDsGenerated () const
+
+inline
+
+
Returns
True if signature ids are auto-generated, false if taken from sensor data id.
+ +

Definition at line 629 of file Memory.h.

+ +
+
+ +

◆ getLastGlobalLoopClosureId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Memory::getLastGlobalLoopClosureId () const
+
+inline
+
+
Returns
Id of the last accepted global loop-closure node, or 0 if none.
+ +

Definition at line 631 of file Memory.h.

+ +
+
+ +

◆ getFeature2D()

+ +
+
+ + + + + +
+ + + + + + + +
const Feature2D * rtabmap::Memory::getFeature2D () const
+
+inline
+
+
Returns
Feature extractor used to compute visual words.
+ +

Definition at line 633 of file Memory.h.

+ +
+
+ +

◆ isGraphReduced()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::isGraphReduced () const
+
+inline
+
+
Returns
True if graph reduction is enabled (Parameters::kMemReduceGraph()).
+ +

Definition at line 635 of file Memory.h.

+ +
+
+ +

◆ getOdomMaxInf()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< double > & rtabmap::Memory::getOdomMaxInf () const
+
+inline
+
+
Returns
Running per-axis maximum of the diagonal of every neighbor (odometry) link's information matrix observed so far, as a 6-vector (x, y, z, roll, pitch, yaw). Empty until at least one 6x6 neighbor link information matrix has been seen.
+

This is a runtime statistic, not a configurable parameter: it is updated on init() (over all loaded neighbor links) and on every update() that adds a new neighbor link.

+

It is consumed by Rtabmap::getInformation() when Parameters::kRGBDLoopCovLimited() is enabled, to clip loop-closure information matrices so a loop never claims higher confidence than odometry itself ever provided.

+
See also
Parameters::kRGBDLoopCovLimited()
+ +

Definition at line 653 of file Memory.h.

+ +
+
+ +

◆ isOdomGravityUsed()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Memory::isOdomGravityUsed () const
+
+inline
+
+
Returns
True if the odometry pose orientation is used (instead of the IMU orientation) as the source of each new node's gravity link.
+

When enabled, every new node gets a self-loop Link::kGravity holding the rotation of the odometry pose passed to update(). This assumes odometry is already gravity-aligned (e.g. a VIO front-end). When disabled, the gravity link is built from the IMU orientation in SensorData::imu() if available.

+

Gravity links are consumed by graph optimization only when Parameters::kOptimizerGravitySigma() is non-zero.

+
See also
Parameters::kMemUseOdomGravity()
+
+Parameters::kOptimizerGravitySigma()
+ +

Definition at line 669 of file Memory.h.

+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + + + +
unsigned long rtabmap::Memory::getMemoryUsed () const
+
+
Returns
Approximate RAM usage of the in-memory state, in bytes.
+ +
+
+ +

◆ generateGraph()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::Memory::generateGraph (const std::string & fileName,
const std::set< int > & ids = std::set< int >() 
)
+
+ +

Writes a Graphviz DOT file of the pose graph.

+
Parameters
+ + + +
fileNameOutput path.
idsIf non-empty, restrict the graph to these node ids.
+
+
+ +
+
+ +

◆ cleanupLocalGrids()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int rtabmap::Memory::cleanupLocalGrids (const std::map< int, Transform > & poses,
const cv::Mat & map,
float xMin,
float yMin,
float cellSize,
int cropRadius = 1,
bool filterScans = false 
)
+
+ +

Removes spurious obstacle points from each node's local grid using a reference 2D map.

+

For every node in poses, the node's local obstacle grid is loaded, each obstacle point is projected with poses into the reference map, and the point is kept only if either:

    +
  • the reference map cell at its projection is not free space (i.e. the cell is an obstacle or unknown, value != 0), or
  • +
  • the reference map contains an obstacle cell (value == 100) within cropRadius cells of the projection.
  • +
+

Points that fall on a free cell and have no obstacle neighbor within cropRadius are dropped. The filtered obstacle grid replaces the node's grid in WM/STM and (if the node is already persisted) in the database via DBDriver::updateOccupancyGrid().

+

Ground and empty cells are not touched: they are read and written back as-is.

+

When filterScans is true, the same projection/filtering rule is also applied to each node's raw laser scan, and the rewritten scan is saved back to the database. This is useful to remove dynamic objects from the stored scans before re-meshing or re-exporting.

+
Parameters
+ + + + + + + + +
posesOptimized poses used to project the local grids/scans into map.
mapReference 2D occupancy grid (cell values: 0 free, 100 occupied, anything else unknown).
xMinReference map origin x in world coordinates (meters).
yMinReference map origin y in world coordinates (meters).
cellSizeReference map resolution (meters/cell); must match the nodes' grid cell size.
cropRadiusSearch radius (in cells) around each projected point used to accept points near an obstacle in map.
filterScansIf true, also filter and rewrite the raw laser scan attached to each node, using the same rule as for obstacle cells.
+
+
+
Returns
Number of (node, grid or scan) modifications performed, or -1 on error (no database loaded, empty poses or empty map).
+ +
+
+ +

◆ getVWDictionary()

+ +
+
+ + + + + + + +
const VWDictionary * rtabmap::Memory::getVWDictionary () const
+
+
Returns
Visual word dictionary used for tf-idf likelihood and feature matching.
+ +
+
+ +

◆ getMetricConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Memory::getMetricConstraints (const std::set< int > & ids,
std::map< int, Transform > & poses,
std::multimap< int, Link > & links,
bool lookInDatabase = false,
bool landmarksAdded = false 
)
+
+ +

Extracts a sub-graph (poses + links) for a set of node ids.

+

Used by graph optimization callers to retrieve constraints for a region of interest.

+
Parameters
+ + + + + + +
idsIds to include.
posesOutput: odometry poses for ids.
linksOutput: links between the nodes (and to landmarks if landmarksAdded).
lookInDatabaseIf true, fetch missing data from LTM.
landmarksAddedIf true, also include landmark constraints.
+
+
+ +
+
+ +

◆ computeTransform()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Transform rtabmap::Memory::computeTransform (Signature & fromS,
Signature & toS,
Transform guess,
RegistrationInfo * info = 0,
bool useKnownCorrespondencesIfPossible = false 
) const
+
+ +

Computes the relative transform from fromS to toS using the registration pipeline.

+
Parameters
+ + + + + + +
fromSSource signature (will be modified to cache extracted data).
toSTarget signature.
guessInitial transform estimate (null if unknown).
infoOptional output with inlier counts, variance and diagnostics.
useKnownCorrespondencesIfPossibleIf true, reuses existing word-id correspondences.
+
+
+
Returns
The estimated transform, or a null Transform on failure.
+ +
+
+ +

◆ computeIcpTransform()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Transform rtabmap::Memory::computeIcpTransform (const Signature & fromS,
const Signature & toS,
Transform guess,
RegistrationInfo * info = 0 
) const
+
+ +

Refines a transform using ICP alignment of laser scans only.

+
Returns
The refined transform, or a null Transform on failure.
+ +
+
+ +

◆ computeIcpTransformMulti()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Transform rtabmap::Memory::computeIcpTransformMulti (int newId,
int oldId,
const std::map< int, Transform > & poses,
RegistrationInfo * info = 0 
)
+
+ +

ICP registration of one node against an assembled cloud from multiple neighbors.

+
Parameters
+ + + + + +
newIdNew (query) node id.
oldIdReference node id.
posesNeighbor poses used to assemble the reference cloud.
infoOptional output with inlier counts and diagnostics.
+
+
+
Returns
The estimated transform, or a null Transform on failure.
+ +
+
+

Member Data Documentation

+ +

◆ kIdStart

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::Memory::kIdStart
+
+static
+
+ +

First valid signature id assigned to a new signature (positive integer).

+ +

Definition at line 105 of file Memory.h.

+ +
+
+ +

◆ kIdVirtual

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::Memory::kIdVirtual
+
+static
+
+ +

Reserved id for the "virtual place" used by the Bayes filter (negative).

+ +

Definition at line 107 of file Memory.h.

+ +
+
+ +

◆ kIdInvalid

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::Memory::kIdInvalid
+
+static
+
+ +

Sentinel value indicating an invalid signature id (zero).

+ +

Definition at line 109 of file Memory.h.

+ +
+
+ +

◆ _dbDriver

+ +
+
+ + + + + +
+ + + + +
DBDriver* rtabmap::Memory::_dbDriver
+
+protected
+
+ +

Database driver owning the persistent storage (created by init()).

+ +

Definition at line 819 of file Memory.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/Memory.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Memory.js b/preview/pr-1773/api/latest/classrtabmap_1_1Memory.js new file mode 100644 index 00000000..b921202c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Memory.js @@ -0,0 +1,105 @@ +var classrtabmap_1_1Memory = +[ + [ "Memory", "classrtabmap_1_1Memory.html#a24d451cdf46a9cc04cce995142a101d4", null ], + [ "parseParameters", "classrtabmap_1_1Memory.html#abbf54d2a34838cc13ce98d41a9991918", null ], + [ "getParameters", "classrtabmap_1_1Memory.html#af4cc965870dd757517b126af4860d34d", null ], + [ "update", "classrtabmap_1_1Memory.html#a3c029b2788f3b599480d5150120a6bee", null ], + [ "update", "classrtabmap_1_1Memory.html#aae43fd080c6bc9773fa58f1c36e6684f", null ], + [ "init", "classrtabmap_1_1Memory.html#aeeabc78648bf7dc14ea1356828cdeddd", null ], + [ "close", "classrtabmap_1_1Memory.html#a44023158524dee3471a8dff43ea132db", null ], + [ "computeLikelihood", "classrtabmap_1_1Memory.html#a984ca01a87434b11a66dc1d96e2fff17", null ], + [ "incrementMapId", "classrtabmap_1_1Memory.html#afce9dbf3e5657d65540e33c59e992d83", null ], + [ "updateAge", "classrtabmap_1_1Memory.html#a76fd8c93220c16fac5843ccc2c0bec3c", null ], + [ "forget", "classrtabmap_1_1Memory.html#a51e89ccab2261912b09a5b7178fdd46c", null ], + [ "reactivateSignatures", "classrtabmap_1_1Memory.html#aa244b8581684b85e35d2056cf972e377", null ], + [ "cleanup", "classrtabmap_1_1Memory.html#af87e4718dd842c59fd8459430c40d78f", null ], + [ "saveStatistics", "classrtabmap_1_1Memory.html#afbcfc92dc9bbc344ab106d2f21d93aaf", null ], + [ "savePreviewImage", "classrtabmap_1_1Memory.html#affdd654e385b61306a2ac2ea91d13b85", null ], + [ "loadPreviewImage", "classrtabmap_1_1Memory.html#abd0d7277526f06861df17e03fa13e817", null ], + [ "saveOptimizedPoses", "classrtabmap_1_1Memory.html#ab7a2da56bb12845f0370a20a9497dfe0", null ], + [ "loadOptimizedPoses", "classrtabmap_1_1Memory.html#a9e2972a53619456d75ad923fb5e9bc7e", null ], + [ "save2DMap", "classrtabmap_1_1Memory.html#ac96fffe9fde99f7c74a06bbc5727be6b", null ], + [ "load2DMap", "classrtabmap_1_1Memory.html#a9a71f27d0de4f7e6400ca470a82be19d", null ], + [ "saveOptimizedMesh", "classrtabmap_1_1Memory.html#a7e16d27512d0daf17b9dbb17aab3b201", null ], + [ "loadOptimizedMesh", "classrtabmap_1_1Memory.html#a0827d1d23744b3693f00e518e1b0fda8", null ], + [ "emptyTrash", "classrtabmap_1_1Memory.html#a072ec41027a03072f1a945540b43a1b8", null ], + [ "joinTrashThread", "classrtabmap_1_1Memory.html#a2bba8c0aa57778bb441a97728d45a58e", null ], + [ "addLink", "classrtabmap_1_1Memory.html#a4140effa4830fbe679a51e975f0021a1", null ], + [ "updateLink", "classrtabmap_1_1Memory.html#a7c7f80937a35204cb5b44faec8e99736", null ], + [ "removeAllVirtualLinks", "classrtabmap_1_1Memory.html#a838b48bb9c2e6ccfe4f916ea2b2d00fd", null ], + [ "removeVirtualLinks", "classrtabmap_1_1Memory.html#aa77fb0f90185a274b3e9d0c609ce14ed", null ], + [ "getNeighborsId", "classrtabmap_1_1Memory.html#a521305f39adcdfbedebbe5bdae9efbc6", null ], + [ "getNeighborsIdRadius", "classrtabmap_1_1Memory.html#a10c44ee8a5d84480b41aa4980665d894", null ], + [ "convertToIntermediate", "classrtabmap_1_1Memory.html#ae66a7837edc6e844ee9186e61d139300", null ], + [ "deleteLocation", "classrtabmap_1_1Memory.html#a2b91d8b5d651fbaa12a31e364c793a21", null ], + [ "saveLocationData", "classrtabmap_1_1Memory.html#a93119d10342db4a55c77b180cb249453", null ], + [ "removeLink", "classrtabmap_1_1Memory.html#a3fcaa79a33d63f7e383d05868b1316e3", null ], + [ "removeRawData", "classrtabmap_1_1Memory.html#acab72b1076370287ac28a1d464d480f0", null ], + [ "reduceNode", "classrtabmap_1_1Memory.html#ac9e6bfaf161d4bd1a9f99d2352492a1d", null ], + [ "setDummyDictionary", "classrtabmap_1_1Memory.html#a655f123daec9e4e50e322db9f3bbd6db", null ], + [ "getWorkingMem", "classrtabmap_1_1Memory.html#ab6c0794ad1aac6e9084c0240e709cdc6", null ], + [ "getWorkingMemSize", "classrtabmap_1_1Memory.html#a5ca9260a2a63fae6f3d16e1db9cbce53", null ], + [ "getWorkingMemIntermediateNodesCount", "classrtabmap_1_1Memory.html#ad9b97cdfd95eb3c0dad649d755fc3267", null ], + [ "getStMemIntermediateNodesCount", "classrtabmap_1_1Memory.html#a3f3a3da280f9e5ee9bba6df03e551f79", null ], + [ "getStMem", "classrtabmap_1_1Memory.html#a007abab13fade6f63b6db3fc279a1631", null ], + [ "getMaxStMemSize", "classrtabmap_1_1Memory.html#a41b23c567f6aa6bcc3a756e5ae5c1f33", null ], + [ "getNeighborLinks", "classrtabmap_1_1Memory.html#a172f0d3046c0b7d6b37cdf11af153bee", null ], + [ "getLoopClosureLinks", "classrtabmap_1_1Memory.html#a88fecb24bd16886d6086937277df5f20", null ], + [ "getLinks", "classrtabmap_1_1Memory.html#a7d4e2a2281980bc1b18683fd8fc2ebeb", null ], + [ "getAllLinks", "classrtabmap_1_1Memory.html#acde7a0f34f8896c3c9f002c6cbcc614e", null ], + [ "isBinDataKept", "classrtabmap_1_1Memory.html#a18a6e852d545751fbc348d2aae6d7fe0", null ], + [ "getSimilarityThreshold", "classrtabmap_1_1Memory.html#ae1e4c518ec65f86b7a3eade7ac2705c8", null ], + [ "getWeights", "classrtabmap_1_1Memory.html#a4d8bfc0b85f270dbb3fc66cde079b63e", null ], + [ "getLastSignatureId", "classrtabmap_1_1Memory.html#a65552e672e67c9f511b3384e3d117de6", null ], + [ "getLastWorkingSignature", "classrtabmap_1_1Memory.html#ad14c4346a42a621b7834c60de6bc2e63", null ], + [ "getNodesObservingLandmark", "classrtabmap_1_1Memory.html#afe7a1c036129e7ec94905c3650e91cc8", null ], + [ "getSignatureIdByLabel", "classrtabmap_1_1Memory.html#a4907501b27fdfd5b8053b9d932d8dec4", null ], + [ "labelSignature", "classrtabmap_1_1Memory.html#abba1fbec2be0cfced6e14d723fc45794", null ], + [ "getAllLabels", "classrtabmap_1_1Memory.html#a055a0ebfc7e2c128d386f8141dc320ce", null ], + [ "getLandmarksIndex", "classrtabmap_1_1Memory.html#acf7e6cbe5eda50b024cbb1bc82d03b7c", null ], + [ "allNodesInWM", "classrtabmap_1_1Memory.html#a2098205b805bde66a4a57906a8ca95f5", null ], + [ "setUserData", "classrtabmap_1_1Memory.html#aff18f08be0a7951f508276e341759f5c", null ], + [ "getDatabaseMemoryUsed", "classrtabmap_1_1Memory.html#a83d0b30afc46dd66ab3106c9997657c4", null ], + [ "getDatabaseVersion", "classrtabmap_1_1Memory.html#aebd7dd4ef859d70435a5db8e4f398ea5", null ], + [ "getDatabaseUrl", "classrtabmap_1_1Memory.html#ab2c3951385254cbb42fb399b407ded24", null ], + [ "getDbSavingTime", "classrtabmap_1_1Memory.html#a40ba03d0f1291fc9e45ce86d05479cd3", null ], + [ "getMapId", "classrtabmap_1_1Memory.html#a2391cf06d55513bee3cfd50d8beb3a59", null ], + [ "getOdomPose", "classrtabmap_1_1Memory.html#a4bb01d27d1ec7776103635b11228626c", null ], + [ "getGroundTruthPose", "classrtabmap_1_1Memory.html#a89dd9b0aea5595e929b23ded82cd8ff1", null ], + [ "getGroundTruths", "classrtabmap_1_1Memory.html#ac61afdb7694d54b5e3d146be427638b2", null ], + [ "getGPS", "classrtabmap_1_1Memory.html#aca3bdb688c64dd62672f2385ce6de594", null ], + [ "getNodeInfo", "classrtabmap_1_1Memory.html#ae6184a6979703045f34d3e2a155eb9f3", null ], + [ "getImageCompressed", "classrtabmap_1_1Memory.html#abc4c40056783163ec5abde9366060cb2", null ], + [ "getNodeData", "classrtabmap_1_1Memory.html#a22d6c0b38d8699cdbba73b6bcdb38dd6", null ], + [ "getNodeWordsAndGlobalDescriptors", "classrtabmap_1_1Memory.html#a4c555fac41be4b4d44c551c010971dc3", null ], + [ "getNodeCalibration", "classrtabmap_1_1Memory.html#af48dbd905dda453b6b2c2246a90d0e04", null ], + [ "getAllSignatureIds", "classrtabmap_1_1Memory.html#a4c7c344a7f3733a8f30a6e82fbb4f20a", null ], + [ "memoryChanged", "classrtabmap_1_1Memory.html#a8720df55fa6f8be933827808d364f20a", null ], + [ "isIncremental", "classrtabmap_1_1Memory.html#a420ddb38a3ffefafc84d22b0dd3b3814", null ], + [ "isReadOnly", "classrtabmap_1_1Memory.html#ad6d7488b61f8bedf6c9e3f4019a6b7f4", null ], + [ "isLocalizationDataSaved", "classrtabmap_1_1Memory.html#a32ed69b783e53be29fca6102ab198a4e", null ], + [ "getSignature", "classrtabmap_1_1Memory.html#a15ec109dd157745f69dcd4f80efaf561", null ], + [ "isInSTM", "classrtabmap_1_1Memory.html#a19fe91598153249250ac4870db535e8e", null ], + [ "isInWM", "classrtabmap_1_1Memory.html#a5058d8b44e4f76f1fedb76645087a1ac", null ], + [ "isInLTM", "classrtabmap_1_1Memory.html#a2464a77e0190653e10ce9e60fb919ae9", null ], + [ "isIDsGenerated", "classrtabmap_1_1Memory.html#a6d48ff5d4dfcf085123b5dd354fae681", null ], + [ "getLastGlobalLoopClosureId", "classrtabmap_1_1Memory.html#ad6e8870c75b300a7d526f49467f67913", null ], + [ "getFeature2D", "classrtabmap_1_1Memory.html#ab094dfa40b0fe37cb12552a6ba081d6b", null ], + [ "isGraphReduced", "classrtabmap_1_1Memory.html#a790e24b6cb0fb3ec2ed198121a6211c1", null ], + [ "getOdomMaxInf", "classrtabmap_1_1Memory.html#ae37d02a779acb85797de25da36066829", null ], + [ "isOdomGravityUsed", "classrtabmap_1_1Memory.html#ab29b6d90e79694d7fdfb56574476141f", null ], + [ "dumpMemoryTree", "classrtabmap_1_1Memory.html#a4aef39ff933463d9693e8f4f325f74e7", null ], + [ "dumpMemory", "classrtabmap_1_1Memory.html#a634e2fdc0e1c93a2cb01f07c9cbac33f", null ], + [ "dumpSignatures", "classrtabmap_1_1Memory.html#a1b470cb9ff41fd77a35d9a6230750446", null ], + [ "dumpDictionary", "classrtabmap_1_1Memory.html#afc3de4b861e23f90bf753794bcb40e68", null ], + [ "getMemoryUsed", "classrtabmap_1_1Memory.html#ad59e8591cd04e2ecd93b4e706f198763", null ], + [ "generateGraph", "classrtabmap_1_1Memory.html#aebef354bb315f522b4767337a6bd1ee6", null ], + [ "cleanupLocalGrids", "classrtabmap_1_1Memory.html#a6e63312ada575016b583a4252dc0a70c", null ], + [ "getVWDictionary", "classrtabmap_1_1Memory.html#a61adae3b07b3daee32efd1abb4dac45e", null ], + [ "getMetricConstraints", "classrtabmap_1_1Memory.html#ab5329c43c6b185613222d8458c049848", null ], + [ "computeTransform", "classrtabmap_1_1Memory.html#a4ae0287262c04905baab2d6f94448486", null ], + [ "computeTransform", "classrtabmap_1_1Memory.html#a29636c34234e6e2809e3d57329dc40d6", null ], + [ "computeIcpTransform", "classrtabmap_1_1Memory.html#aca66c6d1316f9d833b279104a683ee50", null ], + [ "computeIcpTransformMulti", "classrtabmap_1_1Memory.html#a34aa7efd5f6ce0fd3136459542ad8ebb", null ], + [ "_dbDriver", "classrtabmap_1_1Memory.html#a6110b0ea8a7b35bae46083f2ce66e148", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.map new file mode 100644 index 00000000..1c4cee3f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.md5 new file mode 100644 index 00000000..b37d9283 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.md5 @@ -0,0 +1 @@ +bf1db22bb325861ec26b874057354fa0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Memory__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e310d2bc08dd2a3a8d243e547e6db8b128361442 GIT binary patch literal 9984 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::ORB Member List
+
+
+ +

This is the complete list of members for rtabmap::ORB, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::ORB)rtabmap::ORBinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::ORBvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
ORB(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::ORB)rtabmap::ORB
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::ORB)rtabmap::ORBvirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~ORB() (defined in rtabmap::ORB)rtabmap::ORBvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORB.html b/preview/pr-1773/api/latest/classrtabmap_1_1ORB.html new file mode 100644 index 00000000..9d0133f7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORB.html @@ -0,0 +1,368 @@ + + + + + + + + +RTAB-Map: rtabmap::ORB Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::ORB Class Reference
+
+
+ +

ORB detector and descriptor (optional GPU). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::ORB:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::ORB:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ ORB (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

ORB detector and descriptor (optional GPU).

+ +

Definition at line 383 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::ORB::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::ORB::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 390 of file Features2d.h.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::ORB::isGpuAvailable () const
+
+overridevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORB.js b/preview/pr-1773/api/latest/classrtabmap_1_1ORB.js new file mode 100644 index 00000000..8c4f72d8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORB.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1ORB = +[ + [ "isGpuAvailable", "classrtabmap_1_1ORB.html#a7b5e3e7cc41dd04e517c5332f04d3a0a", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree-members.html new file mode 100644 index 00000000..a6ee44b6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::ORBOctree Member List
+
+
+ +

This is the complete list of members for rtabmap::ORBOctree, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::ORBOctree)rtabmap::ORBOctreeinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() constrtabmap::Feature2Dinlinevirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
ORBOctree(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::ORBOctree)rtabmap::ORBOctree
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::ORBOctree)rtabmap::ORBOctreevirtual
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~ORBOctree() (defined in rtabmap::ORBOctree)rtabmap::ORBOctreevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree.html b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree.html new file mode 100644 index 00000000..be75b39c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree.html @@ -0,0 +1,339 @@ + + + + + + + + +RTAB-Map: rtabmap::ORBOctree Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::ORBOctree Class Reference
+
+
+ +

ORB with octree spatial distribution (RTAB-Map must be built with OCTREE enabled). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::ORBOctree:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::ORBOctree:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ ORBOctree (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
virtual bool isGpuAvailable () const
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

ORB with octree spatial distribution (RTAB-Map must be built with OCTREE enabled).

+ +

Definition at line 647 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::ORBOctree::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::ORBOctree::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 654 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.map new file mode 100644 index 00000000..b3fb3764 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.md5 new file mode 100644 index 00000000..aa00c106 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.md5 @@ -0,0 +1 @@ +50aea02d62e4bc4c8ece040ae8bbccbb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8e941d1f2a0c38064f715335e245d6ef7de1bf12 GIT binary patch literal 4702 zcmd6rhgVZgx5g2WB279{L=;iF)DXH#FF`~Eq&JZcFCbN_^d`L%&=-OtozOxNX;K0L z(g~d)CG=kJaPRuQzu_h;Iaw>`%$Ys2pJ)H}iF^T5rntp?3l9&ELRCfKB{(9$$B~2x ze79S>%7O!tg}Sl=-qrOxuL+Tahet!Js_^ucS2ixk_r*u@RA?^-OUlp?8D8Twv3LYatg#&KEq=A16N6Ty zOZ(jZx|MA1{@6b{x6|-eE*>m5@@@R&iDo@G>62)4gAQ!@=B}VtymQ^+Q1@<=5aI{P z-@6?nkoYBdV`C#Sk@F!&T_`v_zRCCKa!@-1^#xxwF_BaCwC%474GG=mboK|o?N;K_ zl>4{w-d1IRvnUOe-QufB2t8w-AmouGZns`V^Pn?wa?m@AU0rX&%wn_)py;+^Yhbh^b+EI{arq>8O1i^8JEa8zq+dW?%iWmRn_lC^)#lYrfKVUJlq%<8I#h} zB__=~vxkOW28V=rFQ@1wONX@1CDv@|vdbR)(Xq0!`jnCq+F`)~fu!y3{!`Dk`VQQ>>!$odtAJFrJN!nI=0Sr=@SzZ{}vQz8yPu3 zu#ez=KNB7(A0IEq;|gzZ!Ln7<)S@uWCwuU#KGVxx#>vS^6&MVQ95ZQaYqQjMY&l;R z#2wB@(esX1T9c8IlH!Sqi&t87+@fTcjfsyR$gA+WI2iNBX4r)NF&EF;IXco4t*x!y zn-6E_!B%_5L7~vT9H}%$Q@;cen|_ITnibd8%wY%dDkqF&^&5V<%bj?k42_SWp%qr$ zG#XsAV6J#pZ{J!7XL#+QAsJ9Nu4o4S&*kO63rpaa`-r;w`UH>VG~4Ps76N$D6f4JfIG7->{Z^i3k|**Y8F`tkBP1i>FQkuL}PQpA(qZ`A*mJ zn29f%OOS)(sjSP~k56408eHC(1`lzZm9;guZSe?Ccvx5u-2e3J%Vv-D*9FpYa;8L9 z(H)L8MLgI53ic?Ff0Hp+!K=k9Lx3brI?Wo21YQBl>` z)#-nonw;dZN4_~(8!3j_R*i+v&(H4y@uXCDSR~x22eClmmzJ&w$>!5F-ih8`b=mhD z>1Ze=tEoZiax|l0PoUrKk}7J&G9GN!ul2FAwD8@$-m&bRot?H(Zb8A7i=$aYV`KK= z;rq3$HxTh=_al z??2;aPbW&3@vT8;x=mKwg7XucTP{-J=Sz>oJszrl{{B6tsOT}G8bfi>_45wf2Ra6Z z#N6EeQe%|Y<;hBT?C|t7d0<-FScKS7*D}`Kv(~ZF88N2p>njDsd%hhm#|eQjva_>a z9@e%{WR9M(6brK5zCBlt30fVDfU+KrW>Zj5s3f+h@*8gN?^knY30a2eOm5_4p-?E{ z&^AwdcVCaw?V}_1m&)w$fJo3>eg17 zUnL$N0~tR*zXPTr1!y})=|M+FM@XEM%UqyEYSJUEf3SUb5V9SIE{c6xvL_!w-tu}7 z7qU^au&5guu_`Jm_GLlhlauKZlaipGo2-|YmoQtF@o+qCZEZi0(P}<*X^+E(Z@4V| zq6U-h3?d-T7JuvSFDvD_X$7qAue&57&NWpVVl!(Y2Zd(DvOs89SbBekl0`;FatH|} zq^C3O`&{HL7HVcGfg1w-N*_(THC`M}NuU1x;#ts2FSPak`4Se}ng2Xo!teM=5|`%B zccQ}PKM8qwd0pMy+|;Ii$P!+g52WRU0&KE^vhwin-%swd<>cf5^ zrHZPm`Q`bEIF41)Jp#mp?aO$sug?SwdSkpIq_MHl{A>Z{D#3_dTC!3}+z*%Xw(fTj z7qK1U?2Ko3PBPWed9J8<)5OF?`eZ5Tho^mBYAVCR!ouH;jeiRZmAKdKyQZeHDl3KW zdM{B22M4ou*1Iket@P(Ct|EY%ftk*OFp{}-k{k0aI=i~6Y=^m0`3x)|Sfu?}QAvsQ z=y!wn!vzHee-C`Jya+1v`TmTJ(Xy~e{VhCrG0A#hZfMA|yu7TSs5rmAu5ND5(cRr$ zheAoQk||62`1m-Kwtsjh%Di0j+SZmEjYg{^euN<&h>9lv`lS-SB1QM1tPeL))wSc( zN9|c<*aG*yR(=RERU9%VoXF<=`ZvECf!jZ1y!^adTn;xTDpKz;1=jroD%^id-T(b) z_@pCdSu)pZF^=(Za@uVA?RrJaq#7?2PSCY0e|PsV=Z7k5rcUZ|(vKeBqUGj7PwY1_ zuke45l;rjb-B$wy%G0OmZXdrxdhgPFPvoq=LZ32F z^f!@nGtrp$Q{RUq+&Vt!-Th=GY=TZRKEvXkM?6^}S;bk4F*oDjk3u{VVZ>*KoSQd( zW{Zx0DU$yGWdJ!!2n*khXS z2bqzWNb=ZNvC(h!)YG^w(-kq8!-DLnvHvfA+}TGrg6erEk@LcwuYG##SW6+-N3(QOAKrAe%m1lZ{7sjSTBzQcyjMv;N09CDhfh()H@!N36;A%w!Ah0H8tjv+u!o@ z@&eD#0d4t#%K$N0h%y@>?dac>Fa!?Bp2dL5BH}bH(a_LP=YJsyVtIS8HlmU!S_IS5 zqVn+Y_!t(p+rwKnx4i73yc4$Ie}^S4y=p7zFCaBXNB-BvDIf+NJw0V_Z)k3Au7ZMs z%f+b&fTT~Hq#>>HFJ64Y9DaYz3pnw5#yFhJ<2V@NOKE9bU?AT4#l?+x@812eL((ua zN1@KH;G-@=XSKG1Z{6HP9335dKFkKK1_$HE-IeJ9#XT}M_GVs1MFIxpSru^QFYYj& zSDo_dlf05r7>y?|AEsC(3k!>l(fSW(;!`z_i|vuLd`5NKaf{uR8el+Rl7MaU2j2k$ zLQ07fbp1AaGPk}S&DSd`CN?-R(fyH>c6)ofe6?l1M>$x%?_^M!otlQ`nYH!9r%#^( zzjre~S({?wi26$XSz+b<9Z5f8&?{u;_&#kVKK5^)a zmpzS`n=|9#;o0cq=5^*s*1MBM9bcu*TBF)11`%J2mq9$S2?P;@Sw1eOM@%PA}UA9lQL5>RlxY$ zIhYCBIpE9?mM!tr&hA^Hsi9$Xx7D+zNNn#)VpN7^pdT#>U1Dv(0P(i{jYj z`Vnyd9>9JXA~uvwO-Bmjg;wY8e-9;sH;s8EB z#yZ&A<^$R(Efu&$Mz*uJ_dr0PA6wTf34(m3tLuuJ6iXE}^;h2E(#&knmGMoN^x!Fe zUGlOt9f!kR6Ze}pcAjsx+N0JPTT4`-~Y zQdNyilxZ0vLPFX?*ca~Z?%QBPiHk?nKsb7(Mity}5u3QmI=Ha)t$68O5=H@|7kyCs zQ9kRnbZKv4=Gd_Ic7-{Vrh=6fXKZY&K(wtWvk-Hv8s>5pOdl^ii@M1qe#B09=sJ0t znsTxr&O_tlzrY^bRek(xig0d-0pOM@(BD~HR)#1n4AaaK&mZ*je9k2*`e#$wpveNV35OxB(KsZIWqik{ z$z-AxUmUKYng~+;1yP=0S#9lDfe_nZt$#^b8T)?Sm>qIxa?-A9YO^Kx91PNbd2u#T z4ZU}De7khr6HoCE(`6XGyZ3e%WB&o@l(hc1;$zR3=F!5wd5%LAQXCfdLq7u z8>peVsPyNK5#&S!gM)*tQtxAIhYPt;PJv&P;}@2fJ7VsLY}l!5YA*lzszXOdH_j(> z`aqQiG+iL22_)Fc23Wx!nXmo%s+I$myZQ|dct#h{HrVXGK8>v6(h)nw;*o#WM@u+* zja!Q{+@|YXlarIpo-l169(Dpx*xc*~JyPpZcTzp*PaeUt&CZW^#Je)kZ}ABTA|oQ^ zz(4PhZ*sjBB2hzmW9!PSZbcN-KcWSjf1$RTd&>eY>=P3cf3Ldxfwl>BzzIo7i`#1j zgYQ(-)fd46_QB;$>+KFopl5{#z}*%W7gH9qW79G-duEz^PiBsqmF4BHyKqFVPt>(e zn6n}xBA%W$HZ^(Ahcb>M?HPfI5E2o+)X`}J9hIhu$xQk3#a8+>zY~E74GqoR6i!>k zS>}N|-@bjjPDl<84mFckujm+}LqYqTnVG4gqGATtCtEHc7cd+c_xdhCNYaPnmTFRD z419S71)+N@1GKEHeewSL4+`3dJ6BN;g+Yoxbo%f?rn$KppjrNiU3lzC2cv1Z%ltDZ zOoKJ#+O~n(ubJ`vu&k^sCl}Yy;9zUZ)rB)4SW>pP2>!4;a*0*8l(j literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.map new file mode 100644 index 00000000..b3fb3764 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.md5 new file mode 100644 index 00000000..aa00c106 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.md5 @@ -0,0 +1 @@ +50aea02d62e4bc4c8ece040ae8bbccbb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1ORBOctree__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8e941d1f2a0c38064f715335e245d6ef7de1bf12 GIT binary patch literal 4702 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.map new file mode 100644 index 00000000..d0f1d46a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.md5 new file mode 100644 index 00000000..9f8687ac --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.md5 @@ -0,0 +1 @@ +6475f38c94b0fa606c63e1840ec1dc2e \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..362d6754733c371816a8b56820dfe7dd1b469048 GIT binary patch literal 4267 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 V-BQvc@b3eOih{ + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.md5 new file mode 100644 index 00000000..9f8687ac --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.md5 @@ -0,0 +1 @@ +6475f38c94b0fa606c63e1840ec1dc2e \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1ORB__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..362d6754733c371816a8b56820dfe7dd1b469048 GIT binary patch literal 4267 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 V-BQvc@b3eOih{ + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OccupancyGrid Member List
+
+
+ +

This is the complete list of members for rtabmap::OccupancyGrid, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addAssembledNode(int id, const Transform &pose)rtabmap::GlobalMapprotected
addedNodes() constrtabmap::GlobalMapinline
assemble(const std::list< std::pair< int, Transform > > &newPoses)rtabmap::OccupancyGridprotectedvirtual
assembledNodes() constrtabmap::GlobalMapinlineprotected
cache() constrtabmap::GlobalMapinlineprotected
cellSize_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
clear()rtabmap::OccupancyGridvirtual
fullUpdateNeeded(const std::map< int, Transform > &poses) constrtabmap::GlobalMap
getCellSize() constrtabmap::GlobalMapinline
getGridMax(double &x, double &y) constrtabmap::GlobalMapinline
getGridMax(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getMap(float &xMin, float &yMin) const (defined in rtabmap::OccupancyGrid)rtabmap::OccupancyGrid
getMemoryUsed() constrtabmap::OccupancyGridvirtual
getMinMapSize() const (defined in rtabmap::OccupancyGrid)rtabmap::OccupancyGridinline
getProbMap(float &xMin, float &yMin) const (defined in rtabmap::OccupancyGrid)rtabmap::OccupancyGrid
getUpdateError() constrtabmap::GlobalMapinline
GlobalMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())rtabmap::GlobalMapprotected
isNodeAssembled(int id)rtabmap::GlobalMapinlineprotected
logodds(double probability)rtabmap::GlobalMapinlinestatic
logOddsClampingMax_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsClampingMin_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsHit_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsMiss_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
maxValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
minValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
OccupancyGrid(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::OccupancyGrid)rtabmap::OccupancyGrid
occupancyThr_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
probability(double logodds)rtabmap::GlobalMapinlinestatic
setMap(const cv::Mat &map, float xMin, float yMin, float cellSize, const std::map< int, Transform > &poses) (defined in rtabmap::OccupancyGrid)rtabmap::OccupancyGrid
update(const std::map< int, Transform > &poses)rtabmap::GlobalMap
updateError_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
~GlobalMap() (defined in rtabmap::GlobalMap)rtabmap::GlobalMapvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.html b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.html new file mode 100644 index 00000000..e5d9fff2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.html @@ -0,0 +1,358 @@ + + + + + + + + +RTAB-Map: rtabmap::OccupancyGrid Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OccupancyGrid Class Reference
+
+
+
+Inheritance diagram for rtabmap::OccupancyGrid:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OccupancyGrid:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OccupancyGrid (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 
+void setMap (const cv::Mat &map, float xMin, float yMin, float cellSize, const std::map< int, Transform > &poses)
 
float getMinMapSize () const
 
virtual void clear ()
 Clears assembled nodes and grid bounds; does not clear LocalGridCache.
 
+cv::Mat getMap (float &xMin, float &yMin) const
 
+cv::Mat getProbMap (float &xMin, float &yMin) const
 
unsigned long getMemoryUsed () const
 Approximate memory used by assembled-node bookkeeping (bytes).
 
- Public Member Functions inherited from rtabmap::GlobalMap
bool fullUpdateNeeded (const std::map< int, Transform > &poses) const
 True if the map should be rebuilt from cache (loop closure or disjoint graph).
 
bool update (const std::map< int, Transform > &poses)
 Incrementally assemble new nodes from poses.
 
float getCellSize () const
 
float getUpdateError () const
 
const std::map< int, Transform > & addedNodes () const
 
void getGridMin (double &x, double &y) const
 2D grid minimum (x, y) in meters.
 
void getGridMax (double &x, double &y) const
 2D grid maximum (x, y) in meters.
 
void getGridMin (double &x, double &y, double &z) const
 3D grid minimum (x, y, z) in meters.
 
void getGridMax (double &x, double &y, double &z) const
 3D grid maximum (x, y, z) in meters.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void assemble (const std::list< std::pair< int, Transform > > &newPoses)
 Subclass hook: merge newPoses into the global map; call addAssembledNode().
 
- Protected Member Functions inherited from rtabmap::GlobalMap
 GlobalMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 Constructs the base map; subclasses call from their constructor.
 
const std::map< int, LocalGrid > & cache () const
 
const std::map< int, Transform > & assembledNodes () const
 
bool isNodeAssembled (int id)
 
+void addAssembledNode (int id, const Transform &pose)
 Records a successfully assembled node (ids <= 0 are ignored).
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from rtabmap::GlobalMap
static float logodds (double probability)
 Converts probability in (0, 1) to log-odds.
 
static double probability (double logodds)
 Converts log-odds back to probability in (0, 1).
 
- Protected Attributes inherited from rtabmap::GlobalMap
float cellSize_
 
float updateError_
 
float occupancyThr_
 
float logOddsHit_
 
float logOddsMiss_
 
float logOddsClampingMin_
 
float logOddsClampingMax_
 
double minValues_ [3]
 
double maxValues_ [3]
 
+

Detailed Description

+
+

Definition at line 40 of file OccupancyGrid.h.

+

Member Function Documentation

+ +

◆ getMinMapSize()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::OccupancyGrid::getMinMapSize () const
+
+inline
+
+ +

Definition at line 45 of file OccupancyGrid.h.

+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void rtabmap::OccupancyGrid::clear ()
+
+virtual
+
+ +

Clears assembled nodes and grid bounds; does not clear LocalGridCache.

+ +

Reimplemented from rtabmap::GlobalMap.

+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned long rtabmap::OccupancyGrid::getMemoryUsed () const
+
+virtual
+
+ +

Approximate memory used by assembled-node bookkeeping (bytes).

+ +

Reimplemented from rtabmap::GlobalMap.

+ +
+
+ +

◆ assemble()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OccupancyGrid::assemble (const std::list< std::pair< int, Transform > > & newPoses)
+
+protectedvirtual
+
+ +

Subclass hook: merge newPoses into the global map; call addAssembledNode().

+ +

Implements rtabmap::GlobalMap.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.js b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.js new file mode 100644 index 00000000..0a9a4a3f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1OccupancyGrid = +[ + [ "clear", "classrtabmap_1_1OccupancyGrid.html#a76e50602b4dea4a94b1e7e1db25c9177", null ], + [ "getMemoryUsed", "classrtabmap_1_1OccupancyGrid.html#a06bee0b73df176bd0ab6495e22992d7f", null ], + [ "assemble", "classrtabmap_1_1OccupancyGrid.html#a4e83e17bca353cd46097c14779119ffd", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.map new file mode 100644 index 00000000..043231d9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.md5 new file mode 100644 index 00000000..28d03fba --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.md5 @@ -0,0 +1 @@ +0897b3d4fae84f643f27c75c0a94586d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..22efbc1d92229a8ba9f614f78f230640623cd249 GIT binary patch literal 4912 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.md5 new file mode 100644 index 00000000..28d03fba --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.md5 @@ -0,0 +1 @@ +0897b3d4fae84f643f27c75c0a94586d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OccupancyGrid__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..22efbc1d92229a8ba9f614f78f230640623cd249 GIT binary patch literal 4912 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OctoMap Member List
+
+
+ +

This is the complete list of members for rtabmap::OctoMap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addAssembledNode(int id, const Transform &pose)rtabmap::GlobalMapprotected
addedNodes() constrtabmap::GlobalMapinline
assemble(const std::list< std::pair< int, Transform > > &newPoses)rtabmap::OctoMapprotectedvirtual
assembledNodes() constrtabmap::GlobalMapinlineprotected
cache() constrtabmap::GlobalMapinlineprotected
cellSize_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
clear()rtabmap::OctoMapvirtual
createCloud(unsigned int treeDepth=0, std::vector< int > *obstacleIndices=0, std::vector< int > *emptyIndices=0, std::vector< int > *groundIndices=0, bool originalRefPoints=true, std::vector< int > *frontierIndices=0, std::vector< double > *cloudProb=0) const (defined in rtabmap::OctoMap)rtabmap::OctoMap
createProjectionMap(float &xMin, float &yMin, float &gridCellSize, float minGridSize=0.0f, unsigned int treeDepth=0) (defined in rtabmap::OctoMap)rtabmap::OctoMap
findCloseEmpty(RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition) (defined in rtabmap::OctoMap)rtabmap::OctoMapstatic
findEmptyNode(RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition) (defined in rtabmap::OctoMap)rtabmap::OctoMapstatic
floodFill(RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition, std::unordered_set< octomap::OcTreeKey, octomap::OcTreeKey::KeyHash > &EmptyNodes, std::queue< octomap::point3d > &positionToExplore) (defined in rtabmap::OctoMap)rtabmap::OctoMapstatic
fullUpdateNeeded(const std::map< int, Transform > &poses) constrtabmap::GlobalMap
getCellSize() constrtabmap::GlobalMapinline
getGridMax(double &x, double &y) constrtabmap::GlobalMapinline
getGridMax(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y) constrtabmap::GlobalMapinline
getGridMin(double &x, double &y, double &z) constrtabmap::GlobalMapinline
getMemoryUsed() constrtabmap::OctoMapvirtual
getUpdateError() constrtabmap::GlobalMapinline
GlobalMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())rtabmap::GlobalMapprotected
hasColor() const (defined in rtabmap::OctoMap)rtabmap::OctoMapinline
isNodeAssembled(int id)rtabmap::GlobalMapinlineprotected
isNodeVisited(std::unordered_set< octomap::OcTreeKey, octomap::OcTreeKey::KeyHash > const &EmptyNodes, octomap::OcTreeKey const key) (defined in rtabmap::OctoMap)rtabmap::OctoMapstatic
isValidEmpty(RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition) (defined in rtabmap::OctoMap)rtabmap::OctoMapstatic
logodds(double probability)rtabmap::GlobalMapinlinestatic
logOddsClampingMax_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsClampingMin_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsHit_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
logOddsMiss_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
maxValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
minValues_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
occupancyThr_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
OctoMap(const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::OctoMap)rtabmap::OctoMap
octree() const (defined in rtabmap::OctoMap)rtabmap::OctoMapinline
probability(double logodds)rtabmap::GlobalMapinlinestatic
update(const std::map< int, Transform > &poses)rtabmap::GlobalMap
updateError_ (defined in rtabmap::GlobalMap)rtabmap::GlobalMapprotected
writeBinary(const std::string &path) (defined in rtabmap::OctoMap)rtabmap::OctoMap
~GlobalMap() (defined in rtabmap::GlobalMap)rtabmap::GlobalMapvirtual
~OctoMap() (defined in rtabmap::OctoMap)rtabmap::OctoMapvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.html b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.html new file mode 100644 index 00000000..34664f87 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.html @@ -0,0 +1,406 @@ + + + + + + + + +RTAB-Map: rtabmap::OctoMap Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::OctoMap:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OctoMap:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OctoMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 
const RtabmapColorOcTree * octree () const
 
+pcl::PointCloud< pcl::PointXYZRGB >::Ptr createCloud (unsigned int treeDepth=0, std::vector< int > *obstacleIndices=0, std::vector< int > *emptyIndices=0, std::vector< int > *groundIndices=0, bool originalRefPoints=true, std::vector< int > *frontierIndices=0, std::vector< double > *cloudProb=0) const
 
+cv::Mat createProjectionMap (float &xMin, float &yMin, float &gridCellSize, float minGridSize=0.0f, unsigned int treeDepth=0)
 
+bool writeBinary (const std::string &path)
 
virtual void clear ()
 Clears assembled nodes and grid bounds; does not clear LocalGridCache.
 
virtual unsigned long getMemoryUsed () const
 Approximate memory used by assembled-node bookkeeping (bytes).
 
bool hasColor () const
 
- Public Member Functions inherited from rtabmap::GlobalMap
bool fullUpdateNeeded (const std::map< int, Transform > &poses) const
 True if the map should be rebuilt from cache (loop closure or disjoint graph).
 
bool update (const std::map< int, Transform > &poses)
 Incrementally assemble new nodes from poses.
 
float getCellSize () const
 
float getUpdateError () const
 
const std::map< int, Transform > & addedNodes () const
 
void getGridMin (double &x, double &y) const
 2D grid minimum (x, y) in meters.
 
void getGridMax (double &x, double &y) const
 2D grid maximum (x, y) in meters.
 
void getGridMin (double &x, double &y, double &z) const
 3D grid minimum (x, y, z) in meters.
 
void getGridMax (double &x, double &y, double &z) const
 3D grid maximum (x, y, z) in meters.
 
+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static std::unordered_set< octomap::OcTreeKey, octomap::OcTreeKey::KeyHash > findEmptyNode (RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition)
 
+static void floodFill (RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition, std::unordered_set< octomap::OcTreeKey, octomap::OcTreeKey::KeyHash > &EmptyNodes, std::queue< octomap::point3d > &positionToExplore)
 
+static bool isNodeVisited (std::unordered_set< octomap::OcTreeKey, octomap::OcTreeKey::KeyHash > const &EmptyNodes, octomap::OcTreeKey const key)
 
+static octomap::point3d findCloseEmpty (RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition)
 
+static bool isValidEmpty (RtabmapColorOcTree *octree_, unsigned int treeDepth, octomap::point3d startPosition)
 
- Static Public Member Functions inherited from rtabmap::GlobalMap
static float logodds (double probability)
 Converts probability in (0, 1) to log-odds.
 
static double probability (double logodds)
 Converts log-odds back to probability in (0, 1).
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void assemble (const std::list< std::pair< int, Transform > > &newPoses)
 Subclass hook: merge newPoses into the global map; call addAssembledNode().
 
- Protected Member Functions inherited from rtabmap::GlobalMap
 GlobalMap (const LocalGridCache *cache, const ParametersMap &parameters=ParametersMap())
 Constructs the base map; subclasses call from their constructor.
 
const std::map< int, LocalGrid > & cache () const
 
const std::map< int, Transform > & assembledNodes () const
 
bool isNodeAssembled (int id)
 
+void addAssembledNode (int id, const Transform &pose)
 Records a successfully assembled node (ids <= 0 are ignored).
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from rtabmap::GlobalMap
float cellSize_
 
float updateError_
 
float occupancyThr_
 
float logOddsHit_
 
float logOddsMiss_
 
float logOddsClampingMin_
 
float logOddsClampingMax_
 
double minValues_ [3]
 
double maxValues_ [3]
 
+

Detailed Description

+
+

Definition at line 175 of file OctoMap.h.

+

Member Function Documentation

+ +

◆ octree()

+ +
+
+ + + + + +
+ + + + + + + +
const RtabmapColorOcTree * rtabmap::OctoMap::octree () const
+
+inline
+
+ +

Definition at line 179 of file OctoMap.h.

+ +
+
+ +

◆ clear()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void rtabmap::OctoMap::clear ()
+
+virtual
+
+ +

Clears assembled nodes and grid bounds; does not clear LocalGridCache.

+ +

Reimplemented from rtabmap::GlobalMap.

+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual unsigned long rtabmap::OctoMap::getMemoryUsed () const
+
+virtual
+
+ +

Approximate memory used by assembled-node bookkeeping (bytes).

+ +

Reimplemented from rtabmap::GlobalMap.

+ +
+
+ +

◆ hasColor()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::OctoMap::hasColor () const
+
+inline
+
+ +

Definition at line 203 of file OctoMap.h.

+ +
+
+ +

◆ assemble()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OctoMap::assemble (const std::list< std::pair< int, Transform > > & newPoses)
+
+protectedvirtual
+
+ +

Subclass hook: merge newPoses into the global map; call addAssembledNode().

+ +

Implements rtabmap::GlobalMap.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/global_map/OctoMap.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.js b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.js new file mode 100644 index 00000000..e90d5382 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1OctoMap = +[ + [ "clear", "classrtabmap_1_1OctoMap.html#a6f9f296f3d5852f749c88291fa11d70f", null ], + [ "getMemoryUsed", "classrtabmap_1_1OctoMap.html#ab4706881eee755cf58312859e6a3af89", null ], + [ "assemble", "classrtabmap_1_1OctoMap.html#ac74a308322f3162307bfe73bfd60c2dd", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.map new file mode 100644 index 00000000..8c4b20ad --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.md5 new file mode 100644 index 00000000..5b1e8f40 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.md5 @@ -0,0 +1 @@ +fb723b6cf31e4a10cf0e3548e12616a1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..793a60424c5557965df048776ed3be9e2f382c41 GIT binary patch literal 4378 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.map new file mode 100644 index 00000000..8c4b20ad --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.md5 new file mode 100644 index 00000000..5b1e8f40 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.md5 @@ -0,0 +1 @@ +fb723b6cf31e4a10cf0e3548e12616a1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OctoMap__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..793a60424c5557965df048776ed3be9e2f382c41 GIT binary patch literal 4378 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Odometry-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry-members.html new file mode 100644 index 00000000..e506c441 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry-members.html @@ -0,0 +1,151 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Odometry Member List
+
+
+ +

This is the complete list of members for rtabmap::Odometry, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()=0rtabmap::Odometrypure virtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::Odometryvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Odometry.html b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry.html new file mode 100644 index 00000000..8b46b252 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry.html @@ -0,0 +1,811 @@ + + + + + + + + +RTAB-Map: rtabmap::Odometry Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract base class for visual, lidar and visual-inertial odometry backends. + More...

+ +

#include <Odometry.h>

+
+Inheritance diagram for rtabmap::Odometry:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + +

+Public Types

enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()=0
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + +

+Static Public Member Functions

static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
+ + + + + + +

+Protected Member Functions

const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+

Abstract base class for visual, lidar and visual-inertial odometry backends.

+

Odometry estimates the incremental motion between consecutive SensorData frames. Concrete implementations override computeTransform(); the public process() pipeline handles IMU caching, optional motion guesses, filtering (Kalman or particle), image decimation, deskewing and pose integration.

+

Use create() to instantiate a backend from Parameters::kOdomStrategy().

+
See also
OdometryThread
+
+OdometryInfo
+ +

Definition at line 56 of file Odometry.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::Odometry::Type
+
+ +

Odometry backend selected by Parameters::kOdomStrategy().

+ + + + + + + + + + + + + + + + + +
Enumerator
kTypeUndef 

Undefined / invalid type.

+
kTypeF2M 

Frame-to-map (default).

+
kTypeF2F 

Frame-to-frame.

+
kTypeFovis 

FOVIS stereo visual odometry.

+
kTypeViso2 

libviso2.

+
kTypeDVO 

Dense visual odometry.

+
kTypeORBSLAM 

ORB-SLAM 2/3.

+
kTypeOkvis 

OKVIS.

+
kTypeLOAM 

LOAM lidar odometry.

+
kTypeMSCKF 

MSCKF visual-inertial.

+
kTypeVINSFusion 

VINS-Fusion.

+
kTypeOpenVINS 

OpenVINS.

+
kTypeFLOAM 

FLOAM lidar odometry.

+
kTypeOpen3D 

Open3D RGB-D odometry.

+
kTypeCuVSLAM 

cuVSLAM.

+
kTypeLIOSAM 

LIO-SAM.

+
+ +

Definition at line 60 of file Odometry.h.

+ +
+
+

Member Function Documentation

+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static Odometry * rtabmap::Odometry::create (const ParametersMap & parameters = ParametersMap())
+
+static
+
+ +

Creates an odometry instance from Parameters::kOdomStrategy() in parameters.

+
Parameters
+ + +
parametersRTAB-Map parameters (odometry strategy and related options).
+
+
+
Returns
New odometry object (caller owns the pointer). Falls back to kTypeF2M if the type is unknown.
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Odometry * rtabmap::Odometry::create (Type & type,
const ParametersMap & parameters = ParametersMap() 
)
+
+static
+
+ +

Creates an odometry instance of a given type.

+
Parameters
+ + + +
typeIn/out odometry type; updated to kTypeF2M if type is unknown.
parametersRTAB-Map parameters passed to the concrete backend.
+
+
+ +
+
+ +

◆ process() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform rtabmap::Odometry::process (SensorData & data,
OdometryInfo * info = 0 
)
+
+ +

Processes a sensor frame and updates the integrated pose.

+
Parameters
+ + + +
dataInput sensor data (must have id() >= 0). May be modified in place (decompression, deskewing).
infoOptional output statistics and debug data.
+
+
+
Returns
Updated integrated pose (getPose()) after the frame is processed, or a null transform if odometry is lost. The incremental transform is available in OdometryInfo::transform when info is provided.
+ +
+
+ +

◆ process() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Transform rtabmap::Odometry::process (SensorData & data,
const Transform & guess,
OdometryInfo * info = 0 
)
+
+ +

Processes a sensor frame with an external motion guess.

+
Parameters
+ + + + +
dataInput sensor data.
guessOptional prior on the incremental transform (used by the backend when supported).
infoOptional output statistics and debug data.
+
+
+ +
+
+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::Odometry::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+
+ +

◆ getType()

+ + + +

◆ canProcessRawImages()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Odometry::canProcessRawImages () const
+
+inlinevirtual
+
+
Returns
True if the backend can process unrectified camera images.
+ +

Reimplemented in rtabmap::OdometryMSCKF, rtabmap::OdometryOkvis, rtabmap::OdometryOpenVINS, and rtabmap::OdometryVINSFusion.

+ +

Definition at line 117 of file Odometry.h.

+ +
+
+ +

◆ canProcessAsyncIMU()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Odometry::canProcessAsyncIMU () const
+
+inlinevirtual
+
+
Returns
True if the backend processes IMU asynchronously outside process().
+ +

Reimplemented in rtabmap::OdometryLIOSAM, rtabmap::OdometryMSCKF, rtabmap::OdometryOkvis, rtabmap::OdometryOpenVINS, rtabmap::OdometryORBSLAM3, and rtabmap::OdometryVINSFusion.

+ +

Definition at line 119 of file Odometry.h.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Odometry::getPose () const
+
+inline
+
+
Returns
Current integrated odometry pose.
+ +

Definition at line 122 of file Odometry.h.

+ +
+
+ +

◆ isInfoDataFilled()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Odometry::isInfoDataFilled () const
+
+inline
+
+
Returns
True if OdometryInfo debug/statistics fields are filled in process().
+ +

Definition at line 124 of file Odometry.h.

+ +
+
+ +

◆ previousVelocityTransform()

+ +
+
+ + + + + + + +
RTABMAP_DEPRECATED const Transform & rtabmap::Odometry::previousVelocityTransform () const
+
+
+ +

◆ getVelocityGuess()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Odometry::getVelocityGuess () const
+
+inline
+
+
Returns
Last estimated velocity used for motion guessing (may be null).
+ +

Definition at line 128 of file Odometry.h.

+ +
+
+ +

◆ previousStamp()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::Odometry::previousStamp () const
+
+inline
+
+
Returns
Timestamp of the previously processed frame.
+ +

Definition at line 130 of file Odometry.h.

+ +
+
+ +

◆ framesProcessed()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int rtabmap::Odometry::framesProcessed () const
+
+inline
+
+
Returns
Number of frames processed since the last reset().
+ +

Definition at line 132 of file Odometry.h.

+ +
+
+ +

◆ imagesAlreadyRectified()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Odometry::imagesAlreadyRectified () const
+
+inline
+
+
Returns
True if input images are already rectified (see Parameters::kRtabmapImagesAlreadyRectified()).
+ +

Definition at line 134 of file Odometry.h.

+ +
+
+ +

◆ imus()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< double, Transform > & rtabmap::Odometry::imus () const
+
+inlineprotected
+
+
Returns
IMU orientations cached from recent frames (stamp → transform).
+ +

Definition at line 138 of file Odometry.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Odometry.js b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry.js new file mode 100644 index 00000000..fe66b88f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry.js @@ -0,0 +1,36 @@ +var classrtabmap_1_1Odometry = +[ + [ "Type", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849", [ + [ "kTypeUndef", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a7e81a250626fd76729fa01fb7b40fde5", null ], + [ "kTypeF2M", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ac585174ece227de554ed25a51835d3d0", null ], + [ "kTypeF2F", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a81b73f734f25e9bef50a979ef6d9f662", null ], + [ "kTypeFovis", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849aeb8888885eaa7c907a98537c7a463b8b", null ], + [ "kTypeViso2", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ab788cd11e7f6906987e33c0189a5c367", null ], + [ "kTypeDVO", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a7fccdbc59d38d39f4de1253063d79a59", null ], + [ "kTypeORBSLAM", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a32b913af77b8df59d89aa226cbdf5e9b", null ], + [ "kTypeOkvis", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a175924a6dd1fdfb2e162093c5a2a867b", null ], + [ "kTypeLOAM", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849abf68726d1b5239c24ce447ceafd221aa", null ], + [ "kTypeMSCKF", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a1de4ebe3cb3470d17d615e86ac791225", null ], + [ "kTypeVINSFusion", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a1e148f21361b3e46d6ea7c83ac35a7a4", null ], + [ "kTypeOpenVINS", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a9e760521384d881e2fafcc008193f65a", null ], + [ "kTypeFLOAM", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849abb9a5bbb18e4ab77c1dac6cc2fe73a68", null ], + [ "kTypeOpen3D", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ab30949269c652911c3d8c5274ad84041", null ], + [ "kTypeCuVSLAM", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849aba6f673ce43f5dfe5c1eecb303f55049", null ], + [ "kTypeLIOSAM", "classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ac13bb66a69e4790bfa574c8a0c6c9975", null ] + ] ], + [ "Odometry", "classrtabmap_1_1Odometry.html#af2d9cf4c207d6628b0890064a385856b", null ], + [ "process", "classrtabmap_1_1Odometry.html#a0c2d39ed9b76c2c411a9e62e16e3bce1", null ], + [ "process", "classrtabmap_1_1Odometry.html#a4fcbe67de2ec6f23829e3962ee586315", null ], + [ "reset", "classrtabmap_1_1Odometry.html#a0ea20c39ae597a21e896b706662bb31c", null ], + [ "getType", "classrtabmap_1_1Odometry.html#a92685daa2786aff06518c8c4e26b8899", null ], + [ "canProcessRawImages", "classrtabmap_1_1Odometry.html#a69809beb553e6d4cd4a950ce251449e0", null ], + [ "canProcessAsyncIMU", "classrtabmap_1_1Odometry.html#a7a1c1e4598528a4e94f510b5dabac528", null ], + [ "getPose", "classrtabmap_1_1Odometry.html#a8b45aea55b336f758943b4a6b2ec28ee", null ], + [ "isInfoDataFilled", "classrtabmap_1_1Odometry.html#a3276da70261724ceb03df8e410844a8c", null ], + [ "previousVelocityTransform", "classrtabmap_1_1Odometry.html#a35d69a27271b798da6640295a98b9785", null ], + [ "getVelocityGuess", "classrtabmap_1_1Odometry.html#aa6ab1c129163771b0d87e3e068a0427e", null ], + [ "previousStamp", "classrtabmap_1_1Odometry.html#a36aa5447b7791c88a2799c99923be393", null ], + [ "framesProcessed", "classrtabmap_1_1Odometry.html#a7476b9fffee225ef396804ef59084659", null ], + [ "imagesAlreadyRectified", "classrtabmap_1_1Odometry.html#ac9ae854d14d44d82e1f20e8a4791b9c4", null ], + [ "imus", "classrtabmap_1_1Odometry.html#a6c9ed388da42499d2244bb98c8ff0e8d", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM-members.html new file mode 100644 index 00000000..7448ccb9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryCuVSLAM Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryCuVSLAM, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryCuVSLAMinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryCuVSLAM(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryCuVSLAM)rtabmap::OdometryCuVSLAM
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryCuVSLAMvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryCuVSLAM() (defined in rtabmap::OdometryCuVSLAM)rtabmap::OdometryCuVSLAMvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.html new file mode 100644 index 00000000..294bb72f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryCuVSLAM Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryCuVSLAM Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryCuVSLAM:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryCuVSLAM:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryCuVSLAM (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 45 of file OdometryCuVSLAM.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryCuVSLAM::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryCuVSLAM::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 52 of file OdometryCuVSLAM.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.js new file mode 100644 index 00000000..404b7ad1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryCuVSLAM = +[ + [ "reset", "classrtabmap_1_1OdometryCuVSLAM.html#a4cb0a09fc8eb184b2e0d915980b02742", null ], + [ "getType", "classrtabmap_1_1OdometryCuVSLAM.html#a68801df22a6803dabf7a064b99e04898", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.map new file mode 100644 index 00000000..a0c260b8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.md5 new file mode 100644 index 00000000..17d4fc6c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.md5 @@ -0,0 +1 @@ +46b713e7fb07ed9d1d7e33aec50163c7 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ab68352eac2fd2186fc800fd28d32d0a3f7dff49 GIT binary patch literal 6014 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 V1jA$Y?t_6kq%5y4S0ZB)_#d&glVtz^ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.map new file mode 100644 index 00000000..a0c260b8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.md5 new file mode 100644 index 00000000..17d4fc6c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.md5 @@ -0,0 +1 @@ +46b713e7fb07ed9d1d7e33aec50163c7 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryCuVSLAM__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ab68352eac2fd2186fc800fd28d32d0a3f7dff49 GIT binary patch literal 6014 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 V1jA$Y?t_6kq%5y4S0ZB)_#d&glVtz^ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO-members.html new file mode 100644 index 00000000..73019c74 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryDVO Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryDVO, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryDVOinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryDVO(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryDVO)rtabmap::OdometryDVO
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryDVOvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryDVO() (defined in rtabmap::OdometryDVO)rtabmap::OdometryDVOvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.html new file mode 100644 index 00000000..ea2b563d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryDVO Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryDVO Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryDVO:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryDVO:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryDVO (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 43 of file OdometryDVO.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryDVO::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryDVO::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 50 of file OdometryDVO.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.js new file mode 100644 index 00000000..caaf5558 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryDVO = +[ + [ "reset", "classrtabmap_1_1OdometryDVO.html#aa20fb31a7bf255caa1f13b0b69b2ee65", null ], + [ "getType", "classrtabmap_1_1OdometryDVO.html#a8475f5a8b1ba4e288ba58daf6284acc9", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.map new file mode 100644 index 00000000..0928a1e1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.md5 new file mode 100644 index 00000000..c39e9ff8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.md5 @@ -0,0 +1 @@ +e751dcd3a2f80de5113c2cab3307d015 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e7994b10aba48957729f912b2729b4c120763c3e GIT binary patch literal 5318 zcmc&&hgXx^mkqrmARxWBhctOqsR;p8iik+>MS0ZFTM$A=x`==@0ewjCNT@w{ zNH0>APAF36X6CnM&3`Z}E6JC;z9i?Kd-gtipLhd(Z5m28N(cl(bN?RP5WKg8r#m?* zc*Skna)UQgdmU{!yXM+p>*O2Zokrj{2sEyx)trN zZ;TYL$=zR4)K1~j^zy2m+Nyn84=+>}G#GgtNXDcR9iV)(C?zFD+t~Q^dko91R}TdF z`1wcX=RGzJ^3C%pMr_dDB$UzJqjrf@Y)PcIB(0;2%Nu<~9*W=8$Hm9T_YV#>__F+r zFf8q9-R(&D@x!#j63q~His3e}w)WVp;TjmrFQyPaTVA%8k&`pOn|P$NRpG2a|>3nnZ*?q)PjP7dwYB8-rmwX^X&Z66&gk8#h z%~we{KKAc-ly+O_;3Pyr!p>(Fbl02_5+x4{Xi@6n8nLuqav2W+oX|5oobqAZrOHY)<7MadY=V%F4?9+}EetkqX=aTLS|FJu@>oNZg1vK18^d)=L_8IXW0QI_U7<0S=n4 ztK;P+@#;K00lV|7TU-i=aAH!@WJ{jw_5L(|0bbrEwbv8P^ukHvep{CyNw{ca4ad~`s`EB9cw{Lk4CM-O?wpm$Oi6Nz>rAxo8gEs~1Tqh;! z|5TKf@u^*%@=vPPAorIw3B!$^JjuqbuB~a!2d#6C{`hgv^tGUqlauAl=2(g1$ZbZ- z?z#$8!Pb_Wy}P@fk?8n`&s9dEAlAhmU2Lv#%42lOQcz8k<(d+pkj@)R=WPa^rb&1U4`udwmNl6GlKiQ3&3=G|u zVvLmgvp&O1V3U?}TT}Ju0!|JN9_EClwY8@PC5EMgYhxG;5f>Mi<@u*NQ!!G=2P4r) z)l2aDV|uy>;89LaE=w&;b&{El&4rF1TX(uD88$E;9UToV8C%+!YbB?peZEz@&=JaR zUdfEF3mSWS7E*vmRAy%8qqa-xuTF-B3;;c;FJDHqwJ95!n6SGKi=lcoJ>A_|2r(?G zr=T+9_x2EO(+w1WHnNn1q_55wu8ZD&+C#OXBDN(TW=lKWYmLM@Ecu8K5)#@zdlp+! zAqGy9tzmV29lvFIdU`s_=#9-y=);FM+}zv}k^0%vBzN;@^YZd)K7J&FG&DAPxfipx z!ubd=Qh`5{B`lh#X=!N{eAcKtuFhO5Y&xIA5C5LfZJuF|hZDXx z9LR8Warrhe5%Y0An5x{QTI=4uxPjP|(a})_=*s%~&x2KL;8OH0Ev86CWWH+XwCxji zQ|5Sh;Ng&bZODlS02(4xR8+LaeMSyogHJ($#b<30)!M3b^=CMY5P}O zU0hv_zC1ti@jE}>#^3>El@^N`9=>t7Hl*?B5q*BxRS>9im{9uCbfatPJpo9fj|?L< zX7Om!rY~f-J+}VYFdr|kozb1_96+qi%?beV8bay3fBi-A{P}ZJw71~X;ryhU8Yw&r z%y3aVe$7?PlK12S)lbjF6dihg+_kU}W^^YD^9)oFB^4FABNFS`woiJ6D^XkOy=4=X zl5&HPh-hhdHzk_t)-rB$3<3c>^icH=@%hPaY-guhTYG!q*rozIU@PH=`8~n~NJ2F= zwbQe++DA76y=!k&$6(IGWkq z*x)g#vg8#P7ss6a z%D+TJcpkhTT~Ss+o~8nFzZngKes_@t9K*|&6yrMSEVJ@CiG5{lCEu53O6Th z)q%`b4&3|n!5xtt^X0vDwXn6d^~&YRg1ll=+Me#*yz&q(AzxZ~eYillsj2B*W24`9 zxqS2t`YF<}I)#a{MmWZK zsOG~Z&i}da3kL~{r{@;0U!~nFxKGPqOU5EHOC_bEm_1@~ zS4b6lg8QlKEp10pLr)Ar={zB42CE%VO|`E^lHG<7{p;(*acS!1m@tywS%Z-j`QRRc zZx@{cwk&ORR||0Gfz(q{rb`9 zbkWiifFrXjNcx>LTl|U)jiSCQ6b9bMe{P+2)qo+~GSnFH0Yn(6O?Dj<8qjeaB8A>`GZ$T3RaT zz!7vs8F_hr0RiIbwgbv27zm1;!Dn@&yt)HsWyP7Bmj{^V+vq6a?c2BEnwoY~bxyV{ zq-qy?L~n9(Y90D$izm5Nkt{&7EW_0%4*y{uIjLp={mt3gIo!Nb3$zY4c6Q!Otet}c z(Ty87zK@R=mX}jeW7I`6-XJH5z&$ar!cX5zAKSUQx~^yoFcj9-(m(!J7X`WsL`GH? zT4{_KA7`4FP`mN_kt*4=%uK59@$cRVoc{Sku+a)aIh9K0 zR!d&E+zH4PuQX1Gi6K=`P{`u=Xk8r(D}+Fro14R(!sbJhpKd|a$)T>Uw_93U@3>FP zkP{O^)HO6B@hZp3(^C?3JgLw#U!vC4)zz#!4x}Fm$;ikYFfj$!1i@xztg07#8aNz| zM@WcN=e1Z@zDfu_N!r@lRRxw3+K(UKFK9|jzka;{9fgsJsj#RhLT4wD_3zYIuZYv`^-Q${ABloaLKG4b0+hV{_H?6Z zlN;;0HecFXP!2%(egG8^L&J_ZT+?f4YAPxzA>&IUR|?pPN=l-ED37kk-xOZl*oXry zBnM|^WE2H-!q$BI%!i7x&D69s6cF4JP{`uSN|cFBDAR8H30GNJ+2ZDA{K0`YhoUzz zs3n8)@x7xX*(}V97nDFzcTZ2VMbSaj?d|zy=jOCkjzMmLx}=_)o1;tU1)KWO;&*%P zYhD77!0C!?xjGLYKD6vWvWA@OL}z3$g{yX5|F*gAzPdb*{SH@GhZt9yM<*sy!?m?B zb90>e`T6}=Ear`@YxDC=2`d;-*#H6DuBrvZ_3obL78Yr_xr2JAO1o_ixDmAfw)xJp zJpEW8)|a}YsZ49_NlX^LeG6Y%ag6J=pKTAhMMlf<33NwvhF0+ikDwq4z=@fe*(ngn zH9?0@;c&Qm^`yhe&YXytSkK|GnkRFCVd?k9k7GnwKR-X9db+@ulh!bOefYG3`yz94 z*nvEu11&w{wn+qC1n>q`o}f_h<@W8Hfj(V9*p(vwgH@|P$}X#qONp1bFBvehEswo} zLzfiw109|H5p8a};e3_2`1r1)-;;VCo}_Cp=^{o)4PU)}jaM-c1kk!-md&ZyBLh&< zOF&)XkpzUzYcaD3ycCg>V-~{}0Sp0Gb??E0;EF#;!;zfrV<9oItu)}Ct*op*l$F6W zHA((`Sda{I&)T33ha4w7v$G40w8I;^A~br+ zO;rO1tHI0k-A{E|#RTEJH_Ys7SzH>~fCM%W&4_#Pf)FA_jk%=8ajuw~n^Vunjf{+d z7}a%jupd6pfBzmeJ#8Ks6jTUwt~Z(kd>8mwkW!(a+s|wzSYx`DdlT?(4YIMd1;2lv zf?3j9xgrU5STycJ0HL}i5v5h!)#y42f#Aiz00V{aLE6{#bo-`^=ZmU=BC6LHKEQx} znwnw-$8v*9St@vLkszVhe&;D9ybBs*#{zI1*)EBZ`u6+i>5(Gi!YnaR;LD+wK)RD2I=tvQH%NAb>;MmRu*f)`?e>wPvI5;`= zZtI~sD4G#Vgup8Faef*d8>2Dydb{gV9>z4X>5E5jk!Hewi(DX_G9J9&+u!dxSqMu} z^jSj;5QPs8>gv9cp#Wwu*0?;{xLh+dROO>yYuL5w)E-2-?kuvkwS^CJWo>O4=v>nl-%WlS4RYwyr$SG^ z=Kg~~*wi^v`0vgq6&3MC5{ZS=53i?7KP?LI_tyf4^v>`vH+Og5j0bk^?n$$=mVqH5 z#VsvtwUuBb5;+(=DXjwer^>>VG+q^I9BSqG-#%^Nn$&gYz!m6gD+eXcO8NBsOu z16YF$2-CQ@ICT&&a8?RRczn3JVv^Y9@#VL0b^LKwo$P$G)0;huI2uNvq@)Dk0u^CY z9ew8EAz@r)86SIt`wgztNVIUoc`w1{qT4a(U}b=uib})87;EmPm*<=cw1T;KT|?RO#BH@Ht@*KE-n$eLYNm!x0}azz#s(2 zDUg?&i}*bujt>_A$;-=YcH$pIGKg1qjbXzgnu?0*j_15G|H$OTL{Vue1;`h05*s@^ zT7Z}3JZ7B_f+r>>m_;)v!S1w7`uX#Q)9`iPX{x{JZOSR~6~Nqk=(D zj%B-u+8A)9c}fBHfETl5UBLv5l^#&5hK0pUe + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.md5 new file mode 100644 index 00000000..c39e9ff8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.md5 @@ -0,0 +1 @@ +e751dcd3a2f80de5113c2cab3307d015 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryDVO__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e7994b10aba48957729f912b2729b4c120763c3e GIT binary patch literal 5318 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryEvent, including all inherited members.

+ + + + + + + + + + + + + + +
covariance() constrtabmap::OdometryEventinline
data()rtabmap::OdometryEventinline
data() constrtabmap::OdometryEventinline
getClassName() constrtabmap::OdometryEventinlinevirtual
getCode() constUEventinline
info() constrtabmap::OdometryEventinline
OdometryEvent()rtabmap::OdometryEventinline
OdometryEvent(const SensorData &data, const Transform &pose, const OdometryInfo &info=OdometryInfo())rtabmap::OdometryEventinline
pose() constrtabmap::OdometryEventinline
UEvent(int code=0)UEventinlineprotected
velocity() constrtabmap::OdometryEventinline
~OdometryEvent() (defined in rtabmap::OdometryEvent)rtabmap::OdometryEventinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.html new file mode 100644 index 00000000..26d4d094 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.html @@ -0,0 +1,503 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryEvent Class Reference
+
+
+ +

One processed frame with the pose the odometry integrated for it. + More...

+ +

#include <OdometryEvent.h>

+
+Inheritance diagram for rtabmap::OdometryEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 OdometryEvent ()
 Creates an empty event, with an identity covariance.
 
 OdometryEvent (const SensorData &data, const Transform &pose, const OdometryInfo &info=OdometryInfo())
 Constructor.
 
virtual std::string getClassName () const
 
SensorData & data ()
 
const SensorData & data () const
 
const Transform & pose () const
 
const cv::Mat & covariance () const
 
std::vector< float > velocity () const
 Linear and angular velocity, from the motion and the frame interval.
 
const OdometryInfo & info () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

One processed frame with the pose the odometry integrated for it.

+

Posted by OdometryThread for every frame it processes, and consumed by RtabmapThread, which passes the data and the pose to Rtabmap::process(). A null pose() means odometry is lost on this frame; RtabmapThread reads that as a reset and starts a new map.

+

The covariance is always 6x6 CV_64FC1 with positive finite diagonal terms (identity when the front-end did not provide one, i.e. "unknown but valid"). A value ≥ 9999 on the first diagonal term is the convention for a lost estimate.

+
See also
OdometryThread
+
+OdometryInfo
+
+RtabmapThread
+ +

Definition at line 56 of file OdometryEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ OdometryEvent() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::OdometryEvent::OdometryEvent ()
+
+inline
+
+ +

Creates an empty event, with an identity covariance.

+ +

Definition at line 60 of file OdometryEvent.h.

+ +
+
+ +

◆ OdometryEvent() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::OdometryEvent::OdometryEvent (const SensorData & data,
const Transform & pose,
const OdometryInfo & info = OdometryInfo() 
)
+
+inline
+
+ +

Constructor.

+
Parameters
+ + + + +
dataThe frame that was processed.
poseIntegrated odometry pose, null if odometry is lost.
infoEverything else the iteration produced.
+
+
+

An empty covariance in info is replaced by identity; otherwise it must be 6x6 CV_64FC1 with finite, strictly positive diagonal terms.

+ +

Definition at line 73 of file OdometryEvent.h.

+ +
+
+ +

◆ ~OdometryEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::OdometryEvent::~OdometryEvent ()
+
+inlinevirtual
+
+ +

Definition at line 93 of file OdometryEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::OdometryEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 94 of file OdometryEvent.h.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SensorData & rtabmap::OdometryEvent::data ()
+
+inline
+
+
Returns
The processed frame, modifiable (e.g. to attach user data).
+ +

Definition at line 97 of file OdometryEvent.h.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const SensorData & rtabmap::OdometryEvent::data () const
+
+inline
+
+
Returns
The processed frame.
+ +

Definition at line 99 of file OdometryEvent.h.

+ +
+
+ +

◆ pose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::OdometryEvent::pose () const
+
+inline
+
+
Returns
Integrated odometry pose, null if odometry was lost on this frame.
+ +

Definition at line 101 of file OdometryEvent.h.

+ +
+
+ +

◆ covariance()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::OdometryEvent::covariance () const
+
+inline
+
+
Returns
6x6 covariance of the motion estimate (CV_64FC1).
+ +

Definition at line 103 of file OdometryEvent.h.

+ +
+
+ +

◆ velocity()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< float > rtabmap::OdometryEvent::velocity () const
+
+inline
+
+ +

Linear and angular velocity, from the motion and the frame interval.

+
Returns
(vx, vy, vz, vroll, vpitch, vyaw) in m/s and rad/s, or an empty vector when the interval is unknown.
+ +

Definition at line 109 of file OdometryEvent.h.

+ +
+
+ +

◆ info()

+ +
+
+ + + + + +
+ + + + + + + +
const OdometryInfo & rtabmap::OdometryEvent::info () const
+
+inline
+
+
Returns
Quality indicators, timings and intermediate data of the iteration.
+ +

Definition at line 126 of file OdometryEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.js new file mode 100644 index 00000000..921b56bb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent.js @@ -0,0 +1,12 @@ +var classrtabmap_1_1OdometryEvent = +[ + [ "OdometryEvent", "classrtabmap_1_1OdometryEvent.html#aaf1fc834b6016a79b28883d20f336020", null ], + [ "OdometryEvent", "classrtabmap_1_1OdometryEvent.html#a0667339a1f0135ac2b67180b663a028f", null ], + [ "getClassName", "classrtabmap_1_1OdometryEvent.html#a461365124cbdf488d3a05874be8c4bb2", null ], + [ "data", "classrtabmap_1_1OdometryEvent.html#a19edd3196a5723053ba425186b1f3d33", null ], + [ "data", "classrtabmap_1_1OdometryEvent.html#ac29fe21e2ba017148dae0dfd9d8c028c", null ], + [ "pose", "classrtabmap_1_1OdometryEvent.html#ac7aaf59c0f005b6ac1497c870179fd25", null ], + [ "covariance", "classrtabmap_1_1OdometryEvent.html#a13be8ff5e398f9fd00d09aac8deddaba", null ], + [ "velocity", "classrtabmap_1_1OdometryEvent.html#adbac8609d65d32f38d1e724007091398", null ], + [ "info", "classrtabmap_1_1OdometryEvent.html#a9d20ed607b8cc697c8aa5ca725e477a5", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.map new file mode 100644 index 00000000..afddc566 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.md5 new file mode 100644 index 00000000..7b1a0e3c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.md5 @@ -0,0 +1 @@ +c1c2530a8f93c0eb2fdb21257f351705 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0e2936ab53dd9d1697df6997a64e76047cdcb4 GIT binary patch literal 4339 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.md5 new file mode 100644 index 00000000..7b1a0e3c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.md5 @@ -0,0 +1 @@ +c1c2530a8f93c0eb2fdb21257f351705 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0e2936ab53dd9d1697df6997a64e76047cdcb4 GIT binary patch literal 4339 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryF2F Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryF2F, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getRefFrame() const (defined in rtabmap::OdometryF2F)rtabmap::OdometryF2Finline
getType()rtabmap::OdometryF2Finlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryF2F(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryF2F)rtabmap::OdometryF2F
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryF2Fvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryF2F() (defined in rtabmap::OdometryF2F)rtabmap::OdometryF2Fvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.html new file mode 100644 index 00000000..d7f7a4cc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.html @@ -0,0 +1,318 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryF2F Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryF2F Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryF2F:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryF2F:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryF2F (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
const Signature & getRefFrame () const
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 38 of file OdometryF2F.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryF2F::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getRefFrame()

+ +
+
+ + + + + +
+ + + + + + + +
const Signature & rtabmap::OdometryF2F::getRefFrame () const
+
+inline
+
+ +

Definition at line 46 of file OdometryF2F.h.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryF2F::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 48 of file OdometryF2F.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.js new file mode 100644 index 00000000..e193c924 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryF2F = +[ + [ "reset", "classrtabmap_1_1OdometryF2F.html#a7fb0eb46ed5b40e15299bc40b5cd4eb5", null ], + [ "getType", "classrtabmap_1_1OdometryF2F.html#af0e2f40a3dd28b9e1e84159bcf9df323", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.map new file mode 100644 index 00000000..ba55bd28 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.md5 new file mode 100644 index 00000000..d4da40ca --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.md5 @@ -0,0 +1 @@ +b6a1fbb74d85d805a228e95ab8dac605 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a5066c92ccb7dff3351a7ee72424fa2269a60d GIT binary patch literal 5204 zcmcgw_dA^bwjEt`5>YauMi-++FJYAE#1UU5TGS9VdQ0>eL=e3tVMvVLB6=BwMDN|G ziB6P3oX^~I?l1QbxQ~bNyfg2-d+*QMYpuOw^>x)L$(YF?5D4WX4Y(nA{R)0vNr}PV zEBrP)@Iq{(r4EN&<9_m+k;xFqts9Tv4~_h?cXIrVj3!xnTKC!qmMZ#sIbzu2@;Tmm z8>VzeeeBw4C~`JL)Tz<@Rzw$}9%VtLRd2>i)XAf5Uu)W=aJjlD+aid6;*~^(aWtqB z!F?DbtZ8V7?bjz2dCMs%dPQMUbAy&%X}+P07rSW}yUk5_VeM8hMhfEacB^!{7oRA* zy1E*?pbYjDA{1(Fe!1mm`<>L)>LXEW8mjJ42DHZ<1E*_rJ1jyMc|q5PO{x*GN%lQj zj%H>4!beP?l!iP!JXD*baw8O?KsQ8XWLuxWlEnscku$3zA|e_(Iuf-Ak%uKl9HOFh zIyyQ&^r;NCtaiY6>H zjP+d%X82-^>Zr2o-^czg|5#kyJ64t3J1V1wL9hDz`xm27;1LGM;$qT=4^^RI2x@+NJ4^{b!(NVZNl?6?df&gSXE)?<|Y<+QU(tRQ2>Dt&CMYKPj{`a|6ZM) zVG>0genO%00k_;*&bh0qtJ{y{$DdfLDk(u)E_P-2gC?OzM|s!K(ITDBBAqOKQ&Tco zSy{(gQ>a1^V@5`XyRUB#I{wZdtPWg5TN`d_$}E-82`Y$-Q$9y!M-~$FXZ*<-sMYY; zSVT+=>Gs^$n;c1`q1e$piUfnbN^dW(a1E}GBu@2+2dSF(CQxS4pFVN<1q4tHiWhM` zc;M4n=Q``i3yPN<9!{_`Tc0>GGQuk_pL2P6>3F(3pOTxa3kna1dt=a)ntFQ3ni}zd z>#Nhgg@xRzs;c9e%G%mO`M?u>O-(Y?)8@>}tE)#SWAZi848-5d4aHH(#UPcVjX~sB zuMI;uoG?c|@Vx?dlM~$fp+8NS+%-Xb{o7uPmV$zU@>TBE;h`tKQb|ck@a`ioFR=qT zy}aNPCR*C=uCAf&>FTXG;g)<%PvR(oNsJUCA9VIMCZ^79Q5W3oy*|Js^YYg%e?Pw= zx6lhSTx|k_g5>-I14sLkdHC+#i{#+sbn1+v1esi%xQ5$~1qzm1d{g5{ig^_(&ic8=X;t?TpMohwP>N$cn1<8x~Jy@J6w^}iPi*m0R}{Fla; zac9q$FX<66I5itQvtQ+ajg|RaK%`&_WT1xm#Lk_h}*g z0s>-;{qyrV3;r7{pHZlLxf@&SKeCkn@${^+@{Ck|C^z`K`;nFwr1i<LuGv^A|oRmotz%Jx(b%Y!4*Btny_vq;8rh=@L zloEex$Nap7uwJ1dlTcA~G>M#?9EjYh#E1-{Ut$#SveBT#sG_b;&A@=Rw6qlFyK7$H zve4uo!0eyfqZf*O%q}c0ev3JtxVyXiZU36e?#28!-{I-$*u~3r$$(6N-sZs5rM0zj zbvMc89?zZxmY9SDHDzV|`<5*T(4-3esLHNq-1RkM)IU71!tlD98a6>eimV5&%I4-! z7Z;cP^3W^t>1nL+r$6G3z5$1;eOGm}vhvI#7o0E{O4HX^ZWPDdIJCuDj$dQ3k!*Se0(5bfIA9Yq=M_~>q&Y%{4nv75$W^Z z*A;(!gZC=UYaD5zP^kOK_CL5rGieRE%HJJy6nUZhWP4|)z=%K6TUC{a`Ock#2{SkA zweP8PaNrwBJ!7&d3Q^plYFXTudlQV}Cu%&1P?*Swl~c z;a5sZiq&kLt4Xah{i>(5{g2GZtx+Tfq$vPVLXIvAhn~mjFD@>!K7IOB%5Ojat?yDB z-aw|r^EM`5HqdT39$Q^sUpe2%Q-Ai1i-Uv1{R;bXYIc@jQ&#P&-2)0*B;j-+klHfz zO2Wq0HoCCS1aT)>U0t11LE$bfE$vjLEeZIZN|$NTv-5LyaC{*lAsv_&o@)Ca9e}df z()wxX=_3h9sMy%ptW1~@wAD>bP-$st<@tpz$pt@x){FVQihw`PXJ=<@yu74%czAxh zUpL-nXH!6EV&P}2$$IYlOAiSN3EO68?=Z)!IjV5cEgx@<;@(->+oJ~bnl0-~h1AQt zt?Lr?CNh$!JqcWD%>zvTBMuvW@NuuXJ0>R?K=_>_;x8C~ zqL03(3K*H0&GNK<{`>}jskHtaa1NE7on4Y<;fKsj=H{whpUkYREucn5mX?ZE*+oU% z-vIrH>DD;U3%qsr01Gyg)ti?jOG2@@iM{ zg}O*iVPRn$aZ;YR!sN!00(xTe+zu22-Ejg8tE7q97>A@nCDjrgR-+ob^rCkneS#4ZB}+n6{P7Ip^!cG55(cUI~&2bF5}$J z5LZYY)P_^o#`&A1I+2yu$X-S{5r$0|UiqtVn}7#%D;VjV5(yo`smvfmOd?NiSUekq zFs+J45LR0hi!XN0XrRDKjwf}sH$C0w5p(y9EUMCqn^nL&hIr_pH6;eKe~4{Oo=SPg zO$LH&1OKOEDyZ77b#yAKt2_5w=Gz(Rz#CyX^6zg_XXW}sNhsA}^9-y!G~g-(*{Mb~ zbUeV>_D-sF-aDyOr||iQHf@FPO_|DdUDo$VKPW^JR+>boa=(=*08h1(x-r2h?#Dn# zRgNghzdThww|B=>kZN@w8lt8L`Kjp_6}iUgLs1I{U@zF^#%-GRtO?9VVdTER}a!n zd*H8stWs1*|F0XmYwsB~-KqT(7WjWp=>PRY!GDLDJ)%!z6 zPR@MxH)w-1($gDS9CGbKQ=6Nb)GUYLpCnk{#zL6BwW8OTJEMV_*-c(7@3Rw~E+(^q zA#`kQKeh+e{Re6P%>yBj%)`aS#>3MC+*XEu8BMCHqPM|U@oVaeFoyWE&cba7P`T_UUEM1QhoAuu}(BS1PNBqZKy zaJhSW;`ex{G=^{?GW!OzrNeuBH6kJ-g%^vZI-g>WM2|u{Y2Dl!pq{j04F8q$MRK#kgIs ziwsvTfIvX3VH?-2nNZzDys(&|p`kE9P}(^%^uX{z^dCRAbw>mw78-wvOiiVqn>)T1 z2mm4tTqU<$B@mVeF0jkQBB0U>&4Jc-c0?%SINP2Cc4=v*Z$3M8zbL$~G(_I?>E*}} z@$m4Zynk==J%w+{|1N(j84(eY-~JLFNQRb$C4O$s94HoPxU}nx`1VvK0bMNI@%K#a zbE&`+!R_sBeKWJT+UJut!yi2sf^ZQpFE5YtL%Z$yZ}obnABUGN&yP$hZ6dAQApjE{0_9Dw zadHOGwSRmJ2Pr17$P$~GnH7&apJB1T<~xBs;^OA+7#X316GCF*;yQuWM9-gsazYhD zpsud2Z#4^nmzipODPTXC8{gC<_dj+}US8f~?K}PUVk_(I+qWT&6o2bmuP8~V??O`) z-wRvb52~xE2+PZ36%`XBd5IE%&3G0T6yO~k9CT2IY~=W2<;W(>EChlk9L1$PS4l-h zMJt~5(XqD{6%m8afJgG)zmG0ZiG~H9xL9*(i`e^+JDK&Mp zF0vCGP*QSo_(opn0=wFq#^WLVQzjtDJ3PM zxR_Vatd0U60nB|tnemtI*qb~sw*|Sr{ z6pcHM>T0p3=H@@YXAWtzA=jpui4+|%u1P|O$_FsXZH3Tz&x(4t@ZZy(j+7`eg(b^81p4C zf&-f!(`_Snv0dFc!j`J34h5<3KrRo{TDw5Ixu5M@1KD`Uk+cMctll3#R9##Ixpgul z9wl?LgUKQ`HWml^nb}#KqOiB1P(nBhz0!4~)U=iigbxNklLmKoaEo|p3!oX>^TV~X zrEqFocLRFPZ){|~J|7I-Kbdvw92uz^WCSzl@$6Gz#i>|i2+7IG2eKsHhGe{DSQ4Pp zuK^Za<{D^0B9O*h88P79jTfWdsP0jGHNV^DF^64HS0gYmHYNt`V7)`?-Tc|iz~I## z$rt&6YCOL}!3|v~vwHWv1$h%QGfp`11jWekRMlZ=7_uC7i3=mD?RG+yHQM1EPBu89K)F)@y6CEXU_ zK=eTEaD`dkf{nEh;FJxtAP#nO-+Za*VhM+bhdT_5PZ^1biJ75V`OiCZ0MSW%tsjf{ z+u7X%Z9!RfB*9D>a<)tYW?jG-tYC2E6%>SfcvSA!KsT`kLsL^RCnqPYV0b@C%ssyf zarzL*P%P%#yAfKhn2jPQ2IN!kJ=E(YHns&sb z?*qeq`Cr5RUmFCh&h{1E&2W*0t-aun3fvq1Ey~Ez;OWK13M&{|Om5I2%aj1@-~O|P b8`@~)qX~ak&dh<^A3`3f>cY#EtzQ2doN)t~ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.map new file mode 100644 index 00000000..ba55bd28 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.md5 new file mode 100644 index 00000000..d4da40ca --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.md5 @@ -0,0 +1 @@ +b6a1fbb74d85d805a228e95ab8dac605 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2F__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a5066c92ccb7dff3351a7ee72424fa2269a60d GIT binary patch literal 5204 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 b8`@~)qX~ak&dh<^A3`3f>cY#EtzQ2doN)t~ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M-members.html new file mode 100644 index 00000000..bd691604 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M-members.html @@ -0,0 +1,155 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryF2M Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryF2M, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getLastFrame() const (defined in rtabmap::OdometryF2M)rtabmap::OdometryF2Minline
getMap() const (defined in rtabmap::OdometryF2M)rtabmap::OdometryF2Minline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryF2Minlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryF2M(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryF2M)rtabmap::OdometryF2M
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryF2Mvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryF2M() (defined in rtabmap::OdometryF2M)rtabmap::OdometryF2Mvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.html new file mode 100644 index 00000000..6459647e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryF2M Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryF2M Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryF2M:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryF2M:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryF2M (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
const Signature & getMap () const
 
const Signature & getLastFrame () const
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 44 of file OdometryF2M.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryF2M::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getMap()

+ +
+
+ + + + + +
+ + + + + + + +
const Signature & rtabmap::OdometryF2M::getMap () const
+
+inline
+
+ +

Definition at line 51 of file OdometryF2M.h.

+ +
+
+ +

◆ getLastFrame()

+ +
+
+ + + + + +
+ + + + + + + +
const Signature & rtabmap::OdometryF2M::getLastFrame () const
+
+inline
+
+ +

Definition at line 52 of file OdometryF2M.h.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryF2M::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 54 of file OdometryF2M.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.js new file mode 100644 index 00000000..0288c976 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryF2M = +[ + [ "reset", "classrtabmap_1_1OdometryF2M.html#a7a4b7219e339bbea7761601027f192d2", null ], + [ "getType", "classrtabmap_1_1OdometryF2M.html#aa0244571578fd8604470d8c21af01611", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.map new file mode 100644 index 00000000..5c04be24 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.md5 new file mode 100644 index 00000000..104290b4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.md5 @@ -0,0 +1 @@ +d97cb536a83f9f703ffb2a7f26265687 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d3154dbe776bf1a6c5053be51e3fff25ac6319a5 GIT binary patch literal 5380 zcmc&&2RB@8+Z`ngAx0;oOOQkm1WD8}L9|GSPIMBzw=bZc6``UY7ceIwKGBxE@N(cl({YVA*6nwUTKSwAT z_`kbs#tA;iEYy^dkn@Y5f|k-02!sLi2&tgsle3=ducfWW(f#EBK}RJVEluj%qo@UY zhkEGSDB9{d_)^c2x%>lT#~$aZm$#$$WRgMch@t(YCp%*r?%Bi!&e7n*$Ujsnw;34P z8~CD{Q@FyoxUPleoQBRj5fg=zh2Z~Wx$-S0{oeH6*vxhxxQ9^)MxeC>7%0OLXzA}F z3!b01)Cjt?bf<^&LgJ@#+v1*A(T8J47-y8GHPv5K)5Op2!jgF4)`TDimgM~Ll zwFF^o%=RWb`!@Sm?LIN?OcT-3ffO|P%y9ksb@1LwYHF7^ z@GU5lCNDzGfUKg6i^vr=so;j+f$&S0E}0oH$;!&=e+iTcJY9VbAAf0Yk8Rp)MV0G) z;^E?g1fBiKC#J4_rM{gvfsM zuvS%7ja6G;CM701J0AV==G&7^V?Q4sc`lgQ`PpfXMw)7P+ATdE z85wr4Qbqdjc04z3yx8lCgZG+2X=wO0H8rgk`*W{7c#u6eH<#GfCSUD1DUqC#q8Nih zQE-PDH+jWfe6hCXurs90Nvo`^oSdKUY}Jj&=Q;dt&9$w@OvcCcBGn<IVJWM{ga1OesF zmT=@bJ3E`3>rI(E+@9^2oXkEU&;*IZxK~;}e)NbtFfed#tjhA5m{>|jXJ^t#xgI?N zit+vPwwGep|_t zmX`LKj7&h=K}m6O;@;{ge0;ppoJ0?2C*CnNl}oSb<0Iv}nCsoRUt>E!2Pyvi`Axb1 zb|-W1{`%zig_`Q>1IA6}N1zKxA!QX6;>&%*!zs-Ncz+~X3zlx(3vP<3kBz0$ z+*K_}t`xMN;|GA~8yV5p8Ojt_mFwK(fkCD2&?BM@Kky;YiK!VG^a%CE9vvaQ3VnsM z-BLN%`GNwj>Y($$6iW`MI|^Ue2Z#7({^R`T6;yIxT$s{H~6ajl8Tm+TGueXlRfeb<$@-bwVI@ zhK@f=$?FWMjf{*yH;#>snXUXRGoFlP6^pg7GGH2zJD1jDW@NmSs~K5cEs8`Usr=Tw zH-0JD+VTgU|NRZ`>=2;>-FW%=^WU=D`-2ZMvL&6B5D4O@+S;z$GY@s1J=-(LGayEx z@DmeKq!D)lw`%I@7>9<2^qahH15%pX+D4wAEXoN8hy+geYgNk3S6O!N+c$XoO1;`w zwzCshTVGE~OAD{86e+4dIeArEU(dtGM}|Pd*xA{amX?C!;xst(ExY5xHA@xk?Qem; zgFrMiG>j*;x;B=Upb_REPRJjQvNg3 ziK1m;iF)@=fRv2Pt&c>J?{Qx2^t2fO(G1`0JJ#Yai9jGC7((y8(tY*}U0Ip9I@xpr zszpc$I^i|-AzV8A`+3!IvspAQE-jpdZ%U}R*htga>= zlvF0E0xGCd@|2X6luJUwOXW_SVMKLO3#juG0fvATdwcudP84&Tgm#1TZ$5wk@`Elt z#@Oj6&a$+mB;2_5RhGE8IMq@q29q^6KhL^{abLWW)N7^WNpeI5^zi(!Tkd%8-k=gL zaev>-?P$mPsg{Zz*NhwQ|!@$*O8)fs*?DIZCOOFAV2CMWmz zYu3c(CT?iIRm%`cilpJ(f3ccdbmmqzx*GlIlkm|}QG$B>`XisWn$CGPe#pnHnST}s z=s`367#owaf)D&!rk)?SK07%Q5ESfqezwD`a*a+c607h~4ymf9cANd5ceb^%NB37G zsu{kzC_a2lVAt7Yz$^UcfQjcz{}0+N=9+vwc(?4yIkD(Kg`2XsR7r|HR(l9EV;u_l z!{$hQdX4w0MeJ74@A__18()81O& zs2NXHij;{V>*uP(5$%2DXOF_tsiK{=h7!0gj;TV^AZNmE#N_1URO_QcsoY?RAyQHn z6z1l(`rRUfcSzIE2?7ZPg`5g3GB}ao{>pd=F04JKZZY~p$;`jc>{!j}$P>}0Bv!~* zB1UT^lrTY28Q}h~SZJRHWh{G0rymUlNU@@1^C90@i2{K(S{aT^ySUBOG4+Y~X zv~pYAl}v=0RQJ@&0%Ff@%7%G&cp028V76dn(U)03)1-6jKR|GAU%h!u8w@+yr}%uw z4EE=kro(cKq)cMXz5`XqE%B(&B$8ccIvq;&|*SD)Ie<-gpP;{J?h)&vo%cwa?SD2gIj*l zNYM(SCjwXvZS9m^zt3+=x32s*|2?^W{PU*{0~6Cl#v>50kt&*+O7`~UC5i<0QzxsS z8)<22E^clip`ln849l}6kNZDIM$qNumz|uPV5rXYE6Y`xx0LVRz3a2Pl=LK5UofJy zlwS|G?2*_v4~s^+xVjQyMFQ}fKn3ntcDd|@!GPz8P=!89;X5s4p=OmB%9r+~yAZwj zcn%@vq6pATvuooul{Gb?z}Z5{X<)3Z(HYMJSrO>LAA~&=#%*^q=p0^GSLfpCIlscE znbQ+}_AN`S=ll0gpvK!<1jVt535(&k8ZPecv-qG@-0hC;ZeCg0yc$<+Bg?NWx;bzty2L}hPj6U>`-Qds=Q8gt5} zymrY`G!Ux4_(JcalcPT%GqXuJ<70u7$T9Rx}PLYISXn8QS1-A+Pb>POiWBJ!V%E*O3zi@kB>o;4m{ab z7Br|1gCB%nX1*{YVEQRukue6ypp!$_#>U2i!a`!Oc9Onot@06p+qXMU{~i!FHsZs= zNEsLz(ap^{Y8&8zmA-#$qL4iOI1tJ%tX4`&N*BdHi@b&g zweBa=I3Tu#RaLaW)B#b(>K)+#2FP@kYyzj;6w`(02I=qisfb9Rk(yhTj~vMEn{N`QRNo*<=NR# zApYi~A5H!>tlNi=eLYf}%)!7cw|D76lx7BjgK6i2+Wzw{$C}O;8(p~dgfse*l9P$6 z^e+m(Hr2$e{Z^e|bM=ER3N$8^l-SDJnt&2+ZTsxG3ZthdX)#RzSQb=P!az=yKs}B| zTI{aZnqvS{K_xRqtyS|^37eZVNh)Ff2OI6f!}QC`%bAkS98AKdR0!yg;bBbc1q=Lk z1#G@$zMk*PAc3@=?5MHH_%Td2I4|P9gt9*1CRL7SQ_$CE0eOZj!d%PHFb3o;b1-9o z$*8-|epFq^naceURN=*o8^F{+v?eO>C(8qgA;Z4lFN&*7=WCjbw6vM6?dalX4^L0@ zyLV6!DFP;J2J+%AGYgqb)V}EH>%;CY56AH#-OcNVvq5GlLJe|)ZUbl{eSPmqOG~?K z;$@2VGc#E>(ph1!;AndO8IZ<}|AMI6XjGe@ mOP)A4Sz)b&Q0tAxxdi<4=l9B~B zg4*~wwpzFRQgEQ;2LSQaI5Ns`;+tudASaPPM5wSWWRQ}l(Gd}3MKm*DC3YN{Eo!a!;B zhOlt=@^C38h%&q|!KB4>AYhD|zlb9*=*$;nVFjU#Ss*rGuKpG5dWEs(`)=pbTs0{QA11M}Yd!-(wIE zXMjQiH38ilUS59d@< z`I*4KfeLks*DtPF5VNGp+x+(?Dx;^rpW*w`>`Q7R(HO1HTG;{E&gB0*;-3P&tdSUx{cY5k_lG``C^4TtHNmx_7UAauN+9>Za5xG; zWieiDy|l7|u(9D=_?Bhq;UvT2;OJOo)k}ABx*60BW=q1{T-fK&_fK|*ANw3kd7C>r zPVp<_@%YmT6bgmKxA>a_@nIFSk#=PRlLe@qazKC#AY$nI_ctL+2WwL!BaF_iM+?*B z($ES&JrMoFM5t=sAJC4->*(tKGcZ6SBqU^<3!?1%@^aVpiM!$w56w`j zAXu{-Q%wK{6&01~bj=obhO1X!ie|_kkhKDZY;SK5Kt9*jCINPml28PM_hN_{*D|mwQ~J z`SRsWCP96XV$@fDLnEUqu+P%G-37Nf_41IyfV+b2th^KDYYeJ1PsA`hRf8`qev(TP(xAQEuA$ zQJ!CH(ETr|1xi-8aDFY+%9A+u4}71nWRU&=M1 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.md5 new file mode 100644 index 00000000..104290b4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.md5 @@ -0,0 +1 @@ +d97cb536a83f9f703ffb2a7f26265687 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryF2M__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d3154dbe776bf1a6c5053be51e3fff25ac6319a5 GIT binary patch literal 5380 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 mOP)A4Sz)b&Q0tAxxdi<4=l9B~B zg4*~wwpzFRQgEQ;2LSQaI5Ns`;+tudASaPPM5wSWWRQ}l(Gd}3MKm*DC3YN{Eo!a!;B zhOlt=@^C38h%&q|!KB4>AYhD|zlb9*=*$;nVFjU#Ss*rGuKpG5dWEs(`)=pbTs0{QA11M}Yd!-(wIE zXMjQiH38ilUS59d@< z`I*4KfeLks*DtPF5VNGp+x+(?Dx;^rpW*w`>`Q7R(HO1HTG;{E&gB0*;-3P&tdSUx{cY5k_lG``C^4TtHNmx_7UAauN+9>Za5xG; zWieiDy|l7|u(9D=_?Bhq;UvT2;OJOo)k}ABx*60BW=q1{T-fK&_fK|*ANw3kd7C>r zPVp<_@%YmT6bgmKxA>a_@nIFSk#=PRlLe@qazKC#AY$nI_ctL+2WwL!BaF_iM+?*B z($ES&JrMoFM5t=sAJC4->*(tKGcZ6SBqU^<3!?1%@^aVpiM!$w56w`j zAXu{-Q%wK{6&01~bj=obhO1X!ie|_kkhKDZY;SK5Kt9*jCINPml28PM_hN_{*D|mwQ~J z`SRsWCP96XV$@fDLnEUqu+P%G-37Nf_41IyfV+b2th^KDYYeJ1PsA`hRf8`qev(TP(xAQEuA$ zQJ!CH(ETr|1xi-8aDFY+%9A+u4}71nWRU&=M1 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryFLOAM Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryFLOAM, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryFLOAMinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryFLOAM(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryFLOAM)rtabmap::OdometryFLOAM
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryFLOAMvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryFLOAM() (defined in rtabmap::OdometryFLOAM)rtabmap::OdometryFLOAMvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.html new file mode 100644 index 00000000..167e3d98 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryFLOAM Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryFLOAM Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryFLOAM:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryFLOAM:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryFLOAM (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 38 of file OdometryFLOAM.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryFLOAM::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryFLOAM::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 45 of file OdometryFLOAM.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.js new file mode 100644 index 00000000..e3d48791 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryFLOAM = +[ + [ "reset", "classrtabmap_1_1OdometryFLOAM.html#a85105e691f68317b2816566cb7440e46", null ], + [ "getType", "classrtabmap_1_1OdometryFLOAM.html#a311c8b022d0a2dc6219b97a8e2b40d84", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.map new file mode 100644 index 00000000..dd0734af --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.md5 new file mode 100644 index 00000000..8e0c7057 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.md5 @@ -0,0 +1 @@ +7de2e4e330b04aa3c7df4c067b7627b0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..80cc7e3bfa85740cbd61f052039fb09ea8d0d5b8 GIT binary patch literal 5482 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.map new file mode 100644 index 00000000..dd0734af --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.md5 new file mode 100644 index 00000000..8e0c7057 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.md5 @@ -0,0 +1 @@ +7de2e4e330b04aa3c7df4c067b7627b0 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFLOAM__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..80cc7e3bfa85740cbd61f052039fb09ea8d0d5b8 GIT binary patch literal 5482 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis-members.html new file mode 100644 index 00000000..58e1fdc2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryFovis Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryFovis, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryFovisinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryFovis(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryFovis)rtabmap::OdometryFovis
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryFovisvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryFovis() (defined in rtabmap::OdometryFovis)rtabmap::OdometryFovisvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.html new file mode 100644 index 00000000..5de70b2e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryFovis Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryFovis Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryFovis:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryFovis:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryFovis (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 43 of file OdometryFovis.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryFovis::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryFovis::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 50 of file OdometryFovis.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.js new file mode 100644 index 00000000..4d18fdb6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryFovis = +[ + [ "reset", "classrtabmap_1_1OdometryFovis.html#a0175e1e923673028f1d647aaa185447c", null ], + [ "getType", "classrtabmap_1_1OdometryFovis.html#a415b08f31a2ab8ff503c84623df71f0d", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.map new file mode 100644 index 00000000..6cb918f7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.md5 new file mode 100644 index 00000000..a1b8e5dd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.md5 @@ -0,0 +1 @@ +ca43bf3fc11a38839e658107945b934b \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..95b794c18829229531d65008a6712327234c862a GIT binary patch literal 5369 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.md5 new file mode 100644 index 00000000..a1b8e5dd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.md5 @@ -0,0 +1 @@ +ca43bf3fc11a38839e658107945b934b \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryFovis__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..95b794c18829229531d65008a6712327234c862a GIT binary patch literal 5369 zcmchbhc}#CxW)<5!qH2}5HVqtMDIbOi{7I|@7-aLFiMcc+Q$*7MD?fkvEr<@BL-sSH}A3(*@5!$UmM2lI|lzRd)?}qO`SM zD2qKZ3MJnkz5!DZwA?wk=pK%}!OTc}fAb*6wa>4>ui)oF-p`OxL_v4-!&Ioozppay zAw8q!fbID??ljlWdQI@-rVAqh(Ppd@^70RV zt`!x9n_4}Ko}GQdbkDq}FOkjF#ibVh1PyOV9FNg{IXbE{F*)h#?p_avDecsc$=jbE zZi-1rq-JFetoFvAU@B@*_@!Xp`}Z5*L5SwXK9?S7qz;mcpFf`2Dk$RF!3HfG+l|hN z_nPCI{vHbrRNkJ8pM}VeA3vHtWxj7|v)Byp>Fup^o#akX<=UIfxg#f+ zZ+&%&7I;z{PQ@l+BgQ({7A%RyVg;Tyr~m%#5r0~Zb~4RhM&R?OB?zq$IAaOVc?Wn) zdwan@{HCet={-l=3udiB!n$%ehUJh0sz;9=Ra&)~%jwpj4~F<_XqcJ%w`w|c{QT-w z@)8php*%eF;3v_s2TH1{sx?w)3;3j@zZyK|KL1Eo&{0&pc6PLFIGl0MV#Yn8d45wq z1BA!1KMBHwD|!FEE(mKEMbp-|+W^)D6}UB1RjfcjOGkIdz`#J++&o8JTbnU_w%$2e zT~m`D%$7!xEF~p{b7EqmCxVEyM^ms38WIxHGhJaCO`|x4M&EcyOiUcJz0eq+tZ?}x z>gCHgWMSxh@dE(?t>5#XG=I<4s~sO7$J`Wkis2~?F$lr-GOtQ@oFwiY9vW@6PD@17 z*j=8V*iDxkn=}UQeB%{kO>}W}-GpmjUhIb5cxYr|5_fbIK+D9$4T26m+Fce*O-qYz zX=%w4ag3u;i~%#JWoN&?F_Oz8e|7GMJzDU-QDwq^iK_{tLhW*=X*@XmsztD1b zqG;S_DrsY5V>LYj{P5_9Y2QI=88))9v0c9%7av~}T%d!b=Lp%0pjkx{E`M^*G%v`^ zuWn^S@JNe%IYI@()8etq26-Aad2#rDo5CuJZ77LQ;k*gsYr%u5GUJ43|sr{V= z?^f(fG75?h^P?vRKd;{w5f$xSY734oEG!gap>#XR5qF<*m~9EH+1uZz8yOjKI{`Uy zf2ZRrG+yd#5--?sZU7eg3DnKat(=UEj7ISZ$G)`*r@MQ5K9-i2 zFaZIht*c(a&^H;uK|wThbT5i6&qj-jVF@=y`|PmK`8`k1&O|-u#p3N-yxl*|%QFw* za5w@~bF+b-UgzQFq_4lf(JboKBp6FYnRxpstXz0-&tW~vNbWsgcMb@=KM zN`Z6_Z2L{wJ zTU&#JgSH!AvY8x7so8tFyCZ9Bg@BR--_^!%7m!n;Q_GwwFE-D9jlad>@jTMfO{UqA zkwn~SWn+FV$#*+JV93bH-@JPlm7dNZ;W7L5XH$cS9n)7i*H7lRAds?(3Pb$*`a12c zTVLV@+toch1PBQU^W+iD=%(HFvuYVViv|zdZz$iW=x8cfQkToY^BcdwxIjktmm62W zczN}crTu@=ut|DBd3nhbRlB>X6|@2ZB(k%!2`robjt0Hrj(`1f(J7Q40qI8Q;^no` zhF_`=D#x3G&OjRa`}-G7ZhqbL{}#O4mM0g?l&ESCPdKHcp?RpKMX8w~@TROR_O7Pt z(#J4mgor;9MxpxvOMHV#z-E7KP{5)g;rKY{a_^M_&8=Grjg69UIGp(Ub({>^K?F=H zp`wD{*w{E^e~?E?Mh57_#IBUrCv8-Q-jDud)8y@@w!mGhnJNo47Z(^OC#RUW_#5<= z#^cAU>zURhD+R$jwv#2=%4%x#tgMfXjTvcaX&IQ9%Gbj#4+{TiVj8!0adGjBGDGD4 zjD{LeoW9-1GR)pFdAUU#UyjEpuy3_@oWq)^HNJ2_4kpj)Z0p zIWH(L0LXGYABrVMV_~4NOp6*9yNxUgPCmhqsFFVBNiEySwiIq4$<2^+nzvBc=+Mo^5wG1MY ztB+CFSec_ywts0Ta(CAT?`VFHfKc<>;G8KGZ)+V1aO|L<*_7SY-4Xr5X1c@#48Ixa z$HzkNg}f9NAO{z8$THr1+jAE>Qa#?aC09293#&SIi{bJigCsUzh%?CU7gy>#+O=#V zyTNjz{gwr;i1YtOA?~zCsb3sK)KjyyNHj$LZ+!lXm;Qfl!ksD%K)Jc^>ocs|TM+xH zvC6Rv+cFJp>Uu&3A&v_To^3k_ZEI4}>({9~#U^xfbi-Shx{I5dvU74+D;yErkx1mv z*VmyMTq%~K|8qWEd^cxmtjDlF`aL0iwW#MfJ^&x@%gP34-XypWA%2_?>|*e4{ghsM4Y_ zX)uk4NYBDz7?7kXV6mW`rk_*IGBPrym6c#m>UQhU=B5W-5gebM+BxGV1p;m(NNE&{ z&|9vap6k^uJDeLL<#qexI2ux-w*l_j*&Zfauk!M^`5a|?@cw@+eX zVzqA5e2Pj+fC1`cROR|bKx4px6eO}q+If3ZTeg^89U>I~?3b`Dv7xt2pFNZ22s;<{ zZo_5d+y=96J=;JJ?A{N&kY#^c2ViKdH03?zi!!%R!{hwwol0Lt#`f>}2?n>m+!rBC(5& z{Cs>a?(SS-Vjt1CEHPI)5L!!=PXs8=gUhpBdI&@t@PQ)PQrHy&Hw)|&NV}MrnA`I5 z?BU7sr!fF5Lh&ujZ(xr*&hAIqfL%^2S0WLGl44Ndl$6ZuxVqRqzr=SqfBzi4w!Utb z&kg6$ogNyp$9Rs0OF80z{Q) zKmaibiGhWMtc&Mpj(EIrg-Ka|z_OROH|a0Gy2@!cQ1V8`#`>nFYX1IW1aZZsS0ts? z)f*tyn8;b_>6JiWG6k*K^_Jb;++c!&JTO=cNId-~Phw0e-nX^o$Hh@pU;}{TiYwk* ziKI?VNg;d)yf2SV-bxoK$44n7NJ+u=W5tV_@^Z|}iwPGoWo2bBcXG>IRVQa>eA7$p z;i2-|ai8C_!hlPs4@ifL0FV_rFcvcPy`#QR^8P6wAYb_ya-)q(ej$XDc+{x^!)RaxzULjoWu` z0t3ALwiYLakpaOmVoMIezp z)z#G)HA_`h5)cI7T71_AXhRT)d!xgnqkX_ogohIVI|uB~8t9fykJ7yAC}RQ4l69pF zSzrea7|yZDVNekfIKo=Ul|5O=J%aoj)@`l}w4OJr} z27ry=9AbQKZt(KrEL%3Pdb;Ug#0L&{?0Rwid|fci78vWGprAkNl*BIg*ua2}HL(QE z0wR29R;Yut2mQ`2EG!>RtvQ`B-n=;o%ma|*2PbQ3h#6CJ^P!)GVLG65c6N49(5o98 z0fv(YxwgxG{a><0k+8V^pfU7Qw4u5AV;>)(rKKfIdr{Ht`&O;$R#xoK+X}Kpo$2W4 zK5tGUrGt+Izyg7Py#gYGBjtPl{ykVwJ!|VRaP_8afB;~5BSFitfMzSI0FFEi#trB= zu)?3m$FVOxog5r!*w{2RHRGoxwlEkMZ*S+mgqtRfYKg49;CR6m*d5SxdV2cG_wQYC zjQl|9Qdv!df~0_80$s8dVu?vkMwXPQJ|zX*0Jeia`6@0h4#Zj*$Ssa{Zn>REtKh*+ zZ*Om)8-GR%gc1scmKy$3V9&tL?gbb4J|A*%jQs&D8t(B+z$AT15O`MqW@a*9US5LkQwj@{TUum?GX90}`9VFdt*y0= z*H?~N?`%Hz^J%f@2$cizV4I4b-7W=g3~d#hm}&Jq_VsHTi&vsHz;ZD#GvjwNgP~=b z07tG)#==+>LeIx!XuTYi5&C0H*NBLAvvzf + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryInfo Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
copyWithoutData() constrtabmap::OdometryInfo
cornerInliersrtabmap::OdometryInfo
distanceTravelledrtabmap::OdometryInfo
featuresrtabmap::OdometryInfo
gravityPitchErrorrtabmap::OdometryInfo
gravityRollErrorrtabmap::OdometryInfo
guessrtabmap::OdometryInfo
guessVelocityrtabmap::OdometryInfo
intervalrtabmap::OdometryInfo
keyFrameAddedrtabmap::OdometryInfo
localBundleAvgInlierDistancertabmap::OdometryInfo
localBundleConstraintsrtabmap::OdometryInfo
localBundleMaxKeyFramesForInlierrtabmap::OdometryInfo
localBundleModelsrtabmap::OdometryInfo
localBundleOutliersrtabmap::OdometryInfo
localBundleOutliersPerCamrtabmap::OdometryInfo
localBundlePosesrtabmap::OdometryInfo
localBundleTimertabmap::OdometryInfo
localKeyFramesrtabmap::OdometryInfo
localMaprtabmap::OdometryInfo
localMapSizertabmap::OdometryInfo
localScanMaprtabmap::OdometryInfo
localScanMapSizertabmap::OdometryInfo
lostrtabmap::OdometryInfo
memoryUsagertabmap::OdometryInfo
newCornersrtabmap::OdometryInfo
OdometryInfo() (defined in rtabmap::OdometryInfo)rtabmap::OdometryInfo
refCornersrtabmap::OdometryInfo
regrtabmap::OdometryInfo
stamprtabmap::OdometryInfo
statistics(const Transform &pose=Transform())rtabmap::OdometryInfo
timeDeskewingrtabmap::OdometryInfo
timeEstimationrtabmap::OdometryInfo
timeParticleFilteringrtabmap::OdometryInfo
transformrtabmap::OdometryInfo
transformFilteredrtabmap::OdometryInfo
transformGroundTruthrtabmap::OdometryInfo
typertabmap::OdometryInfo
wordsrtabmap::OdometryInfo
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.html new file mode 100644 index 00000000..3712cdd6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.html @@ -0,0 +1,948 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryInfo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryInfo Class Reference
+
+
+ +

What one Odometry iteration produced, beyond the pose. + More...

+ +

#include <OdometryInfo.h>

+
+Collaboration diagram for rtabmap::OdometryInfo:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

+OdometryInfo copyWithoutData () const
 A copy without the heavy members (features, local map, scan).
 
std::map< std::string, float > statistics (const Transform &pose=Transform())
 Formats the content as the Odometry/... statistics.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

bool lost
 True when the motion could not be estimated on this frame (transform is then null).
 
RegistrationInfo reg
 Registration result: matches, inliers, covariance, ICP indicators and timings.
 
int features
 Number of features extracted in the current frame.
 
int localMapSize
 Number of 3D points in the local feature map (F2M).
 
int localScanMapSize
 Number of points in the local scan map (F2M).
 
int localKeyFrames
 Number of key frames forming the local map (F2M).
 
int localBundleOutliers
 Features rejected by the last local bundle adjustment.
 
int localBundleConstraints
 Feature observations kept by the last local bundle adjustment.
 
float localBundleTime
 Time spent in the local bundle adjustment (s).
 
std::map< int, Transform > localBundlePoses
 Key frame poses optimized by the local bundle adjustment.
 
std::map< int, std::vector< CameraModel > > localBundleModels
 Camera models of localBundlePoses.
 
float localBundleAvgInlierDistance
 Average distance of the bundle adjustment inliers (m).
 
int localBundleMaxKeyFramesForInlier
 Highest number of key frames observing a same inlier.
 
std::vector< int > localBundleOutliersPerCam
 Outliers of the last local bundle adjustment, per camera.
 
bool keyFrameAdded
 True if this frame became a key frame of the local map.
 
float timeDeskewing
 Time spent deskewing the laser scan (s).
 
float timeEstimation
 Time spent estimating the motion (s).
 
float timeParticleFiltering
 Time spent in the particle filter (s), when enabled.
 
double stamp
 Stamp of the processed frame.
 
double interval
 Time since the previous processed frame (s); the divisor for velocities.
 
Transform transform
 Motion since the previous frame, null when lost.
 
Transform transformFiltered
 transform after Kalman or particle filtering, when enabled.
 
Transform transformGroundTruth
 Ground truth motion since the previous frame, when the data provides it.
 
Transform guessVelocity
 
Transform guess
 Motion guess given to the front-end (from the velocity model, an external pose or an IMU).
 
float distanceTravelled
 Distance travelled since the odometry was last reset (m).
 
int memoryUsage
 Process memory used (MB), only with Parameters::kRtabmapPublishRAMUsage().
 
double gravityRollError
 Absolute roll difference between the estimated pose and the IMU gravity (rad).
 
double gravityPitchError
 Absolute pitch difference between the estimated pose and the IMU gravity (rad).
 
int type
 Odometry strategy that produced this, see Parameters::kOdomStrategy().
 
std::multimap< int, cv::KeyPoint > words
 Keypoints of the current frame, by word id (F2M).
 
std::map< int, cv::Point3f > localMap
 Local feature map in the odometry frame, by word id (F2M).
 
LaserScan localScanMap
 Local scan map in the odometry frame (F2M).
 
std::vector< cv::Point2f > refCorners
 Corners of the reference frame (F2F).
 
std::vector< cv::Point2f > newCorners
 Where those corners were found in the current frame (F2F).
 
std::vector< int > cornerInliers
 Indices in refCorners / newCorners kept as inliers (F2F).
 
+

Detailed Description

+

What one Odometry iteration produced, beyond the pose.

+

Filled by Odometry::process() when a pointer is passed to it, and carried to the rest of the application by OdometryEvent. It holds the incremental motion, the quality indicators used to decide whether the estimate can be trusted, the timings, and the intermediate data a viewer needs to draw what the front-end sees (local map, matched features).

+

Which fields are filled depends on the front-end: the feature-related ones come from OdometryF2M and OdometryF2F, and an ICP-only or external strategy leaves them empty.

+
See also
Odometry
+
+OdometryEvent
+
+RegistrationInfo
+ +

Definition at line 63 of file OdometryInfo.h.

+

Member Function Documentation

+ +

◆ statistics()

+ +
+
+ + + + + + + + +
std::map< std::string, float > rtabmap::OdometryInfo::statistics (const Transform & pose = Transform())
+
+ +

Formats the content as the Odometry/... statistics.

+
Parameters
+ + +
poseCurrent pose, added to the output when not null.
+
+
+
Returns
Statistic name (with its unit) to value, as published in Statistics.
+ +
+
+

Member Data Documentation

+ +

◆ lost

+ +
+
+ + + + +
bool rtabmap::OdometryInfo::lost
+
+ +

True when the motion could not be estimated on this frame (transform is then null).

+ +

Definition at line 76 of file OdometryInfo.h.

+ +
+
+ +

◆ reg

+ +
+
+ + + + +
RegistrationInfo rtabmap::OdometryInfo::reg
+
+ +

Registration result: matches, inliers, covariance, ICP indicators and timings.

+ +

Definition at line 77 of file OdometryInfo.h.

+ +
+
+ +

◆ features

+ +
+
+ + + + +
int rtabmap::OdometryInfo::features
+
+ +

Number of features extracted in the current frame.

+ +

Definition at line 78 of file OdometryInfo.h.

+ +
+
+ +

◆ localMapSize

+ +
+
+ + + + +
int rtabmap::OdometryInfo::localMapSize
+
+ +

Number of 3D points in the local feature map (F2M).

+ +

Definition at line 79 of file OdometryInfo.h.

+ +
+
+ +

◆ localScanMapSize

+ +
+
+ + + + +
int rtabmap::OdometryInfo::localScanMapSize
+
+ +

Number of points in the local scan map (F2M).

+ +

Definition at line 80 of file OdometryInfo.h.

+ +
+
+ +

◆ localKeyFrames

+ +
+
+ + + + +
int rtabmap::OdometryInfo::localKeyFrames
+
+ +

Number of key frames forming the local map (F2M).

+ +

Definition at line 81 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundleOutliers

+ +
+
+ + + + +
int rtabmap::OdometryInfo::localBundleOutliers
+
+ +

Features rejected by the last local bundle adjustment.

+ +

Definition at line 82 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundleConstraints

+ +
+
+ + + + +
int rtabmap::OdometryInfo::localBundleConstraints
+
+ +

Feature observations kept by the last local bundle adjustment.

+ +

Definition at line 83 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundleTime

+ +
+
+ + + + +
float rtabmap::OdometryInfo::localBundleTime
+
+ +

Time spent in the local bundle adjustment (s).

+ +

Definition at line 84 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundlePoses

+ +
+
+ + + + +
std::map<int, Transform> rtabmap::OdometryInfo::localBundlePoses
+
+ +

Key frame poses optimized by the local bundle adjustment.

+ +

Definition at line 85 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundleModels

+ +
+
+ + + + +
std::map<int, std::vector<CameraModel> > rtabmap::OdometryInfo::localBundleModels
+
+ +

Camera models of localBundlePoses.

+ +

Definition at line 86 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundleAvgInlierDistance

+ +
+
+ + + + +
float rtabmap::OdometryInfo::localBundleAvgInlierDistance
+
+ +

Average distance of the bundle adjustment inliers (m).

+ +

Definition at line 87 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundleMaxKeyFramesForInlier

+ +
+
+ + + + +
int rtabmap::OdometryInfo::localBundleMaxKeyFramesForInlier
+
+ +

Highest number of key frames observing a same inlier.

+ +

Definition at line 88 of file OdometryInfo.h.

+ +
+
+ +

◆ localBundleOutliersPerCam

+ +
+
+ + + + +
std::vector<int> rtabmap::OdometryInfo::localBundleOutliersPerCam
+
+ +

Outliers of the last local bundle adjustment, per camera.

+ +

Definition at line 89 of file OdometryInfo.h.

+ +
+
+ +

◆ keyFrameAdded

+ +
+
+ + + + +
bool rtabmap::OdometryInfo::keyFrameAdded
+
+ +

True if this frame became a key frame of the local map.

+ +

Definition at line 90 of file OdometryInfo.h.

+ +
+
+ +

◆ timeDeskewing

+ +
+
+ + + + +
float rtabmap::OdometryInfo::timeDeskewing
+
+ +

Time spent deskewing the laser scan (s).

+ +

Definition at line 91 of file OdometryInfo.h.

+ +
+
+ +

◆ timeEstimation

+ +
+
+ + + + +
float rtabmap::OdometryInfo::timeEstimation
+
+ +

Time spent estimating the motion (s).

+ +

Definition at line 92 of file OdometryInfo.h.

+ +
+
+ +

◆ timeParticleFiltering

+ +
+
+ + + + +
float rtabmap::OdometryInfo::timeParticleFiltering
+
+ +

Time spent in the particle filter (s), when enabled.

+ +

Definition at line 93 of file OdometryInfo.h.

+ +
+
+ +

◆ stamp

+ +
+
+ + + + +
double rtabmap::OdometryInfo::stamp
+
+ +

Stamp of the processed frame.

+ +

Definition at line 94 of file OdometryInfo.h.

+ +
+
+ +

◆ interval

+ +
+
+ + + + +
double rtabmap::OdometryInfo::interval
+
+ +

Time since the previous processed frame (s); the divisor for velocities.

+ +

Definition at line 95 of file OdometryInfo.h.

+ +
+
+ +

◆ transform

+ +
+
+ + + + +
Transform rtabmap::OdometryInfo::transform
+
+ +

Motion since the previous frame, null when lost.

+ +

Definition at line 96 of file OdometryInfo.h.

+ +
+
+ +

◆ transformFiltered

+ +
+
+ + + + +
Transform rtabmap::OdometryInfo::transformFiltered
+
+ +

transform after Kalman or particle filtering, when enabled.

+ +

Definition at line 97 of file OdometryInfo.h.

+ +
+
+ +

◆ transformGroundTruth

+ +
+
+ + + + +
Transform rtabmap::OdometryInfo::transformGroundTruth
+
+ +

Ground truth motion since the previous frame, when the data provides it.

+ +

Definition at line 98 of file OdometryInfo.h.

+ +
+
+ +

◆ guessVelocity

+ +
+
+ + + + +
Transform rtabmap::OdometryInfo::guessVelocity
+
+
Deprecated:
Use guess and interval instead.
+ +

Definition at line 99 of file OdometryInfo.h.

+ +
+
+ +

◆ guess

+ +
+
+ + + + +
Transform rtabmap::OdometryInfo::guess
+
+ +

Motion guess given to the front-end (from the velocity model, an external pose or an IMU).

+ +

Definition at line 100 of file OdometryInfo.h.

+ +
+
+ +

◆ distanceTravelled

+ +
+
+ + + + +
float rtabmap::OdometryInfo::distanceTravelled
+
+ +

Distance travelled since the odometry was last reset (m).

+ +

Definition at line 101 of file OdometryInfo.h.

+ +
+
+ +

◆ memoryUsage

+ +
+
+ + + + +
int rtabmap::OdometryInfo::memoryUsage
+
+ +

Process memory used (MB), only with Parameters::kRtabmapPublishRAMUsage().

+ +

Definition at line 102 of file OdometryInfo.h.

+ +
+
+ +

◆ gravityRollError

+ +
+
+ + + + +
double rtabmap::OdometryInfo::gravityRollError
+
+ +

Absolute roll difference between the estimated pose and the IMU gravity (rad).

+ +

Definition at line 103 of file OdometryInfo.h.

+ +
+
+ +

◆ gravityPitchError

+ +
+
+ + + + +
double rtabmap::OdometryInfo::gravityPitchError
+
+ +

Absolute pitch difference between the estimated pose and the IMU gravity (rad).

+ +

Definition at line 104 of file OdometryInfo.h.

+ +
+
+ +

◆ type

+ +
+
+ + + + +
int rtabmap::OdometryInfo::type
+
+ +

Odometry strategy that produced this, see Parameters::kOdomStrategy().

+ +

Definition at line 106 of file OdometryInfo.h.

+ +
+
+ +

◆ words

+ +
+
+ + + + +
std::multimap<int, cv::KeyPoint> rtabmap::OdometryInfo::words
+
+ +

Keypoints of the current frame, by word id (F2M).

+ +

Definition at line 109 of file OdometryInfo.h.

+ +
+
+ +

◆ localMap

+ +
+
+ + + + +
std::map<int, cv::Point3f> rtabmap::OdometryInfo::localMap
+
+ +

Local feature map in the odometry frame, by word id (F2M).

+ +

Definition at line 110 of file OdometryInfo.h.

+ +
+
+ +

◆ localScanMap

+ +
+
+ + + + +
LaserScan rtabmap::OdometryInfo::localScanMap
+
+ +

Local scan map in the odometry frame (F2M).

+ +

Definition at line 111 of file OdometryInfo.h.

+ +
+
+ +

◆ refCorners

+ +
+
+ + + + +
std::vector<cv::Point2f> rtabmap::OdometryInfo::refCorners
+
+ +

Corners of the reference frame (F2F).

+ +

Definition at line 114 of file OdometryInfo.h.

+ +
+
+ +

◆ newCorners

+ +
+
+ + + + +
std::vector<cv::Point2f> rtabmap::OdometryInfo::newCorners
+
+ +

Where those corners were found in the current frame (F2F).

+ +

Definition at line 115 of file OdometryInfo.h.

+ +
+
+ +

◆ cornerInliers

+ +
+
+ + + + +
std::vector<int> rtabmap::OdometryInfo::cornerInliers
+
+ +

Indices in refCorners / newCorners kept as inliers (F2F).

+ +

Definition at line 116 of file OdometryInfo.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.js new file mode 100644 index 00000000..56b2292d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo.js @@ -0,0 +1,41 @@ +var classrtabmap_1_1OdometryInfo = +[ + [ "copyWithoutData", "classrtabmap_1_1OdometryInfo.html#abce081943ea566e0dcc1532ce749e276", null ], + [ "statistics", "classrtabmap_1_1OdometryInfo.html#a3353258f68ec539287dcc60cc08f3da7", null ], + [ "lost", "classrtabmap_1_1OdometryInfo.html#aa4c3fb893f6dcac1d67eeac6836b4faa", null ], + [ "reg", "classrtabmap_1_1OdometryInfo.html#a15a03ce5044cf0c6af77085777c4df7a", null ], + [ "features", "classrtabmap_1_1OdometryInfo.html#a736c2515b2347de6e1c6099a727aea8c", null ], + [ "localMapSize", "classrtabmap_1_1OdometryInfo.html#a563234c5e3047350ea3694df0ef95b03", null ], + [ "localScanMapSize", "classrtabmap_1_1OdometryInfo.html#ad0a0b1581cde378c7788e111384d4cfc", null ], + [ "localKeyFrames", "classrtabmap_1_1OdometryInfo.html#a5a6b81745b811070092549a1cfdfebbe", null ], + [ "localBundleOutliers", "classrtabmap_1_1OdometryInfo.html#a9ec2aadde776985736ac9f3ec2b7cb82", null ], + [ "localBundleConstraints", "classrtabmap_1_1OdometryInfo.html#a4fe896b703671cf7f57573fa109ffa9a", null ], + [ "localBundleTime", "classrtabmap_1_1OdometryInfo.html#adbfce0f63a7eedd0a0557ecf4420dfd0", null ], + [ "localBundlePoses", "classrtabmap_1_1OdometryInfo.html#ac6fbabe2f348c15f87807a928aeda82b", null ], + [ "localBundleModels", "classrtabmap_1_1OdometryInfo.html#aaa91ea67105c8c174245a7b192e868e3", null ], + [ "localBundleAvgInlierDistance", "classrtabmap_1_1OdometryInfo.html#ad0e7d3544c09f38383ec7c130af42b26", null ], + [ "localBundleMaxKeyFramesForInlier", "classrtabmap_1_1OdometryInfo.html#a78ab082f3310ea5ac8b11e54ba3a3014", null ], + [ "localBundleOutliersPerCam", "classrtabmap_1_1OdometryInfo.html#ab10aab5c7851215060b3ca9a58543206", null ], + [ "keyFrameAdded", "classrtabmap_1_1OdometryInfo.html#a9e40155a67416dcb420f4164e4aa348a", null ], + [ "timeDeskewing", "classrtabmap_1_1OdometryInfo.html#a929c2dc356766dc0f498aa1068ad7ef4", null ], + [ "timeEstimation", "classrtabmap_1_1OdometryInfo.html#a91407f56fef27c619e27fdd91003dadf", null ], + [ "timeParticleFiltering", "classrtabmap_1_1OdometryInfo.html#aae03a73e704e23ea5142de821b618e6e", null ], + [ "stamp", "classrtabmap_1_1OdometryInfo.html#a7b005bbc7922cf3c6c352451f65b199d", null ], + [ "interval", "classrtabmap_1_1OdometryInfo.html#a2c12cf07f29ecbafe6eacfd2e987adb6", null ], + [ "transform", "classrtabmap_1_1OdometryInfo.html#ad4f09afa610091012c2edd7708d722c5", null ], + [ "transformFiltered", "classrtabmap_1_1OdometryInfo.html#ac786b5953b124a80524a051cfbcb7460", null ], + [ "transformGroundTruth", "classrtabmap_1_1OdometryInfo.html#aba971e389867f752f04ecd7b17471f6e", null ], + [ "guessVelocity", "classrtabmap_1_1OdometryInfo.html#a3aec571c2fae4b6e3b1197d9f7adabed", null ], + [ "guess", "classrtabmap_1_1OdometryInfo.html#a8aa1c7947217518727a62bb55106a706", null ], + [ "distanceTravelled", "classrtabmap_1_1OdometryInfo.html#a669d252c42f5635ecbe0288c1b0e8721", null ], + [ "memoryUsage", "classrtabmap_1_1OdometryInfo.html#ad7f7beb7810db1912c20b05e94eafdf3", null ], + [ "gravityRollError", "classrtabmap_1_1OdometryInfo.html#a7641b415d9d08f7d267ca25ee564a2a7", null ], + [ "gravityPitchError", "classrtabmap_1_1OdometryInfo.html#a9b58bbc659878dc763c6f0201b2ecd28", null ], + [ "type", "classrtabmap_1_1OdometryInfo.html#ad2fa24b41e053e6a2f90dcb0189a901d", null ], + [ "words", "classrtabmap_1_1OdometryInfo.html#ac40ddcfab5cd0c6b9fe34aa5b0143814", null ], + [ "localMap", "classrtabmap_1_1OdometryInfo.html#a2231e7c27db459398b6b51fad108f876", null ], + [ "localScanMap", "classrtabmap_1_1OdometryInfo.html#a08ee9e84949857719b76d082559f3cbc", null ], + [ "refCorners", "classrtabmap_1_1OdometryInfo.html#a191435796512e2d1b6fd06c36bbc7516", null ], + [ "newCorners", "classrtabmap_1_1OdometryInfo.html#a028f791a3005377516d217608a696556", null ], + [ "cornerInliers", "classrtabmap_1_1OdometryInfo.html#a6410510dbdd2e9ce8fb1e7cb60dc3c4e", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.map new file mode 100644 index 00000000..c0b249e8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.md5 new file mode 100644 index 00000000..546f31c3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.md5 @@ -0,0 +1 @@ +a5cdc919a5dd5c255c22b58ccb443e68 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryInfo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ea8c43bfdf6337ecdbc0d1233eeefcc49a7958 GIT binary patch literal 19487 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 AhyVZp literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM-members.html new file mode 100644 index 00000000..29ce2949 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryLIOSAM Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryLIOSAM, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::OdometryLIOSAMinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryLIOSAMinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryLIOSAM(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryLIOSAM)rtabmap::OdometryLIOSAM
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryLIOSAMvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryLIOSAM() (defined in rtabmap::OdometryLIOSAM)rtabmap::OdometryLIOSAMvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.html new file mode 100644 index 00000000..1fb7cf83 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.html @@ -0,0 +1,319 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryLIOSAM Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryLIOSAM Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryLIOSAM:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryLIOSAM:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryLIOSAM (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
virtual bool canProcessAsyncIMU () const
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 42 of file OdometryLIOSAM.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryLIOSAM::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryLIOSAM::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 49 of file OdometryLIOSAM.h.

+ +
+
+ +

◆ canProcessAsyncIMU()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryLIOSAM::canProcessAsyncIMU () const
+
+inlinevirtual
+
+
Returns
True if the backend processes IMU asynchronously outside process().
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 50 of file OdometryLIOSAM.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.js new file mode 100644 index 00000000..81d84a18 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1OdometryLIOSAM = +[ + [ "reset", "classrtabmap_1_1OdometryLIOSAM.html#a7f72dbc28081ae774303dbf2d8cb5535", null ], + [ "getType", "classrtabmap_1_1OdometryLIOSAM.html#aea8d8aea35772e3b81ba3f74c6eb3415", null ], + [ "canProcessAsyncIMU", "classrtabmap_1_1OdometryLIOSAM.html#a51193d7f42c9b0174c6eedd75d8f4535", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.map new file mode 100644 index 00000000..b1e4b2c2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.md5 new file mode 100644 index 00000000..f0179ed7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.md5 @@ -0,0 +1 @@ +d267fde7794d827222fe03ffddc4d480 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..671a831285efcb0075aa537e2382f9413f8c2334 GIT binary patch literal 5590 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.map new file mode 100644 index 00000000..b1e4b2c2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.md5 new file mode 100644 index 00000000..f0179ed7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.md5 @@ -0,0 +1 @@ +d267fde7794d827222fe03ffddc4d480 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLIOSAM__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..671a831285efcb0075aa537e2382f9413f8c2334 GIT binary patch literal 5590 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM-members.html new file mode 100644 index 00000000..721c0270 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryLOAM Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryLOAM, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryLOAMinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryLOAM(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryLOAM)rtabmap::OdometryLOAM
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryLOAMvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryLOAM() (defined in rtabmap::OdometryLOAM)rtabmap::OdometryLOAMvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.html new file mode 100644 index 00000000..c468fbdb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryLOAM Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryLOAM Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryLOAM:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryLOAM:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryLOAM (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 43 of file OdometryLOAM.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryLOAM::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryLOAM::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 50 of file OdometryLOAM.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.js new file mode 100644 index 00000000..c2aa10de --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryLOAM = +[ + [ "reset", "classrtabmap_1_1OdometryLOAM.html#a6acc7b4f164a8915ada550ba7c23ac0e", null ], + [ "getType", "classrtabmap_1_1OdometryLOAM.html#a0833118684e4f836ec668b735f81da0d", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.map new file mode 100644 index 00000000..f5aecfe7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.md5 new file mode 100644 index 00000000..9e07e9d1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.md5 @@ -0,0 +1 @@ +d8cb4f0fa094697021747e72386a6073 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..694bc2c8925303b2e79a994d4c5e38b2a2db1328 GIT binary patch literal 5383 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.md5 new file mode 100644 index 00000000..9e07e9d1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.md5 @@ -0,0 +1 @@ +d8cb4f0fa094697021747e72386a6073 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryLOAM__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..694bc2c8925303b2e79a994d4c5e38b2a2db1328 GIT binary patch literal 5383 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryMSCKF Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryMSCKF, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::OdometryMSCKFinlinevirtual
canProcessRawImages() constrtabmap::OdometryMSCKFinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryMSCKFinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryMSCKF(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryMSCKF)rtabmap::OdometryMSCKF
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryMSCKFvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryMSCKF() (defined in rtabmap::OdometryMSCKF)rtabmap::OdometryMSCKFvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.html new file mode 100644 index 00000000..5206878f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.html @@ -0,0 +1,349 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryMSCKF Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryMSCKF Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryMSCKF:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryMSCKF:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryMSCKF (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 38 of file OdometryMSCKF.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryMSCKF::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryMSCKF::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 45 of file OdometryMSCKF.h.

+ +
+
+ +

◆ canProcessRawImages()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryMSCKF::canProcessRawImages () const
+
+inlinevirtual
+
+
Returns
True if the backend can process unrectified camera images.
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 46 of file OdometryMSCKF.h.

+ +
+
+ +

◆ canProcessAsyncIMU()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryMSCKF::canProcessAsyncIMU () const
+
+inlinevirtual
+
+
Returns
True if the backend processes IMU asynchronously outside process().
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 47 of file OdometryMSCKF.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.js new file mode 100644 index 00000000..94bb8238 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1OdometryMSCKF = +[ + [ "reset", "classrtabmap_1_1OdometryMSCKF.html#a3be4ada7eebf234c87a3127a85988d97", null ], + [ "getType", "classrtabmap_1_1OdometryMSCKF.html#a81657f9c46e39bfa48e1d0021c5af8ea", null ], + [ "canProcessRawImages", "classrtabmap_1_1OdometryMSCKF.html#a06b5b242107ffe5c379ff7ed089d07c6", null ], + [ "canProcessAsyncIMU", "classrtabmap_1_1OdometryMSCKF.html#a4dd9c2358d2e69f397b61746519a923a", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.map new file mode 100644 index 00000000..bad9263d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.md5 new file mode 100644 index 00000000..a211e131 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.md5 @@ -0,0 +1 @@ +9b62089d96b53dc6a9437b74fe56d309 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e39900c0bf5aa1cae852514a51d432f5a7749235 GIT binary patch literal 5752 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.map new file mode 100644 index 00000000..bad9263d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.md5 new file mode 100644 index 00000000..a211e131 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.md5 @@ -0,0 +1 @@ +9b62089d96b53dc6a9437b74fe56d309 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMSCKF__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e39900c0bf5aa1cae852514a51d432f5a7749235 GIT binary patch literal 5752 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono-members.html new file mode 100644 index 00000000..5ae1b916 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryMono Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryMono, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryMonoinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryMono(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryMono)rtabmap::OdometryMono
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose)rtabmap::OdometryMonovirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryMono() (defined in rtabmap::OdometryMono)rtabmap::OdometryMonovirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.html new file mode 100644 index 00000000..26b922d5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryMono Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryMono Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryMono:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryMono:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryMono (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose)
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 39 of file OdometryMono.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryMono::reset (const Transform & initialPose)
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryMono::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 45 of file OdometryMono.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.js new file mode 100644 index 00000000..5aee2daa --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryMono = +[ + [ "reset", "classrtabmap_1_1OdometryMono.html#a9574ccc748b5c4f664c059d460742457", null ], + [ "getType", "classrtabmap_1_1OdometryMono.html#ada54391f88a0704c4fab2d9a2b370a15", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.map new file mode 100644 index 00000000..d57a4073 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.md5 new file mode 100644 index 00000000..4ce96424 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.md5 @@ -0,0 +1 @@ +a910cc5f5b0edf8befbac5ba54d02c08 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..35a66fb385e032ddab08db72a0d43ec5cf89f444 GIT binary patch literal 5256 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 PwFtSdWu#f5;SlpbTL3IL literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.map new file mode 100644 index 00000000..d57a4073 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.md5 new file mode 100644 index 00000000..4ce96424 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.md5 @@ -0,0 +1 @@ +a910cc5f5b0edf8befbac5ba54d02c08 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryMono__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..35a66fb385e032ddab08db72a0d43ec5cf89f444 GIT binary patch literal 5256 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 PwFtSdWu#f5;SlpbTL3IL literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2-members.html new file mode 100644 index 00000000..2a0daf64 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryORBSLAM2 Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryORBSLAM2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryORBSLAM2inlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryORBSLAM2(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryORBSLAM2)rtabmap::OdometryORBSLAM2
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryORBSLAM2virtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryORBSLAM2() (defined in rtabmap::OdometryORBSLAM2)rtabmap::OdometryORBSLAM2virtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.html new file mode 100644 index 00000000..af6e3698 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryORBSLAM2 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryORBSLAM2 Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryORBSLAM2:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryORBSLAM2:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryORBSLAM2 (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 38 of file OdometryORBSLAM2.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryORBSLAM2::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryORBSLAM2::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 45 of file OdometryORBSLAM2.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.js new file mode 100644 index 00000000..24a16c2e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryORBSLAM2 = +[ + [ "reset", "classrtabmap_1_1OdometryORBSLAM2.html#ab127fac7aae296a68a9bf68ab02ffbbc", null ], + [ "getType", "classrtabmap_1_1OdometryORBSLAM2.html#a8773eea08df092d237e17af96ff6d096", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.map new file mode 100644 index 00000000..07934e6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.md5 new file mode 100644 index 00000000..a3a4ec5c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.md5 @@ -0,0 +1 @@ +b2a6f1f48a11bd1f02ec9322fdb67349 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9fcbf765a222ddde22e8dbd8aef030de9137ca2e GIT binary patch literal 6191 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.map new file mode 100644 index 00000000..07934e6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.md5 new file mode 100644 index 00000000..a3a4ec5c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.md5 @@ -0,0 +1 @@ +b2a6f1f48a11bd1f02ec9322fdb67349 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9fcbf765a222ddde22e8dbd8aef030de9137ca2e GIT binary patch literal 6191 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3-members.html new file mode 100644 index 00000000..ec4c286a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryORBSLAM3 Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryORBSLAM3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::OdometryORBSLAM3virtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryORBSLAM3inlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryORBSLAM3(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryORBSLAM3)rtabmap::OdometryORBSLAM3
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryORBSLAM3virtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryORBSLAM3() (defined in rtabmap::OdometryORBSLAM3)rtabmap::OdometryORBSLAM3virtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.html new file mode 100644 index 00000000..69069cbe --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.html @@ -0,0 +1,317 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryORBSLAM3 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryORBSLAM3 Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryORBSLAM3:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryORBSLAM3:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryORBSLAM3 (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
virtual bool canProcessAsyncIMU () const
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 39 of file OdometryORBSLAM3.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryORBSLAM3::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryORBSLAM3::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 46 of file OdometryORBSLAM3.h.

+ +
+
+ +

◆ canProcessAsyncIMU()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryORBSLAM3::canProcessAsyncIMU () const
+
+virtual
+
+
Returns
True if the backend processes IMU asynchronously outside process().
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.js new file mode 100644 index 00000000..6893006e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1OdometryORBSLAM3 = +[ + [ "reset", "classrtabmap_1_1OdometryORBSLAM3.html#a57626265fa4c23fab95140ca9c1f8f93", null ], + [ "getType", "classrtabmap_1_1OdometryORBSLAM3.html#a6a4161d9be51ff66e3571ba912655029", null ], + [ "canProcessAsyncIMU", "classrtabmap_1_1OdometryORBSLAM3.html#a2f226f38792f0c8bc146d73985239370", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.map new file mode 100644 index 00000000..190f042c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.md5 new file mode 100644 index 00000000..681038d9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.md5 @@ -0,0 +1 @@ +210a093f7e6b6d1f8ca6dc4428621b23 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8732fd1973e24a0281c31f4b6f7564980da34d GIT binary patch literal 6213 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 Lj4HfD$|UGt6}|B| literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.map new file mode 100644 index 00000000..190f042c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.md5 new file mode 100644 index 00000000..681038d9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.md5 @@ -0,0 +1 @@ +210a093f7e6b6d1f8ca6dc4428621b23 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryORBSLAM3__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8732fd1973e24a0281c31f4b6f7564980da34d GIT binary patch literal 6213 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 Lj4HfD$|UGt6}|B| literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis-members.html new file mode 100644 index 00000000..4d131cd6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryOkvis Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryOkvis, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::OdometryOkvisinlinevirtual
canProcessRawImages() constrtabmap::OdometryOkvisinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryOkvisinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryOkvis(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryOkvis)rtabmap::OdometryOkvis
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryOkvisvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryOkvis() (defined in rtabmap::OdometryOkvis)rtabmap::OdometryOkvisvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.html new file mode 100644 index 00000000..ac74dd16 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.html @@ -0,0 +1,349 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryOkvis Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryOkvis Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryOkvis:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryOkvis:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryOkvis (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 40 of file OdometryOkvis.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryOkvis::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryOkvis::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 47 of file OdometryOkvis.h.

+ +
+
+ +

◆ canProcessRawImages()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryOkvis::canProcessRawImages () const
+
+inlinevirtual
+
+
Returns
True if the backend can process unrectified camera images.
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 48 of file OdometryOkvis.h.

+ +
+
+ +

◆ canProcessAsyncIMU()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryOkvis::canProcessAsyncIMU () const
+
+inlinevirtual
+
+
Returns
True if the backend processes IMU asynchronously outside process().
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 49 of file OdometryOkvis.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.js new file mode 100644 index 00000000..e41d01bf --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1OdometryOkvis = +[ + [ "reset", "classrtabmap_1_1OdometryOkvis.html#a81f51ca0b6f3b48f9e6a6e0e2d7b7118", null ], + [ "getType", "classrtabmap_1_1OdometryOkvis.html#ab93efd88da4ff30e4ee4a0ec525347d8", null ], + [ "canProcessRawImages", "classrtabmap_1_1OdometryOkvis.html#ad4d4602445081fff30b74d1c7e22dbff", null ], + [ "canProcessAsyncIMU", "classrtabmap_1_1OdometryOkvis.html#a4e94c233112e7105dffa37eb8d33427f", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.map new file mode 100644 index 00000000..fce4c973 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.md5 new file mode 100644 index 00000000..bf69b005 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.md5 @@ -0,0 +1 @@ +43af8d6272fedcdd9cbb75a9a3a7e404 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f4288395e8b1a6ff27fc8a6a56ada8424cd92a5f GIT binary patch literal 5452 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 DL&~(j literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.map new file mode 100644 index 00000000..fce4c973 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.md5 new file mode 100644 index 00000000..bf69b005 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.md5 @@ -0,0 +1 @@ +43af8d6272fedcdd9cbb75a9a3a7e404 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOkvis__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f4288395e8b1a6ff27fc8a6a56ada8424cd92a5f GIT binary patch literal 5452 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 DL&~(j literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D-members.html new file mode 100644 index 00000000..1969e9e9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryOpen3D Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryOpen3D, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryOpen3Dinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryOpen3D(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryOpen3D)rtabmap::OdometryOpen3D
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryOpen3Dvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryOpen3D() (defined in rtabmap::OdometryOpen3D)rtabmap::OdometryOpen3Dvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.html new file mode 100644 index 00000000..058910a1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryOpen3D Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryOpen3D Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryOpen3D:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryOpen3D:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryOpen3D (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 35 of file OdometryOpen3D.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryOpen3D::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryOpen3D::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 42 of file OdometryOpen3D.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.js new file mode 100644 index 00000000..9d325750 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryOpen3D = +[ + [ "reset", "classrtabmap_1_1OdometryOpen3D.html#a21fecb34185676d02d92c7ad18f13970", null ], + [ "getType", "classrtabmap_1_1OdometryOpen3D.html#a79c86c26bd892619797d6266243bb8d6", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.map new file mode 100644 index 00000000..8804fbf4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.md5 new file mode 100644 index 00000000..6f863e5a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.md5 @@ -0,0 +1 @@ +bd10b0e09c8eb3ee1702de2cfb74aecb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..faf761c821f5d46bc132cfddbfdb809a902b450e GIT binary patch literal 5545 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.map new file mode 100644 index 00000000..8804fbf4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.md5 new file mode 100644 index 00000000..6f863e5a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.md5 @@ -0,0 +1 @@ +bd10b0e09c8eb3ee1702de2cfb74aecb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpen3D__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..faf761c821f5d46bc132cfddbfdb809a902b450e GIT binary patch literal 5545 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS-members.html new file mode 100644 index 00000000..3bceef5d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS-members.html @@ -0,0 +1,152 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryOpenVINS Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryOpenVINS, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::OdometryOpenVINSinlinevirtual
canProcessRawImages() constrtabmap::OdometryOpenVINSinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryOpenVINSinlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryOpenVINS(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryOpenVINS)rtabmap::OdometryOpenVINS
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryOpenVINSvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.html new file mode 100644 index 00000000..9b39c10a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.html @@ -0,0 +1,349 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryOpenVINS Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryOpenVINS Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryOpenVINS:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryOpenVINS:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryOpenVINS (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 40 of file OdometryOpenVINS.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryOpenVINS::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryOpenVINS::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 46 of file OdometryOpenVINS.h.

+ +
+
+ +

◆ canProcessRawImages()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryOpenVINS::canProcessRawImages () const
+
+inlinevirtual
+
+
Returns
True if the backend can process unrectified camera images.
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 47 of file OdometryOpenVINS.h.

+ +
+
+ +

◆ canProcessAsyncIMU()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryOpenVINS::canProcessAsyncIMU () const
+
+inlinevirtual
+
+
Returns
True if the backend processes IMU asynchronously outside process().
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 48 of file OdometryOpenVINS.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.js new file mode 100644 index 00000000..e04b7499 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1OdometryOpenVINS = +[ + [ "reset", "classrtabmap_1_1OdometryOpenVINS.html#abbf8f6be20990f3e39ad23325d72b41b", null ], + [ "getType", "classrtabmap_1_1OdometryOpenVINS.html#a79898924aa5af5d59ce10028e876e387", null ], + [ "canProcessRawImages", "classrtabmap_1_1OdometryOpenVINS.html#aed27c46aa9ddc68c59eb09f2b3a9d3d0", null ], + [ "canProcessAsyncIMU", "classrtabmap_1_1OdometryOpenVINS.html#a7712fe74d5ff65a67fe362010b795e14", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.map new file mode 100644 index 00000000..6c05396b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.md5 new file mode 100644 index 00000000..78e4708d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.md5 @@ -0,0 +1 @@ +66469d480d4a914c5b507e8c9111bcaa \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..11273ae97a09e5e0cdeeb76b4ef6ad44c10a4361 GIT binary patch literal 5791 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.map new file mode 100644 index 00000000..6c05396b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.md5 new file mode 100644 index 00000000..78e4708d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.md5 @@ -0,0 +1 @@ +66469d480d4a914c5b507e8c9111bcaa \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryOpenVINS__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..11273ae97a09e5e0cdeeb76b4ef6ad44c10a4361 GIT binary patch literal 5791 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent-members.html new file mode 100644 index 00000000..2efbd399 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent-members.html @@ -0,0 +1,123 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryResetEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryResetEvent, including all inherited members.

+ + + + + + + + +
getClassName() constrtabmap::OdometryResetEventinlinevirtual
getCode() constUEventinline
getPose() constrtabmap::OdometryResetEventinline
OdometryResetEvent(const Transform &pose=Transform::getIdentity())rtabmap::OdometryResetEventinline
UEvent(int code=0)UEventinlineprotected
~OdometryResetEvent() (defined in rtabmap::OdometryResetEvent)rtabmap::OdometryResetEventinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.html new file mode 100644 index 00000000..a56b0b46 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.html @@ -0,0 +1,293 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryResetEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryResetEvent Class Reference
+
+
+ +

Asks OdometryThread to restart the odometry from a given pose. + More...

+ +

#include <OdometryEvent.h>

+
+Inheritance diagram for rtabmap::OdometryResetEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryResetEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

 OdometryResetEvent (const Transform &pose=Transform::getIdentity())
 
virtual std::string getClassName () const
 
const Transform & getPose () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

Asks OdometryThread to restart the odometry from a given pose.

+

The buffered frames and IMU samples are dropped, and the integration starts over from getPose(). Handled even before the thread is started.

+
See also
OdometryThread
+
+Odometry::reset()
+ +

Definition at line 144 of file OdometryEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ OdometryResetEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::OdometryResetEvent::OdometryResetEvent (const Transform & pose = Transform::getIdentity())
+
+inline
+
+
Parameters
+ + +
posePose to restart from (identity by default).
+
+
+ +

Definition at line 148 of file OdometryEvent.h.

+ +
+
+ +

◆ ~OdometryResetEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::OdometryResetEvent::~OdometryResetEvent ()
+
+inlinevirtual
+
+ +

Definition at line 149 of file OdometryEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::OdometryResetEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 150 of file OdometryEvent.h.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::OdometryResetEvent::getPose () const
+
+inline
+
+
Returns
The pose the odometry should restart from.
+ +

Definition at line 152 of file OdometryEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.js new file mode 100644 index 00000000..aa063306 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent.js @@ -0,0 +1,6 @@ +var classrtabmap_1_1OdometryResetEvent = +[ + [ "OdometryResetEvent", "classrtabmap_1_1OdometryResetEvent.html#a035eee412d9bda7da321523baff799f3", null ], + [ "getClassName", "classrtabmap_1_1OdometryResetEvent.html#a94dc8e8b7ec952c0ca2b393cc0f3e71d", null ], + [ "getPose", "classrtabmap_1_1OdometryResetEvent.html#ae756dea7a2e79fd918dd4c158085bc68", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.map new file mode 100644 index 00000000..99e5ba6a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.md5 new file mode 100644 index 00000000..97926a90 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.md5 @@ -0,0 +1 @@ +904c06da19d21d105fe39ddaf838a444 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..68b3e801e5f74caac495df76be25567f612e7fd8 GIT binary patch literal 4713 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.md5 new file mode 100644 index 00000000..97926a90 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.md5 @@ -0,0 +1 @@ +904c06da19d21d105fe39ddaf838a444 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryResetEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..68b3e801e5f74caac495df76be25567f612e7fd8 GIT binary patch literal 4713 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryThread Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryThread, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
handleEvent(UEvent *event)rtabmap::OdometryThreadprotectedvirtual
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
join(bool killFirst=false)UThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
OdometryThread(Odometry *odometry, unsigned int dataBufferMaxSize=1)rtabmap::OdometryThread
post(UEvent *event, bool async=true) constUEventsSenderprotected
Priority enum nameUThread
registerToEventsManager() (defined in UEventsHandler)UEventsHandler
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setPriority(Priority priority)UThread
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UEventsHandler()UEventsHandlerinlineprotected
UEventsSender() (defined in UEventsSender)UEventsSenderinline
unregisterFromEventsManager() (defined in UEventsHandler)UEventsHandler
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~OdometryThread() (defined in rtabmap::OdometryThread)rtabmap::OdometryThreadvirtual
~UEventsHandler()UEventsHandlerprotectedvirtual
~UEventsSender() (defined in UEventsSender)UEventsSendervirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.html new file mode 100644 index 00000000..ab7ccd6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.html @@ -0,0 +1,367 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryThread Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryThread Class Reference
+
+
+ +

Runs an Odometry front-end in its own thread, driven by events. + More...

+ +

#include <OdometryThread.h>

+
+Inheritance diagram for rtabmap::OdometryThread:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryThread:
+
+
Collaboration graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 OdometryThread (Odometry *odometry, unsigned int dataBufferMaxSize=1)
 Constructor.
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
- Public Member Functions inherited from UEventsHandler
+void registerToEventsManager ()
 
+void unregisterFromEventsManager ()
 
+ + + + + + + + + + + + +

+Protected Member Functions

virtual bool handleEvent (UEvent *event)
 Receives the events listed in the class description.
 
- Protected Member Functions inherited from UEventsHandler
 UEventsHandler ()
 
virtual ~UEventsHandler ()
 
- Protected Member Functions inherited from UEventsSender
void post (UEvent *event, bool async=true) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

Runs an Odometry front-end in its own thread, driven by events.

+

The thread owns the Odometry object and calls Odometry::process() on the frames it receives, so that a slow odometry update does not block the sensor thread. It sits in the middle of the event-based pipeline: SensorCaptureThread → OdometryThread → RtabmapThread.

+

Input events (handled in handleEvent(), i.e. in the caller's thread):

    +
  • SensorEvent — a frame to process. It is rejected with an error if it carries neither a laser scan nor an image with its calibration (an OdometryMono front-end accepts RGB alone).
  • +
  • IMUEvent — an IMU sample, kept in a separate buffer.
  • +
  • OdometryResetEvent — resets the odometry to the pose it carries (identity if null) and drops everything buffered. Unlike the others, it is handled even before the thread is started.
  • +
+

Output event: one OdometryEvent per processed frame, carrying the data, the integrated pose and the OdometryInfo. A null pose means odometry is lost; that is what RtabmapThread reads to start a new map.

+

Buffering. The frame buffer holds dataBufferMaxSize frames and drops the oldest when full, so with the default size of 1 the odometry always works on the freshest frame rather than falling behind. IMU samples are buffered apart and fed to the odometry up to the stamp of the frame about to be processed, so that tightly-coupled back-ends see them in order. A frame whose stamp falls outside the buffered IMU window is skipped with a warning: with an asynchronous IMU, it must be published faster (less delay) than the camera or lidar.

+

When the incoming SensorEvent already carries an odometry pose (a robot publishing its own odometry), the motion between two consecutive such poses is passed to Odometry::process() as a guess.

+
See also
Odometry
+
+RtabmapThread
+
+SensorCaptureThread
+ +

Definition at line 80 of file OdometryThread.h.

+

Constructor & Destructor Documentation

+ +

◆ OdometryThread()

+ +
+
+ + + + + + + + + + + + + + + + + + +
rtabmap::OdometryThread::OdometryThread (Odometry * odometry,
unsigned int dataBufferMaxSize = 1 
)
+
+ +

Constructor.

+
Parameters
+ + + +
odometryThe odometry to run; must not be null. The thread takes ownership and deletes it in the destructor.
dataBufferMaxSizeMaximum number of frames waiting to be processed (0 = unlimited). Beyond that the oldest frame is dropped, keeping the odometry on recent data.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ handleEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool rtabmap::OdometryThread::handleEvent (UEvent * event)
+
+protectedvirtual
+
+ +

Receives the events listed in the class description.

+

Runs in the posting thread: frames and IMU samples are only buffered here, the odometry itself runs in the thread's main loop. Data events are ignored until the thread is started, an OdometryResetEvent is not.

+
Returns
Always false, so the event keeps being dispatched to other handlers.
+ +

Implements UEventsHandler.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.js new file mode 100644 index 00000000..acef6de1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryThread = +[ + [ "OdometryThread", "classrtabmap_1_1OdometryThread.html#a66435ffb547d7d59faa9224fe030934b", null ], + [ "handleEvent", "classrtabmap_1_1OdometryThread.html#a65808dd7148c1e2c49dcf90ef718b5a8", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.map new file mode 100644 index 00000000..823e2735 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.md5 new file mode 100644 index 00000000..c609e9b4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.md5 @@ -0,0 +1 @@ +572060719adb6bf3849ac8c4c3adb06a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..48c924085f63d1aaaac1d078e3391ceed030ecfa GIT binary patch literal 11891 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 UG + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.md5 new file mode 100644 index 00000000..c609e9b4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.md5 @@ -0,0 +1 @@ +572060719adb6bf3849ac8c4c3adb06a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryThread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..48c924085f63d1aaaac1d078e3391ceed030ecfa GIT binary patch literal 11891 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 UG + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryVINSFusion Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryVINSFusion, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::OdometryVINSFusioninlinevirtual
canProcessRawImages() constrtabmap::OdometryVINSFusioninlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryVINSFusioninlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryVINSFusion(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryVINSFusion)rtabmap::OdometryVINSFusion
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryVINSFusionvirtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryVINSFusion() (defined in rtabmap::OdometryVINSFusion)rtabmap::OdometryVINSFusionvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.html new file mode 100644 index 00000000..fa4cb4e7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.html @@ -0,0 +1,349 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryVINSFusion Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryVINSFusion Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryVINSFusion:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryVINSFusion:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryVINSFusion (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 37 of file OdometryVINSFusion.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryVINSFusion::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryVINSFusion::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 44 of file OdometryVINSFusion.h.

+ +
+
+ +

◆ canProcessRawImages()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryVINSFusion::canProcessRawImages () const
+
+inlinevirtual
+
+
Returns
True if the backend can process unrectified camera images.
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 45 of file OdometryVINSFusion.h.

+ +
+
+ +

◆ canProcessAsyncIMU()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::OdometryVINSFusion::canProcessAsyncIMU () const
+
+inlinevirtual
+
+
Returns
True if the backend processes IMU asynchronously outside process().
+ +

Reimplemented from rtabmap::Odometry.

+ +

Definition at line 46 of file OdometryVINSFusion.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.js new file mode 100644 index 00000000..1ddf44de --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1OdometryVINSFusion = +[ + [ "reset", "classrtabmap_1_1OdometryVINSFusion.html#aa2fdb97067ad27d76c6315125a513ed3", null ], + [ "getType", "classrtabmap_1_1OdometryVINSFusion.html#ac7e841322ccadfcfdec61cc3b698754a", null ], + [ "canProcessRawImages", "classrtabmap_1_1OdometryVINSFusion.html#a505ae049f32115a81d4f4258b5fb2134", null ], + [ "canProcessAsyncIMU", "classrtabmap_1_1OdometryVINSFusion.html#a1a3145c62e7b0b43cfb5a94f61d2c9d1", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.map new file mode 100644 index 00000000..c250577b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.md5 new file mode 100644 index 00000000..ee694588 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.md5 @@ -0,0 +1 @@ +165fba02a881e94f128ea6462b146d97 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb7b4d84a9862dfd01049af80b9cb6c82cb8a4b GIT binary patch literal 6121 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.map new file mode 100644 index 00000000..c250577b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.md5 new file mode 100644 index 00000000..ee694588 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.md5 @@ -0,0 +1 @@ +165fba02a881e94f128ea6462b146d97 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryVINSFusion__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb7b4d84a9862dfd01049af80b9cb6c82cb8a4b GIT binary patch literal 6121 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2-members.html new file mode 100644 index 00000000..c9ee52fc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2-members.html @@ -0,0 +1,153 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OdometryViso2 Member List
+
+
+ +

This is the complete list of members for rtabmap::OdometryViso2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canProcessAsyncIMU() constrtabmap::Odometryinlinevirtual
canProcessRawImages() constrtabmap::Odometryinlinevirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Odometrystatic
framesProcessed() constrtabmap::Odometryinline
getPose() constrtabmap::Odometryinline
getType()rtabmap::OdometryViso2inlinevirtual
getVelocityGuess() constrtabmap::Odometryinline
imagesAlreadyRectified() constrtabmap::Odometryinline
imus() constrtabmap::Odometryinlineprotected
isInfoDataFilled() constrtabmap::Odometryinline
kTypeCuVSLAM enum valuertabmap::Odometry
kTypeDVO enum valuertabmap::Odometry
kTypeF2F enum valuertabmap::Odometry
kTypeF2M enum valuertabmap::Odometry
kTypeFLOAM enum valuertabmap::Odometry
kTypeFovis enum valuertabmap::Odometry
kTypeLIOSAM enum valuertabmap::Odometry
kTypeLOAM enum valuertabmap::Odometry
kTypeMSCKF enum valuertabmap::Odometry
kTypeOkvis enum valuertabmap::Odometry
kTypeOpen3D enum valuertabmap::Odometry
kTypeOpenVINS enum valuertabmap::Odometry
kTypeORBSLAM enum valuertabmap::Odometry
kTypeUndef enum valuertabmap::Odometry
kTypeVINSFusion enum valuertabmap::Odometry
kTypeViso2 enum valuertabmap::Odometry
Odometry(const rtabmap::ParametersMap &parameters)rtabmap::Odometryprotected
OdometryViso2(const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap()) (defined in rtabmap::OdometryViso2)rtabmap::OdometryViso2
previousStamp() constrtabmap::Odometryinline
previousVelocityTransform() constrtabmap::Odometry
process(SensorData &data, OdometryInfo *info=0)rtabmap::Odometry
process(SensorData &data, const Transform &guess, OdometryInfo *info=0)rtabmap::Odometry
reset(const Transform &initialPose=Transform::getIdentity())rtabmap::OdometryViso2virtual
Type enum namertabmap::Odometry
~Odometry() (defined in rtabmap::Odometry)rtabmap::Odometryvirtual
~OdometryViso2() (defined in rtabmap::OdometryViso2)rtabmap::OdometryViso2virtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.html b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.html new file mode 100644 index 00000000..fd5ad224 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.html @@ -0,0 +1,289 @@ + + + + + + + + +RTAB-Map: rtabmap::OdometryViso2 Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OdometryViso2 Class Reference
+
+
+
+Inheritance diagram for rtabmap::OdometryViso2:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OdometryViso2:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OdometryViso2 (const rtabmap::ParametersMap &parameters=rtabmap::ParametersMap())
 
virtual void reset (const Transform &initialPose=Transform::getIdentity())
 Resets internal state and sets the initial pose.
 
virtual Odometry::Type getType ()
 
- Public Member Functions inherited from rtabmap::Odometry
Transform process (SensorData &data, OdometryInfo *info=0)
 Processes a sensor frame and updates the integrated pose.
 
Transform process (SensorData &data, const Transform &guess, OdometryInfo *info=0)
 Processes a sensor frame with an external motion guess.
 
virtual bool canProcessRawImages () const
 
virtual bool canProcessAsyncIMU () const
 
const Transform & getPose () const
 
bool isInfoDataFilled () const
 
RTABMAP_DEPRECATED const Transform & previousVelocityTransform () const
 
const Transform & getVelocityGuess () const
 
double previousStamp () const
 
unsigned int framesProcessed () const
 
bool imagesAlreadyRectified () const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Odometry
enum  Type {
+  kTypeUndef = -1 +, kTypeF2M = 0 +, kTypeF2F = 1 +, kTypeFovis = 2 +,
+  kTypeViso2 = 3 +, kTypeDVO = 4 +, kTypeORBSLAM = 5 +, kTypeOkvis = 6 +,
+  kTypeLOAM = 7 +, kTypeMSCKF = 8 +, kTypeVINSFusion = 9 +, kTypeOpenVINS = 10 +,
+  kTypeFLOAM = 11 +, kTypeOpen3D = 12 +, kTypeCuVSLAM = 13 +, kTypeLIOSAM = 14 +
+ }
 Odometry backend selected by Parameters::kOdomStrategy(). More...
 
- Static Public Member Functions inherited from rtabmap::Odometry
static Odometry * create (const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance from Parameters::kOdomStrategy() in parameters.
 
static Odometry * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates an odometry instance of a given type.
 
- Protected Member Functions inherited from rtabmap::Odometry
const std::map< double, Transform > & imus () const
 
+ Odometry (const rtabmap::ParametersMap &parameters)
 Constructs the base odometry state from RTAB-Map parameters.
 
+

Detailed Description

+
+

Definition at line 37 of file OdometryViso2.h.

+

Member Function Documentation

+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OdometryViso2::reset (const Transform & initialPose = Transform::getIdentity())
+
+virtual
+
+ +

Resets internal state and sets the initial pose.

+
Parameters
+ + +
initialPoseStarting pose (must not be null). Z/roll/pitch may be cleared if Parameters::kRegForce3DoF() is enabled.
+
+
+ +

Reimplemented from rtabmap::Odometry.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Odometry::Type rtabmap::OdometryViso2::getType ()
+
+inlinevirtual
+
+
Returns
Concrete odometry backend type.
+ +

Implements rtabmap::Odometry.

+ +

Definition at line 44 of file OdometryViso2.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.js b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.js new file mode 100644 index 00000000..c53fb83f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OdometryViso2 = +[ + [ "reset", "classrtabmap_1_1OdometryViso2.html#ad442b8186b72e220feace5fb0b0fec5c", null ], + [ "getType", "classrtabmap_1_1OdometryViso2.html#ae9bf8422bbf6d2c880098b828b5d6187", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.map new file mode 100644 index 00000000..bdac189d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.md5 new file mode 100644 index 00000000..7ff06872 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.md5 @@ -0,0 +1 @@ +396f87140fe8a797dd3425a64897c7a9 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..88492fe33ac80db58f403eb787ebbffb69fec8c8 GIT binary patch literal 5548 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.md5 new file mode 100644 index 00000000..7ff06872 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.md5 @@ -0,0 +1 @@ +396f87140fe8a797dd3425a64897c7a9 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OdometryViso2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..88492fe33ac80db58f403eb787ebbffb69fec8c8 GIT binary patch literal 5548 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.md5 new file mode 100644 index 00000000..5477f294 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.md5 @@ -0,0 +1 @@ +671065d71490d3becd7a082da712ae03 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Odometry__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1349295e421ff97d8e2c3255b960526a4b51abe5 GIT binary patch literal 94878 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%0AUo!)un?qBvV`9^Qm*5Uy!eLcpV& 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

S3QH`sgc98 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 HF6{pSDR4M+ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer-members.html new file mode 100644 index 00000000..646a7e6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer-members.html @@ -0,0 +1,156 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Optimizer Member List
+
+
+ +

This is the complete list of members for rtabmap::Optimizer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeBACorrespondences(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())rtabmap::Optimizer
create(const ParametersMap &parameters)rtabmap::Optimizerstatic
create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Optimizerstatic
epsilon() constrtabmap::Optimizerinline
getConnectedGraph(int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) constrtabmap::Optimizer
gravitySigma() constrtabmap::Optimizerinline
isAvailable(Optimizer::Type type)rtabmap::Optimizerstatic
isCovarianceIgnored() constrtabmap::Optimizerinline
isRobust() constrtabmap::Optimizerinline
isSlam2d() constrtabmap::Optimizerinline
iterations() constrtabmap::Optimizerinline
kTypeCeres enum valuertabmap::Optimizer
kTypeCVSBA enum valuertabmap::Optimizer
kTypeG2O enum valuertabmap::Optimizer
kTypeGTSAM enum valuertabmap::Optimizer
kTypeTORO enum valuertabmap::Optimizer
kTypeUndef enum valuertabmap::Optimizer
landmarksIgnored() constrtabmap::Optimizerinline
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizervirtual
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizervirtual
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizer
optimizeIncremental(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
Optimizer(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma()) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
Optimizer(const ParametersMap &parameters) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
parseParameters(const ParametersMap &parameters)rtabmap::Optimizervirtual
priorsIgnored() constrtabmap::Optimizerinline
setCovarianceIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setEpsilon(double epsilon) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setGravitySigma(float value) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setIterations(int iterations) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setLandmarksIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setPriorsIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setRobust(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setSlam2d(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
type() const =0rtabmap::Optimizerpure virtual
Type enum namertabmap::Optimizer
~Optimizer() (defined in rtabmap::Optimizer)rtabmap::Optimizerinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.html b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.html new file mode 100644 index 00000000..124eb827 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.html @@ -0,0 +1,1446 @@ + + + + + + + + +RTAB-Map: rtabmap::Optimizer Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract base for pose-graph and bundle-adjustment optimizers. + More...

+ +

#include <Optimizer.h>

+
+Inheritance diagram for rtabmap::Optimizer:
+
+
Inheritance graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + +

+Public Types

enum  Type {
+  kTypeUndef = -1 +, kTypeTORO = 0 +, kTypeG2O = 1 +, kTypeGTSAM = 2 +,
+  kTypeCeres = 3 +, kTypeCVSBA = 4 +
+ }
 Graph-optimizer back-end identifier. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void getConnectedGraph (int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
 Extracts the connected component reachable from fromId.
 
virtual Type type () const =0
 Returns the concrete back-end identifier (one of Type).
 
virtual void parseParameters (const ParametersMap &parameters)
 Reads shared knobs from parameters and applies them to this instance.
 
std::map< int, Transform > optimizeIncremental (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization that grows the graph one node at a time.
 
std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization (single shot).
 
virtual std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization with marginal covariance of rootId.
 
virtual std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
 
std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA wrapper that derives camera models and correspondences from signatures.
 
+std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map.
 
Transform optimizeBA (const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Refine a single two-frame link via BA.
 
void computeBACorrespondences (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
 Build BA correspondences (3D points + per-frame observations) from signatures.
 
Getters for the settings shared across back-ends.
int iterations () const
 Max solver iterations.
 
bool isSlam2d () const
 True if optimizing in SE(2) instead of SE(3).
 
bool isCovarianceIgnored () const
 If true, all edges share an identity information matrix.
 
double epsilon () const
 Convergence threshold on cost decrease.
 
bool isRobust () const
 If true, use a robust kernel / switchable factors against bad loop closures.
 
bool priorsIgnored () const
 If true, unary priors on poses are dropped.
 
bool landmarksIgnored () const
 If true, landmark/marker observations are dropped.
 
float gravitySigma () const
 Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
 
Setters mirroring the corresponding getters.
void setIterations (int iterations)
 
void setSlam2d (bool enabled)
 
void setCovarianceIgnored (bool enabled)
 
void setEpsilon (double epsilon)
 
void setRobust (bool enabled)
 
void setPriorsIgnored (bool enabled)
 
void setLandmarksIgnored (bool enabled)
 
void setGravitySigma (float value)
 
+ + + + + + + + + + +

+Static Public Member Functions

static bool isAvailable (Optimizer::Type type)
 Returns whether type was compiled in (its third-party dependency was found).
 
static Optimizer * create (const ParametersMap &parameters)
 Factory: build an optimizer from a ParametersMap.
 
+static Optimizer * create (Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
 Factory: build an optimizer of a specific type. Caller owns the result.
 
+ + + + + +

+Protected Member Functions

+ Optimizer (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma())
 
+ Optimizer (const ParametersMap &parameters)
 
+

Detailed Description

+

Abstract base for pose-graph and bundle-adjustment optimizers.

+

Optimizer is a factory + interface in front of several third-party back-ends (TORO, g2o, GTSAM, Ceres, cvsba). Use create() to instantiate one based on the Optimizer/Strategy parameter; use isAvailable() to check whether a given back-end was compiled in.

+

Two families of methods are exposed:

    +
  • Pose-graph optimization (optimize / optimizeIncremental) — refines poses given relative-pose constraints. Subclasses override optimize() with covariance output.
  • +
  • Bundle adjustment (optimizeBA) — jointly refines poses and 3D points using reprojection error. Subclasses override the lowest-level overload; the others are convenience wrappers that fill in models/correspondences from Signature data.
  • +
+

Common knobs (iterations, robust kernels, 2D-vs-3D, etc.) are configured through parseParameters() or per-attribute setters and apply to whichever back-end is selected.

+ +

Definition at line 90 of file Optimizer.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::Optimizer::Type
+
+ +

Graph-optimizer back-end identifier.

+ + + + + + + +
Enumerator
kTypeUndef 

Unspecified / invalid.

+
kTypeTORO 

TORO (tree-based relaxation).

+
kTypeG2O 

g2o (general graph optimization, supports BA).

+
kTypeGTSAM 

GTSAM (factor graphs, iSAM2-style incremental).

+
kTypeCeres 

Ceres Solver (nonlinear least squares, supports BA).

+
kTypeCVSBA 

cvsba (sparse bundle adjustment only).

+
+ +

Definition at line 94 of file Optimizer.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~Optimizer()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::Optimizer::~Optimizer ()
+
+inlinevirtual
+
+ +

Definition at line 138 of file Optimizer.h.

+ +
+
+

Member Function Documentation

+ +

◆ isAvailable()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool rtabmap::Optimizer::isAvailable (Optimizer::Type type)
+
+static
+
+ +

Returns whether type was compiled in (its third-party dependency was found).

+

kTypeUndef is treated as unavailable. create() falls back through this check to pick the first available back-end when the requested one is missing.

+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
static Optimizer * rtabmap::Optimizer::create (const ParametersMap & parameters)
+
+static
+
+ +

Factory: build an optimizer from a ParametersMap.

+

Reads Optimizer/Strategy from parameters; falls back to the default strategy if the chosen back-end isn't compiled in. Caller owns the returned pointer.

+ +
+
+ +

◆ getConnectedGraph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Optimizer::getConnectedGraph (int fromId,
const std::map< int, Transform > & posesIn,
const std::multimap< int, Link > & linksIn,
std::map< int, Transform > & posesOut,
std::multimap< int, Link > & linksOut 
) const
+
+ +

Extracts the connected component reachable from fromId.

+

Walks linksIn breadth-first starting at fromId and copies every visited pose (from posesIn) and every traversed link into posesOut / linksOut. Use this to isolate the subgraph that actually affects fromId before calling optimize(), since the back-ends require a single connected component.

+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Type rtabmap::Optimizer::type () const
+
+pure virtual
+
+ +

Returns the concrete back-end identifier (one of Type).

+ +

Implemented in rtabmap::OptimizerCeres, rtabmap::OptimizerCVSBA, rtabmap::OptimizerG2O, rtabmap::OptimizerGTSAM, and rtabmap::OptimizerTORO.

+ +
+
+ +

◆ iterations()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Optimizer::iterations () const
+
+inline
+
+ +

Max solver iterations.

+ +

Definition at line 145 of file Optimizer.h.

+ +
+
+ +

◆ isSlam2d()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Optimizer::isSlam2d () const
+
+inline
+
+ +

True if optimizing in SE(2) instead of SE(3).

+ +

Definition at line 146 of file Optimizer.h.

+ +
+
+ +

◆ isCovarianceIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Optimizer::isCovarianceIgnored () const
+
+inline
+
+ +

If true, all edges share an identity information matrix.

+ +

Definition at line 147 of file Optimizer.h.

+ +
+
+ +

◆ epsilon()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::Optimizer::epsilon () const
+
+inline
+
+ +

Convergence threshold on cost decrease.

+ +

Definition at line 148 of file Optimizer.h.

+ +
+
+ +

◆ isRobust()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Optimizer::isRobust () const
+
+inline
+
+ +

If true, use a robust kernel / switchable factors against bad loop closures.

+ +

Definition at line 149 of file Optimizer.h.

+ +
+
+ +

◆ priorsIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Optimizer::priorsIgnored () const
+
+inline
+
+ +

If true, unary priors on poses are dropped.

+ +

Definition at line 150 of file Optimizer.h.

+ +
+
+ +

◆ landmarksIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Optimizer::landmarksIgnored () const
+
+inline
+
+ +

If true, landmark/marker observations are dropped.

+ +

Definition at line 151 of file Optimizer.h.

+ +
+
+ +

◆ gravitySigma()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Optimizer::gravitySigma () const
+
+inline
+
+ +

Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.

+ +

Definition at line 152 of file Optimizer.h.

+ +
+
+ +

◆ setIterations()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setIterations (int iterations)
+
+inline
+
+ +

Definition at line 157 of file Optimizer.h.

+ +
+
+ +

◆ setSlam2d()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setSlam2d (bool enabled)
+
+inline
+
+ +

Definition at line 158 of file Optimizer.h.

+ +
+
+ +

◆ setCovarianceIgnored()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setCovarianceIgnored (bool enabled)
+
+inline
+
+ +

Definition at line 159 of file Optimizer.h.

+ +
+
+ +

◆ setEpsilon()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setEpsilon (double epsilon)
+
+inline
+
+ +

Definition at line 160 of file Optimizer.h.

+ +
+
+ +

◆ setRobust()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setRobust (bool enabled)
+
+inline
+
+ +

Definition at line 161 of file Optimizer.h.

+ +
+
+ +

◆ setPriorsIgnored()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setPriorsIgnored (bool enabled)
+
+inline
+
+ +

Definition at line 162 of file Optimizer.h.

+ +
+
+ +

◆ setLandmarksIgnored()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setLandmarksIgnored (bool enabled)
+
+inline
+
+ +

Definition at line 163 of file Optimizer.h.

+ +
+
+ +

◆ setGravitySigma()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Optimizer::setGravitySigma (float value)
+
+inline
+
+ +

Definition at line 164 of file Optimizer.h.

+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::Optimizer::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Reads shared knobs from parameters and applies them to this instance.

+

Subclasses override to additionally read back-end-specific keys (e.g. g2o/Solver, GTSAM/Optimizer); they should call this base implementation first.

+ +

Reimplemented in rtabmap::OptimizerCeres, rtabmap::OptimizerG2O, and rtabmap::OptimizerGTSAM.

+ +
+
+ +

◆ optimizeIncremental()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, Transform > rtabmap::Optimizer::optimizeIncremental (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints,
std::list< std::map< int, Transform > > * intermediateGraphes = 0,
double * finalError = 0,
int * iterationsDone = 0 
)
+
+ +

Pose-graph optimization that grows the graph one node at a time.

+

Inserts poses in poses iteration order, propagating odometry edges (Neighbor / NeighborMerged) directly and triggering a call to optimize() whenever a loop closure is added. A final full optimize() pass anchors at rootId. Useful for warm-starting heavily-deformed initial guesses where a single-shot optimize() can diverge.

+
Parameters
+ + + + + + + +
rootIdPose whose absolute transform is held fixed.
posesInitial poses keyed by id.
constraintsRelative-pose constraints (see Link::Type).
intermediateGraphesOptional: appended per outer iteration for debug/visualization.
finalErrorOptional: written with the solver's final cost.
iterationsDoneOptional: written with the solver's actual iteration count.
+
+
+
Returns
Refined poses (same key set as poses), or empty on failure.
+ +
+
+ +

◆ optimize() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, Transform > rtabmap::Optimizer::optimize (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints,
std::list< std::map< int, Transform > > * intermediateGraphes = 0,
double * finalError = 0,
int * iterationsDone = 0 
)
+
+ +

Pose-graph optimization (single shot).

+

Convenience overload that discards the output covariance. See the covariance-returning overload below for parameter docs.

+ +
+
+ +

◆ optimize() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::Optimizer::optimize (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints,
cv::Mat & outputCovariance,
std::list< std::map< int, Transform > > * intermediateGraphes = 0,
double * finalError = 0,
int * iterationsDone = 0 
)
+
+virtual
+
+ +

Pose-graph optimization with marginal covariance of rootId.

+

This is the primary back-end entry point — concrete subclasses override it. The base implementation just emits an error.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed during optimization.
posesInitial pose estimates.
constraintsRelative-pose constraints between pose ids (and optionally to landmarks).
outputCovarianceOutput: 6x6 covariance of the last optimized pose w.r.t. rootId (3x3 for 2D mode). Filled only if the back-end supports it.
intermediateGraphesOptional: appended at each iteration for debug/visualization.
finalErrorOptional: written with the solver's final cost.
iterationsDoneOptional: written with the solver's actual iteration count.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented in rtabmap::OptimizerCeres, rtabmap::OptimizerG2O, rtabmap::OptimizerGTSAM, and rtabmap::OptimizerTORO.

+ +
+
+ +

◆ optimizeBA() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::Optimizer::optimizeBA (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & links,
const std::map< int, std::vector< CameraModel > > & models,
std::map< int, cv::Point3f > & points3DMap,
const std::map< int, std::map< int, FeatureBA > > & wordReferences,
BAOutliers * outliers = 0 
)
+
+virtual
+
+ +

Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).

+

Concrete subclasses (g2o, Ceres, cvsba) override this; the base implementation errors out. The other optimizeBA() overloads ultimately funnel here.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed. If negative, ALL poses other than the (positive) lowest id are held fixed.
posesInitial pose estimates keyed by frame id.
linksEdges used to define the BA problem topology.
modelsCamera model(s) per frame; for stereo, Tx must be set on the model (= -baseline*fx). Multi-camera rigs have multiple entries per frame.
points3DMapIn/out: world 3D points keyed by word id; refined on return.
wordReferencesObservations: <wordId, <frameId, FeatureBA>>. See FeatureBA.
outliersOptional output: word ids dropped by the back-end's outlier rejection.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented in rtabmap::OptimizerCeres, rtabmap::OptimizerCVSBA, rtabmap::OptimizerG2O, and rtabmap::OptimizerGTSAM.

+ +
+
+ +

◆ optimizeBA() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, Transform > rtabmap::Optimizer::optimizeBA (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & links,
const std::map< int, Signature > & signatures,
std::map< int, cv::Point3f > & points3DMap,
std::map< int, std::map< int, FeatureBA > > & wordReferences,
bool rematchFeatures = false,
const ParametersMap & registrationParameters = ParametersMap() 
)
+
+ +

BA wrapper that derives camera models and correspondences from signatures.

+

Builds models per frame from each Signature's SensorData (mono or stereo, with stereo-baseline encoded in Tx), calls computeBACorrespondences() to populate points3DMap / wordReferences from the signatures' words, then delegates to the back-end overload above.

+
Parameters
+ + + +
rematchFeaturesIf true, re-match descriptors across linked frames before building correspondences (more accurate, more expensive).
registrationParametersForwarded to RegistrationVis when re-matching.
+
+
+ +
+
+ +

◆ optimizeBA() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Transform rtabmap::Optimizer::optimizeBA (const Link & link,
const CameraModel & model,
std::map< int, cv::Point3f > & points3DMap,
const std::map< int, std::map< int, FeatureBA > > & wordReferences,
BAOutliers * outliers = 0 
)
+
+ +

Refine a single two-frame link via BA.

+

Sets the from frame at identity and the to frame at link.transform(), then runs BA over the supplied 3D points and observations. Returns the refined relative transform, or link.transform() unchanged on failure.

+ +
+
+ +

◆ computeBACorrespondences()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Optimizer::computeBACorrespondences (const std::map< int, Transform > & poses,
const std::multimap< int, Link > & links,
const std::map< int, Signature > & signatures,
std::map< int, cv::Point3f > & points3DMap,
std::map< int, std::map< int, FeatureBA > > & wordReferences,
bool rematchFeatures = false,
bool useLinkTransformAsGuess = false,
ParametersMap registrationParameters = ParametersMap() 
)
+
+ +

Build BA correspondences (3D points + per-frame observations) from signatures.

+

For each link, matches words between the two signatures with RegistrationVis, triangulates / lifts depth into world coordinates using the frames' initial poses, and populates points3DMap (one entry per word id) and wordReferences (one entry per (word, frame) observation).

+
Parameters
+ + + + +
rematchFeaturesIf true, descriptors are re-matched between frames instead of relying on pre-existing word ids — more robust to feature drift.
useLinkTransformAsGuessIf true, the link's transform seeds the PnP guess instead of estimating it from scratch.
registrationParametersForwarded to RegistrationVis (estimation type, inlier counts, NNDR, etc.).
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.js b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.js new file mode 100644 index 00000000..443a3e4e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer.js @@ -0,0 +1,30 @@ +var classrtabmap_1_1Optimizer = +[ + [ "Type", "classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16", [ + [ "kTypeUndef", "classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16abae75975865bff7e12e82d2f5295e0db", null ], + [ "kTypeTORO", "classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a6065bdb6e49c0f5ffc98d5f2f6b0d5ab", null ], + [ "kTypeG2O", "classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16aa4d070fe00ba5e81adbc958bad18d853", null ], + [ "kTypeGTSAM", "classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16ab71c83617497f5da0607a47ab162630f", null ], + [ "kTypeCeres", "classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a891b6c7cbbe5e149e583ac1fc14fc91d", null ], + [ "kTypeCVSBA", "classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a53545e83af9618cb4d39cf0420b3cd54", null ] + ] ], + [ "getConnectedGraph", "classrtabmap_1_1Optimizer.html#a4477c9a5b6651729944726465b5eba7f", null ], + [ "type", "classrtabmap_1_1Optimizer.html#aa2be82e1f986b1beae103148be7cd520", null ], + [ "iterations", "classrtabmap_1_1Optimizer.html#a178bb719b0e22863e29add12c85e14a5", null ], + [ "isSlam2d", "classrtabmap_1_1Optimizer.html#a51485674608bbf910922ecee43cc13aa", null ], + [ "isCovarianceIgnored", "classrtabmap_1_1Optimizer.html#a8bb6372ce4c67fd9b8d54f692ac34238", null ], + [ "epsilon", "classrtabmap_1_1Optimizer.html#a3bca4e3df1048f8bbad9b3b9473924a2", null ], + [ "isRobust", "classrtabmap_1_1Optimizer.html#a29ba07e1e829ae616d82756977161c9f", null ], + [ "priorsIgnored", "classrtabmap_1_1Optimizer.html#aeebd0d5575ab7e9f492b095c05ddb237", null ], + [ "landmarksIgnored", "classrtabmap_1_1Optimizer.html#a32f53d408ef0372c5c196ee89ff5ad79", null ], + [ "gravitySigma", "classrtabmap_1_1Optimizer.html#aceb68e0f692b81c4a978e46f804515d7", null ], + [ "parseParameters", "classrtabmap_1_1Optimizer.html#a0a942bd7902c8d2f9444b8eba6a648a3", null ], + [ "optimizeIncremental", "classrtabmap_1_1Optimizer.html#a278f42e0d250085ac6fe9ed425627acf", null ], + [ "optimize", "classrtabmap_1_1Optimizer.html#a7e3aff943e77603493a358ff522fa2dc", null ], + [ "optimize", "classrtabmap_1_1Optimizer.html#af59c8340394268f9a1eb76fd5709f2c3", null ], + [ "optimizeBA", "classrtabmap_1_1Optimizer.html#a1122f017f10105f7e6c14039d41709e5", null ], + [ "optimizeBA", "classrtabmap_1_1Optimizer.html#a2f7cbdebed9787ffa6b0b30536dfa1a0", null ], + [ "optimizeBA", "classrtabmap_1_1Optimizer.html#aab99f045516162944ad68fdabacb53dc", null ], + [ "optimizeBA", "classrtabmap_1_1Optimizer.html#aedaeb7cc371f3685f8595d9a151f6605", null ], + [ "computeBACorrespondences", "classrtabmap_1_1Optimizer.html#a93fb09dac068e64de000f692bcb8216f", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA-members.html new file mode 100644 index 00000000..daf68a97 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA-members.html @@ -0,0 +1,160 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OptimizerCVSBA Member List
+
+
+ +

This is the complete list of members for rtabmap::OptimizerCVSBA, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::OptimizerCVSBA)rtabmap::OptimizerCVSBAstatic
computeBACorrespondences(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())rtabmap::Optimizer
create(const ParametersMap &parameters)rtabmap::Optimizerstatic
create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Optimizerstatic
epsilon() constrtabmap::Optimizerinline
getConnectedGraph(int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) constrtabmap::Optimizer
gravitySigma() constrtabmap::Optimizerinline
isAvailable(Optimizer::Type type)rtabmap::Optimizerstatic
isCovarianceIgnored() constrtabmap::Optimizerinline
isRobust() constrtabmap::Optimizerinline
isSlam2d() constrtabmap::Optimizerinline
iterations() constrtabmap::Optimizerinline
kTypeCeres enum valuertabmap::Optimizer
kTypeCVSBA enum valuertabmap::Optimizer
kTypeG2O enum valuertabmap::Optimizer
kTypeGTSAM enum valuertabmap::Optimizer
kTypeTORO enum valuertabmap::Optimizer
kTypeUndef enum valuertabmap::Optimizer
landmarksIgnored() constrtabmap::Optimizerinline
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizervirtual
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::OptimizerCVSBAvirtual
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizer
optimizeIncremental(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
Optimizer(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma()) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
Optimizer(const ParametersMap &parameters) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
OptimizerCVSBA(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored()) (defined in rtabmap::OptimizerCVSBA)rtabmap::OptimizerCVSBAinline
OptimizerCVSBA(const ParametersMap &parameters) (defined in rtabmap::OptimizerCVSBA)rtabmap::OptimizerCVSBAinline
parseParameters(const ParametersMap &parameters)rtabmap::Optimizervirtual
priorsIgnored() constrtabmap::Optimizerinline
setCovarianceIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setEpsilon(double epsilon) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setGravitySigma(float value) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setIterations(int iterations) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setLandmarksIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setPriorsIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setRobust(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setSlam2d(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
Type enum namertabmap::Optimizer
type() constrtabmap::OptimizerCVSBAinlinevirtual
~Optimizer() (defined in rtabmap::Optimizer)rtabmap::Optimizerinlinevirtual
~OptimizerCVSBA() (defined in rtabmap::OptimizerCVSBA)rtabmap::OptimizerCVSBAinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.html new file mode 100644 index 00000000..7e9844f9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.html @@ -0,0 +1,483 @@ + + + + + + + + +RTAB-Map: rtabmap::OptimizerCVSBA Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OptimizerCVSBA Class Reference
+
+
+
+Inheritance diagram for rtabmap::OptimizerCVSBA:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OptimizerCVSBA:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 OptimizerCVSBA (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored())
 
 OptimizerCVSBA (const ParametersMap &parameters)
 
virtual Type type () const
 Returns the concrete back-end identifier (one of Type).
 
virtual std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
 
- Public Member Functions inherited from rtabmap::Optimizer
void getConnectedGraph (int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
 Extracts the connected component reachable from fromId.
 
virtual void parseParameters (const ParametersMap &parameters)
 Reads shared knobs from parameters and applies them to this instance.
 
std::map< int, Transform > optimizeIncremental (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization that grows the graph one node at a time.
 
std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization (single shot).
 
virtual std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization with marginal covariance of rootId.
 
std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA wrapper that derives camera models and correspondences from signatures.
 
+std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map.
 
Transform optimizeBA (const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Refine a single two-frame link via BA.
 
void computeBACorrespondences (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
 Build BA correspondences (3D points + per-frame observations) from signatures.
 
int iterations () const
 Max solver iterations.
 
bool isSlam2d () const
 True if optimizing in SE(2) instead of SE(3).
 
bool isCovarianceIgnored () const
 If true, all edges share an identity information matrix.
 
double epsilon () const
 Convergence threshold on cost decrease.
 
bool isRobust () const
 If true, use a robust kernel / switchable factors against bad loop closures.
 
bool priorsIgnored () const
 If true, unary priors on poses are dropped.
 
bool landmarksIgnored () const
 If true, landmark/marker observations are dropped.
 
float gravitySigma () const
 Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
 
void setIterations (int iterations)
 
void setSlam2d (bool enabled)
 
void setCovarianceIgnored (bool enabled)
 
void setEpsilon (double epsilon)
 
void setRobust (bool enabled)
 
void setPriorsIgnored (bool enabled)
 
void setLandmarksIgnored (bool enabled)
 
void setGravitySigma (float value)
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

+static bool available ()
 
- Static Public Member Functions inherited from rtabmap::Optimizer
static bool isAvailable (Optimizer::Type type)
 Returns whether type was compiled in (its third-party dependency was found).
 
static Optimizer * create (const ParametersMap &parameters)
 Factory: build an optimizer from a ParametersMap.
 
+static Optimizer * create (Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
 Factory: build an optimizer of a specific type. Caller owns the result.
 
+ + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Optimizer
enum  Type {
+  kTypeUndef = -1 +, kTypeTORO = 0 +, kTypeG2O = 1 +, kTypeGTSAM = 2 +,
+  kTypeCeres = 3 +, kTypeCVSBA = 4 +
+ }
 Graph-optimizer back-end identifier. More...
 
- Protected Member Functions inherited from rtabmap::Optimizer
+ Optimizer (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma())
 
+ Optimizer (const ParametersMap &parameters)
 
+

Detailed Description

+
+

Definition at line 35 of file OptimizerCVSBA.h.

+

Constructor & Destructor Documentation

+ +

◆ OptimizerCVSBA() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::OptimizerCVSBA::OptimizerCVSBA (int iterations = Parameters::defaultOptimizerIterations(),
bool slam2d = Parameters::defaultRegForce3DoF(),
bool covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored() 
)
+
+inline
+
+ +

Definition at line 41 of file OptimizerCVSBA.h.

+ +
+
+ +

◆ OptimizerCVSBA() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::OptimizerCVSBA::OptimizerCVSBA (const ParametersMap & parameters)
+
+inline
+
+ +

Definition at line 46 of file OptimizerCVSBA.h.

+ +
+
+ +

◆ ~OptimizerCVSBA()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::OptimizerCVSBA::~OptimizerCVSBA ()
+
+inlinevirtual
+
+ +

Definition at line 48 of file OptimizerCVSBA.h.

+ +
+
+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Type rtabmap::OptimizerCVSBA::type () const
+
+inlinevirtual
+
+ +

Returns the concrete back-end identifier (one of Type).

+ +

Implements rtabmap::Optimizer.

+ +

Definition at line 50 of file OptimizerCVSBA.h.

+ +
+
+ +

◆ optimizeBA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerCVSBA::optimizeBA (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & links,
const std::map< int, std::vector< CameraModel > > & models,
std::map< int, cv::Point3f > & points3DMap,
const std::map< int, std::map< int, FeatureBA > > & wordReferences,
BAOutliers * outliers = 0 
)
+
+virtual
+
+ +

Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).

+

Concrete subclasses (g2o, Ceres, cvsba) override this; the base implementation errors out. The other optimizeBA() overloads ultimately funnel here.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed. If negative, ALL poses other than the (positive) lowest id are held fixed.
posesInitial pose estimates keyed by frame id.
linksEdges used to define the BA problem topology.
modelsCamera model(s) per frame; for stereo, Tx must be set on the model (= -baseline*fx). Multi-camera rigs have multiple entries per frame.
points3DMapIn/out: world 3D points keyed by word id; refined on return.
wordReferencesObservations: <wordId, <frameId, FeatureBA>>. See FeatureBA.
outliersOptional output: word ids dropped by the back-end's outlier rejection.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.js b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.js new file mode 100644 index 00000000..5628d003 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OptimizerCVSBA = +[ + [ "type", "classrtabmap_1_1OptimizerCVSBA.html#afbf58e60900671630e0974a13e49b2b0", null ], + [ "optimizeBA", "classrtabmap_1_1OptimizerCVSBA.html#a48fce33707a004a0d89db99c1c39d999", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.map new file mode 100644 index 00000000..eb0e5b5b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.md5 new file mode 100644 index 00000000..96935c03 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.md5 @@ -0,0 +1 @@ +d13302c03cebb72e285ebd73f677b22a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7b418abf8f411528980fd6bd88bad4f04c3c1daa GIT binary patch literal 5265 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.md5 new file mode 100644 index 00000000..96935c03 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.md5 @@ -0,0 +1 @@ +d13302c03cebb72e285ebd73f677b22a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCVSBA__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7b418abf8f411528980fd6bd88bad4f04c3c1daa GIT binary patch literal 5265 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OptimizerCeres Member List
+
+
+ +

This is the complete list of members for rtabmap::OptimizerCeres, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::OptimizerCeres)rtabmap::OptimizerCeresstatic
computeBACorrespondences(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())rtabmap::Optimizer
create(const ParametersMap &parameters)rtabmap::Optimizerstatic
create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Optimizerstatic
epsilon() constrtabmap::Optimizerinline
getConnectedGraph(int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) constrtabmap::Optimizer
gravitySigma() constrtabmap::Optimizerinline
isAvailable(Optimizer::Type type)rtabmap::Optimizerstatic
isCovarianceIgnored() constrtabmap::Optimizerinline
isRobust() constrtabmap::Optimizerinline
isSlam2d() constrtabmap::Optimizerinline
iterations() constrtabmap::Optimizerinline
kTypeCeres enum valuertabmap::Optimizer
kTypeCVSBA enum valuertabmap::Optimizer
kTypeG2O enum valuertabmap::Optimizer
kTypeGTSAM enum valuertabmap::Optimizer
kTypeTORO enum valuertabmap::Optimizer
kTypeUndef enum valuertabmap::Optimizer
landmarksIgnored() constrtabmap::Optimizerinline
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::OptimizerCeresvirtual
rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::OptimizerCeresvirtual
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizer
optimizeIncremental(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
Optimizer(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma()) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
Optimizer(const ParametersMap &parameters) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
OptimizerCeres(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon()) (defined in rtabmap::OptimizerCeres)rtabmap::OptimizerCeresinline
OptimizerCeres(const ParametersMap &parameters) (defined in rtabmap::OptimizerCeres)rtabmap::OptimizerCeres
parseParameters(const ParametersMap &parameters)rtabmap::OptimizerCeresvirtual
priorsIgnored() constrtabmap::Optimizerinline
setCovarianceIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setEpsilon(double epsilon) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setGravitySigma(float value) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setIterations(int iterations) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setLandmarksIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setPriorsIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setRobust(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setSlam2d(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
type() constrtabmap::OptimizerCeresinlinevirtual
Type enum namertabmap::Optimizer
~Optimizer() (defined in rtabmap::Optimizer)rtabmap::Optimizerinlinevirtual
~OptimizerCeres() (defined in rtabmap::OptimizerCeres)rtabmap::OptimizerCeresinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.html new file mode 100644 index 00000000..55836a4f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.html @@ -0,0 +1,577 @@ + + + + + + + + +RTAB-Map: rtabmap::OptimizerCeres Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OptimizerCeres Class Reference
+
+
+
+Inheritance diagram for rtabmap::OptimizerCeres:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OptimizerCeres:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 OptimizerCeres (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon())
 
+ OptimizerCeres (const ParametersMap &parameters)
 
virtual Type type () const
 Returns the concrete back-end identifier (one of Type).
 
virtual void parseParameters (const ParametersMap &parameters)
 Reads shared knobs from parameters and applies them to this instance.
 
virtual std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization with marginal covariance of rootId.
 
virtual std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
 
- Public Member Functions inherited from rtabmap::Optimizer
void getConnectedGraph (int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
 Extracts the connected component reachable from fromId.
 
std::map< int, Transform > optimizeIncremental (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization that grows the graph one node at a time.
 
std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization (single shot).
 
std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA wrapper that derives camera models and correspondences from signatures.
 
+std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map.
 
Transform optimizeBA (const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Refine a single two-frame link via BA.
 
void computeBACorrespondences (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
 Build BA correspondences (3D points + per-frame observations) from signatures.
 
int iterations () const
 Max solver iterations.
 
bool isSlam2d () const
 True if optimizing in SE(2) instead of SE(3).
 
bool isCovarianceIgnored () const
 If true, all edges share an identity information matrix.
 
double epsilon () const
 Convergence threshold on cost decrease.
 
bool isRobust () const
 If true, use a robust kernel / switchable factors against bad loop closures.
 
bool priorsIgnored () const
 If true, unary priors on poses are dropped.
 
bool landmarksIgnored () const
 If true, landmark/marker observations are dropped.
 
float gravitySigma () const
 Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
 
void setIterations (int iterations)
 
void setSlam2d (bool enabled)
 
void setCovarianceIgnored (bool enabled)
 
void setEpsilon (double epsilon)
 
void setRobust (bool enabled)
 
void setPriorsIgnored (bool enabled)
 
void setLandmarksIgnored (bool enabled)
 
void setGravitySigma (float value)
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

+static bool available ()
 
- Static Public Member Functions inherited from rtabmap::Optimizer
static bool isAvailable (Optimizer::Type type)
 Returns whether type was compiled in (its third-party dependency was found).
 
static Optimizer * create (const ParametersMap &parameters)
 Factory: build an optimizer from a ParametersMap.
 
+static Optimizer * create (Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
 Factory: build an optimizer of a specific type. Caller owns the result.
 
+ + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Optimizer
enum  Type {
+  kTypeUndef = -1 +, kTypeTORO = 0 +, kTypeG2O = 1 +, kTypeGTSAM = 2 +,
+  kTypeCeres = 3 +, kTypeCVSBA = 4 +
+ }
 Graph-optimizer back-end identifier. More...
 
- Protected Member Functions inherited from rtabmap::Optimizer
+ Optimizer (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma())
 
+ Optimizer (const ParametersMap &parameters)
 
+

Detailed Description

+
+

Definition at line 35 of file OptimizerCeres.h.

+

Constructor & Destructor Documentation

+ +

◆ OptimizerCeres()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::OptimizerCeres::OptimizerCeres (int iterations = Parameters::defaultOptimizerIterations(),
bool slam2d = Parameters::defaultRegForce3DoF(),
bool covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored(),
double epsilon = Parameters::defaultOptimizerEpsilon() 
)
+
+inline
+
+ +

Definition at line 41 of file OptimizerCeres.h.

+ +
+
+ +

◆ ~OptimizerCeres()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::OptimizerCeres::~OptimizerCeres ()
+
+inlinevirtual
+
+ +

Definition at line 52 of file OptimizerCeres.h.

+ +
+
+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Type rtabmap::OptimizerCeres::type () const
+
+inlinevirtual
+
+ +

Returns the concrete back-end identifier (one of Type).

+ +

Implements rtabmap::Optimizer.

+ +

Definition at line 54 of file OptimizerCeres.h.

+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OptimizerCeres::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Reads shared knobs from parameters and applies them to this instance.

+

Subclasses override to additionally read back-end-specific keys (e.g. g2o/Solver, GTSAM/Optimizer); they should call this base implementation first.

+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+ +

◆ optimize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerCeres::optimize (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints,
cv::Mat & outputCovariance,
std::list< std::map< int, Transform > > * intermediateGraphes = 0,
double * finalError = 0,
int * iterationsDone = 0 
)
+
+virtual
+
+ +

Pose-graph optimization with marginal covariance of rootId.

+

This is the primary back-end entry point — concrete subclasses override it. The base implementation just emits an error.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed during optimization.
posesInitial pose estimates.
constraintsRelative-pose constraints between pose ids (and optionally to landmarks).
outputCovarianceOutput: 6x6 covariance of the last optimized pose w.r.t. rootId (3x3 for 2D mode). Filled only if the back-end supports it.
intermediateGraphesOptional: appended at each iteration for debug/visualization.
finalErrorOptional: written with the solver's final cost.
iterationsDoneOptional: written with the solver's actual iteration count.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+ +

◆ optimizeBA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerCeres::optimizeBA (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & links,
const std::map< int, std::vector< CameraModel > > & models,
std::map< int, cv::Point3f > & points3DMap,
const std::map< int, std::map< int, FeatureBA > > & wordReferences,
BAOutliers * outliers = 0 
)
+
+virtual
+
+ +

Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).

+

Concrete subclasses (g2o, Ceres, cvsba) override this; the base implementation errors out. The other optimizeBA() overloads ultimately funnel here.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed. If negative, ALL poses other than the (positive) lowest id are held fixed.
posesInitial pose estimates keyed by frame id.
linksEdges used to define the BA problem topology.
modelsCamera model(s) per frame; for stereo, Tx must be set on the model (= -baseline*fx). Multi-camera rigs have multiple entries per frame.
points3DMapIn/out: world 3D points keyed by word id; refined on return.
wordReferencesObservations: <wordId, <frameId, FeatureBA>>. See FeatureBA.
outliersOptional output: word ids dropped by the back-end's outlier rejection.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.js b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.js new file mode 100644 index 00000000..dc12c8f4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1OptimizerCeres = +[ + [ "type", "classrtabmap_1_1OptimizerCeres.html#ad6d6c0a0cdbea0ee5082d3aaa94d8e7a", null ], + [ "parseParameters", "classrtabmap_1_1OptimizerCeres.html#aaa1128eeb38451086c7abd58ae6142ac", null ], + [ "optimize", "classrtabmap_1_1OptimizerCeres.html#ab988decf55da4a8821931855ddaa1c1a", null ], + [ "optimizeBA", "classrtabmap_1_1OptimizerCeres.html#af5c6d465dc4fa7c9045cd241dae5d077", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.map new file mode 100644 index 00000000..980f7274 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.md5 new file mode 100644 index 00000000..f9275d1f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.md5 @@ -0,0 +1 @@ +1d44d14f3acbc2c49c4bfcea1084e2da \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe4c16ea473f1dda45ca8f3d4651f8894d4f0ca GIT binary patch literal 4677 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.map new file mode 100644 index 00000000..980f7274 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.md5 new file mode 100644 index 00000000..f9275d1f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.md5 @@ -0,0 +1 @@ +1d44d14f3acbc2c49c4bfcea1084e2da \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerCeres__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe4c16ea473f1dda45ca8f3d4651f8894d4f0ca GIT binary patch literal 4677 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O-members.html new file mode 100644 index 00000000..5fe8bc86 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O-members.html @@ -0,0 +1,163 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OptimizerG2O Member List
+
+
+ +

This is the complete list of members for rtabmap::OptimizerG2O, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::OptimizerG2O)rtabmap::OptimizerG2Ostatic
computeBACorrespondences(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())rtabmap::Optimizer
create(const ParametersMap &parameters)rtabmap::Optimizerstatic
create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Optimizerstatic
epsilon() constrtabmap::Optimizerinline
getConnectedGraph(int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) constrtabmap::Optimizer
gravitySigma() constrtabmap::Optimizerinline
isAvailable(Optimizer::Type type)rtabmap::Optimizerstatic
isCholmodAvailable() (defined in rtabmap::OptimizerG2O)rtabmap::OptimizerG2Ostatic
isCovarianceIgnored() constrtabmap::Optimizerinline
isCSparseAvailable() (defined in rtabmap::OptimizerG2O)rtabmap::OptimizerG2Ostatic
isRobust() constrtabmap::Optimizerinline
isSlam2d() constrtabmap::Optimizerinline
iterations() constrtabmap::Optimizerinline
kTypeCeres enum valuertabmap::Optimizer
kTypeCVSBA enum valuertabmap::Optimizer
kTypeG2O enum valuertabmap::Optimizer
kTypeGTSAM enum valuertabmap::Optimizer
kTypeTORO enum valuertabmap::Optimizer
kTypeUndef enum valuertabmap::Optimizer
landmarksIgnored() constrtabmap::Optimizerinline
loadGraph(const std::string &fileName, std::map< int, Transform > &poses, std::multimap< int, Link > &edgeConstraints) (defined in rtabmap::OptimizerG2O)rtabmap::OptimizerG2Ostatic
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::OptimizerG2Ovirtual
rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::OptimizerG2Ovirtual
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizer
optimizeIncremental(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
Optimizer(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma()) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
Optimizer(const ParametersMap &parameters) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
OptimizerG2O(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::OptimizerG2O)rtabmap::OptimizerG2O
parseParameters(const ParametersMap &parameters)rtabmap::OptimizerG2Ovirtual
priorsIgnored() constrtabmap::Optimizerinline
saveGraph(const std::string &fileName, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints) (defined in rtabmap::OptimizerG2O)rtabmap::OptimizerG2O
setCovarianceIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setEpsilon(double epsilon) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setGravitySigma(float value) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setIterations(int iterations) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setLandmarksIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setPriorsIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setRobust(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setSlam2d(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
type() constrtabmap::OptimizerG2Oinlinevirtual
Type enum namertabmap::Optimizer
~Optimizer() (defined in rtabmap::Optimizer)rtabmap::Optimizerinlinevirtual
~OptimizerG2O() (defined in rtabmap::OptimizerG2O)rtabmap::OptimizerG2Oinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.html new file mode 100644 index 00000000..b39969ad --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.html @@ -0,0 +1,537 @@ + + + + + + + + +RTAB-Map: rtabmap::OptimizerG2O Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OptimizerG2O Class Reference
+
+
+
+Inheritance diagram for rtabmap::OptimizerG2O:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OptimizerG2O:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OptimizerG2O (const ParametersMap &parameters=ParametersMap())
 
virtual Type type () const
 Returns the concrete back-end identifier (one of Type).
 
virtual void parseParameters (const ParametersMap &parameters)
 Reads shared knobs from parameters and applies them to this instance.
 
virtual std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization with marginal covariance of rootId.
 
virtual std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
 
+bool saveGraph (const std::string &fileName, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints)
 
- Public Member Functions inherited from rtabmap::Optimizer
void getConnectedGraph (int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
 Extracts the connected component reachable from fromId.
 
std::map< int, Transform > optimizeIncremental (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization that grows the graph one node at a time.
 
std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization (single shot).
 
std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA wrapper that derives camera models and correspondences from signatures.
 
+std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map.
 
Transform optimizeBA (const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Refine a single two-frame link via BA.
 
void computeBACorrespondences (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
 Build BA correspondences (3D points + per-frame observations) from signatures.
 
int iterations () const
 Max solver iterations.
 
bool isSlam2d () const
 True if optimizing in SE(2) instead of SE(3).
 
bool isCovarianceIgnored () const
 If true, all edges share an identity information matrix.
 
double epsilon () const
 Convergence threshold on cost decrease.
 
bool isRobust () const
 If true, use a robust kernel / switchable factors against bad loop closures.
 
bool priorsIgnored () const
 If true, unary priors on poses are dropped.
 
bool landmarksIgnored () const
 If true, landmark/marker observations are dropped.
 
float gravitySigma () const
 Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
 
void setIterations (int iterations)
 
void setSlam2d (bool enabled)
 
void setCovarianceIgnored (bool enabled)
 
void setEpsilon (double epsilon)
 
void setRobust (bool enabled)
 
void setPriorsIgnored (bool enabled)
 
void setLandmarksIgnored (bool enabled)
 
void setGravitySigma (float value)
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static bool available ()
 
+static bool isCSparseAvailable ()
 
+static bool isCholmodAvailable ()
 
+static bool loadGraph (const std::string &fileName, std::map< int, Transform > &poses, std::multimap< int, Link > &edgeConstraints)
 
- Static Public Member Functions inherited from rtabmap::Optimizer
static bool isAvailable (Optimizer::Type type)
 Returns whether type was compiled in (its third-party dependency was found).
 
static Optimizer * create (const ParametersMap &parameters)
 Factory: build an optimizer from a ParametersMap.
 
+static Optimizer * create (Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
 Factory: build an optimizer of a specific type. Caller owns the result.
 
+ + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Optimizer
enum  Type {
+  kTypeUndef = -1 +, kTypeTORO = 0 +, kTypeG2O = 1 +, kTypeGTSAM = 2 +,
+  kTypeCeres = 3 +, kTypeCVSBA = 4 +
+ }
 Graph-optimizer back-end identifier. More...
 
- Protected Member Functions inherited from rtabmap::Optimizer
+ Optimizer (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma())
 
+ Optimizer (const ParametersMap &parameters)
 
+

Detailed Description

+
+

Definition at line 37 of file OptimizerG2O.h.

+

Constructor & Destructor Documentation

+ +

◆ ~OptimizerG2O()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::OptimizerG2O::~OptimizerG2O ()
+
+inlinevirtual
+
+ +

Definition at line 52 of file OptimizerG2O.h.

+ +
+
+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Type rtabmap::OptimizerG2O::type () const
+
+inlinevirtual
+
+ +

Returns the concrete back-end identifier (one of Type).

+ +

Implements rtabmap::Optimizer.

+ +

Definition at line 54 of file OptimizerG2O.h.

+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OptimizerG2O::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Reads shared knobs from parameters and applies them to this instance.

+

Subclasses override to additionally read back-end-specific keys (e.g. g2o/Solver, GTSAM/Optimizer); they should call this base implementation first.

+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+ +

◆ optimize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerG2O::optimize (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints,
cv::Mat & outputCovariance,
std::list< std::map< int, Transform > > * intermediateGraphes = 0,
double * finalError = 0,
int * iterationsDone = 0 
)
+
+virtual
+
+ +

Pose-graph optimization with marginal covariance of rootId.

+

This is the primary back-end entry point — concrete subclasses override it. The base implementation just emits an error.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed during optimization.
posesInitial pose estimates.
constraintsRelative-pose constraints between pose ids (and optionally to landmarks).
outputCovarianceOutput: 6x6 covariance of the last optimized pose w.r.t. rootId (3x3 for 2D mode). Filled only if the back-end supports it.
intermediateGraphesOptional: appended at each iteration for debug/visualization.
finalErrorOptional: written with the solver's final cost.
iterationsDoneOptional: written with the solver's actual iteration count.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+ +

◆ optimizeBA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerG2O::optimizeBA (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & links,
const std::map< int, std::vector< CameraModel > > & models,
std::map< int, cv::Point3f > & points3DMap,
const std::map< int, std::map< int, FeatureBA > > & wordReferences,
BAOutliers * outliers = 0 
)
+
+virtual
+
+ +

Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).

+

Concrete subclasses (g2o, Ceres, cvsba) override this; the base implementation errors out. The other optimizeBA() overloads ultimately funnel here.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed. If negative, ALL poses other than the (positive) lowest id are held fixed.
posesInitial pose estimates keyed by frame id.
linksEdges used to define the BA problem topology.
modelsCamera model(s) per frame; for stereo, Tx must be set on the model (= -baseline*fx). Multi-camera rigs have multiple entries per frame.
points3DMapIn/out: world 3D points keyed by word id; refined on return.
wordReferencesObservations: <wordId, <frameId, FeatureBA>>. See FeatureBA.
outliersOptional output: word ids dropped by the back-end's outlier rejection.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.js b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.js new file mode 100644 index 00000000..925c7f55 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1OptimizerG2O = +[ + [ "type", "classrtabmap_1_1OptimizerG2O.html#af69edaad65a7f7f936fa99f8c617e10b", null ], + [ "parseParameters", "classrtabmap_1_1OptimizerG2O.html#a07b598444b99584b6f2bed6baca5e8bb", null ], + [ "optimize", "classrtabmap_1_1OptimizerG2O.html#a9400bdf57331af310cf6b02e661d0a03", null ], + [ "optimizeBA", "classrtabmap_1_1OptimizerG2O.html#af808c77c716d30691670c18955f08f61", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.map new file mode 100644 index 00000000..5079dd23 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.md5 new file mode 100644 index 00000000..7daa5d9d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.md5 @@ -0,0 +1 @@ +7eaec6d0e8425a59d91b25c9b2549101 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c6dbc1de5f86ada4bc386a40cd728353e01f3b4e GIT binary patch literal 4674 zcmd6r`9D{{5ajr)2XSpm0^lL}#i#$bsiLQK$kEy6$s zvA@4Ri>^a-AVV2i$cEJ&%esowzwg*#d!LFa)^&d`xdwI3)}S(;VY1j{GLqt<fzRF<>n^DEN&~GKkD!3jFJ9LDUqRXYGYHfA*r3y+>B{_|DIP$3bE00B#zb4FtxIx zk&|oSv9qb0cc1wfQ&nHjX&U;zN{VyfK;_tkmY%+IWvJA5@3)<9p_z=VEbryZG;uJl zuE3vRaqs*Vc@-7WO#$oJ;9x~OhSS5tqsp;^y7_RW6kY%P#f$2|4f~1K2(B7jU)S%+ zCdWH>dJb(`LKQewLgSkPH?X{E+|tqv#(64Q{{Av(Hn!@3^&6B_RMorGTdZg_R8>_K zoU~kJ_SY{s7gx$f7I8N*?}Z;THK~33wxG(JJD zaSaV}^Ln#1$@#00^^d4HCXiaTx1|=mW1~#_q6}IoNp`oF=4h{}^ zv!a>3H05b$Hw$iBEo`-kr2~09Tz>P~%EaVk&yO11k+Oue^ka|FD)kQ1Yr_|#Z_P^h zhlhvJ`QSHL2!@B}0fbvXK)_>i+`H9qcYVC*YF=k&=NuSf&39*Oqm^s~N&WT9sl4Sj zDO>LnCq`aKb!@B9a8qMF!kBFmOtq7%YiG;8ySsZrS{mZWi7y%+gH=yTPS#Ubr&w)W zl!r0fU9_(>M?)pZq4bZ{K#n~agp*IBogd$`<{#?Mw$q*`~Rfw z0I^H{_z_!X{{ao=U~_w$5`qcZqFi5J-v@HJHYQCMm7UE#IyQC=H6fou70l91B;KZ_ zD>$Gay?!kyYV(#7$Z_qSB1+@!pSQ`Y6>W%PRRrKjK&Sy?uD0U=LyI&ild8yg+I zJQ3D4Fo-TKE$ynVt(B3vcCEd)*WD!ia5YX*W4TopWckeM>ch#Vz}fPKDW_E}UIZ$( zos^^G=;V~|OFBOI`(shL+vZkMlN~xuH+pRBM!l_>8R7kV#kC(bG^JLRv2k%UugvaL z{w3uq_d@x^#ONEme|E8XH%pbF{AaF;i(gtDE_WV(lX(!T60klNQ(P=`CK*pC6j~MZ z_cpMXnuqNVj<> =^XK_em}C@CqYXH!&%Q%<;nc^`iDKH>jU-D^K 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.map new file mode 100644 index 00000000..5079dd23 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.md5 new file mode 100644 index 00000000..7daa5d9d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.md5 @@ -0,0 +1 @@ +7eaec6d0e8425a59d91b25c9b2549101 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerG2O__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c6dbc1de5f86ada4bc386a40cd728353e01f3b4e GIT binary patch literal 4674 zcmd6r`9D{{5ajr)2XSpm0^lL}#i#$bsiLQK$kEy6$s zvA@4Ri>^a-AVV2i$cEJ&%esowzwg*#d!LFa)^&d`xdwI3)}S(;VY1j{GLqt<fzRF<>n^DEN&~GKkD!3jFJ9LDUqRXYGYHfA*r3y+>B{_|DIP$3bE00B#zb4FtxIx zk&|oSv9qb0cc1wfQ&nHjX&U;zN{VyfK;_tkmY%+IWvJA5@3)<9p_z=VEbryZG;uJl zuE3vRaqs*Vc@-7WO#$oJ;9x~OhSS5tqsp;^y7_RW6kY%P#f$2|4f~1K2(B7jU)S%+ zCdWH>dJb(`LKQewLgSkPH?X{E+|tqv#(64Q{{Av(Hn!@3^&6B_RMorGTdZg_R8>_K zoU~kJ_SY{s7gx$f7I8N*?}Z;THK~33wxG(JJD zaSaV}^Ln#1$@#00^^d4HCXiaTx1|=mW1~#_q6}IoNp`oF=4h{}^ zv!a>3H05b$Hw$iBEo`-kr2~09Tz>P~%EaVk&yO11k+Oue^ka|FD)kQ1Yr_|#Z_P^h zhlhvJ`QSHL2!@B}0fbvXK)_>i+`H9qcYVC*YF=k&=NuSf&39*Oqm^s~N&WT9sl4Sj zDO>LnCq`aKb!@B9a8qMF!kBFmOtq7%YiG;8ySsZrS{mZWi7y%+gH=yTPS#Ubr&w)W zl!r0fU9_(>M?)pZq4bZ{K#n~agp*IBogd$`<{#?Mw$q*`~Rfw z0I^H{_z_!X{{ao=U~_w$5`qcZqFi5J-v@HJHYQCMm7UE#IyQC=H6fou70l91B;KZ_ zD>$Gay?!kyYV(#7$Z_qSB1+@!pSQ`Y6>W%PRRrKjK&Sy?uD0U=LyI&ild8yg+I zJQ3D4Fo-TKE$ynVt(B3vcCEd)*WD!ia5YX*W4TopWckeM>ch#Vz}fPKDW_E}UIZ$( zos^^G=;V~|OFBOI`(shL+vZkMlN~xuH+pRBM!l_>8R7kV#kC(bG^JLRv2k%UugvaL z{w3uq_d@x^#ONEme|E8XH%pbF{AaF;i(gtDE_WV(lX(!T60klNQ(P=`CK*pC6j~MZ z_cpMXnuqNVj<> =^XK_em}C@CqYXH!&%Q%<;nc^`iDKH>jU-D^K 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM-members.html new file mode 100644 index 00000000..820bf87c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM-members.html @@ -0,0 +1,159 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OptimizerGTSAM Member List
+
+
+ +

This is the complete list of members for rtabmap::OptimizerGTSAM, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::OptimizerGTSAM)rtabmap::OptimizerGTSAMstatic
computeBACorrespondences(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())rtabmap::Optimizer
create(const ParametersMap &parameters)rtabmap::Optimizerstatic
create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Optimizerstatic
epsilon() constrtabmap::Optimizerinline
getConnectedGraph(int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) constrtabmap::Optimizer
gravitySigma() constrtabmap::Optimizerinline
isAvailable(Optimizer::Type type)rtabmap::Optimizerstatic
isCovarianceIgnored() constrtabmap::Optimizerinline
isRobust() constrtabmap::Optimizerinline
isSlam2d() constrtabmap::Optimizerinline
iterations() constrtabmap::Optimizerinline
kTypeCeres enum valuertabmap::Optimizer
kTypeCVSBA enum valuertabmap::Optimizer
kTypeG2O enum valuertabmap::Optimizer
kTypeGTSAM enum valuertabmap::Optimizer
kTypeTORO enum valuertabmap::Optimizer
kTypeUndef enum valuertabmap::Optimizer
landmarksIgnored() constrtabmap::Optimizerinline
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::OptimizerGTSAMvirtual
rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::OptimizerGTSAMvirtual
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
rtabmap::Optimizer::optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizer
optimizeIncremental(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
Optimizer(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma()) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
Optimizer(const ParametersMap &parameters) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
OptimizerGTSAM(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::OptimizerGTSAM)rtabmap::OptimizerGTSAM
parseParameters(const ParametersMap &parameters)rtabmap::OptimizerGTSAMvirtual
priorsIgnored() constrtabmap::Optimizerinline
setCovarianceIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setEpsilon(double epsilon) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setGravitySigma(float value) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setIterations(int iterations) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setLandmarksIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setPriorsIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setRobust(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setSlam2d(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
Type enum namertabmap::Optimizer
type() constrtabmap::OptimizerGTSAMinlinevirtual
~Optimizer() (defined in rtabmap::Optimizer)rtabmap::Optimizerinlinevirtual
~OptimizerGTSAM() (defined in rtabmap::OptimizerGTSAM)rtabmap::OptimizerGTSAMvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.html new file mode 100644 index 00000000..df18c3cc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.html @@ -0,0 +1,498 @@ + + + + + + + + +RTAB-Map: rtabmap::OptimizerGTSAM Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OptimizerGTSAM Class Reference
+
+
+
+Inheritance diagram for rtabmap::OptimizerGTSAM:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OptimizerGTSAM:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ OptimizerGTSAM (const ParametersMap &parameters=ParametersMap())
 
virtual Type type () const
 Returns the concrete back-end identifier (one of Type).
 
virtual void parseParameters (const ParametersMap &parameters)
 Reads shared knobs from parameters and applies them to this instance.
 
virtual std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization with marginal covariance of rootId.
 
virtual std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
 
- Public Member Functions inherited from rtabmap::Optimizer
void getConnectedGraph (int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
 Extracts the connected component reachable from fromId.
 
std::map< int, Transform > optimizeIncremental (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization that grows the graph one node at a time.
 
std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization (single shot).
 
std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA wrapper that derives camera models and correspondences from signatures.
 
+std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map.
 
Transform optimizeBA (const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Refine a single two-frame link via BA.
 
void computeBACorrespondences (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
 Build BA correspondences (3D points + per-frame observations) from signatures.
 
int iterations () const
 Max solver iterations.
 
bool isSlam2d () const
 True if optimizing in SE(2) instead of SE(3).
 
bool isCovarianceIgnored () const
 If true, all edges share an identity information matrix.
 
double epsilon () const
 Convergence threshold on cost decrease.
 
bool isRobust () const
 If true, use a robust kernel / switchable factors against bad loop closures.
 
bool priorsIgnored () const
 If true, unary priors on poses are dropped.
 
bool landmarksIgnored () const
 If true, landmark/marker observations are dropped.
 
float gravitySigma () const
 Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
 
void setIterations (int iterations)
 
void setSlam2d (bool enabled)
 
void setCovarianceIgnored (bool enabled)
 
void setEpsilon (double epsilon)
 
void setRobust (bool enabled)
 
void setPriorsIgnored (bool enabled)
 
void setLandmarksIgnored (bool enabled)
 
void setGravitySigma (float value)
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

+static bool available ()
 
- Static Public Member Functions inherited from rtabmap::Optimizer
static bool isAvailable (Optimizer::Type type)
 Returns whether type was compiled in (its third-party dependency was found).
 
static Optimizer * create (const ParametersMap &parameters)
 Factory: build an optimizer from a ParametersMap.
 
+static Optimizer * create (Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
 Factory: build an optimizer of a specific type. Caller owns the result.
 
+ + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Optimizer
enum  Type {
+  kTypeUndef = -1 +, kTypeTORO = 0 +, kTypeG2O = 1 +, kTypeGTSAM = 2 +,
+  kTypeCeres = 3 +, kTypeCVSBA = 4 +
+ }
 Graph-optimizer back-end identifier. More...
 
- Protected Member Functions inherited from rtabmap::Optimizer
+ Optimizer (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma())
 
+ Optimizer (const ParametersMap &parameters)
 
+

Detailed Description

+
+

Definition at line 39 of file OptimizerGTSAM.h.

+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Type rtabmap::OptimizerGTSAM::type () const
+
+inlinevirtual
+
+ +

Returns the concrete back-end identifier (one of Type).

+ +

Implements rtabmap::Optimizer.

+ +

Definition at line 48 of file OptimizerGTSAM.h.

+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::OptimizerGTSAM::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Reads shared knobs from parameters and applies them to this instance.

+

Subclasses override to additionally read back-end-specific keys (e.g. g2o/Solver, GTSAM/Optimizer); they should call this base implementation first.

+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+ +

◆ optimize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerGTSAM::optimize (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints,
cv::Mat & outputCovariance,
std::list< std::map< int, Transform > > * intermediateGraphes = 0,
double * finalError = 0,
int * iterationsDone = 0 
)
+
+virtual
+
+ +

Pose-graph optimization with marginal covariance of rootId.

+

This is the primary back-end entry point — concrete subclasses override it. The base implementation just emits an error.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed during optimization.
posesInitial pose estimates.
constraintsRelative-pose constraints between pose ids (and optionally to landmarks).
outputCovarianceOutput: 6x6 covariance of the last optimized pose w.r.t. rootId (3x3 for 2D mode). Filled only if the back-end supports it.
intermediateGraphesOptional: appended at each iteration for debug/visualization.
finalErrorOptional: written with the solver's final cost.
iterationsDoneOptional: written with the solver's actual iteration count.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+ +

◆ optimizeBA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerGTSAM::optimizeBA (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & links,
const std::map< int, std::vector< CameraModel > > & models,
std::map< int, cv::Point3f > & points3DMap,
const std::map< int, std::map< int, FeatureBA > > & wordReferences,
BAOutliers * outliers = 0 
)
+
+virtual
+
+ +

Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).

+

Concrete subclasses (g2o, Ceres, cvsba) override this; the base implementation errors out. The other optimizeBA() overloads ultimately funnel here.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed. If negative, ALL poses other than the (positive) lowest id are held fixed.
posesInitial pose estimates keyed by frame id.
linksEdges used to define the BA problem topology.
modelsCamera model(s) per frame; for stereo, Tx must be set on the model (= -baseline*fx). Multi-camera rigs have multiple entries per frame.
points3DMapIn/out: world 3D points keyed by word id; refined on return.
wordReferencesObservations: <wordId, <frameId, FeatureBA>>. See FeatureBA.
outliersOptional output: word ids dropped by the back-end's outlier rejection.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.js b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.js new file mode 100644 index 00000000..91e78e45 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1OptimizerGTSAM = +[ + [ "type", "classrtabmap_1_1OptimizerGTSAM.html#a422fe2960e4b71832e2108d5ab2aee46", null ], + [ "parseParameters", "classrtabmap_1_1OptimizerGTSAM.html#a9ac24a2315e15b16270151c3aae9d8f0", null ], + [ "optimize", "classrtabmap_1_1OptimizerGTSAM.html#a4905d84cfc59516eef21ea89064c31ba", null ], + [ "optimizeBA", "classrtabmap_1_1OptimizerGTSAM.html#a8009ace7ad9f50214bc359421546a54b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.map new file mode 100644 index 00000000..cae31210 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.md5 new file mode 100644 index 00000000..2a005582 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.md5 @@ -0,0 +1 @@ +dc9fafae756ba5f6f57bb083b6ba9a55 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..24355271d7d5ec6160f9697f2349a2033e76766f GIT binary patch literal 5228 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 QK7^<|QCIl#*fjWm0Ks<_jQ{`u literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.map new file mode 100644 index 00000000..cae31210 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.md5 new file mode 100644 index 00000000..2a005582 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.md5 @@ -0,0 +1 @@ +dc9fafae756ba5f6f57bb083b6ba9a55 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerGTSAM__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..24355271d7d5ec6160f9697f2349a2033e76766f GIT binary patch literal 5228 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 QK7^<|QCIl#*fjWm0Ks<_jQ{`u literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO-members.html new file mode 100644 index 00000000..38625c6f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO-members.html @@ -0,0 +1,162 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::OptimizerTORO Member List
+
+
+ +

This is the complete list of members for rtabmap::OptimizerTORO, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available() (defined in rtabmap::OptimizerTORO)rtabmap::OptimizerTOROstatic
computeBACorrespondences(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())rtabmap::Optimizer
create(const ParametersMap &parameters)rtabmap::Optimizerstatic
create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Optimizerstatic
epsilon() constrtabmap::Optimizerinline
getConnectedGraph(int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) constrtabmap::Optimizer
gravitySigma() constrtabmap::Optimizerinline
isAvailable(Optimizer::Type type)rtabmap::Optimizerstatic
isCovarianceIgnored() constrtabmap::Optimizerinline
isRobust() constrtabmap::Optimizerinline
isSlam2d() constrtabmap::Optimizerinline
iterations() constrtabmap::Optimizerinline
kTypeCeres enum valuertabmap::Optimizer
kTypeCVSBA enum valuertabmap::Optimizer
kTypeG2O enum valuertabmap::Optimizer
kTypeGTSAM enum valuertabmap::Optimizer
kTypeTORO enum valuertabmap::Optimizer
kTypeUndef enum valuertabmap::Optimizer
landmarksIgnored() constrtabmap::Optimizerinline
loadGraph(const std::string &fileName, std::map< int, Transform > &poses, std::multimap< int, Link > &edgeConstraints) (defined in rtabmap::OptimizerTORO)rtabmap::OptimizerTOROstatic
optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::OptimizerTOROvirtual
rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizervirtual
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())rtabmap::Optimizer
optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)rtabmap::Optimizer
optimizeIncremental(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)rtabmap::Optimizer
Optimizer(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma()) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
Optimizer(const ParametersMap &parameters) (defined in rtabmap::Optimizer)rtabmap::Optimizerprotected
OptimizerTORO(int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon()) (defined in rtabmap::OptimizerTORO)rtabmap::OptimizerTOROinline
OptimizerTORO(const ParametersMap &parameters) (defined in rtabmap::OptimizerTORO)rtabmap::OptimizerTOROinline
parseParameters(const ParametersMap &parameters)rtabmap::Optimizervirtual
priorsIgnored() constrtabmap::Optimizerinline
saveGraph(const std::string &fileName, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints) (defined in rtabmap::OptimizerTORO)rtabmap::OptimizerTORO
setCovarianceIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setEpsilon(double epsilon) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setGravitySigma(float value) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setIterations(int iterations) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setLandmarksIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setPriorsIgnored(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setRobust(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
setSlam2d(bool enabled) (defined in rtabmap::Optimizer)rtabmap::Optimizerinline
type() constrtabmap::OptimizerTOROinlinevirtual
Type enum namertabmap::Optimizer
~Optimizer() (defined in rtabmap::Optimizer)rtabmap::Optimizerinlinevirtual
~OptimizerTORO() (defined in rtabmap::OptimizerTORO)rtabmap::OptimizerTOROinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.html b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.html new file mode 100644 index 00000000..a288f0b6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.html @@ -0,0 +1,495 @@ + + + + + + + + +RTAB-Map: rtabmap::OptimizerTORO Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::OptimizerTORO Class Reference
+
+
+
+Inheritance diagram for rtabmap::OptimizerTORO:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::OptimizerTORO:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 OptimizerTORO (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon())
 
 OptimizerTORO (const ParametersMap &parameters)
 
virtual Type type () const
 Returns the concrete back-end identifier (one of Type).
 
virtual std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization with marginal covariance of rootId.
 
+bool saveGraph (const std::string &fileName, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints)
 
- Public Member Functions inherited from rtabmap::Optimizer
void getConnectedGraph (int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
 Extracts the connected component reachable from fromId.
 
virtual void parseParameters (const ParametersMap &parameters)
 Reads shared knobs from parameters and applies them to this instance.
 
std::map< int, Transform > optimizeIncremental (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization that grows the graph one node at a time.
 
std::map< int, Transform > optimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization (single shot).
 
virtual std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
 
std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA wrapper that derives camera models and correspondences from signatures.
 
+std::map< int, Transform > optimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map.
 
Transform optimizeBA (const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Refine a single two-frame link via BA.
 
void computeBACorrespondences (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
 Build BA correspondences (3D points + per-frame observations) from signatures.
 
int iterations () const
 Max solver iterations.
 
bool isSlam2d () const
 True if optimizing in SE(2) instead of SE(3).
 
bool isCovarianceIgnored () const
 If true, all edges share an identity information matrix.
 
double epsilon () const
 Convergence threshold on cost decrease.
 
bool isRobust () const
 If true, use a robust kernel / switchable factors against bad loop closures.
 
bool priorsIgnored () const
 If true, unary priors on poses are dropped.
 
bool landmarksIgnored () const
 If true, landmark/marker observations are dropped.
 
float gravitySigma () const
 Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
 
void setIterations (int iterations)
 
void setSlam2d (bool enabled)
 
void setCovarianceIgnored (bool enabled)
 
void setEpsilon (double epsilon)
 
void setRobust (bool enabled)
 
void setPriorsIgnored (bool enabled)
 
void setLandmarksIgnored (bool enabled)
 
void setGravitySigma (float value)
 
+ + + + + + + + + + + + + + + +

+Static Public Member Functions

+static bool available ()
 
+static bool loadGraph (const std::string &fileName, std::map< int, Transform > &poses, std::multimap< int, Link > &edgeConstraints)
 
- Static Public Member Functions inherited from rtabmap::Optimizer
static bool isAvailable (Optimizer::Type type)
 Returns whether type was compiled in (its third-party dependency was found).
 
static Optimizer * create (const ParametersMap &parameters)
 Factory: build an optimizer from a ParametersMap.
 
+static Optimizer * create (Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
 Factory: build an optimizer of a specific type. Caller owns the result.
 
+ + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Optimizer
enum  Type {
+  kTypeUndef = -1 +, kTypeTORO = 0 +, kTypeG2O = 1 +, kTypeGTSAM = 2 +,
+  kTypeCeres = 3 +, kTypeCVSBA = 4 +
+ }
 Graph-optimizer back-end identifier. More...
 
- Protected Member Functions inherited from rtabmap::Optimizer
+ Optimizer (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma())
 
+ Optimizer (const ParametersMap &parameters)
 
+

Detailed Description

+
+

Definition at line 35 of file OptimizerTORO.h.

+

Constructor & Destructor Documentation

+ +

◆ OptimizerTORO() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::OptimizerTORO::OptimizerTORO (int iterations = Parameters::defaultOptimizerIterations(),
bool slam2d = Parameters::defaultRegForce3DoF(),
bool covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored(),
double epsilon = Parameters::defaultOptimizerEpsilon() 
)
+
+inline
+
+ +

Definition at line 47 of file OptimizerTORO.h.

+ +
+
+ +

◆ OptimizerTORO() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::OptimizerTORO::OptimizerTORO (const ParametersMap & parameters)
+
+inline
+
+ +

Definition at line 53 of file OptimizerTORO.h.

+ +
+
+ +

◆ ~OptimizerTORO()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::OptimizerTORO::~OptimizerTORO ()
+
+inlinevirtual
+
+ +

Definition at line 55 of file OptimizerTORO.h.

+ +
+
+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Type rtabmap::OptimizerTORO::type () const
+
+inlinevirtual
+
+ +

Returns the concrete back-end identifier (one of Type).

+ +

Implements rtabmap::Optimizer.

+ +

Definition at line 57 of file OptimizerTORO.h.

+ +
+
+ +

◆ optimize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::map< int, Transform > rtabmap::OptimizerTORO::optimize (int rootId,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints,
cv::Mat & outputCovariance,
std::list< std::map< int, Transform > > * intermediateGraphes = 0,
double * finalError = 0,
int * iterationsDone = 0 
)
+
+virtual
+
+ +

Pose-graph optimization with marginal covariance of rootId.

+

This is the primary back-end entry point — concrete subclasses override it. The base implementation just emits an error.

+
Parameters
+ + + + + + + + +
rootIdPose to hold fixed during optimization.
posesInitial pose estimates.
constraintsRelative-pose constraints between pose ids (and optionally to landmarks).
outputCovarianceOutput: 6x6 covariance of the last optimized pose w.r.t. rootId (3x3 for 2D mode). Filled only if the back-end supports it.
intermediateGraphesOptional: appended at each iteration for debug/visualization.
finalErrorOptional: written with the solver's final cost.
iterationsDoneOptional: written with the solver's actual iteration count.
+
+
+
Returns
Refined poses, or empty on failure.
+ +

Reimplemented from rtabmap::Optimizer.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.js b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.js new file mode 100644 index 00000000..4c029a70 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO.js @@ -0,0 +1,5 @@ +var classrtabmap_1_1OptimizerTORO = +[ + [ "type", "classrtabmap_1_1OptimizerTORO.html#a965efb877ac5edd3b6cda43983096a64", null ], + [ "optimize", "classrtabmap_1_1OptimizerTORO.html#a025b40902f0ea048bdbfee9ed4ebc0f3", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.map new file mode 100644 index 00000000..01df31b4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.md5 new file mode 100644 index 00000000..98d734b4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.md5 @@ -0,0 +1 @@ +116611f80c7a69254321adea56f89125 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6b71f43f7df3214c6dacb633b3053538a81b2987 GIT binary patch literal 4589 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 kfmaCqr4y + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.md5 new file mode 100644 index 00000000..98d734b4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.md5 @@ -0,0 +1 @@ +116611f80c7a69254321adea56f89125 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1OptimizerTORO__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6b71f43f7df3214c6dacb633b3053538a81b2987 GIT binary patch literal 4589 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 kfmaCqr4y + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.md5 new file mode 100644 index 00000000..3043b73f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.md5 @@ -0,0 +1 @@ +83fdef5d521fe8f94dd66ee8295f2b65 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Optimizer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..27363cfbc7ed31e9b8190b04479cf3454f03cf29 GIT binary patch literal 20157 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::ParamEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::ParamEvent, including all inherited members.

+ + + + + + + + + +
getClassName() constrtabmap::ParamEventinlinevirtual
getCode() constUEventinline
getParameters() const (defined in rtabmap::ParamEvent)rtabmap::ParamEventinline
ParamEvent(const ParametersMap &parameters) (defined in rtabmap::ParamEvent)rtabmap::ParamEventinline
ParamEvent(const std::string &parameterKey, const std::string &parameterValue) (defined in rtabmap::ParamEvent)rtabmap::ParamEventinline
UEvent(int code=0)UEventinlineprotected
~ParamEvent() (defined in rtabmap::ParamEvent)rtabmap::ParamEventinline
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.html new file mode 100644 index 00000000..3de98380 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.html @@ -0,0 +1,319 @@ + + + + + + + + +RTAB-Map: rtabmap::ParamEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::ParamEvent Class Reference
+
+
+ +

#include <ParamEvent.h>

+
+Inheritance diagram for rtabmap::ParamEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::ParamEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + +

+Public Member Functions

 ParamEvent (const ParametersMap &parameters)
 
 ParamEvent (const std::string &parameterKey, const std::string &parameterValue)
 
virtual std::string getClassName () const
 
const ParametersMap & getParameters () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

The parameters event. This event is used to send parameters across the threads.

+ +

Definition at line 41 of file ParamEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ ParamEvent() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::ParamEvent::ParamEvent (const ParametersMap & parameters)
+
+inline
+
+ +

Definition at line 44 of file ParamEvent.h.

+ +
+
+ +

◆ ParamEvent() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::ParamEvent::ParamEvent (const std::string & parameterKey,
const std::string & parameterValue 
)
+
+inline
+
+ +

Definition at line 45 of file ParamEvent.h.

+ +
+
+ +

◆ ~ParamEvent()

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::ParamEvent::~ParamEvent ()
+
+inline
+
+ +

Definition at line 49 of file ParamEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::ParamEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 50 of file ParamEvent.h.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + +
const ParametersMap & rtabmap::ParamEvent::getParameters () const
+
+inline
+
+ +

Definition at line 52 of file ParamEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.js new file mode 100644 index 00000000..f6cfdc41 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1ParamEvent = +[ + [ "getClassName", "classrtabmap_1_1ParamEvent.html#a877e2b7fedcb8aba63e3430d7f975e0a", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.map new file mode 100644 index 00000000..57e4b8ef --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.md5 new file mode 100644 index 00000000..2ede6095 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.md5 @@ -0,0 +1 @@ +86c880cd42c1f8bdb5e1791a4459f201 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72cf756d9f130942280984072a78445800bc1912 GIT binary patch literal 3690 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.map new file mode 100644 index 00000000..57e4b8ef --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.md5 new file mode 100644 index 00000000..2ede6095 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.md5 @@ -0,0 +1 @@ +86c880cd42c1f8bdb5e1791a4459f201 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1ParamEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72cf756d9f130942280984072a78445800bc1912 GIT binary patch literal 3690 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Parameters-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Parameters-members.html new file mode 100644 index 00000000..2f8a22a5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Parameters-members.html @@ -0,0 +1,1994 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Parameters Member List
+
+
+ +

This is the complete list of members for rtabmap::Parameters, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
createDefaultWorkingDirectory() (defined in rtabmap::Parameters)rtabmap::Parametersstatic
defaultBayesFullPredictionUpdate()rtabmap::Parametersinlinestatic
defaultBayesPredictionLC()rtabmap::Parametersinlinestatic
defaultBayesSparsePrediction()rtabmap::Parametersinlinestatic
defaultBayesVirtualPlacePriorThr()rtabmap::Parametersinlinestatic
defaultBRIEFBytes()rtabmap::Parametersinlinestatic
defaultBRISKOctaves()rtabmap::Parametersinlinestatic
defaultBRISKPatternScale()rtabmap::Parametersinlinestatic
defaultBRISKThresh()rtabmap::Parametersinlinestatic
defaultDbSqlite3CacheSize()rtabmap::Parametersinlinestatic
defaultDbSqlite3InMemory()rtabmap::Parametersinlinestatic
defaultDbSqlite3JournalMode()rtabmap::Parametersinlinestatic
defaultDbSqlite3Synchronous()rtabmap::Parametersinlinestatic
defaultDbSqlite3TempStore()rtabmap::Parametersinlinestatic
defaultDbTargetVersion()rtabmap::Parametersinlinestatic
defaultFASTCV()rtabmap::Parametersinlinestatic
defaultFASTGpu()rtabmap::Parametersinlinestatic
defaultFASTGpuKeypointsRatio()rtabmap::Parametersinlinestatic
defaultFASTGridCols()rtabmap::Parametersinlinestatic
defaultFASTGridRows()rtabmap::Parametersinlinestatic
defaultFASTMaxThreshold()rtabmap::Parametersinlinestatic
defaultFASTMinThreshold()rtabmap::Parametersinlinestatic
defaultFASTNonmaxSuppression()rtabmap::Parametersinlinestatic
defaultFASTThreshold()rtabmap::Parametersinlinestatic
defaultFREAKNOctaves()rtabmap::Parametersinlinestatic
defaultFREAKOrientationNormalized()rtabmap::Parametersinlinestatic
defaultFREAKPatternScale()rtabmap::Parametersinlinestatic
defaultFREAKScaleNormalized()rtabmap::Parametersinlinestatic
defaultg2oOptimizer()rtabmap::Parametersinlinestatic
defaultg2oSolver()rtabmap::Parametersinlinestatic
defaultGFTTBlockSize()rtabmap::Parametersinlinestatic
defaultGFTTGpu()rtabmap::Parametersinlinestatic
defaultGFTTK()rtabmap::Parametersinlinestatic
defaultGFTTMinDistance()rtabmap::Parametersinlinestatic
defaultGFTTQualityLevel()rtabmap::Parametersinlinestatic
defaultGFTTUseHarrisDetector()rtabmap::Parametersinlinestatic
defaultGMSThresholdFactor()rtabmap::Parametersinlinestatic
defaultGMSWithRotation()rtabmap::Parametersinlinestatic
defaultGMSWithScale()rtabmap::Parametersinlinestatic
defaultGrid3D()rtabmap::Parametersinlinestatic
defaultGridCellSize()rtabmap::Parametersinlinestatic
defaultGridClusterRadius()rtabmap::Parametersinlinestatic
defaultGridDepthDecimation()rtabmap::Parametersinlinestatic
defaultGridDepthRoiRatios()rtabmap::Parametersinlinestatic
defaultGridFlatObstacleDetected()rtabmap::Parametersinlinestatic
defaultGridFootprintHeight()rtabmap::Parametersinlinestatic
defaultGridFootprintLength()rtabmap::Parametersinlinestatic
defaultGridFootprintWidth()rtabmap::Parametersinlinestatic
defaultGridGlobalAltitudeDelta()rtabmap::Parametersinlinestatic
defaultGridGlobalEroded()rtabmap::Parametersinlinestatic
defaultGridGlobalFloodFillDepth()rtabmap::Parametersinlinestatic
defaultGridGlobalFootprintRadius()rtabmap::Parametersinlinestatic
defaultGridGlobalMaxNodes()rtabmap::Parametersinlinestatic
defaultGridGlobalMinSize()rtabmap::Parametersinlinestatic
defaultGridGlobalOccupancyThr()rtabmap::Parametersinlinestatic
defaultGridGlobalProbClampingMax()rtabmap::Parametersinlinestatic
defaultGridGlobalProbClampingMin()rtabmap::Parametersinlinestatic
defaultGridGlobalProbHit()rtabmap::Parametersinlinestatic
defaultGridGlobalProbMiss()rtabmap::Parametersinlinestatic
defaultGridGlobalUpdateError()rtabmap::Parametersinlinestatic
defaultGridGroundIsObstacle()rtabmap::Parametersinlinestatic
defaultGridMapFrameProjection()rtabmap::Parametersinlinestatic
defaultGridMaxGroundAngle()rtabmap::Parametersinlinestatic
defaultGridMaxGroundHeight()rtabmap::Parametersinlinestatic
defaultGridMaxObstacleHeight()rtabmap::Parametersinlinestatic
defaultGridMinClusterSize()rtabmap::Parametersinlinestatic
defaultGridMinGroundHeight()rtabmap::Parametersinlinestatic
defaultGridNoiseFilteringMinNeighbors()rtabmap::Parametersinlinestatic
defaultGridNoiseFilteringRadius()rtabmap::Parametersinlinestatic
defaultGridNormalK()rtabmap::Parametersinlinestatic
defaultGridNormalsSegmentation()rtabmap::Parametersinlinestatic
defaultGridPreVoxelFiltering()rtabmap::Parametersinlinestatic
defaultGridRangeMax()rtabmap::Parametersinlinestatic
defaultGridRangeMin()rtabmap::Parametersinlinestatic
defaultGridRayTracing()rtabmap::Parametersinlinestatic
defaultGridScan2dUnknownSpaceFilled()rtabmap::Parametersinlinestatic
defaultGridScanDecimation()rtabmap::Parametersinlinestatic
defaultGridSensor()rtabmap::Parametersinlinestatic
defaultGTSAMIncRelinearizeSkip()rtabmap::Parametersinlinestatic
defaultGTSAMIncRelinearizeThreshold()rtabmap::Parametersinlinestatic
defaultGTSAMIncremental()rtabmap::Parametersinlinestatic
defaultGTSAMOptimizer()rtabmap::Parametersinlinestatic
defaultIcpCCFilterOutFarthestPoints()rtabmap::Parametersinlinestatic
defaultIcpCCMaxFinalRMS()rtabmap::Parametersinlinestatic
defaultIcpCCSamplingLimit()rtabmap::Parametersinlinestatic
defaultIcpCorrespondenceRatio()rtabmap::Parametersinlinestatic
defaultIcpDebugExportFormat()rtabmap::Parametersinlinestatic
defaultIcpDownsamplingStep()rtabmap::Parametersinlinestatic
defaultIcpEpsilon()rtabmap::Parametersinlinestatic
defaultIcpFiltersEnabled()rtabmap::Parametersinlinestatic
defaultIcpForce4DoF()rtabmap::Parametersinlinestatic
defaultIcpIterations()rtabmap::Parametersinlinestatic
defaultIcpMaxCorrespondenceDistance()rtabmap::Parametersinlinestatic
defaultIcpMaxRotation()rtabmap::Parametersinlinestatic
defaultIcpMaxTranslation()rtabmap::Parametersinlinestatic
defaultIcpOutlierRatio()rtabmap::Parametersinlinestatic
defaultIcpPMConfig()rtabmap::Parametersinlinestatic
defaultIcpPMMatcherEpsilon()rtabmap::Parametersinlinestatic
defaultIcpPMMatcherIntensity()rtabmap::Parametersinlinestatic
defaultIcpPMMatcherKnn()rtabmap::Parametersinlinestatic
defaultIcpPointToPlane()rtabmap::Parametersinlinestatic
defaultIcpPointToPlaneComplexityCentered()rtabmap::Parametersinlinestatic
defaultIcpPointToPlaneGroundNormalsUp()rtabmap::Parametersinlinestatic
defaultIcpPointToPlaneK()rtabmap::Parametersinlinestatic
defaultIcpPointToPlaneLowComplexityStrategy()rtabmap::Parametersinlinestatic
defaultIcpPointToPlaneMinComplexity()rtabmap::Parametersinlinestatic
defaultIcpPointToPlaneRadius()rtabmap::Parametersinlinestatic
defaultIcpRangeMax()rtabmap::Parametersinlinestatic
defaultIcpRangeMin()rtabmap::Parametersinlinestatic
defaultIcpReciprocalCorrespondences()rtabmap::Parametersinlinestatic
defaultIcpStrategy()rtabmap::Parametersinlinestatic
defaultIcpVoxelSize()rtabmap::Parametersinlinestatic
defaultImuFilterComplementaryBiasAlpha()rtabmap::Parametersinlinestatic
defaultImuFilterComplementaryDoAdpativeGain()rtabmap::Parametersinlinestatic
defaultImuFilterComplementaryDoBiasEstimation()rtabmap::Parametersinlinestatic
defaultImuFilterComplementaryGainAcc()rtabmap::Parametersinlinestatic
defaultImuFilterMadgwickGain()rtabmap::Parametersinlinestatic
defaultImuFilterMadgwickZeta()rtabmap::Parametersinlinestatic
defaultKAZEDiffusivity()rtabmap::Parametersinlinestatic
defaultKAZEExtended()rtabmap::Parametersinlinestatic
defaultKAZENOctaveLayers()rtabmap::Parametersinlinestatic
defaultKAZENOctaves()rtabmap::Parametersinlinestatic
defaultKAZEThreshold()rtabmap::Parametersinlinestatic
defaultKAZEUpright()rtabmap::Parametersinlinestatic
defaultKpBadSignRatio()rtabmap::Parametersinlinestatic
defaultKpByteToFloat()rtabmap::Parametersinlinestatic
defaultKpDetectorStrategy()rtabmap::Parametersinlinestatic
defaultKpDictionaryPath()rtabmap::Parametersinlinestatic
defaultKpFlannIndexSaved()rtabmap::Parametersinlinestatic
defaultKpFlannRebalancingFactor()rtabmap::Parametersinlinestatic
defaultKpFlannThreads()rtabmap::Parametersinlinestatic
defaultKpGridCols()rtabmap::Parametersinlinestatic
defaultKpGridRows()rtabmap::Parametersinlinestatic
defaultKpIncrementalDictionary()rtabmap::Parametersinlinestatic
defaultKpIncrementalFlann()rtabmap::Parametersinlinestatic
defaultKpMaxDepth()rtabmap::Parametersinlinestatic
defaultKpMaxFeatures()rtabmap::Parametersinlinestatic
defaultKpMinDepth()rtabmap::Parametersinlinestatic
defaultKpNewWordsComparedTogether()rtabmap::Parametersinlinestatic
defaultKpNndrRatio()rtabmap::Parametersinlinestatic
defaultKpNNStrategy()rtabmap::Parametersinlinestatic
defaultKpParallelized()rtabmap::Parametersinlinestatic
defaultKpRoiRatios()rtabmap::Parametersinlinestatic
defaultKpSerializeWithChecksum()rtabmap::Parametersinlinestatic
defaultKpSSC()rtabmap::Parametersinlinestatic
defaultKpSubPixEps()rtabmap::Parametersinlinestatic
defaultKpSubPixIterations()rtabmap::Parametersinlinestatic
defaultKpSubPixWinSize()rtabmap::Parametersinlinestatic
defaultKpTfIdfLikelihoodUsed()rtabmap::Parametersinlinestatic
defaultMarkerAprilTagDebug()rtabmap::Parametersinlinestatic
defaultMarkerAprilTagDecodeSharpening()rtabmap::Parametersinlinestatic
defaultMarkerAprilTagNThreads()rtabmap::Parametersinlinestatic
defaultMarkerAprilTagQuadDecimate()rtabmap::Parametersinlinestatic
defaultMarkerAprilTagQuadSigma()rtabmap::Parametersinlinestatic
defaultMarkerAprilTagRefineEdges()rtabmap::Parametersinlinestatic
defaultMarkerDictionary()rtabmap::Parametersinlinestatic
defaultMarkerLength()rtabmap::Parametersinlinestatic
defaultMarkerLengths()rtabmap::Parametersinlinestatic
defaultMarkerMaxDepthError()rtabmap::Parametersinlinestatic
defaultMarkerMaxRange()rtabmap::Parametersinlinestatic
defaultMarkerMinRange()rtabmap::Parametersinlinestatic
defaultMarkerOpenCVCornerRefinementMethod()rtabmap::Parametersinlinestatic
defaultMarkerPriors()rtabmap::Parametersinlinestatic
defaultMarkerPriorsVarianceAngular()rtabmap::Parametersinlinestatic
defaultMarkerPriorsVarianceLinear()rtabmap::Parametersinlinestatic
defaultMarkerStrategy()rtabmap::Parametersinlinestatic
defaultMarkerVarianceAngular()rtabmap::Parametersinlinestatic
defaultMarkerVarianceLinear()rtabmap::Parametersinlinestatic
defaultMarkerVarianceOrientationIgnored()rtabmap::Parametersinlinestatic
defaultMemBadSignaturesIgnored()rtabmap::Parametersinlinestatic
defaultMemBinDataKept()rtabmap::Parametersinlinestatic
defaultMemCompressionParallelized()rtabmap::Parametersinlinestatic
defaultMemCovOffDiagIgnored()rtabmap::Parametersinlinestatic
defaultMemDepthAsMask()rtabmap::Parametersinlinestatic
defaultMemDepthCompressionFormat()rtabmap::Parametersinlinestatic
defaultMemDepthMaskFloorThr()rtabmap::Parametersinlinestatic
defaultMemGenerateIds()rtabmap::Parametersinlinestatic
defaultMemGlobalDescriptorStrategy()rtabmap::Parametersinlinestatic
defaultMemImageCompressionFormat()rtabmap::Parametersinlinestatic
defaultMemImageKept()rtabmap::Parametersinlinestatic
defaultMemImagePostDecimation()rtabmap::Parametersinlinestatic
defaultMemImagePreDecimation()rtabmap::Parametersinlinestatic
defaultMemIncrementalMemory()rtabmap::Parametersinlinestatic
defaultMemInitWMWithAllNodes()rtabmap::Parametersinlinestatic
defaultMemIntermediateNodeDataKept()rtabmap::Parametersinlinestatic
defaultMemLaserScanDownsampleStepSize()rtabmap::Parametersinlinestatic
defaultMemLaserScanNormalK()rtabmap::Parametersinlinestatic
defaultMemLaserScanNormalRadius()rtabmap::Parametersinlinestatic
defaultMemLaserScanVoxelSize()rtabmap::Parametersinlinestatic
defaultMemLoadVisualLocalFeaturesOnInit()rtabmap::Parametersinlinestatic
defaultMemLocalizationDataSaved()rtabmap::Parametersinlinestatic
defaultMemLocalizationReadOnly()rtabmap::Parametersinlinestatic
defaultMemMapLabelsAdded()rtabmap::Parametersinlinestatic
defaultMemNotLinkedNodesKept()rtabmap::Parametersinlinestatic
defaultMemRawDescriptorsKept()rtabmap::Parametersinlinestatic
defaultMemRecentWmRatio()rtabmap::Parametersinlinestatic
defaultMemReduceGraph()rtabmap::Parametersinlinestatic
defaultMemRehearsalIdUpdatedToNewOne()rtabmap::Parametersinlinestatic
defaultMemRehearsalSimilarity()rtabmap::Parametersinlinestatic
defaultMemRehearsalWeightIgnoredWhileMoving()rtabmap::Parametersinlinestatic
defaultMemRotateImagesUpsideUp()rtabmap::Parametersinlinestatic
defaultMemSaveDepth16Format()rtabmap::Parametersinlinestatic
defaultMemStereoFromMotion()rtabmap::Parametersinlinestatic
defaultMemSTMSize()rtabmap::Parametersinlinestatic
defaultMemTransferSortingByWeightId()rtabmap::Parametersinlinestatic
defaultMemUseOdomFeatures()rtabmap::Parametersinlinestatic
defaultMemUseOdomGravity()rtabmap::Parametersinlinestatic
defaultOdomAlignWithGround()rtabmap::Parametersinlinestatic
defaultOdomCuVSLAMMulticamMode()rtabmap::Parametersinlinestatic
defaultOdomDeskewing()rtabmap::Parametersinlinestatic
defaultOdomF2MBundleAdjustment()rtabmap::Parametersinlinestatic
defaultOdomF2MBundleAdjustmentMaxFrames()rtabmap::Parametersinlinestatic
defaultOdomF2MBundleAdjustmentMaxKeyFramesPerFeature()rtabmap::Parametersinlinestatic
defaultOdomF2MBundleAdjustmentMinMotion()rtabmap::Parametersinlinestatic
defaultOdomF2MBundleUpdateFeatureMapOnAllFrames()rtabmap::Parametersinlinestatic
defaultOdomF2MFloorThreshold()rtabmap::Parametersinlinestatic
defaultOdomF2MInitDepthFactor()rtabmap::Parametersinlinestatic
defaultOdomF2MMaxNewFeatures()rtabmap::Parametersinlinestatic
defaultOdomF2MMaxSize()rtabmap::Parametersinlinestatic
defaultOdomF2MScanMaxSize()rtabmap::Parametersinlinestatic
defaultOdomF2MScanRange()rtabmap::Parametersinlinestatic
defaultOdomF2MScanSubtractAngle()rtabmap::Parametersinlinestatic
defaultOdomF2MScanSubtractRadius()rtabmap::Parametersinlinestatic
defaultOdomF2MValidDepthRatio()rtabmap::Parametersinlinestatic
defaultOdomFillInfoData()rtabmap::Parametersinlinestatic
defaultOdomFilteringStrategy()rtabmap::Parametersinlinestatic
defaultOdomFovisBucketHeight()rtabmap::Parametersinlinestatic
defaultOdomFovisBucketWidth()rtabmap::Parametersinlinestatic
defaultOdomFovisCliqueInlierThreshold()rtabmap::Parametersinlinestatic
defaultOdomFovisFastThreshold()rtabmap::Parametersinlinestatic
defaultOdomFovisFastThresholdAdaptiveGain()rtabmap::Parametersinlinestatic
defaultOdomFovisFeatureSearchWindow()rtabmap::Parametersinlinestatic
defaultOdomFovisFeatureWindowSize()rtabmap::Parametersinlinestatic
defaultOdomFovisInlierMaxReprojectionError()rtabmap::Parametersinlinestatic
defaultOdomFovisMaxKeypointsPerBucket()rtabmap::Parametersinlinestatic
defaultOdomFovisMaxMeanReprojectionError()rtabmap::Parametersinlinestatic
defaultOdomFovisMaxPyramidLevel()rtabmap::Parametersinlinestatic
defaultOdomFovisMinFeaturesForEstimate()rtabmap::Parametersinlinestatic
defaultOdomFovisMinPyramidLevel()rtabmap::Parametersinlinestatic
defaultOdomFovisStereoMaxDisparity()rtabmap::Parametersinlinestatic
defaultOdomFovisStereoMaxDistEpipolarLine()rtabmap::Parametersinlinestatic
defaultOdomFovisStereoMaxRefinementDisplacement()rtabmap::Parametersinlinestatic
defaultOdomFovisStereoRequireMutualMatch()rtabmap::Parametersinlinestatic
defaultOdomFovisTargetPixelsPerFeature()rtabmap::Parametersinlinestatic
defaultOdomFovisUpdateTargetFeaturesWithRefined()rtabmap::Parametersinlinestatic
defaultOdomFovisUseAdaptiveThreshold()rtabmap::Parametersinlinestatic
defaultOdomFovisUseBucketing()rtabmap::Parametersinlinestatic
defaultOdomFovisUseHomographyInitialization()rtabmap::Parametersinlinestatic
defaultOdomFovisUseImageNormalization()rtabmap::Parametersinlinestatic
defaultOdomFovisUseSubpixelRefinement()rtabmap::Parametersinlinestatic
defaultOdomGuessMotion()rtabmap::Parametersinlinestatic
defaultOdomGuessSmoothingDelay()rtabmap::Parametersinlinestatic
defaultOdomHolonomic()rtabmap::Parametersinlinestatic
defaultOdomImageBufferSize()rtabmap::Parametersinlinestatic
defaultOdomImageDecimation()rtabmap::Parametersinlinestatic
defaultOdomKalmanMeasurementNoise()rtabmap::Parametersinlinestatic
defaultOdomKalmanProcessNoise()rtabmap::Parametersinlinestatic
defaultOdomKeyFrameThr()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMAngVar()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMConfigPath()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMEdgeThreshold()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMHorizonScan()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMImuAccBiasN()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMImuAccNoise()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMImuGravity()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMImuGyrBiasN()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMImuGyrNoise()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMLinVar()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMNScan()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMSensor()rtabmap::Parametersinlinestatic
defaultOdomLIOSAMSurfThreshold()rtabmap::Parametersinlinestatic
defaultOdomLOAMAngVar()rtabmap::Parametersinlinestatic
defaultOdomLOAMLinVar()rtabmap::Parametersinlinestatic
defaultOdomLOAMLocalMapping()rtabmap::Parametersinlinestatic
defaultOdomLOAMResolution()rtabmap::Parametersinlinestatic
defaultOdomLOAMScanPeriod()rtabmap::Parametersinlinestatic
defaultOdomLOAMSensor()rtabmap::Parametersinlinestatic
defaultOdomMonoInitMinFlow()rtabmap::Parametersinlinestatic
defaultOdomMonoInitMinTranslation()rtabmap::Parametersinlinestatic
defaultOdomMonoMaxVariance()rtabmap::Parametersinlinestatic
defaultOdomMonoMinTranslation()rtabmap::Parametersinlinestatic
defaultOdomMSCKFFastThreshold()rtabmap::Parametersinlinestatic
defaultOdomMSCKFGridCol()rtabmap::Parametersinlinestatic
defaultOdomMSCKFGridMaxFeatureNum()rtabmap::Parametersinlinestatic
defaultOdomMSCKFGridMinFeatureNum()rtabmap::Parametersinlinestatic
defaultOdomMSCKFGridRow()rtabmap::Parametersinlinestatic
defaultOdomMSCKFInitCovAccBias()rtabmap::Parametersinlinestatic
defaultOdomMSCKFInitCovExRot()rtabmap::Parametersinlinestatic
defaultOdomMSCKFInitCovExTrans()rtabmap::Parametersinlinestatic
defaultOdomMSCKFInitCovGyroBias()rtabmap::Parametersinlinestatic
defaultOdomMSCKFInitCovVel()rtabmap::Parametersinlinestatic
defaultOdomMSCKFMaxCamStateSize()rtabmap::Parametersinlinestatic
defaultOdomMSCKFMaxIteration()rtabmap::Parametersinlinestatic
defaultOdomMSCKFNoiseAcc()rtabmap::Parametersinlinestatic
defaultOdomMSCKFNoiseAccBias()rtabmap::Parametersinlinestatic
defaultOdomMSCKFNoiseFeature()rtabmap::Parametersinlinestatic
defaultOdomMSCKFNoiseGyro()rtabmap::Parametersinlinestatic
defaultOdomMSCKFNoiseGyroBias()rtabmap::Parametersinlinestatic
defaultOdomMSCKFOptTranslationThreshold()rtabmap::Parametersinlinestatic
defaultOdomMSCKFPatchSize()rtabmap::Parametersinlinestatic
defaultOdomMSCKFPositionStdThreshold()rtabmap::Parametersinlinestatic
defaultOdomMSCKFPyramidLevels()rtabmap::Parametersinlinestatic
defaultOdomMSCKFRansacThreshold()rtabmap::Parametersinlinestatic
defaultOdomMSCKFRotationThreshold()rtabmap::Parametersinlinestatic
defaultOdomMSCKFStereoThreshold()rtabmap::Parametersinlinestatic
defaultOdomMSCKFTrackingRateThreshold()rtabmap::Parametersinlinestatic
defaultOdomMSCKFTrackPrecision()rtabmap::Parametersinlinestatic
defaultOdomMSCKFTranslationThreshold()rtabmap::Parametersinlinestatic
defaultOdomOKVISConfigPath()rtabmap::Parametersinlinestatic
defaultOdomOpen3DMaxDepth()rtabmap::Parametersinlinestatic
defaultOdomOpen3DMethod()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSAccelerometerNoiseDensity()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSAccelerometerRandomWalk()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSCalibCamExtrinsics()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSCalibCamIntrinsics()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSCalibCamTimeoffset()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSCalibIMUGSensitivity()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSCalibIMUIntrinsics()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSConfigPath()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSDtSLAMDelay()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSFeatRepMSCKF()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSFeatRepSLAM()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSFiMaxBaseline()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSFiMaxCondNumber()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSFiMaxRuns()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSFiRefineFeatures()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSFiTriangulate1d()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSGravityMag()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSGyroscopeNoiseDensity()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSGyroscopeRandomWalk()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynInflationBa()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynInflationBg()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynInflationOri()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynInflationVel()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynMinDeg()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynMinRecCond()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynMLEMaxIter()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynMLEMaxThreads()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynMLEMaxTime()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynMLEOptCalib()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynNumPose()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitDynUse()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitIMUThresh()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitMaxDisparity()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitMaxFeatures()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSInitWindowTime()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSIntegration()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSLeftMaskPath()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSMaxClones()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSMaxMSCKFInUpdate()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSMaxSLAM()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSMaxSLAMInUpdate()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSMinPxDist()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSNumPts()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSRightMaskPath()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSTryZUPT()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSUpMSCKFChi2Multiplier()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSUpMSCKFSigmaPx()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSUpSLAMChi2Multiplier()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSUpSLAMSigmaPx()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSUseFEJ()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSUseKLT()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSUseStereo()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSZUPTChi2Multiplier()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSZUPTMaxDisparity()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSZUPTMaxVelodicy()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSZUPTNoiseMultiplier()rtabmap::Parametersinlinestatic
defaultOdomOpenVINSZUPTOnlyAtBeginning()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMAccNoise()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMAccWalk()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMBf()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMFps()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMGyroNoise()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMGyroWalk()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMInertial()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMMapSize()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMMaxFeatures()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMSamplingRate()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMThDepth()rtabmap::Parametersinlinestatic
defaultOdomORBSLAMVocPath()rtabmap::Parametersinlinestatic
defaultOdomParticleLambdaR()rtabmap::Parametersinlinestatic
defaultOdomParticleLambdaT()rtabmap::Parametersinlinestatic
defaultOdomParticleNoiseR()rtabmap::Parametersinlinestatic
defaultOdomParticleNoiseT()rtabmap::Parametersinlinestatic
defaultOdomParticleSize()rtabmap::Parametersinlinestatic
defaultOdomResetCountdown()rtabmap::Parametersinlinestatic
defaultOdomScanKeyFrameThr()rtabmap::Parametersinlinestatic
defaultOdomStrategy()rtabmap::Parametersinlinestatic
defaultOdomVINSFusionConfigPath()rtabmap::Parametersinlinestatic
defaultOdomVisKeyFrameThr()rtabmap::Parametersinlinestatic
defaultOdomViso2BucketHeight()rtabmap::Parametersinlinestatic
defaultOdomViso2BucketMaxFeatures()rtabmap::Parametersinlinestatic
defaultOdomViso2BucketWidth()rtabmap::Parametersinlinestatic
defaultOdomViso2InlierThreshold()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchBinsize()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchDispTolerance()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchHalfResolution()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchMultiStage()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchNmsN()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchNmsTau()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchOutlierDispTolerance()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchOutlierFlowTolerance()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchRadius()rtabmap::Parametersinlinestatic
defaultOdomViso2MatchRefinement()rtabmap::Parametersinlinestatic
defaultOdomViso2RansacIters()rtabmap::Parametersinlinestatic
defaultOdomViso2Reweighting()rtabmap::Parametersinlinestatic
defaultOptimizerBaseline()rtabmap::Parametersinlinestatic
defaultOptimizerDisparityVariance()rtabmap::Parametersinlinestatic
defaultOptimizerEpsilon()rtabmap::Parametersinlinestatic
defaultOptimizerGravitySigma()rtabmap::Parametersinlinestatic
defaultOptimizerIterations()rtabmap::Parametersinlinestatic
defaultOptimizerLandmarksIgnored()rtabmap::Parametersinlinestatic
defaultOptimizerPixelVariance()rtabmap::Parametersinlinestatic
defaultOptimizerPriorsIgnored()rtabmap::Parametersinlinestatic
defaultOptimizerRobust()rtabmap::Parametersinlinestatic
defaultOptimizerRobustKernelDelta()rtabmap::Parametersinlinestatic
defaultOptimizerStrategy()rtabmap::Parametersinlinestatic
defaultOptimizerVarianceIgnored()rtabmap::Parametersinlinestatic
defaultORBEdgeThreshold()rtabmap::Parametersinlinestatic
defaultORBFirstLevel()rtabmap::Parametersinlinestatic
defaultORBGpu()rtabmap::Parametersinlinestatic
defaultORBNLevels()rtabmap::Parametersinlinestatic
defaultORBPatchSize()rtabmap::Parametersinlinestatic
defaultORBScaleFactor()rtabmap::Parametersinlinestatic
defaultORBScoreType()rtabmap::Parametersinlinestatic
defaultORBWTA_K()rtabmap::Parametersinlinestatic
defaultPyDescriptorDim()rtabmap::Parametersinlinestatic
defaultPyDescriptorPath()rtabmap::Parametersinlinestatic
defaultPyDetectorCuda()rtabmap::Parametersinlinestatic
defaultPyDetectorPath()rtabmap::Parametersinlinestatic
defaultPyMatcherCuda()rtabmap::Parametersinlinestatic
defaultPyMatcherIterations()rtabmap::Parametersinlinestatic
defaultPyMatcherModel()rtabmap::Parametersinlinestatic
defaultPyMatcherPath()rtabmap::Parametersinlinestatic
defaultPyMatcherThreshold()rtabmap::Parametersinlinestatic
defaultRegForce3DoF()rtabmap::Parametersinlinestatic
defaultRegRepeatOnce()rtabmap::Parametersinlinestatic
defaultRegStrategy()rtabmap::Parametersinlinestatic
defaultRGBDAggressiveLoopThr()rtabmap::Parametersinlinestatic
defaultRGBDAngularSpeedUpdate()rtabmap::Parametersinlinestatic
defaultRGBDAngularUpdate()rtabmap::Parametersinlinestatic
defaultRGBDCreateOccupancyGrid()rtabmap::Parametersinlinestatic
defaultRGBDEnabled()rtabmap::Parametersinlinestatic
defaultRGBDForceOdom3DoF()rtabmap::Parametersinlinestatic
defaultRGBDGoalReachedRadius()rtabmap::Parametersinlinestatic
defaultRGBDGoalsSavedInUserData()rtabmap::Parametersinlinestatic
defaultRGBDInvertedReg()rtabmap::Parametersinlinestatic
defaultRGBDLinearSpeedUpdate()rtabmap::Parametersinlinestatic
defaultRGBDLinearUpdate()rtabmap::Parametersinlinestatic
defaultRGBDLocalBundleOnLoopClosure()rtabmap::Parametersinlinestatic
defaultRGBDLocalImmunizationRatio()rtabmap::Parametersinlinestatic
defaultRGBDLocalizationPriorError()rtabmap::Parametersinlinestatic
defaultRGBDLocalizationSecondTryWithoutProximityLinks()rtabmap::Parametersinlinestatic
defaultRGBDLocalizationSmoothing()rtabmap::Parametersinlinestatic
defaultRGBDLocalRadius()rtabmap::Parametersinlinestatic
defaultRGBDLoopClosureIdentityGuess()rtabmap::Parametersinlinestatic
defaultRGBDLoopClosureReextractFeatures()rtabmap::Parametersinlinestatic
defaultRGBDLoopCovLimited()rtabmap::Parametersinlinestatic
defaultRGBDMarkerDetection()rtabmap::Parametersinlinestatic
defaultRGBDMaxLocalRetrieved()rtabmap::Parametersinlinestatic
defaultRGBDMaxLoopClosureDistance()rtabmap::Parametersinlinestatic
defaultRGBDMaxOdomCacheSize()rtabmap::Parametersinlinestatic
defaultRGBDNeighborLinkRefining()rtabmap::Parametersinlinestatic
defaultRGBDNewMapOdomChangeDistance()rtabmap::Parametersinlinestatic
defaultRGBDOptimizeFromGraphEnd()rtabmap::Parametersinlinestatic
defaultRGBDOptimizeMaxError()rtabmap::Parametersinlinestatic
defaultRGBDOptimizeMaxErrorRepairRadius()rtabmap::Parametersinlinestatic
defaultRGBDPlanAngularVelocity()rtabmap::Parametersinlinestatic
defaultRGBDPlanLinearVelocity()rtabmap::Parametersinlinestatic
defaultRGBDPlanStuckIterations()rtabmap::Parametersinlinestatic
defaultRGBDProximityAngle()rtabmap::Parametersinlinestatic
defaultRGBDProximityBySpace()rtabmap::Parametersinlinestatic
defaultRGBDProximityByTime()rtabmap::Parametersinlinestatic
defaultRGBDProximityGlobalScanMap()rtabmap::Parametersinlinestatic
defaultRGBDProximityMaxGraphDepth()rtabmap::Parametersinlinestatic
defaultRGBDProximityMaxPaths()rtabmap::Parametersinlinestatic
defaultRGBDProximityMergedScanCovFactor()rtabmap::Parametersinlinestatic
defaultRGBDProximityOdomGuess()rtabmap::Parametersinlinestatic
defaultRGBDProximityPathFilteringRadius()rtabmap::Parametersinlinestatic
defaultRGBDProximityPathMaxNeighbors()rtabmap::Parametersinlinestatic
defaultRGBDProximityPathRawPosesUsed()rtabmap::Parametersinlinestatic
defaultRGBDScanMatchingIdsSavedInLinks()rtabmap::Parametersinlinestatic
defaultRGBDStartAtOrigin()rtabmap::Parametersinlinestatic
defaultRtabmapComputeRMSE()rtabmap::Parametersinlinestatic
defaultRtabmapCreateIntermediateNodes()rtabmap::Parametersinlinestatic
defaultRtabmapDetectionRate()rtabmap::Parametersinlinestatic
defaultRtabmapImageBufferSize()rtabmap::Parametersinlinestatic
defaultRtabmapImagesAlreadyRectified()rtabmap::Parametersinlinestatic
defaultRtabmapLoopGPS()rtabmap::Parametersinlinestatic
defaultRtabmapLoopRatio()rtabmap::Parametersinlinestatic
defaultRtabmapLoopThr()rtabmap::Parametersinlinestatic
defaultRtabmapMaxRepublished()rtabmap::Parametersinlinestatic
defaultRtabmapMaxRetrieved()rtabmap::Parametersinlinestatic
defaultRtabmapMemoryThr()rtabmap::Parametersinlinestatic
defaultRtabmapPublishLastSignature()rtabmap::Parametersinlinestatic
defaultRtabmapPublishLikelihood()rtabmap::Parametersinlinestatic
defaultRtabmapPublishPdf()rtabmap::Parametersinlinestatic
defaultRtabmapPublishRAMUsage()rtabmap::Parametersinlinestatic
defaultRtabmapPublishStats()rtabmap::Parametersinlinestatic
defaultRtabmapRectifyOnlyFeatures()rtabmap::Parametersinlinestatic
defaultRtabmapSaveWMState()rtabmap::Parametersinlinestatic
defaultRtabmapStartNewMapOnGoodSignature()rtabmap::Parametersinlinestatic
defaultRtabmapStartNewMapOnLoopClosure()rtabmap::Parametersinlinestatic
defaultRtabmapStatisticLogged()rtabmap::Parametersinlinestatic
defaultRtabmapStatisticLoggedHeaders()rtabmap::Parametersinlinestatic
defaultRtabmapStatisticLogsBufferedInRAM()rtabmap::Parametersinlinestatic
defaultRtabmapTimeThr()rtabmap::Parametersinlinestatic
defaultRtabmapVirtualPlaceLikelihoodRatio()rtabmap::Parametersinlinestatic
defaultRtabmapWorkingDirectory()rtabmap::Parametersinlinestatic
defaultSIFTContrastThreshold()rtabmap::Parametersinlinestatic
defaultSIFTEdgeThreshold()rtabmap::Parametersinlinestatic
defaultSIFTGaussianThreshold()rtabmap::Parametersinlinestatic
defaultSIFTGpu()rtabmap::Parametersinlinestatic
defaultSIFTMaxGaussianThreshold()rtabmap::Parametersinlinestatic
defaultSIFTNOctaveLayers()rtabmap::Parametersinlinestatic
defaultSIFTPreciseUpscale()rtabmap::Parametersinlinestatic
defaultSIFTRootSIFT()rtabmap::Parametersinlinestatic
defaultSIFTSigma()rtabmap::Parametersinlinestatic
defaultSIFTUpscale()rtabmap::Parametersinlinestatic
defaultStereoBMBlockSize()rtabmap::Parametersinlinestatic
defaultStereoBMDisp12MaxDiff()rtabmap::Parametersinlinestatic
defaultStereoBMMinDisparity()rtabmap::Parametersinlinestatic
defaultStereoBMNumDisparities()rtabmap::Parametersinlinestatic
defaultStereoBMPreFilterCap()rtabmap::Parametersinlinestatic
defaultStereoBMPreFilterSize()rtabmap::Parametersinlinestatic
defaultStereoBMSpeckleRange()rtabmap::Parametersinlinestatic
defaultStereoBMSpeckleWindowSize()rtabmap::Parametersinlinestatic
defaultStereoBMTextureThreshold()rtabmap::Parametersinlinestatic
defaultStereoBMUniquenessRatio()rtabmap::Parametersinlinestatic
defaultStereoDenseStrategy()rtabmap::Parametersinlinestatic
defaultStereoEps()rtabmap::Parametersinlinestatic
defaultStereoErrorThreshold()rtabmap::Parametersinlinestatic
defaultStereoGpu()rtabmap::Parametersinlinestatic
defaultStereoIterations()rtabmap::Parametersinlinestatic
defaultStereoMaxDisparity()rtabmap::Parametersinlinestatic
defaultStereoMaxLevel()rtabmap::Parametersinlinestatic
defaultStereoMinDisparity()rtabmap::Parametersinlinestatic
defaultStereoMinEigThreshold()rtabmap::Parametersinlinestatic
defaultStereoOpticalFlow()rtabmap::Parametersinlinestatic
defaultStereoSGBMBlockSize()rtabmap::Parametersinlinestatic
defaultStereoSGBMDisp12MaxDiff()rtabmap::Parametersinlinestatic
defaultStereoSGBMMinDisparity()rtabmap::Parametersinlinestatic
defaultStereoSGBMMode()rtabmap::Parametersinlinestatic
defaultStereoSGBMNumDisparities()rtabmap::Parametersinlinestatic
defaultStereoSGBMP1()rtabmap::Parametersinlinestatic
defaultStereoSGBMP2()rtabmap::Parametersinlinestatic
defaultStereoSGBMPreFilterCap()rtabmap::Parametersinlinestatic
defaultStereoSGBMSpeckleRange()rtabmap::Parametersinlinestatic
defaultStereoSGBMSpeckleWindowSize()rtabmap::Parametersinlinestatic
defaultStereoSGBMUniquenessRatio()rtabmap::Parametersinlinestatic
defaultStereoSSD()rtabmap::Parametersinlinestatic
defaultStereoUseMinEigenVals()rtabmap::Parametersinlinestatic
defaultStereoWinHeight()rtabmap::Parametersinlinestatic
defaultStereoWinWidth()rtabmap::Parametersinlinestatic
defaultSuperPointCuda()rtabmap::Parametersinlinestatic
defaultSuperPointModelPath()rtabmap::Parametersinlinestatic
defaultSuperPointNMS()rtabmap::Parametersinlinestatic
defaultSuperPointNMSRadius()rtabmap::Parametersinlinestatic
defaultSuperPointRpautratCuda()rtabmap::Parametersinlinestatic
defaultSuperPointRpautratModelPath()rtabmap::Parametersinlinestatic
defaultSuperPointRpautratNMS()rtabmap::Parametersinlinestatic
defaultSuperPointRpautratNMSRadius()rtabmap::Parametersinlinestatic
defaultSuperPointRpautratThreshold()rtabmap::Parametersinlinestatic
defaultSuperPointRpautratWeightsPath()rtabmap::Parametersinlinestatic
defaultSuperPointThreshold()rtabmap::Parametersinlinestatic
defaultSURFExtended()rtabmap::Parametersinlinestatic
defaultSURFGpuKeypointsRatio()rtabmap::Parametersinlinestatic
defaultSURFGpuVersion()rtabmap::Parametersinlinestatic
defaultSURFHessianThreshold()rtabmap::Parametersinlinestatic
defaultSURFOctaveLayers()rtabmap::Parametersinlinestatic
defaultSURFOctaves()rtabmap::Parametersinlinestatic
defaultSURFUpright()rtabmap::Parametersinlinestatic
defaultVhEpEnabled()rtabmap::Parametersinlinestatic
defaultVhEpMatchCountMin()rtabmap::Parametersinlinestatic
defaultVhEpRansacParam1()rtabmap::Parametersinlinestatic
defaultVhEpRansacParam2()rtabmap::Parametersinlinestatic
defaultVisBundleAdjustment()rtabmap::Parametersinlinestatic
defaultVisCorFlowEps()rtabmap::Parametersinlinestatic
defaultVisCorFlowErrorThreshold()rtabmap::Parametersinlinestatic
defaultVisCorFlowGpu()rtabmap::Parametersinlinestatic
defaultVisCorFlowIterations()rtabmap::Parametersinlinestatic
defaultVisCorFlowMaxLevel()rtabmap::Parametersinlinestatic
defaultVisCorFlowMinEigThreshold()rtabmap::Parametersinlinestatic
defaultVisCorFlowUseMinEigenVals()rtabmap::Parametersinlinestatic
defaultVisCorFlowWinSize()rtabmap::Parametersinlinestatic
defaultVisCorGuessMatchToProjection()rtabmap::Parametersinlinestatic
defaultVisCorGuessWinSize()rtabmap::Parametersinlinestatic
defaultVisCorNNDR()rtabmap::Parametersinlinestatic
defaultVisCorNNType()rtabmap::Parametersinlinestatic
defaultVisCorType()rtabmap::Parametersinlinestatic
defaultVisDepthAsMask()rtabmap::Parametersinlinestatic
defaultVisDepthMaskFloorThr()rtabmap::Parametersinlinestatic
defaultVisEpipolarGeometryVar()rtabmap::Parametersinlinestatic
defaultVisEstimationType()rtabmap::Parametersinlinestatic
defaultVisFeatureType()rtabmap::Parametersinlinestatic
defaultVisGridCols()rtabmap::Parametersinlinestatic
defaultVisGridRows()rtabmap::Parametersinlinestatic
defaultVisInlierDistance()rtabmap::Parametersinlinestatic
defaultVisIterations()rtabmap::Parametersinlinestatic
defaultVisMaxDepth()rtabmap::Parametersinlinestatic
defaultVisMaxFeatures()rtabmap::Parametersinlinestatic
defaultVisMeanInliersDistance()rtabmap::Parametersinlinestatic
defaultVisMinDepth()rtabmap::Parametersinlinestatic
defaultVisMinInliers()rtabmap::Parametersinlinestatic
defaultVisMinInliersDistribution()rtabmap::Parametersinlinestatic
defaultVisPnPFlags()rtabmap::Parametersinlinestatic
defaultVisPnPMaxVariance()rtabmap::Parametersinlinestatic
defaultVisPnPRefineIterations()rtabmap::Parametersinlinestatic
defaultVisPnPReprojError()rtabmap::Parametersinlinestatic
defaultVisPnPSamplingPolicy()rtabmap::Parametersinlinestatic
defaultVisPnPSplitLinearCovComponents()rtabmap::Parametersinlinestatic
defaultVisPnPVarianceMedianRatio()rtabmap::Parametersinlinestatic
defaultVisRefineIterations()rtabmap::Parametersinlinestatic
defaultVisRoiRatios()rtabmap::Parametersinlinestatic
defaultVisSSC()rtabmap::Parametersinlinestatic
defaultVisSubPixEps()rtabmap::Parametersinlinestatic
defaultVisSubPixIterations()rtabmap::Parametersinlinestatic
defaultVisSubPixWinSize()rtabmap::Parametersinlinestatic
deserialize(const std::string &parameters) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
filterParameters(const ParametersMap &parameters, const std::string &group, bool remove=false)rtabmap::Parametersstatic
getBackwardCompatibilityMap()rtabmap::Parametersstatic
getDefaultDatabaseName() (defined in rtabmap::Parameters)rtabmap::Parametersstatic
getDefaultOdometryParameters(bool stereo=false, bool vis=true, bool icp=false) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
getDefaultParameters()rtabmap::Parametersinlinestatic
getDefaultParameters(const std::string &group) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
getDescription(const std::string &paramKey)rtabmap::Parametersstatic
getRemovedParameters()rtabmap::Parametersstatic
getType(const std::string &paramKey)rtabmap::Parametersstatic
getVersion() (defined in rtabmap::Parameters)rtabmap::Parametersstatic
isFeatureParameter(const std::string &param) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
kBayesFullPredictionUpdate()rtabmap::Parametersinlinestatic
kBayesPredictionLC()rtabmap::Parametersinlinestatic
kBayesSparsePrediction()rtabmap::Parametersinlinestatic
kBayesVirtualPlacePriorThr()rtabmap::Parametersinlinestatic
kBRIEFBytes()rtabmap::Parametersinlinestatic
kBRISKOctaves()rtabmap::Parametersinlinestatic
kBRISKPatternScale()rtabmap::Parametersinlinestatic
kBRISKThresh()rtabmap::Parametersinlinestatic
kDbSqlite3CacheSize()rtabmap::Parametersinlinestatic
kDbSqlite3InMemory()rtabmap::Parametersinlinestatic
kDbSqlite3JournalMode()rtabmap::Parametersinlinestatic
kDbSqlite3Synchronous()rtabmap::Parametersinlinestatic
kDbSqlite3TempStore()rtabmap::Parametersinlinestatic
kDbTargetVersion()rtabmap::Parametersinlinestatic
kFASTCV()rtabmap::Parametersinlinestatic
kFASTGpu()rtabmap::Parametersinlinestatic
kFASTGpuKeypointsRatio()rtabmap::Parametersinlinestatic
kFASTGridCols()rtabmap::Parametersinlinestatic
kFASTGridRows()rtabmap::Parametersinlinestatic
kFASTMaxThreshold()rtabmap::Parametersinlinestatic
kFASTMinThreshold()rtabmap::Parametersinlinestatic
kFASTNonmaxSuppression()rtabmap::Parametersinlinestatic
kFASTThreshold()rtabmap::Parametersinlinestatic
kFREAKNOctaves()rtabmap::Parametersinlinestatic
kFREAKOrientationNormalized()rtabmap::Parametersinlinestatic
kFREAKPatternScale()rtabmap::Parametersinlinestatic
kFREAKScaleNormalized()rtabmap::Parametersinlinestatic
kg2oOptimizer()rtabmap::Parametersinlinestatic
kg2oSolver()rtabmap::Parametersinlinestatic
kGFTTBlockSize()rtabmap::Parametersinlinestatic
kGFTTGpu()rtabmap::Parametersinlinestatic
kGFTTK()rtabmap::Parametersinlinestatic
kGFTTMinDistance()rtabmap::Parametersinlinestatic
kGFTTQualityLevel()rtabmap::Parametersinlinestatic
kGFTTUseHarrisDetector()rtabmap::Parametersinlinestatic
kGMSThresholdFactor()rtabmap::Parametersinlinestatic
kGMSWithRotation()rtabmap::Parametersinlinestatic
kGMSWithScale()rtabmap::Parametersinlinestatic
kGrid3D()rtabmap::Parametersinlinestatic
kGridCellSize()rtabmap::Parametersinlinestatic
kGridClusterRadius()rtabmap::Parametersinlinestatic
kGridDepthDecimation()rtabmap::Parametersinlinestatic
kGridDepthRoiRatios()rtabmap::Parametersinlinestatic
kGridFlatObstacleDetected()rtabmap::Parametersinlinestatic
kGridFootprintHeight()rtabmap::Parametersinlinestatic
kGridFootprintLength()rtabmap::Parametersinlinestatic
kGridFootprintWidth()rtabmap::Parametersinlinestatic
kGridGlobalAltitudeDelta()rtabmap::Parametersinlinestatic
kGridGlobalEroded()rtabmap::Parametersinlinestatic
kGridGlobalFloodFillDepth()rtabmap::Parametersinlinestatic
kGridGlobalFootprintRadius()rtabmap::Parametersinlinestatic
kGridGlobalMaxNodes()rtabmap::Parametersinlinestatic
kGridGlobalMinSize()rtabmap::Parametersinlinestatic
kGridGlobalOccupancyThr()rtabmap::Parametersinlinestatic
kGridGlobalProbClampingMax()rtabmap::Parametersinlinestatic
kGridGlobalProbClampingMin()rtabmap::Parametersinlinestatic
kGridGlobalProbHit()rtabmap::Parametersinlinestatic
kGridGlobalProbMiss()rtabmap::Parametersinlinestatic
kGridGlobalUpdateError()rtabmap::Parametersinlinestatic
kGridGroundIsObstacle()rtabmap::Parametersinlinestatic
kGridMapFrameProjection()rtabmap::Parametersinlinestatic
kGridMaxGroundAngle()rtabmap::Parametersinlinestatic
kGridMaxGroundHeight()rtabmap::Parametersinlinestatic
kGridMaxObstacleHeight()rtabmap::Parametersinlinestatic
kGridMinClusterSize()rtabmap::Parametersinlinestatic
kGridMinGroundHeight()rtabmap::Parametersinlinestatic
kGridNoiseFilteringMinNeighbors()rtabmap::Parametersinlinestatic
kGridNoiseFilteringRadius()rtabmap::Parametersinlinestatic
kGridNormalK()rtabmap::Parametersinlinestatic
kGridNormalsSegmentation()rtabmap::Parametersinlinestatic
kGridPreVoxelFiltering()rtabmap::Parametersinlinestatic
kGridRangeMax()rtabmap::Parametersinlinestatic
kGridRangeMin()rtabmap::Parametersinlinestatic
kGridRayTracing()rtabmap::Parametersinlinestatic
kGridScan2dUnknownSpaceFilled()rtabmap::Parametersinlinestatic
kGridScanDecimation()rtabmap::Parametersinlinestatic
kGridSensor()rtabmap::Parametersinlinestatic
kGTSAMIncRelinearizeSkip()rtabmap::Parametersinlinestatic
kGTSAMIncRelinearizeThreshold()rtabmap::Parametersinlinestatic
kGTSAMIncremental()rtabmap::Parametersinlinestatic
kGTSAMOptimizer()rtabmap::Parametersinlinestatic
kIcpCCFilterOutFarthestPoints()rtabmap::Parametersinlinestatic
kIcpCCMaxFinalRMS()rtabmap::Parametersinlinestatic
kIcpCCSamplingLimit()rtabmap::Parametersinlinestatic
kIcpCorrespondenceRatio()rtabmap::Parametersinlinestatic
kIcpDebugExportFormat()rtabmap::Parametersinlinestatic
kIcpDownsamplingStep()rtabmap::Parametersinlinestatic
kIcpEpsilon()rtabmap::Parametersinlinestatic
kIcpFiltersEnabled()rtabmap::Parametersinlinestatic
kIcpForce4DoF()rtabmap::Parametersinlinestatic
kIcpIterations()rtabmap::Parametersinlinestatic
kIcpMaxCorrespondenceDistance()rtabmap::Parametersinlinestatic
kIcpMaxRotation()rtabmap::Parametersinlinestatic
kIcpMaxTranslation()rtabmap::Parametersinlinestatic
kIcpOutlierRatio()rtabmap::Parametersinlinestatic
kIcpPMConfig()rtabmap::Parametersinlinestatic
kIcpPMMatcherEpsilon()rtabmap::Parametersinlinestatic
kIcpPMMatcherIntensity()rtabmap::Parametersinlinestatic
kIcpPMMatcherKnn()rtabmap::Parametersinlinestatic
kIcpPointToPlane()rtabmap::Parametersinlinestatic
kIcpPointToPlaneComplexityCentered()rtabmap::Parametersinlinestatic
kIcpPointToPlaneGroundNormalsUp()rtabmap::Parametersinlinestatic
kIcpPointToPlaneK()rtabmap::Parametersinlinestatic
kIcpPointToPlaneLowComplexityStrategy()rtabmap::Parametersinlinestatic
kIcpPointToPlaneMinComplexity()rtabmap::Parametersinlinestatic
kIcpPointToPlaneRadius()rtabmap::Parametersinlinestatic
kIcpRangeMax()rtabmap::Parametersinlinestatic
kIcpRangeMin()rtabmap::Parametersinlinestatic
kIcpReciprocalCorrespondences()rtabmap::Parametersinlinestatic
kIcpStrategy()rtabmap::Parametersinlinestatic
kIcpVoxelSize()rtabmap::Parametersinlinestatic
kImuFilterComplementaryBiasAlpha()rtabmap::Parametersinlinestatic
kImuFilterComplementaryDoAdpativeGain()rtabmap::Parametersinlinestatic
kImuFilterComplementaryDoBiasEstimation()rtabmap::Parametersinlinestatic
kImuFilterComplementaryGainAcc()rtabmap::Parametersinlinestatic
kImuFilterMadgwickGain()rtabmap::Parametersinlinestatic
kImuFilterMadgwickZeta()rtabmap::Parametersinlinestatic
kKAZEDiffusivity()rtabmap::Parametersinlinestatic
kKAZEExtended()rtabmap::Parametersinlinestatic
kKAZENOctaveLayers()rtabmap::Parametersinlinestatic
kKAZENOctaves()rtabmap::Parametersinlinestatic
kKAZEThreshold()rtabmap::Parametersinlinestatic
kKAZEUpright()rtabmap::Parametersinlinestatic
kKpBadSignRatio()rtabmap::Parametersinlinestatic
kKpByteToFloat()rtabmap::Parametersinlinestatic
kKpDetectorStrategy()rtabmap::Parametersinlinestatic
kKpDictionaryPath()rtabmap::Parametersinlinestatic
kKpFlannIndexSaved()rtabmap::Parametersinlinestatic
kKpFlannRebalancingFactor()rtabmap::Parametersinlinestatic
kKpFlannThreads()rtabmap::Parametersinlinestatic
kKpGridCols()rtabmap::Parametersinlinestatic
kKpGridRows()rtabmap::Parametersinlinestatic
kKpIncrementalDictionary()rtabmap::Parametersinlinestatic
kKpIncrementalFlann()rtabmap::Parametersinlinestatic
kKpMaxDepth()rtabmap::Parametersinlinestatic
kKpMaxFeatures()rtabmap::Parametersinlinestatic
kKpMinDepth()rtabmap::Parametersinlinestatic
kKpNewWordsComparedTogether()rtabmap::Parametersinlinestatic
kKpNndrRatio()rtabmap::Parametersinlinestatic
kKpNNStrategy()rtabmap::Parametersinlinestatic
kKpParallelized()rtabmap::Parametersinlinestatic
kKpRoiRatios()rtabmap::Parametersinlinestatic
kKpSerializeWithChecksum()rtabmap::Parametersinlinestatic
kKpSSC()rtabmap::Parametersinlinestatic
kKpSubPixEps()rtabmap::Parametersinlinestatic
kKpSubPixIterations()rtabmap::Parametersinlinestatic
kKpSubPixWinSize()rtabmap::Parametersinlinestatic
kKpTfIdfLikelihoodUsed()rtabmap::Parametersinlinestatic
kMarkerAprilTagDebug()rtabmap::Parametersinlinestatic
kMarkerAprilTagDecodeSharpening()rtabmap::Parametersinlinestatic
kMarkerAprilTagNThreads()rtabmap::Parametersinlinestatic
kMarkerAprilTagQuadDecimate()rtabmap::Parametersinlinestatic
kMarkerAprilTagQuadSigma()rtabmap::Parametersinlinestatic
kMarkerAprilTagRefineEdges()rtabmap::Parametersinlinestatic
kMarkerDictionary()rtabmap::Parametersinlinestatic
kMarkerLength()rtabmap::Parametersinlinestatic
kMarkerLengths()rtabmap::Parametersinlinestatic
kMarkerMaxDepthError()rtabmap::Parametersinlinestatic
kMarkerMaxRange()rtabmap::Parametersinlinestatic
kMarkerMinRange()rtabmap::Parametersinlinestatic
kMarkerOpenCVCornerRefinementMethod()rtabmap::Parametersinlinestatic
kMarkerPriors()rtabmap::Parametersinlinestatic
kMarkerPriorsVarianceAngular()rtabmap::Parametersinlinestatic
kMarkerPriorsVarianceLinear()rtabmap::Parametersinlinestatic
kMarkerStrategy()rtabmap::Parametersinlinestatic
kMarkerVarianceAngular()rtabmap::Parametersinlinestatic
kMarkerVarianceLinear()rtabmap::Parametersinlinestatic
kMarkerVarianceOrientationIgnored()rtabmap::Parametersinlinestatic
kMemBadSignaturesIgnored()rtabmap::Parametersinlinestatic
kMemBinDataKept()rtabmap::Parametersinlinestatic
kMemCompressionParallelized()rtabmap::Parametersinlinestatic
kMemCovOffDiagIgnored()rtabmap::Parametersinlinestatic
kMemDepthAsMask()rtabmap::Parametersinlinestatic
kMemDepthCompressionFormat()rtabmap::Parametersinlinestatic
kMemDepthMaskFloorThr()rtabmap::Parametersinlinestatic
kMemGenerateIds()rtabmap::Parametersinlinestatic
kMemGlobalDescriptorStrategy()rtabmap::Parametersinlinestatic
kMemImageCompressionFormat()rtabmap::Parametersinlinestatic
kMemImageKept()rtabmap::Parametersinlinestatic
kMemImagePostDecimation()rtabmap::Parametersinlinestatic
kMemImagePreDecimation()rtabmap::Parametersinlinestatic
kMemIncrementalMemory()rtabmap::Parametersinlinestatic
kMemInitWMWithAllNodes()rtabmap::Parametersinlinestatic
kMemIntermediateNodeDataKept()rtabmap::Parametersinlinestatic
kMemLaserScanDownsampleStepSize()rtabmap::Parametersinlinestatic
kMemLaserScanNormalK()rtabmap::Parametersinlinestatic
kMemLaserScanNormalRadius()rtabmap::Parametersinlinestatic
kMemLaserScanVoxelSize()rtabmap::Parametersinlinestatic
kMemLoadVisualLocalFeaturesOnInit()rtabmap::Parametersinlinestatic
kMemLocalizationDataSaved()rtabmap::Parametersinlinestatic
kMemLocalizationReadOnly()rtabmap::Parametersinlinestatic
kMemMapLabelsAdded()rtabmap::Parametersinlinestatic
kMemNotLinkedNodesKept()rtabmap::Parametersinlinestatic
kMemRawDescriptorsKept()rtabmap::Parametersinlinestatic
kMemRecentWmRatio()rtabmap::Parametersinlinestatic
kMemReduceGraph()rtabmap::Parametersinlinestatic
kMemRehearsalIdUpdatedToNewOne()rtabmap::Parametersinlinestatic
kMemRehearsalSimilarity()rtabmap::Parametersinlinestatic
kMemRehearsalWeightIgnoredWhileMoving()rtabmap::Parametersinlinestatic
kMemRotateImagesUpsideUp()rtabmap::Parametersinlinestatic
kMemSaveDepth16Format()rtabmap::Parametersinlinestatic
kMemStereoFromMotion()rtabmap::Parametersinlinestatic
kMemSTMSize()rtabmap::Parametersinlinestatic
kMemTransferSortingByWeightId()rtabmap::Parametersinlinestatic
kMemUseOdomFeatures()rtabmap::Parametersinlinestatic
kMemUseOdomGravity()rtabmap::Parametersinlinestatic
kOdomAlignWithGround()rtabmap::Parametersinlinestatic
kOdomCuVSLAMMulticamMode()rtabmap::Parametersinlinestatic
kOdomDeskewing()rtabmap::Parametersinlinestatic
kOdomF2MBundleAdjustment()rtabmap::Parametersinlinestatic
kOdomF2MBundleAdjustmentMaxFrames()rtabmap::Parametersinlinestatic
kOdomF2MBundleAdjustmentMaxKeyFramesPerFeature()rtabmap::Parametersinlinestatic
kOdomF2MBundleAdjustmentMinMotion()rtabmap::Parametersinlinestatic
kOdomF2MBundleUpdateFeatureMapOnAllFrames()rtabmap::Parametersinlinestatic
kOdomF2MFloorThreshold()rtabmap::Parametersinlinestatic
kOdomF2MInitDepthFactor()rtabmap::Parametersinlinestatic
kOdomF2MMaxNewFeatures()rtabmap::Parametersinlinestatic
kOdomF2MMaxSize()rtabmap::Parametersinlinestatic
kOdomF2MScanMaxSize()rtabmap::Parametersinlinestatic
kOdomF2MScanRange()rtabmap::Parametersinlinestatic
kOdomF2MScanSubtractAngle()rtabmap::Parametersinlinestatic
kOdomF2MScanSubtractRadius()rtabmap::Parametersinlinestatic
kOdomF2MValidDepthRatio()rtabmap::Parametersinlinestatic
kOdomFillInfoData()rtabmap::Parametersinlinestatic
kOdomFilteringStrategy()rtabmap::Parametersinlinestatic
kOdomFovisBucketHeight()rtabmap::Parametersinlinestatic
kOdomFovisBucketWidth()rtabmap::Parametersinlinestatic
kOdomFovisCliqueInlierThreshold()rtabmap::Parametersinlinestatic
kOdomFovisFastThreshold()rtabmap::Parametersinlinestatic
kOdomFovisFastThresholdAdaptiveGain()rtabmap::Parametersinlinestatic
kOdomFovisFeatureSearchWindow()rtabmap::Parametersinlinestatic
kOdomFovisFeatureWindowSize()rtabmap::Parametersinlinestatic
kOdomFovisInlierMaxReprojectionError()rtabmap::Parametersinlinestatic
kOdomFovisMaxKeypointsPerBucket()rtabmap::Parametersinlinestatic
kOdomFovisMaxMeanReprojectionError()rtabmap::Parametersinlinestatic
kOdomFovisMaxPyramidLevel()rtabmap::Parametersinlinestatic
kOdomFovisMinFeaturesForEstimate()rtabmap::Parametersinlinestatic
kOdomFovisMinPyramidLevel()rtabmap::Parametersinlinestatic
kOdomFovisStereoMaxDisparity()rtabmap::Parametersinlinestatic
kOdomFovisStereoMaxDistEpipolarLine()rtabmap::Parametersinlinestatic
kOdomFovisStereoMaxRefinementDisplacement()rtabmap::Parametersinlinestatic
kOdomFovisStereoRequireMutualMatch()rtabmap::Parametersinlinestatic
kOdomFovisTargetPixelsPerFeature()rtabmap::Parametersinlinestatic
kOdomFovisUpdateTargetFeaturesWithRefined()rtabmap::Parametersinlinestatic
kOdomFovisUseAdaptiveThreshold()rtabmap::Parametersinlinestatic
kOdomFovisUseBucketing()rtabmap::Parametersinlinestatic
kOdomFovisUseHomographyInitialization()rtabmap::Parametersinlinestatic
kOdomFovisUseImageNormalization()rtabmap::Parametersinlinestatic
kOdomFovisUseSubpixelRefinement()rtabmap::Parametersinlinestatic
kOdomGuessMotion()rtabmap::Parametersinlinestatic
kOdomGuessSmoothingDelay()rtabmap::Parametersinlinestatic
kOdomHolonomic()rtabmap::Parametersinlinestatic
kOdomImageBufferSize()rtabmap::Parametersinlinestatic
kOdomImageDecimation()rtabmap::Parametersinlinestatic
kOdomKalmanMeasurementNoise()rtabmap::Parametersinlinestatic
kOdomKalmanProcessNoise()rtabmap::Parametersinlinestatic
kOdomKeyFrameThr()rtabmap::Parametersinlinestatic
kOdomLIOSAMAngVar()rtabmap::Parametersinlinestatic
kOdomLIOSAMConfigPath()rtabmap::Parametersinlinestatic
kOdomLIOSAMEdgeThreshold()rtabmap::Parametersinlinestatic
kOdomLIOSAMHorizonScan()rtabmap::Parametersinlinestatic
kOdomLIOSAMImuAccBiasN()rtabmap::Parametersinlinestatic
kOdomLIOSAMImuAccNoise()rtabmap::Parametersinlinestatic
kOdomLIOSAMImuGravity()rtabmap::Parametersinlinestatic
kOdomLIOSAMImuGyrBiasN()rtabmap::Parametersinlinestatic
kOdomLIOSAMImuGyrNoise()rtabmap::Parametersinlinestatic
kOdomLIOSAMLinVar()rtabmap::Parametersinlinestatic
kOdomLIOSAMNScan()rtabmap::Parametersinlinestatic
kOdomLIOSAMSensor()rtabmap::Parametersinlinestatic
kOdomLIOSAMSurfThreshold()rtabmap::Parametersinlinestatic
kOdomLOAMAngVar()rtabmap::Parametersinlinestatic
kOdomLOAMLinVar()rtabmap::Parametersinlinestatic
kOdomLOAMLocalMapping()rtabmap::Parametersinlinestatic
kOdomLOAMResolution()rtabmap::Parametersinlinestatic
kOdomLOAMScanPeriod()rtabmap::Parametersinlinestatic
kOdomLOAMSensor()rtabmap::Parametersinlinestatic
kOdomMonoInitMinFlow()rtabmap::Parametersinlinestatic
kOdomMonoInitMinTranslation()rtabmap::Parametersinlinestatic
kOdomMonoMaxVariance()rtabmap::Parametersinlinestatic
kOdomMonoMinTranslation()rtabmap::Parametersinlinestatic
kOdomMSCKFFastThreshold()rtabmap::Parametersinlinestatic
kOdomMSCKFGridCol()rtabmap::Parametersinlinestatic
kOdomMSCKFGridMaxFeatureNum()rtabmap::Parametersinlinestatic
kOdomMSCKFGridMinFeatureNum()rtabmap::Parametersinlinestatic
kOdomMSCKFGridRow()rtabmap::Parametersinlinestatic
kOdomMSCKFInitCovAccBias()rtabmap::Parametersinlinestatic
kOdomMSCKFInitCovExRot()rtabmap::Parametersinlinestatic
kOdomMSCKFInitCovExTrans()rtabmap::Parametersinlinestatic
kOdomMSCKFInitCovGyroBias()rtabmap::Parametersinlinestatic
kOdomMSCKFInitCovVel()rtabmap::Parametersinlinestatic
kOdomMSCKFMaxCamStateSize()rtabmap::Parametersinlinestatic
kOdomMSCKFMaxIteration()rtabmap::Parametersinlinestatic
kOdomMSCKFNoiseAcc()rtabmap::Parametersinlinestatic
kOdomMSCKFNoiseAccBias()rtabmap::Parametersinlinestatic
kOdomMSCKFNoiseFeature()rtabmap::Parametersinlinestatic
kOdomMSCKFNoiseGyro()rtabmap::Parametersinlinestatic
kOdomMSCKFNoiseGyroBias()rtabmap::Parametersinlinestatic
kOdomMSCKFOptTranslationThreshold()rtabmap::Parametersinlinestatic
kOdomMSCKFPatchSize()rtabmap::Parametersinlinestatic
kOdomMSCKFPositionStdThreshold()rtabmap::Parametersinlinestatic
kOdomMSCKFPyramidLevels()rtabmap::Parametersinlinestatic
kOdomMSCKFRansacThreshold()rtabmap::Parametersinlinestatic
kOdomMSCKFRotationThreshold()rtabmap::Parametersinlinestatic
kOdomMSCKFStereoThreshold()rtabmap::Parametersinlinestatic
kOdomMSCKFTrackingRateThreshold()rtabmap::Parametersinlinestatic
kOdomMSCKFTrackPrecision()rtabmap::Parametersinlinestatic
kOdomMSCKFTranslationThreshold()rtabmap::Parametersinlinestatic
kOdomOKVISConfigPath()rtabmap::Parametersinlinestatic
kOdomOpen3DMaxDepth()rtabmap::Parametersinlinestatic
kOdomOpen3DMethod()rtabmap::Parametersinlinestatic
kOdomOpenVINSAccelerometerNoiseDensity()rtabmap::Parametersinlinestatic
kOdomOpenVINSAccelerometerRandomWalk()rtabmap::Parametersinlinestatic
kOdomOpenVINSCalibCamExtrinsics()rtabmap::Parametersinlinestatic
kOdomOpenVINSCalibCamIntrinsics()rtabmap::Parametersinlinestatic
kOdomOpenVINSCalibCamTimeoffset()rtabmap::Parametersinlinestatic
kOdomOpenVINSCalibIMUGSensitivity()rtabmap::Parametersinlinestatic
kOdomOpenVINSCalibIMUIntrinsics()rtabmap::Parametersinlinestatic
kOdomOpenVINSConfigPath()rtabmap::Parametersinlinestatic
kOdomOpenVINSDtSLAMDelay()rtabmap::Parametersinlinestatic
kOdomOpenVINSFeatRepMSCKF()rtabmap::Parametersinlinestatic
kOdomOpenVINSFeatRepSLAM()rtabmap::Parametersinlinestatic
kOdomOpenVINSFiMaxBaseline()rtabmap::Parametersinlinestatic
kOdomOpenVINSFiMaxCondNumber()rtabmap::Parametersinlinestatic
kOdomOpenVINSFiMaxRuns()rtabmap::Parametersinlinestatic
kOdomOpenVINSFiRefineFeatures()rtabmap::Parametersinlinestatic
kOdomOpenVINSFiTriangulate1d()rtabmap::Parametersinlinestatic
kOdomOpenVINSGravityMag()rtabmap::Parametersinlinestatic
kOdomOpenVINSGyroscopeNoiseDensity()rtabmap::Parametersinlinestatic
kOdomOpenVINSGyroscopeRandomWalk()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynInflationBa()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynInflationBg()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynInflationOri()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynInflationVel()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynMinDeg()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynMinRecCond()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynMLEMaxIter()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynMLEMaxThreads()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynMLEMaxTime()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynMLEOptCalib()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynNumPose()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitDynUse()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitIMUThresh()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitMaxDisparity()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitMaxFeatures()rtabmap::Parametersinlinestatic
kOdomOpenVINSInitWindowTime()rtabmap::Parametersinlinestatic
kOdomOpenVINSIntegration()rtabmap::Parametersinlinestatic
kOdomOpenVINSLeftMaskPath()rtabmap::Parametersinlinestatic
kOdomOpenVINSMaxClones()rtabmap::Parametersinlinestatic
kOdomOpenVINSMaxMSCKFInUpdate()rtabmap::Parametersinlinestatic
kOdomOpenVINSMaxSLAM()rtabmap::Parametersinlinestatic
kOdomOpenVINSMaxSLAMInUpdate()rtabmap::Parametersinlinestatic
kOdomOpenVINSMinPxDist()rtabmap::Parametersinlinestatic
kOdomOpenVINSNumPts()rtabmap::Parametersinlinestatic
kOdomOpenVINSRightMaskPath()rtabmap::Parametersinlinestatic
kOdomOpenVINSTryZUPT()rtabmap::Parametersinlinestatic
kOdomOpenVINSUpMSCKFChi2Multiplier()rtabmap::Parametersinlinestatic
kOdomOpenVINSUpMSCKFSigmaPx()rtabmap::Parametersinlinestatic
kOdomOpenVINSUpSLAMChi2Multiplier()rtabmap::Parametersinlinestatic
kOdomOpenVINSUpSLAMSigmaPx()rtabmap::Parametersinlinestatic
kOdomOpenVINSUseFEJ()rtabmap::Parametersinlinestatic
kOdomOpenVINSUseKLT()rtabmap::Parametersinlinestatic
kOdomOpenVINSUseStereo()rtabmap::Parametersinlinestatic
kOdomOpenVINSZUPTChi2Multiplier()rtabmap::Parametersinlinestatic
kOdomOpenVINSZUPTMaxDisparity()rtabmap::Parametersinlinestatic
kOdomOpenVINSZUPTMaxVelodicy()rtabmap::Parametersinlinestatic
kOdomOpenVINSZUPTNoiseMultiplier()rtabmap::Parametersinlinestatic
kOdomOpenVINSZUPTOnlyAtBeginning()rtabmap::Parametersinlinestatic
kOdomORBSLAMAccNoise()rtabmap::Parametersinlinestatic
kOdomORBSLAMAccWalk()rtabmap::Parametersinlinestatic
kOdomORBSLAMBf()rtabmap::Parametersinlinestatic
kOdomORBSLAMFps()rtabmap::Parametersinlinestatic
kOdomORBSLAMGyroNoise()rtabmap::Parametersinlinestatic
kOdomORBSLAMGyroWalk()rtabmap::Parametersinlinestatic
kOdomORBSLAMInertial()rtabmap::Parametersinlinestatic
kOdomORBSLAMMapSize()rtabmap::Parametersinlinestatic
kOdomORBSLAMMaxFeatures()rtabmap::Parametersinlinestatic
kOdomORBSLAMSamplingRate()rtabmap::Parametersinlinestatic
kOdomORBSLAMThDepth()rtabmap::Parametersinlinestatic
kOdomORBSLAMVocPath()rtabmap::Parametersinlinestatic
kOdomParticleLambdaR()rtabmap::Parametersinlinestatic
kOdomParticleLambdaT()rtabmap::Parametersinlinestatic
kOdomParticleNoiseR()rtabmap::Parametersinlinestatic
kOdomParticleNoiseT()rtabmap::Parametersinlinestatic
kOdomParticleSize()rtabmap::Parametersinlinestatic
kOdomResetCountdown()rtabmap::Parametersinlinestatic
kOdomScanKeyFrameThr()rtabmap::Parametersinlinestatic
kOdomStrategy()rtabmap::Parametersinlinestatic
kOdomVINSFusionConfigPath()rtabmap::Parametersinlinestatic
kOdomVisKeyFrameThr()rtabmap::Parametersinlinestatic
kOdomViso2BucketHeight()rtabmap::Parametersinlinestatic
kOdomViso2BucketMaxFeatures()rtabmap::Parametersinlinestatic
kOdomViso2BucketWidth()rtabmap::Parametersinlinestatic
kOdomViso2InlierThreshold()rtabmap::Parametersinlinestatic
kOdomViso2MatchBinsize()rtabmap::Parametersinlinestatic
kOdomViso2MatchDispTolerance()rtabmap::Parametersinlinestatic
kOdomViso2MatchHalfResolution()rtabmap::Parametersinlinestatic
kOdomViso2MatchMultiStage()rtabmap::Parametersinlinestatic
kOdomViso2MatchNmsN()rtabmap::Parametersinlinestatic
kOdomViso2MatchNmsTau()rtabmap::Parametersinlinestatic
kOdomViso2MatchOutlierDispTolerance()rtabmap::Parametersinlinestatic
kOdomViso2MatchOutlierFlowTolerance()rtabmap::Parametersinlinestatic
kOdomViso2MatchRadius()rtabmap::Parametersinlinestatic
kOdomViso2MatchRefinement()rtabmap::Parametersinlinestatic
kOdomViso2RansacIters()rtabmap::Parametersinlinestatic
kOdomViso2Reweighting()rtabmap::Parametersinlinestatic
kOptimizerBaseline()rtabmap::Parametersinlinestatic
kOptimizerDisparityVariance()rtabmap::Parametersinlinestatic
kOptimizerEpsilon()rtabmap::Parametersinlinestatic
kOptimizerGravitySigma()rtabmap::Parametersinlinestatic
kOptimizerIterations()rtabmap::Parametersinlinestatic
kOptimizerLandmarksIgnored()rtabmap::Parametersinlinestatic
kOptimizerPixelVariance()rtabmap::Parametersinlinestatic
kOptimizerPriorsIgnored()rtabmap::Parametersinlinestatic
kOptimizerRobust()rtabmap::Parametersinlinestatic
kOptimizerRobustKernelDelta()rtabmap::Parametersinlinestatic
kOptimizerStrategy()rtabmap::Parametersinlinestatic
kOptimizerVarianceIgnored()rtabmap::Parametersinlinestatic
kORBEdgeThreshold()rtabmap::Parametersinlinestatic
kORBFirstLevel()rtabmap::Parametersinlinestatic
kORBGpu()rtabmap::Parametersinlinestatic
kORBNLevels()rtabmap::Parametersinlinestatic
kORBPatchSize()rtabmap::Parametersinlinestatic
kORBScaleFactor()rtabmap::Parametersinlinestatic
kORBScoreType()rtabmap::Parametersinlinestatic
kORBWTA_K()rtabmap::Parametersinlinestatic
kPyDescriptorDim()rtabmap::Parametersinlinestatic
kPyDescriptorPath()rtabmap::Parametersinlinestatic
kPyDetectorCuda()rtabmap::Parametersinlinestatic
kPyDetectorPath()rtabmap::Parametersinlinestatic
kPyMatcherCuda()rtabmap::Parametersinlinestatic
kPyMatcherIterations()rtabmap::Parametersinlinestatic
kPyMatcherModel()rtabmap::Parametersinlinestatic
kPyMatcherPath()rtabmap::Parametersinlinestatic
kPyMatcherThreshold()rtabmap::Parametersinlinestatic
kRegForce3DoF()rtabmap::Parametersinlinestatic
kRegRepeatOnce()rtabmap::Parametersinlinestatic
kRegStrategy()rtabmap::Parametersinlinestatic
kRGBDAggressiveLoopThr()rtabmap::Parametersinlinestatic
kRGBDAngularSpeedUpdate()rtabmap::Parametersinlinestatic
kRGBDAngularUpdate()rtabmap::Parametersinlinestatic
kRGBDCreateOccupancyGrid()rtabmap::Parametersinlinestatic
kRGBDEnabled()rtabmap::Parametersinlinestatic
kRGBDForceOdom3DoF()rtabmap::Parametersinlinestatic
kRGBDGoalReachedRadius()rtabmap::Parametersinlinestatic
kRGBDGoalsSavedInUserData()rtabmap::Parametersinlinestatic
kRGBDInvertedReg()rtabmap::Parametersinlinestatic
kRGBDLinearSpeedUpdate()rtabmap::Parametersinlinestatic
kRGBDLinearUpdate()rtabmap::Parametersinlinestatic
kRGBDLocalBundleOnLoopClosure()rtabmap::Parametersinlinestatic
kRGBDLocalImmunizationRatio()rtabmap::Parametersinlinestatic
kRGBDLocalizationPriorError()rtabmap::Parametersinlinestatic
kRGBDLocalizationSecondTryWithoutProximityLinks()rtabmap::Parametersinlinestatic
kRGBDLocalizationSmoothing()rtabmap::Parametersinlinestatic
kRGBDLocalRadius()rtabmap::Parametersinlinestatic
kRGBDLoopClosureIdentityGuess()rtabmap::Parametersinlinestatic
kRGBDLoopClosureReextractFeatures()rtabmap::Parametersinlinestatic
kRGBDLoopCovLimited()rtabmap::Parametersinlinestatic
kRGBDMarkerDetection()rtabmap::Parametersinlinestatic
kRGBDMaxLocalRetrieved()rtabmap::Parametersinlinestatic
kRGBDMaxLoopClosureDistance()rtabmap::Parametersinlinestatic
kRGBDMaxOdomCacheSize()rtabmap::Parametersinlinestatic
kRGBDNeighborLinkRefining()rtabmap::Parametersinlinestatic
kRGBDNewMapOdomChangeDistance()rtabmap::Parametersinlinestatic
kRGBDOptimizeFromGraphEnd()rtabmap::Parametersinlinestatic
kRGBDOptimizeMaxError()rtabmap::Parametersinlinestatic
kRGBDOptimizeMaxErrorRepairRadius()rtabmap::Parametersinlinestatic
kRGBDPlanAngularVelocity()rtabmap::Parametersinlinestatic
kRGBDPlanLinearVelocity()rtabmap::Parametersinlinestatic
kRGBDPlanStuckIterations()rtabmap::Parametersinlinestatic
kRGBDProximityAngle()rtabmap::Parametersinlinestatic
kRGBDProximityBySpace()rtabmap::Parametersinlinestatic
kRGBDProximityByTime()rtabmap::Parametersinlinestatic
kRGBDProximityGlobalScanMap()rtabmap::Parametersinlinestatic
kRGBDProximityMaxGraphDepth()rtabmap::Parametersinlinestatic
kRGBDProximityMaxPaths()rtabmap::Parametersinlinestatic
kRGBDProximityMergedScanCovFactor()rtabmap::Parametersinlinestatic
kRGBDProximityOdomGuess()rtabmap::Parametersinlinestatic
kRGBDProximityPathFilteringRadius()rtabmap::Parametersinlinestatic
kRGBDProximityPathMaxNeighbors()rtabmap::Parametersinlinestatic
kRGBDProximityPathRawPosesUsed()rtabmap::Parametersinlinestatic
kRGBDScanMatchingIdsSavedInLinks()rtabmap::Parametersinlinestatic
kRGBDStartAtOrigin()rtabmap::Parametersinlinestatic
kRtabmapComputeRMSE()rtabmap::Parametersinlinestatic
kRtabmapCreateIntermediateNodes()rtabmap::Parametersinlinestatic
kRtabmapDetectionRate()rtabmap::Parametersinlinestatic
kRtabmapImageBufferSize()rtabmap::Parametersinlinestatic
kRtabmapImagesAlreadyRectified()rtabmap::Parametersinlinestatic
kRtabmapLoopGPS()rtabmap::Parametersinlinestatic
kRtabmapLoopRatio()rtabmap::Parametersinlinestatic
kRtabmapLoopThr()rtabmap::Parametersinlinestatic
kRtabmapMaxRepublished()rtabmap::Parametersinlinestatic
kRtabmapMaxRetrieved()rtabmap::Parametersinlinestatic
kRtabmapMemoryThr()rtabmap::Parametersinlinestatic
kRtabmapPublishLastSignature()rtabmap::Parametersinlinestatic
kRtabmapPublishLikelihood()rtabmap::Parametersinlinestatic
kRtabmapPublishPdf()rtabmap::Parametersinlinestatic
kRtabmapPublishRAMUsage()rtabmap::Parametersinlinestatic
kRtabmapPublishStats()rtabmap::Parametersinlinestatic
kRtabmapRectifyOnlyFeatures()rtabmap::Parametersinlinestatic
kRtabmapSaveWMState()rtabmap::Parametersinlinestatic
kRtabmapStartNewMapOnGoodSignature()rtabmap::Parametersinlinestatic
kRtabmapStartNewMapOnLoopClosure()rtabmap::Parametersinlinestatic
kRtabmapStatisticLogged()rtabmap::Parametersinlinestatic
kRtabmapStatisticLoggedHeaders()rtabmap::Parametersinlinestatic
kRtabmapStatisticLogsBufferedInRAM()rtabmap::Parametersinlinestatic
kRtabmapTimeThr()rtabmap::Parametersinlinestatic
kRtabmapVirtualPlaceLikelihoodRatio()rtabmap::Parametersinlinestatic
kRtabmapWorkingDirectory()rtabmap::Parametersinlinestatic
kSIFTContrastThreshold()rtabmap::Parametersinlinestatic
kSIFTEdgeThreshold()rtabmap::Parametersinlinestatic
kSIFTGaussianThreshold()rtabmap::Parametersinlinestatic
kSIFTGpu()rtabmap::Parametersinlinestatic
kSIFTMaxGaussianThreshold()rtabmap::Parametersinlinestatic
kSIFTNOctaveLayers()rtabmap::Parametersinlinestatic
kSIFTPreciseUpscale()rtabmap::Parametersinlinestatic
kSIFTRootSIFT()rtabmap::Parametersinlinestatic
kSIFTSigma()rtabmap::Parametersinlinestatic
kSIFTUpscale()rtabmap::Parametersinlinestatic
kStereoBMBlockSize()rtabmap::Parametersinlinestatic
kStereoBMDisp12MaxDiff()rtabmap::Parametersinlinestatic
kStereoBMMinDisparity()rtabmap::Parametersinlinestatic
kStereoBMNumDisparities()rtabmap::Parametersinlinestatic
kStereoBMPreFilterCap()rtabmap::Parametersinlinestatic
kStereoBMPreFilterSize()rtabmap::Parametersinlinestatic
kStereoBMSpeckleRange()rtabmap::Parametersinlinestatic
kStereoBMSpeckleWindowSize()rtabmap::Parametersinlinestatic
kStereoBMTextureThreshold()rtabmap::Parametersinlinestatic
kStereoBMUniquenessRatio()rtabmap::Parametersinlinestatic
kStereoDenseStrategy()rtabmap::Parametersinlinestatic
kStereoEps()rtabmap::Parametersinlinestatic
kStereoErrorThreshold()rtabmap::Parametersinlinestatic
kStereoGpu()rtabmap::Parametersinlinestatic
kStereoIterations()rtabmap::Parametersinlinestatic
kStereoMaxDisparity()rtabmap::Parametersinlinestatic
kStereoMaxLevel()rtabmap::Parametersinlinestatic
kStereoMinDisparity()rtabmap::Parametersinlinestatic
kStereoMinEigThreshold()rtabmap::Parametersinlinestatic
kStereoOpticalFlow()rtabmap::Parametersinlinestatic
kStereoSGBMBlockSize()rtabmap::Parametersinlinestatic
kStereoSGBMDisp12MaxDiff()rtabmap::Parametersinlinestatic
kStereoSGBMMinDisparity()rtabmap::Parametersinlinestatic
kStereoSGBMMode()rtabmap::Parametersinlinestatic
kStereoSGBMNumDisparities()rtabmap::Parametersinlinestatic
kStereoSGBMP1()rtabmap::Parametersinlinestatic
kStereoSGBMP2()rtabmap::Parametersinlinestatic
kStereoSGBMPreFilterCap()rtabmap::Parametersinlinestatic
kStereoSGBMSpeckleRange()rtabmap::Parametersinlinestatic
kStereoSGBMSpeckleWindowSize()rtabmap::Parametersinlinestatic
kStereoSGBMUniquenessRatio()rtabmap::Parametersinlinestatic
kStereoSSD()rtabmap::Parametersinlinestatic
kStereoUseMinEigenVals()rtabmap::Parametersinlinestatic
kStereoWinHeight()rtabmap::Parametersinlinestatic
kStereoWinWidth()rtabmap::Parametersinlinestatic
kSuperPointCuda()rtabmap::Parametersinlinestatic
kSuperPointModelPath()rtabmap::Parametersinlinestatic
kSuperPointNMS()rtabmap::Parametersinlinestatic
kSuperPointNMSRadius()rtabmap::Parametersinlinestatic
kSuperPointRpautratCuda()rtabmap::Parametersinlinestatic
kSuperPointRpautratModelPath()rtabmap::Parametersinlinestatic
kSuperPointRpautratNMS()rtabmap::Parametersinlinestatic
kSuperPointRpautratNMSRadius()rtabmap::Parametersinlinestatic
kSuperPointRpautratThreshold()rtabmap::Parametersinlinestatic
kSuperPointRpautratWeightsPath()rtabmap::Parametersinlinestatic
kSuperPointThreshold()rtabmap::Parametersinlinestatic
kSURFExtended()rtabmap::Parametersinlinestatic
kSURFGpuKeypointsRatio()rtabmap::Parametersinlinestatic
kSURFGpuVersion()rtabmap::Parametersinlinestatic
kSURFHessianThreshold()rtabmap::Parametersinlinestatic
kSURFOctaveLayers()rtabmap::Parametersinlinestatic
kSURFOctaves()rtabmap::Parametersinlinestatic
kSURFUpright()rtabmap::Parametersinlinestatic
kVhEpEnabled()rtabmap::Parametersinlinestatic
kVhEpMatchCountMin()rtabmap::Parametersinlinestatic
kVhEpRansacParam1()rtabmap::Parametersinlinestatic
kVhEpRansacParam2()rtabmap::Parametersinlinestatic
kVisBundleAdjustment()rtabmap::Parametersinlinestatic
kVisCorFlowEps()rtabmap::Parametersinlinestatic
kVisCorFlowErrorThreshold()rtabmap::Parametersinlinestatic
kVisCorFlowGpu()rtabmap::Parametersinlinestatic
kVisCorFlowIterations()rtabmap::Parametersinlinestatic
kVisCorFlowMaxLevel()rtabmap::Parametersinlinestatic
kVisCorFlowMinEigThreshold()rtabmap::Parametersinlinestatic
kVisCorFlowUseMinEigenVals()rtabmap::Parametersinlinestatic
kVisCorFlowWinSize()rtabmap::Parametersinlinestatic
kVisCorGuessMatchToProjection()rtabmap::Parametersinlinestatic
kVisCorGuessWinSize()rtabmap::Parametersinlinestatic
kVisCorNNDR()rtabmap::Parametersinlinestatic
kVisCorNNType()rtabmap::Parametersinlinestatic
kVisCorType()rtabmap::Parametersinlinestatic
kVisDepthAsMask()rtabmap::Parametersinlinestatic
kVisDepthMaskFloorThr()rtabmap::Parametersinlinestatic
kVisEpipolarGeometryVar()rtabmap::Parametersinlinestatic
kVisEstimationType()rtabmap::Parametersinlinestatic
kVisFeatureType()rtabmap::Parametersinlinestatic
kVisGridCols()rtabmap::Parametersinlinestatic
kVisGridRows()rtabmap::Parametersinlinestatic
kVisInlierDistance()rtabmap::Parametersinlinestatic
kVisIterations()rtabmap::Parametersinlinestatic
kVisMaxDepth()rtabmap::Parametersinlinestatic
kVisMaxFeatures()rtabmap::Parametersinlinestatic
kVisMeanInliersDistance()rtabmap::Parametersinlinestatic
kVisMinDepth()rtabmap::Parametersinlinestatic
kVisMinInliers()rtabmap::Parametersinlinestatic
kVisMinInliersDistribution()rtabmap::Parametersinlinestatic
kVisPnPFlags()rtabmap::Parametersinlinestatic
kVisPnPMaxVariance()rtabmap::Parametersinlinestatic
kVisPnPRefineIterations()rtabmap::Parametersinlinestatic
kVisPnPReprojError()rtabmap::Parametersinlinestatic
kVisPnPSamplingPolicy()rtabmap::Parametersinlinestatic
kVisPnPSplitLinearCovComponents()rtabmap::Parametersinlinestatic
kVisPnPVarianceMedianRatio()rtabmap::Parametersinlinestatic
kVisRefineIterations()rtabmap::Parametersinlinestatic
kVisRoiRatios()rtabmap::Parametersinlinestatic
kVisSSC()rtabmap::Parametersinlinestatic
kVisSubPixEps()rtabmap::Parametersinlinestatic
kVisSubPixIterations()rtabmap::Parametersinlinestatic
kVisSubPixWinSize()rtabmap::Parametersinlinestatic
parse(const ParametersMap &parameters, const std::string &key, bool &value) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
parse(const ParametersMap &parameters, const std::string &key, int &value) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
parse(const ParametersMap &parameters, const std::string &key, unsigned int &value) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
parse(const ParametersMap &parameters, const std::string &key, float &value) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
parse(const ParametersMap &parameters, const std::string &key, double &value) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
parse(const ParametersMap &parameters, const std::string &key, std::string &value) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
parse(const ParametersMap &parameters, ParametersMap &parametersOut) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
parseArguments(int argc, char *argv[], bool onlyParameters=false) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
readINI(const std::string &configFile, ParametersMap &parameters, bool modifiedOnly=false) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
readINIStr(const std::string &configContent, ParametersMap &parameters, bool modifiedOnly=false) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
serialize(const ParametersMap &parameters) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
showUsage() (defined in rtabmap::Parameters)rtabmap::Parametersstatic
typeBayesFullPredictionUpdate()rtabmap::Parametersinlinestatic
typeBayesPredictionLC()rtabmap::Parametersinlinestatic
typeBayesSparsePrediction()rtabmap::Parametersinlinestatic
typeBayesVirtualPlacePriorThr()rtabmap::Parametersinlinestatic
typeBRIEFBytes()rtabmap::Parametersinlinestatic
typeBRISKOctaves()rtabmap::Parametersinlinestatic
typeBRISKPatternScale()rtabmap::Parametersinlinestatic
typeBRISKThresh()rtabmap::Parametersinlinestatic
typeDbSqlite3CacheSize()rtabmap::Parametersinlinestatic
typeDbSqlite3InMemory()rtabmap::Parametersinlinestatic
typeDbSqlite3JournalMode()rtabmap::Parametersinlinestatic
typeDbSqlite3Synchronous()rtabmap::Parametersinlinestatic
typeDbSqlite3TempStore()rtabmap::Parametersinlinestatic
typeDbTargetVersion()rtabmap::Parametersinlinestatic
typeFASTCV()rtabmap::Parametersinlinestatic
typeFASTGpu()rtabmap::Parametersinlinestatic
typeFASTGpuKeypointsRatio()rtabmap::Parametersinlinestatic
typeFASTGridCols()rtabmap::Parametersinlinestatic
typeFASTGridRows()rtabmap::Parametersinlinestatic
typeFASTMaxThreshold()rtabmap::Parametersinlinestatic
typeFASTMinThreshold()rtabmap::Parametersinlinestatic
typeFASTNonmaxSuppression()rtabmap::Parametersinlinestatic
typeFASTThreshold()rtabmap::Parametersinlinestatic
typeFREAKNOctaves()rtabmap::Parametersinlinestatic
typeFREAKOrientationNormalized()rtabmap::Parametersinlinestatic
typeFREAKPatternScale()rtabmap::Parametersinlinestatic
typeFREAKScaleNormalized()rtabmap::Parametersinlinestatic
typeg2oOptimizer()rtabmap::Parametersinlinestatic
typeg2oSolver()rtabmap::Parametersinlinestatic
typeGFTTBlockSize()rtabmap::Parametersinlinestatic
typeGFTTGpu()rtabmap::Parametersinlinestatic
typeGFTTK()rtabmap::Parametersinlinestatic
typeGFTTMinDistance()rtabmap::Parametersinlinestatic
typeGFTTQualityLevel()rtabmap::Parametersinlinestatic
typeGFTTUseHarrisDetector()rtabmap::Parametersinlinestatic
typeGMSThresholdFactor()rtabmap::Parametersinlinestatic
typeGMSWithRotation()rtabmap::Parametersinlinestatic
typeGMSWithScale()rtabmap::Parametersinlinestatic
typeGrid3D()rtabmap::Parametersinlinestatic
typeGridCellSize()rtabmap::Parametersinlinestatic
typeGridClusterRadius()rtabmap::Parametersinlinestatic
typeGridDepthDecimation()rtabmap::Parametersinlinestatic
typeGridDepthRoiRatios()rtabmap::Parametersinlinestatic
typeGridFlatObstacleDetected()rtabmap::Parametersinlinestatic
typeGridFootprintHeight()rtabmap::Parametersinlinestatic
typeGridFootprintLength()rtabmap::Parametersinlinestatic
typeGridFootprintWidth()rtabmap::Parametersinlinestatic
typeGridGlobalAltitudeDelta()rtabmap::Parametersinlinestatic
typeGridGlobalEroded()rtabmap::Parametersinlinestatic
typeGridGlobalFloodFillDepth()rtabmap::Parametersinlinestatic
typeGridGlobalFootprintRadius()rtabmap::Parametersinlinestatic
typeGridGlobalMaxNodes()rtabmap::Parametersinlinestatic
typeGridGlobalMinSize()rtabmap::Parametersinlinestatic
typeGridGlobalOccupancyThr()rtabmap::Parametersinlinestatic
typeGridGlobalProbClampingMax()rtabmap::Parametersinlinestatic
typeGridGlobalProbClampingMin()rtabmap::Parametersinlinestatic
typeGridGlobalProbHit()rtabmap::Parametersinlinestatic
typeGridGlobalProbMiss()rtabmap::Parametersinlinestatic
typeGridGlobalUpdateError()rtabmap::Parametersinlinestatic
typeGridGroundIsObstacle()rtabmap::Parametersinlinestatic
typeGridMapFrameProjection()rtabmap::Parametersinlinestatic
typeGridMaxGroundAngle()rtabmap::Parametersinlinestatic
typeGridMaxGroundHeight()rtabmap::Parametersinlinestatic
typeGridMaxObstacleHeight()rtabmap::Parametersinlinestatic
typeGridMinClusterSize()rtabmap::Parametersinlinestatic
typeGridMinGroundHeight()rtabmap::Parametersinlinestatic
typeGridNoiseFilteringMinNeighbors()rtabmap::Parametersinlinestatic
typeGridNoiseFilteringRadius()rtabmap::Parametersinlinestatic
typeGridNormalK()rtabmap::Parametersinlinestatic
typeGridNormalsSegmentation()rtabmap::Parametersinlinestatic
typeGridPreVoxelFiltering()rtabmap::Parametersinlinestatic
typeGridRangeMax()rtabmap::Parametersinlinestatic
typeGridRangeMin()rtabmap::Parametersinlinestatic
typeGridRayTracing()rtabmap::Parametersinlinestatic
typeGridScan2dUnknownSpaceFilled()rtabmap::Parametersinlinestatic
typeGridScanDecimation()rtabmap::Parametersinlinestatic
typeGridSensor()rtabmap::Parametersinlinestatic
typeGTSAMIncRelinearizeSkip()rtabmap::Parametersinlinestatic
typeGTSAMIncRelinearizeThreshold()rtabmap::Parametersinlinestatic
typeGTSAMIncremental()rtabmap::Parametersinlinestatic
typeGTSAMOptimizer()rtabmap::Parametersinlinestatic
typeIcpCCFilterOutFarthestPoints()rtabmap::Parametersinlinestatic
typeIcpCCMaxFinalRMS()rtabmap::Parametersinlinestatic
typeIcpCCSamplingLimit()rtabmap::Parametersinlinestatic
typeIcpCorrespondenceRatio()rtabmap::Parametersinlinestatic
typeIcpDebugExportFormat()rtabmap::Parametersinlinestatic
typeIcpDownsamplingStep()rtabmap::Parametersinlinestatic
typeIcpEpsilon()rtabmap::Parametersinlinestatic
typeIcpFiltersEnabled()rtabmap::Parametersinlinestatic
typeIcpForce4DoF()rtabmap::Parametersinlinestatic
typeIcpIterations()rtabmap::Parametersinlinestatic
typeIcpMaxCorrespondenceDistance()rtabmap::Parametersinlinestatic
typeIcpMaxRotation()rtabmap::Parametersinlinestatic
typeIcpMaxTranslation()rtabmap::Parametersinlinestatic
typeIcpOutlierRatio()rtabmap::Parametersinlinestatic
typeIcpPMConfig()rtabmap::Parametersinlinestatic
typeIcpPMMatcherEpsilon()rtabmap::Parametersinlinestatic
typeIcpPMMatcherIntensity()rtabmap::Parametersinlinestatic
typeIcpPMMatcherKnn()rtabmap::Parametersinlinestatic
typeIcpPointToPlane()rtabmap::Parametersinlinestatic
typeIcpPointToPlaneComplexityCentered()rtabmap::Parametersinlinestatic
typeIcpPointToPlaneGroundNormalsUp()rtabmap::Parametersinlinestatic
typeIcpPointToPlaneK()rtabmap::Parametersinlinestatic
typeIcpPointToPlaneLowComplexityStrategy()rtabmap::Parametersinlinestatic
typeIcpPointToPlaneMinComplexity()rtabmap::Parametersinlinestatic
typeIcpPointToPlaneRadius()rtabmap::Parametersinlinestatic
typeIcpRangeMax()rtabmap::Parametersinlinestatic
typeIcpRangeMin()rtabmap::Parametersinlinestatic
typeIcpReciprocalCorrespondences()rtabmap::Parametersinlinestatic
typeIcpStrategy()rtabmap::Parametersinlinestatic
typeIcpVoxelSize()rtabmap::Parametersinlinestatic
typeImuFilterComplementaryBiasAlpha()rtabmap::Parametersinlinestatic
typeImuFilterComplementaryDoAdpativeGain()rtabmap::Parametersinlinestatic
typeImuFilterComplementaryDoBiasEstimation()rtabmap::Parametersinlinestatic
typeImuFilterComplementaryGainAcc()rtabmap::Parametersinlinestatic
typeImuFilterMadgwickGain()rtabmap::Parametersinlinestatic
typeImuFilterMadgwickZeta()rtabmap::Parametersinlinestatic
typeKAZEDiffusivity()rtabmap::Parametersinlinestatic
typeKAZEExtended()rtabmap::Parametersinlinestatic
typeKAZENOctaveLayers()rtabmap::Parametersinlinestatic
typeKAZENOctaves()rtabmap::Parametersinlinestatic
typeKAZEThreshold()rtabmap::Parametersinlinestatic
typeKAZEUpright()rtabmap::Parametersinlinestatic
typeKpBadSignRatio()rtabmap::Parametersinlinestatic
typeKpByteToFloat()rtabmap::Parametersinlinestatic
typeKpDetectorStrategy()rtabmap::Parametersinlinestatic
typeKpDictionaryPath()rtabmap::Parametersinlinestatic
typeKpFlannIndexSaved()rtabmap::Parametersinlinestatic
typeKpFlannRebalancingFactor()rtabmap::Parametersinlinestatic
typeKpFlannThreads()rtabmap::Parametersinlinestatic
typeKpGridCols()rtabmap::Parametersinlinestatic
typeKpGridRows()rtabmap::Parametersinlinestatic
typeKpIncrementalDictionary()rtabmap::Parametersinlinestatic
typeKpIncrementalFlann()rtabmap::Parametersinlinestatic
typeKpMaxDepth()rtabmap::Parametersinlinestatic
typeKpMaxFeatures()rtabmap::Parametersinlinestatic
typeKpMinDepth()rtabmap::Parametersinlinestatic
typeKpNewWordsComparedTogether()rtabmap::Parametersinlinestatic
typeKpNndrRatio()rtabmap::Parametersinlinestatic
typeKpNNStrategy()rtabmap::Parametersinlinestatic
typeKpParallelized()rtabmap::Parametersinlinestatic
typeKpRoiRatios()rtabmap::Parametersinlinestatic
typeKpSerializeWithChecksum()rtabmap::Parametersinlinestatic
typeKpSSC()rtabmap::Parametersinlinestatic
typeKpSubPixEps()rtabmap::Parametersinlinestatic
typeKpSubPixIterations()rtabmap::Parametersinlinestatic
typeKpSubPixWinSize()rtabmap::Parametersinlinestatic
typeKpTfIdfLikelihoodUsed()rtabmap::Parametersinlinestatic
typeMarkerAprilTagDebug()rtabmap::Parametersinlinestatic
typeMarkerAprilTagDecodeSharpening()rtabmap::Parametersinlinestatic
typeMarkerAprilTagNThreads()rtabmap::Parametersinlinestatic
typeMarkerAprilTagQuadDecimate()rtabmap::Parametersinlinestatic
typeMarkerAprilTagQuadSigma()rtabmap::Parametersinlinestatic
typeMarkerAprilTagRefineEdges()rtabmap::Parametersinlinestatic
typeMarkerDictionary()rtabmap::Parametersinlinestatic
typeMarkerLength()rtabmap::Parametersinlinestatic
typeMarkerLengths()rtabmap::Parametersinlinestatic
typeMarkerMaxDepthError()rtabmap::Parametersinlinestatic
typeMarkerMaxRange()rtabmap::Parametersinlinestatic
typeMarkerMinRange()rtabmap::Parametersinlinestatic
typeMarkerOpenCVCornerRefinementMethod()rtabmap::Parametersinlinestatic
typeMarkerPriors()rtabmap::Parametersinlinestatic
typeMarkerPriorsVarianceAngular()rtabmap::Parametersinlinestatic
typeMarkerPriorsVarianceLinear()rtabmap::Parametersinlinestatic
typeMarkerStrategy()rtabmap::Parametersinlinestatic
typeMarkerVarianceAngular()rtabmap::Parametersinlinestatic
typeMarkerVarianceLinear()rtabmap::Parametersinlinestatic
typeMarkerVarianceOrientationIgnored()rtabmap::Parametersinlinestatic
typeMemBadSignaturesIgnored()rtabmap::Parametersinlinestatic
typeMemBinDataKept()rtabmap::Parametersinlinestatic
typeMemCompressionParallelized()rtabmap::Parametersinlinestatic
typeMemCovOffDiagIgnored()rtabmap::Parametersinlinestatic
typeMemDepthAsMask()rtabmap::Parametersinlinestatic
typeMemDepthCompressionFormat()rtabmap::Parametersinlinestatic
typeMemDepthMaskFloorThr()rtabmap::Parametersinlinestatic
typeMemGenerateIds()rtabmap::Parametersinlinestatic
typeMemGlobalDescriptorStrategy()rtabmap::Parametersinlinestatic
typeMemImageCompressionFormat()rtabmap::Parametersinlinestatic
typeMemImageKept()rtabmap::Parametersinlinestatic
typeMemImagePostDecimation()rtabmap::Parametersinlinestatic
typeMemImagePreDecimation()rtabmap::Parametersinlinestatic
typeMemIncrementalMemory()rtabmap::Parametersinlinestatic
typeMemInitWMWithAllNodes()rtabmap::Parametersinlinestatic
typeMemIntermediateNodeDataKept()rtabmap::Parametersinlinestatic
typeMemLaserScanDownsampleStepSize()rtabmap::Parametersinlinestatic
typeMemLaserScanNormalK()rtabmap::Parametersinlinestatic
typeMemLaserScanNormalRadius()rtabmap::Parametersinlinestatic
typeMemLaserScanVoxelSize()rtabmap::Parametersinlinestatic
typeMemLoadVisualLocalFeaturesOnInit()rtabmap::Parametersinlinestatic
typeMemLocalizationDataSaved()rtabmap::Parametersinlinestatic
typeMemLocalizationReadOnly()rtabmap::Parametersinlinestatic
typeMemMapLabelsAdded()rtabmap::Parametersinlinestatic
typeMemNotLinkedNodesKept()rtabmap::Parametersinlinestatic
typeMemRawDescriptorsKept()rtabmap::Parametersinlinestatic
typeMemRecentWmRatio()rtabmap::Parametersinlinestatic
typeMemReduceGraph()rtabmap::Parametersinlinestatic
typeMemRehearsalIdUpdatedToNewOne()rtabmap::Parametersinlinestatic
typeMemRehearsalSimilarity()rtabmap::Parametersinlinestatic
typeMemRehearsalWeightIgnoredWhileMoving()rtabmap::Parametersinlinestatic
typeMemRotateImagesUpsideUp()rtabmap::Parametersinlinestatic
typeMemSaveDepth16Format()rtabmap::Parametersinlinestatic
typeMemStereoFromMotion()rtabmap::Parametersinlinestatic
typeMemSTMSize()rtabmap::Parametersinlinestatic
typeMemTransferSortingByWeightId()rtabmap::Parametersinlinestatic
typeMemUseOdomFeatures()rtabmap::Parametersinlinestatic
typeMemUseOdomGravity()rtabmap::Parametersinlinestatic
typeOdomAlignWithGround()rtabmap::Parametersinlinestatic
typeOdomCuVSLAMMulticamMode()rtabmap::Parametersinlinestatic
typeOdomDeskewing()rtabmap::Parametersinlinestatic
typeOdomF2MBundleAdjustment()rtabmap::Parametersinlinestatic
typeOdomF2MBundleAdjustmentMaxFrames()rtabmap::Parametersinlinestatic
typeOdomF2MBundleAdjustmentMaxKeyFramesPerFeature()rtabmap::Parametersinlinestatic
typeOdomF2MBundleAdjustmentMinMotion()rtabmap::Parametersinlinestatic
typeOdomF2MBundleUpdateFeatureMapOnAllFrames()rtabmap::Parametersinlinestatic
typeOdomF2MFloorThreshold()rtabmap::Parametersinlinestatic
typeOdomF2MInitDepthFactor()rtabmap::Parametersinlinestatic
typeOdomF2MMaxNewFeatures()rtabmap::Parametersinlinestatic
typeOdomF2MMaxSize()rtabmap::Parametersinlinestatic
typeOdomF2MScanMaxSize()rtabmap::Parametersinlinestatic
typeOdomF2MScanRange()rtabmap::Parametersinlinestatic
typeOdomF2MScanSubtractAngle()rtabmap::Parametersinlinestatic
typeOdomF2MScanSubtractRadius()rtabmap::Parametersinlinestatic
typeOdomF2MValidDepthRatio()rtabmap::Parametersinlinestatic
typeOdomFillInfoData()rtabmap::Parametersinlinestatic
typeOdomFilteringStrategy()rtabmap::Parametersinlinestatic
typeOdomFovisBucketHeight()rtabmap::Parametersinlinestatic
typeOdomFovisBucketWidth()rtabmap::Parametersinlinestatic
typeOdomFovisCliqueInlierThreshold()rtabmap::Parametersinlinestatic
typeOdomFovisFastThreshold()rtabmap::Parametersinlinestatic
typeOdomFovisFastThresholdAdaptiveGain()rtabmap::Parametersinlinestatic
typeOdomFovisFeatureSearchWindow()rtabmap::Parametersinlinestatic
typeOdomFovisFeatureWindowSize()rtabmap::Parametersinlinestatic
typeOdomFovisInlierMaxReprojectionError()rtabmap::Parametersinlinestatic
typeOdomFovisMaxKeypointsPerBucket()rtabmap::Parametersinlinestatic
typeOdomFovisMaxMeanReprojectionError()rtabmap::Parametersinlinestatic
typeOdomFovisMaxPyramidLevel()rtabmap::Parametersinlinestatic
typeOdomFovisMinFeaturesForEstimate()rtabmap::Parametersinlinestatic
typeOdomFovisMinPyramidLevel()rtabmap::Parametersinlinestatic
typeOdomFovisStereoMaxDisparity()rtabmap::Parametersinlinestatic
typeOdomFovisStereoMaxDistEpipolarLine()rtabmap::Parametersinlinestatic
typeOdomFovisStereoMaxRefinementDisplacement()rtabmap::Parametersinlinestatic
typeOdomFovisStereoRequireMutualMatch()rtabmap::Parametersinlinestatic
typeOdomFovisTargetPixelsPerFeature()rtabmap::Parametersinlinestatic
typeOdomFovisUpdateTargetFeaturesWithRefined()rtabmap::Parametersinlinestatic
typeOdomFovisUseAdaptiveThreshold()rtabmap::Parametersinlinestatic
typeOdomFovisUseBucketing()rtabmap::Parametersinlinestatic
typeOdomFovisUseHomographyInitialization()rtabmap::Parametersinlinestatic
typeOdomFovisUseImageNormalization()rtabmap::Parametersinlinestatic
typeOdomFovisUseSubpixelRefinement()rtabmap::Parametersinlinestatic
typeOdomGuessMotion()rtabmap::Parametersinlinestatic
typeOdomGuessSmoothingDelay()rtabmap::Parametersinlinestatic
typeOdomHolonomic()rtabmap::Parametersinlinestatic
typeOdomImageBufferSize()rtabmap::Parametersinlinestatic
typeOdomImageDecimation()rtabmap::Parametersinlinestatic
typeOdomKalmanMeasurementNoise()rtabmap::Parametersinlinestatic
typeOdomKalmanProcessNoise()rtabmap::Parametersinlinestatic
typeOdomKeyFrameThr()rtabmap::Parametersinlinestatic
typeOdomLIOSAMAngVar()rtabmap::Parametersinlinestatic
typeOdomLIOSAMConfigPath()rtabmap::Parametersinlinestatic
typeOdomLIOSAMEdgeThreshold()rtabmap::Parametersinlinestatic
typeOdomLIOSAMHorizonScan()rtabmap::Parametersinlinestatic
typeOdomLIOSAMImuAccBiasN()rtabmap::Parametersinlinestatic
typeOdomLIOSAMImuAccNoise()rtabmap::Parametersinlinestatic
typeOdomLIOSAMImuGravity()rtabmap::Parametersinlinestatic
typeOdomLIOSAMImuGyrBiasN()rtabmap::Parametersinlinestatic
typeOdomLIOSAMImuGyrNoise()rtabmap::Parametersinlinestatic
typeOdomLIOSAMLinVar()rtabmap::Parametersinlinestatic
typeOdomLIOSAMNScan()rtabmap::Parametersinlinestatic
typeOdomLIOSAMSensor()rtabmap::Parametersinlinestatic
typeOdomLIOSAMSurfThreshold()rtabmap::Parametersinlinestatic
typeOdomLOAMAngVar()rtabmap::Parametersinlinestatic
typeOdomLOAMLinVar()rtabmap::Parametersinlinestatic
typeOdomLOAMLocalMapping()rtabmap::Parametersinlinestatic
typeOdomLOAMResolution()rtabmap::Parametersinlinestatic
typeOdomLOAMScanPeriod()rtabmap::Parametersinlinestatic
typeOdomLOAMSensor()rtabmap::Parametersinlinestatic
typeOdomMonoInitMinFlow()rtabmap::Parametersinlinestatic
typeOdomMonoInitMinTranslation()rtabmap::Parametersinlinestatic
typeOdomMonoMaxVariance()rtabmap::Parametersinlinestatic
typeOdomMonoMinTranslation()rtabmap::Parametersinlinestatic
typeOdomMSCKFFastThreshold()rtabmap::Parametersinlinestatic
typeOdomMSCKFGridCol()rtabmap::Parametersinlinestatic
typeOdomMSCKFGridMaxFeatureNum()rtabmap::Parametersinlinestatic
typeOdomMSCKFGridMinFeatureNum()rtabmap::Parametersinlinestatic
typeOdomMSCKFGridRow()rtabmap::Parametersinlinestatic
typeOdomMSCKFInitCovAccBias()rtabmap::Parametersinlinestatic
typeOdomMSCKFInitCovExRot()rtabmap::Parametersinlinestatic
typeOdomMSCKFInitCovExTrans()rtabmap::Parametersinlinestatic
typeOdomMSCKFInitCovGyroBias()rtabmap::Parametersinlinestatic
typeOdomMSCKFInitCovVel()rtabmap::Parametersinlinestatic
typeOdomMSCKFMaxCamStateSize()rtabmap::Parametersinlinestatic
typeOdomMSCKFMaxIteration()rtabmap::Parametersinlinestatic
typeOdomMSCKFNoiseAcc()rtabmap::Parametersinlinestatic
typeOdomMSCKFNoiseAccBias()rtabmap::Parametersinlinestatic
typeOdomMSCKFNoiseFeature()rtabmap::Parametersinlinestatic
typeOdomMSCKFNoiseGyro()rtabmap::Parametersinlinestatic
typeOdomMSCKFNoiseGyroBias()rtabmap::Parametersinlinestatic
typeOdomMSCKFOptTranslationThreshold()rtabmap::Parametersinlinestatic
typeOdomMSCKFPatchSize()rtabmap::Parametersinlinestatic
typeOdomMSCKFPositionStdThreshold()rtabmap::Parametersinlinestatic
typeOdomMSCKFPyramidLevels()rtabmap::Parametersinlinestatic
typeOdomMSCKFRansacThreshold()rtabmap::Parametersinlinestatic
typeOdomMSCKFRotationThreshold()rtabmap::Parametersinlinestatic
typeOdomMSCKFStereoThreshold()rtabmap::Parametersinlinestatic
typeOdomMSCKFTrackingRateThreshold()rtabmap::Parametersinlinestatic
typeOdomMSCKFTrackPrecision()rtabmap::Parametersinlinestatic
typeOdomMSCKFTranslationThreshold()rtabmap::Parametersinlinestatic
typeOdomOKVISConfigPath()rtabmap::Parametersinlinestatic
typeOdomOpen3DMaxDepth()rtabmap::Parametersinlinestatic
typeOdomOpen3DMethod()rtabmap::Parametersinlinestatic
typeOdomOpenVINSAccelerometerNoiseDensity()rtabmap::Parametersinlinestatic
typeOdomOpenVINSAccelerometerRandomWalk()rtabmap::Parametersinlinestatic
typeOdomOpenVINSCalibCamExtrinsics()rtabmap::Parametersinlinestatic
typeOdomOpenVINSCalibCamIntrinsics()rtabmap::Parametersinlinestatic
typeOdomOpenVINSCalibCamTimeoffset()rtabmap::Parametersinlinestatic
typeOdomOpenVINSCalibIMUGSensitivity()rtabmap::Parametersinlinestatic
typeOdomOpenVINSCalibIMUIntrinsics()rtabmap::Parametersinlinestatic
typeOdomOpenVINSConfigPath()rtabmap::Parametersinlinestatic
typeOdomOpenVINSDtSLAMDelay()rtabmap::Parametersinlinestatic
typeOdomOpenVINSFeatRepMSCKF()rtabmap::Parametersinlinestatic
typeOdomOpenVINSFeatRepSLAM()rtabmap::Parametersinlinestatic
typeOdomOpenVINSFiMaxBaseline()rtabmap::Parametersinlinestatic
typeOdomOpenVINSFiMaxCondNumber()rtabmap::Parametersinlinestatic
typeOdomOpenVINSFiMaxRuns()rtabmap::Parametersinlinestatic
typeOdomOpenVINSFiRefineFeatures()rtabmap::Parametersinlinestatic
typeOdomOpenVINSFiTriangulate1d()rtabmap::Parametersinlinestatic
typeOdomOpenVINSGravityMag()rtabmap::Parametersinlinestatic
typeOdomOpenVINSGyroscopeNoiseDensity()rtabmap::Parametersinlinestatic
typeOdomOpenVINSGyroscopeRandomWalk()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynInflationBa()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynInflationBg()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynInflationOri()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynInflationVel()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynMinDeg()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynMinRecCond()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynMLEMaxIter()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynMLEMaxThreads()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynMLEMaxTime()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynMLEOptCalib()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynNumPose()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitDynUse()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitIMUThresh()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitMaxDisparity()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitMaxFeatures()rtabmap::Parametersinlinestatic
typeOdomOpenVINSInitWindowTime()rtabmap::Parametersinlinestatic
typeOdomOpenVINSIntegration()rtabmap::Parametersinlinestatic
typeOdomOpenVINSLeftMaskPath()rtabmap::Parametersinlinestatic
typeOdomOpenVINSMaxClones()rtabmap::Parametersinlinestatic
typeOdomOpenVINSMaxMSCKFInUpdate()rtabmap::Parametersinlinestatic
typeOdomOpenVINSMaxSLAM()rtabmap::Parametersinlinestatic
typeOdomOpenVINSMaxSLAMInUpdate()rtabmap::Parametersinlinestatic
typeOdomOpenVINSMinPxDist()rtabmap::Parametersinlinestatic
typeOdomOpenVINSNumPts()rtabmap::Parametersinlinestatic
typeOdomOpenVINSRightMaskPath()rtabmap::Parametersinlinestatic
typeOdomOpenVINSTryZUPT()rtabmap::Parametersinlinestatic
typeOdomOpenVINSUpMSCKFChi2Multiplier()rtabmap::Parametersinlinestatic
typeOdomOpenVINSUpMSCKFSigmaPx()rtabmap::Parametersinlinestatic
typeOdomOpenVINSUpSLAMChi2Multiplier()rtabmap::Parametersinlinestatic
typeOdomOpenVINSUpSLAMSigmaPx()rtabmap::Parametersinlinestatic
typeOdomOpenVINSUseFEJ()rtabmap::Parametersinlinestatic
typeOdomOpenVINSUseKLT()rtabmap::Parametersinlinestatic
typeOdomOpenVINSUseStereo()rtabmap::Parametersinlinestatic
typeOdomOpenVINSZUPTChi2Multiplier()rtabmap::Parametersinlinestatic
typeOdomOpenVINSZUPTMaxDisparity()rtabmap::Parametersinlinestatic
typeOdomOpenVINSZUPTMaxVelodicy()rtabmap::Parametersinlinestatic
typeOdomOpenVINSZUPTNoiseMultiplier()rtabmap::Parametersinlinestatic
typeOdomOpenVINSZUPTOnlyAtBeginning()rtabmap::Parametersinlinestatic
typeOdomORBSLAMAccNoise()rtabmap::Parametersinlinestatic
typeOdomORBSLAMAccWalk()rtabmap::Parametersinlinestatic
typeOdomORBSLAMBf()rtabmap::Parametersinlinestatic
typeOdomORBSLAMFps()rtabmap::Parametersinlinestatic
typeOdomORBSLAMGyroNoise()rtabmap::Parametersinlinestatic
typeOdomORBSLAMGyroWalk()rtabmap::Parametersinlinestatic
typeOdomORBSLAMInertial()rtabmap::Parametersinlinestatic
typeOdomORBSLAMMapSize()rtabmap::Parametersinlinestatic
typeOdomORBSLAMMaxFeatures()rtabmap::Parametersinlinestatic
typeOdomORBSLAMSamplingRate()rtabmap::Parametersinlinestatic
typeOdomORBSLAMThDepth()rtabmap::Parametersinlinestatic
typeOdomORBSLAMVocPath()rtabmap::Parametersinlinestatic
typeOdomParticleLambdaR()rtabmap::Parametersinlinestatic
typeOdomParticleLambdaT()rtabmap::Parametersinlinestatic
typeOdomParticleNoiseR()rtabmap::Parametersinlinestatic
typeOdomParticleNoiseT()rtabmap::Parametersinlinestatic
typeOdomParticleSize()rtabmap::Parametersinlinestatic
typeOdomResetCountdown()rtabmap::Parametersinlinestatic
typeOdomScanKeyFrameThr()rtabmap::Parametersinlinestatic
typeOdomStrategy()rtabmap::Parametersinlinestatic
typeOdomVINSFusionConfigPath()rtabmap::Parametersinlinestatic
typeOdomVisKeyFrameThr()rtabmap::Parametersinlinestatic
typeOdomViso2BucketHeight()rtabmap::Parametersinlinestatic
typeOdomViso2BucketMaxFeatures()rtabmap::Parametersinlinestatic
typeOdomViso2BucketWidth()rtabmap::Parametersinlinestatic
typeOdomViso2InlierThreshold()rtabmap::Parametersinlinestatic
typeOdomViso2MatchBinsize()rtabmap::Parametersinlinestatic
typeOdomViso2MatchDispTolerance()rtabmap::Parametersinlinestatic
typeOdomViso2MatchHalfResolution()rtabmap::Parametersinlinestatic
typeOdomViso2MatchMultiStage()rtabmap::Parametersinlinestatic
typeOdomViso2MatchNmsN()rtabmap::Parametersinlinestatic
typeOdomViso2MatchNmsTau()rtabmap::Parametersinlinestatic
typeOdomViso2MatchOutlierDispTolerance()rtabmap::Parametersinlinestatic
typeOdomViso2MatchOutlierFlowTolerance()rtabmap::Parametersinlinestatic
typeOdomViso2MatchRadius()rtabmap::Parametersinlinestatic
typeOdomViso2MatchRefinement()rtabmap::Parametersinlinestatic
typeOdomViso2RansacIters()rtabmap::Parametersinlinestatic
typeOdomViso2Reweighting()rtabmap::Parametersinlinestatic
typeOptimizerBaseline()rtabmap::Parametersinlinestatic
typeOptimizerDisparityVariance()rtabmap::Parametersinlinestatic
typeOptimizerEpsilon()rtabmap::Parametersinlinestatic
typeOptimizerGravitySigma()rtabmap::Parametersinlinestatic
typeOptimizerIterations()rtabmap::Parametersinlinestatic
typeOptimizerLandmarksIgnored()rtabmap::Parametersinlinestatic
typeOptimizerPixelVariance()rtabmap::Parametersinlinestatic
typeOptimizerPriorsIgnored()rtabmap::Parametersinlinestatic
typeOptimizerRobust()rtabmap::Parametersinlinestatic
typeOptimizerRobustKernelDelta()rtabmap::Parametersinlinestatic
typeOptimizerStrategy()rtabmap::Parametersinlinestatic
typeOptimizerVarianceIgnored()rtabmap::Parametersinlinestatic
typeORBEdgeThreshold()rtabmap::Parametersinlinestatic
typeORBFirstLevel()rtabmap::Parametersinlinestatic
typeORBGpu()rtabmap::Parametersinlinestatic
typeORBNLevels()rtabmap::Parametersinlinestatic
typeORBPatchSize()rtabmap::Parametersinlinestatic
typeORBScaleFactor()rtabmap::Parametersinlinestatic
typeORBScoreType()rtabmap::Parametersinlinestatic
typeORBWTA_K()rtabmap::Parametersinlinestatic
typePyDescriptorDim()rtabmap::Parametersinlinestatic
typePyDescriptorPath()rtabmap::Parametersinlinestatic
typePyDetectorCuda()rtabmap::Parametersinlinestatic
typePyDetectorPath()rtabmap::Parametersinlinestatic
typePyMatcherCuda()rtabmap::Parametersinlinestatic
typePyMatcherIterations()rtabmap::Parametersinlinestatic
typePyMatcherModel()rtabmap::Parametersinlinestatic
typePyMatcherPath()rtabmap::Parametersinlinestatic
typePyMatcherThreshold()rtabmap::Parametersinlinestatic
typeRegForce3DoF()rtabmap::Parametersinlinestatic
typeRegRepeatOnce()rtabmap::Parametersinlinestatic
typeRegStrategy()rtabmap::Parametersinlinestatic
typeRGBDAggressiveLoopThr()rtabmap::Parametersinlinestatic
typeRGBDAngularSpeedUpdate()rtabmap::Parametersinlinestatic
typeRGBDAngularUpdate()rtabmap::Parametersinlinestatic
typeRGBDCreateOccupancyGrid()rtabmap::Parametersinlinestatic
typeRGBDEnabled()rtabmap::Parametersinlinestatic
typeRGBDForceOdom3DoF()rtabmap::Parametersinlinestatic
typeRGBDGoalReachedRadius()rtabmap::Parametersinlinestatic
typeRGBDGoalsSavedInUserData()rtabmap::Parametersinlinestatic
typeRGBDInvertedReg()rtabmap::Parametersinlinestatic
typeRGBDLinearSpeedUpdate()rtabmap::Parametersinlinestatic
typeRGBDLinearUpdate()rtabmap::Parametersinlinestatic
typeRGBDLocalBundleOnLoopClosure()rtabmap::Parametersinlinestatic
typeRGBDLocalImmunizationRatio()rtabmap::Parametersinlinestatic
typeRGBDLocalizationPriorError()rtabmap::Parametersinlinestatic
typeRGBDLocalizationSecondTryWithoutProximityLinks()rtabmap::Parametersinlinestatic
typeRGBDLocalizationSmoothing()rtabmap::Parametersinlinestatic
typeRGBDLocalRadius()rtabmap::Parametersinlinestatic
typeRGBDLoopClosureIdentityGuess()rtabmap::Parametersinlinestatic
typeRGBDLoopClosureReextractFeatures()rtabmap::Parametersinlinestatic
typeRGBDLoopCovLimited()rtabmap::Parametersinlinestatic
typeRGBDMarkerDetection()rtabmap::Parametersinlinestatic
typeRGBDMaxLocalRetrieved()rtabmap::Parametersinlinestatic
typeRGBDMaxLoopClosureDistance()rtabmap::Parametersinlinestatic
typeRGBDMaxOdomCacheSize()rtabmap::Parametersinlinestatic
typeRGBDNeighborLinkRefining()rtabmap::Parametersinlinestatic
typeRGBDNewMapOdomChangeDistance()rtabmap::Parametersinlinestatic
typeRGBDOptimizeFromGraphEnd()rtabmap::Parametersinlinestatic
typeRGBDOptimizeMaxError()rtabmap::Parametersinlinestatic
typeRGBDOptimizeMaxErrorRepairRadius()rtabmap::Parametersinlinestatic
typeRGBDPlanAngularVelocity()rtabmap::Parametersinlinestatic
typeRGBDPlanLinearVelocity()rtabmap::Parametersinlinestatic
typeRGBDPlanStuckIterations()rtabmap::Parametersinlinestatic
typeRGBDProximityAngle()rtabmap::Parametersinlinestatic
typeRGBDProximityBySpace()rtabmap::Parametersinlinestatic
typeRGBDProximityByTime()rtabmap::Parametersinlinestatic
typeRGBDProximityGlobalScanMap()rtabmap::Parametersinlinestatic
typeRGBDProximityMaxGraphDepth()rtabmap::Parametersinlinestatic
typeRGBDProximityMaxPaths()rtabmap::Parametersinlinestatic
typeRGBDProximityMergedScanCovFactor()rtabmap::Parametersinlinestatic
typeRGBDProximityOdomGuess()rtabmap::Parametersinlinestatic
typeRGBDProximityPathFilteringRadius()rtabmap::Parametersinlinestatic
typeRGBDProximityPathMaxNeighbors()rtabmap::Parametersinlinestatic
typeRGBDProximityPathRawPosesUsed()rtabmap::Parametersinlinestatic
typeRGBDScanMatchingIdsSavedInLinks()rtabmap::Parametersinlinestatic
typeRGBDStartAtOrigin()rtabmap::Parametersinlinestatic
typeRtabmapComputeRMSE()rtabmap::Parametersinlinestatic
typeRtabmapCreateIntermediateNodes()rtabmap::Parametersinlinestatic
typeRtabmapDetectionRate()rtabmap::Parametersinlinestatic
typeRtabmapImageBufferSize()rtabmap::Parametersinlinestatic
typeRtabmapImagesAlreadyRectified()rtabmap::Parametersinlinestatic
typeRtabmapLoopGPS()rtabmap::Parametersinlinestatic
typeRtabmapLoopRatio()rtabmap::Parametersinlinestatic
typeRtabmapLoopThr()rtabmap::Parametersinlinestatic
typeRtabmapMaxRepublished()rtabmap::Parametersinlinestatic
typeRtabmapMaxRetrieved()rtabmap::Parametersinlinestatic
typeRtabmapMemoryThr()rtabmap::Parametersinlinestatic
typeRtabmapPublishLastSignature()rtabmap::Parametersinlinestatic
typeRtabmapPublishLikelihood()rtabmap::Parametersinlinestatic
typeRtabmapPublishPdf()rtabmap::Parametersinlinestatic
typeRtabmapPublishRAMUsage()rtabmap::Parametersinlinestatic
typeRtabmapPublishStats()rtabmap::Parametersinlinestatic
typeRtabmapRectifyOnlyFeatures()rtabmap::Parametersinlinestatic
typeRtabmapSaveWMState()rtabmap::Parametersinlinestatic
typeRtabmapStartNewMapOnGoodSignature()rtabmap::Parametersinlinestatic
typeRtabmapStartNewMapOnLoopClosure()rtabmap::Parametersinlinestatic
typeRtabmapStatisticLogged()rtabmap::Parametersinlinestatic
typeRtabmapStatisticLoggedHeaders()rtabmap::Parametersinlinestatic
typeRtabmapStatisticLogsBufferedInRAM()rtabmap::Parametersinlinestatic
typeRtabmapTimeThr()rtabmap::Parametersinlinestatic
typeRtabmapVirtualPlaceLikelihoodRatio()rtabmap::Parametersinlinestatic
typeRtabmapWorkingDirectory()rtabmap::Parametersinlinestatic
typeSIFTContrastThreshold()rtabmap::Parametersinlinestatic
typeSIFTEdgeThreshold()rtabmap::Parametersinlinestatic
typeSIFTGaussianThreshold()rtabmap::Parametersinlinestatic
typeSIFTGpu()rtabmap::Parametersinlinestatic
typeSIFTMaxGaussianThreshold()rtabmap::Parametersinlinestatic
typeSIFTNOctaveLayers()rtabmap::Parametersinlinestatic
typeSIFTPreciseUpscale()rtabmap::Parametersinlinestatic
typeSIFTRootSIFT()rtabmap::Parametersinlinestatic
typeSIFTSigma()rtabmap::Parametersinlinestatic
typeSIFTUpscale()rtabmap::Parametersinlinestatic
typeStereoBMBlockSize()rtabmap::Parametersinlinestatic
typeStereoBMDisp12MaxDiff()rtabmap::Parametersinlinestatic
typeStereoBMMinDisparity()rtabmap::Parametersinlinestatic
typeStereoBMNumDisparities()rtabmap::Parametersinlinestatic
typeStereoBMPreFilterCap()rtabmap::Parametersinlinestatic
typeStereoBMPreFilterSize()rtabmap::Parametersinlinestatic
typeStereoBMSpeckleRange()rtabmap::Parametersinlinestatic
typeStereoBMSpeckleWindowSize()rtabmap::Parametersinlinestatic
typeStereoBMTextureThreshold()rtabmap::Parametersinlinestatic
typeStereoBMUniquenessRatio()rtabmap::Parametersinlinestatic
typeStereoDenseStrategy()rtabmap::Parametersinlinestatic
typeStereoEps()rtabmap::Parametersinlinestatic
typeStereoErrorThreshold()rtabmap::Parametersinlinestatic
typeStereoGpu()rtabmap::Parametersinlinestatic
typeStereoIterations()rtabmap::Parametersinlinestatic
typeStereoMaxDisparity()rtabmap::Parametersinlinestatic
typeStereoMaxLevel()rtabmap::Parametersinlinestatic
typeStereoMinDisparity()rtabmap::Parametersinlinestatic
typeStereoMinEigThreshold()rtabmap::Parametersinlinestatic
typeStereoOpticalFlow()rtabmap::Parametersinlinestatic
typeStereoSGBMBlockSize()rtabmap::Parametersinlinestatic
typeStereoSGBMDisp12MaxDiff()rtabmap::Parametersinlinestatic
typeStereoSGBMMinDisparity()rtabmap::Parametersinlinestatic
typeStereoSGBMMode()rtabmap::Parametersinlinestatic
typeStereoSGBMNumDisparities()rtabmap::Parametersinlinestatic
typeStereoSGBMP1()rtabmap::Parametersinlinestatic
typeStereoSGBMP2()rtabmap::Parametersinlinestatic
typeStereoSGBMPreFilterCap()rtabmap::Parametersinlinestatic
typeStereoSGBMSpeckleRange()rtabmap::Parametersinlinestatic
typeStereoSGBMSpeckleWindowSize()rtabmap::Parametersinlinestatic
typeStereoSGBMUniquenessRatio()rtabmap::Parametersinlinestatic
typeStereoSSD()rtabmap::Parametersinlinestatic
typeStereoUseMinEigenVals()rtabmap::Parametersinlinestatic
typeStereoWinHeight()rtabmap::Parametersinlinestatic
typeStereoWinWidth()rtabmap::Parametersinlinestatic
typeSuperPointCuda()rtabmap::Parametersinlinestatic
typeSuperPointModelPath()rtabmap::Parametersinlinestatic
typeSuperPointNMS()rtabmap::Parametersinlinestatic
typeSuperPointNMSRadius()rtabmap::Parametersinlinestatic
typeSuperPointRpautratCuda()rtabmap::Parametersinlinestatic
typeSuperPointRpautratModelPath()rtabmap::Parametersinlinestatic
typeSuperPointRpautratNMS()rtabmap::Parametersinlinestatic
typeSuperPointRpautratNMSRadius()rtabmap::Parametersinlinestatic
typeSuperPointRpautratThreshold()rtabmap::Parametersinlinestatic
typeSuperPointRpautratWeightsPath()rtabmap::Parametersinlinestatic
typeSuperPointThreshold()rtabmap::Parametersinlinestatic
typeSURFExtended()rtabmap::Parametersinlinestatic
typeSURFGpuKeypointsRatio()rtabmap::Parametersinlinestatic
typeSURFGpuVersion()rtabmap::Parametersinlinestatic
typeSURFHessianThreshold()rtabmap::Parametersinlinestatic
typeSURFOctaveLayers()rtabmap::Parametersinlinestatic
typeSURFOctaves()rtabmap::Parametersinlinestatic
typeSURFUpright()rtabmap::Parametersinlinestatic
typeVhEpEnabled()rtabmap::Parametersinlinestatic
typeVhEpMatchCountMin()rtabmap::Parametersinlinestatic
typeVhEpRansacParam1()rtabmap::Parametersinlinestatic
typeVhEpRansacParam2()rtabmap::Parametersinlinestatic
typeVisBundleAdjustment()rtabmap::Parametersinlinestatic
typeVisCorFlowEps()rtabmap::Parametersinlinestatic
typeVisCorFlowErrorThreshold()rtabmap::Parametersinlinestatic
typeVisCorFlowGpu()rtabmap::Parametersinlinestatic
typeVisCorFlowIterations()rtabmap::Parametersinlinestatic
typeVisCorFlowMaxLevel()rtabmap::Parametersinlinestatic
typeVisCorFlowMinEigThreshold()rtabmap::Parametersinlinestatic
typeVisCorFlowUseMinEigenVals()rtabmap::Parametersinlinestatic
typeVisCorFlowWinSize()rtabmap::Parametersinlinestatic
typeVisCorGuessMatchToProjection()rtabmap::Parametersinlinestatic
typeVisCorGuessWinSize()rtabmap::Parametersinlinestatic
typeVisCorNNDR()rtabmap::Parametersinlinestatic
typeVisCorNNType()rtabmap::Parametersinlinestatic
typeVisCorType()rtabmap::Parametersinlinestatic
typeVisDepthAsMask()rtabmap::Parametersinlinestatic
typeVisDepthMaskFloorThr()rtabmap::Parametersinlinestatic
typeVisEpipolarGeometryVar()rtabmap::Parametersinlinestatic
typeVisEstimationType()rtabmap::Parametersinlinestatic
typeVisFeatureType()rtabmap::Parametersinlinestatic
typeVisGridCols()rtabmap::Parametersinlinestatic
typeVisGridRows()rtabmap::Parametersinlinestatic
typeVisInlierDistance()rtabmap::Parametersinlinestatic
typeVisIterations()rtabmap::Parametersinlinestatic
typeVisMaxDepth()rtabmap::Parametersinlinestatic
typeVisMaxFeatures()rtabmap::Parametersinlinestatic
typeVisMeanInliersDistance()rtabmap::Parametersinlinestatic
typeVisMinDepth()rtabmap::Parametersinlinestatic
typeVisMinInliers()rtabmap::Parametersinlinestatic
typeVisMinInliersDistribution()rtabmap::Parametersinlinestatic
typeVisPnPFlags()rtabmap::Parametersinlinestatic
typeVisPnPMaxVariance()rtabmap::Parametersinlinestatic
typeVisPnPRefineIterations()rtabmap::Parametersinlinestatic
typeVisPnPReprojError()rtabmap::Parametersinlinestatic
typeVisPnPSamplingPolicy()rtabmap::Parametersinlinestatic
typeVisPnPSplitLinearCovComponents()rtabmap::Parametersinlinestatic
typeVisPnPVarianceMedianRatio()rtabmap::Parametersinlinestatic
typeVisRefineIterations()rtabmap::Parametersinlinestatic
typeVisRoiRatios()rtabmap::Parametersinlinestatic
typeVisSSC()rtabmap::Parametersinlinestatic
typeVisSubPixEps()rtabmap::Parametersinlinestatic
typeVisSubPixIterations()rtabmap::Parametersinlinestatic
typeVisSubPixWinSize()rtabmap::Parametersinlinestatic
writeINI(const std::string &configFile, const ParametersMap &parameters) (defined in rtabmap::Parameters)rtabmap::Parametersstatic
~Parameters() (defined in rtabmap::Parameters)rtabmap::Parametersvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Parameters.html b/preview/pr-1773/api/latest/classrtabmap_1_1Parameters.html new file mode 100644 index 00000000..675d2700 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Parameters.html @@ -0,0 +1,59623 @@ + + + + + + + + +RTAB-Map: rtabmap::Parameters Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Parameters Class Reference
+
+
+ +

#include <Parameters.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::string kRtabmapPublishStats ()
 Key of parameter Rtabmap/PublishStats : "Publishing statistics." Default value: true ( bool ).
 
static bool defaultRtabmapPublishStats ()
 Default value of parameter Rtabmap/PublishStats : true .
 
static std::string typeRtabmapPublishStats ()
 Type of parameter Rtabmap/PublishStats , as a string: bool .
 
static std::string kRtabmapPublishLastSignature ()
 Key of parameter Rtabmap/PublishLastSignature : "Publishing last signature." Default value: true ( bool ).
 
static bool defaultRtabmapPublishLastSignature ()
 Default value of parameter Rtabmap/PublishLastSignature : true .
 
static std::string typeRtabmapPublishLastSignature ()
 Type of parameter Rtabmap/PublishLastSignature , as a string: bool .
 
static std::string kRtabmapPublishPdf ()
 Key of parameter Rtabmap/PublishPdf : "Publishing pdf." Default value: true ( bool ).
 
static bool defaultRtabmapPublishPdf ()
 Default value of parameter Rtabmap/PublishPdf : true .
 
static std::string typeRtabmapPublishPdf ()
 Type of parameter Rtabmap/PublishPdf , as a string: bool .
 
static std::string kRtabmapPublishLikelihood ()
 Key of parameter Rtabmap/PublishLikelihood : "Publishing likelihood." Default value: true ( bool ).
 
static bool defaultRtabmapPublishLikelihood ()
 Default value of parameter Rtabmap/PublishLikelihood : true .
 
static std::string typeRtabmapPublishLikelihood ()
 Type of parameter Rtabmap/PublishLikelihood , as a string: bool .
 
static std::string kRtabmapPublishRAMUsage ()
 Key of parameter Rtabmap/PublishRAMUsage : "Publishing RAM usage in statistics (may add a small overhead to get info from the system)." Default value: false ( bool ).
 
static bool defaultRtabmapPublishRAMUsage ()
 Default value of parameter Rtabmap/PublishRAMUsage : false .
 
static std::string typeRtabmapPublishRAMUsage ()
 Type of parameter Rtabmap/PublishRAMUsage , as a string: bool .
 
static std::string kRtabmapComputeRMSE ()
 Key of parameter Rtabmap/ComputeRMSE : "Compute root mean square error (RMSE) and publish it in statistics, if ground truth is provided." Default value: true ( bool ).
 
static bool defaultRtabmapComputeRMSE ()
 Default value of parameter Rtabmap/ComputeRMSE : true .
 
static std::string typeRtabmapComputeRMSE ()
 Type of parameter Rtabmap/ComputeRMSE , as a string: bool .
 
static std::string kRtabmapSaveWMState ()
 Key of parameter Rtabmap/SaveWMState : "Save working memory state after each update in statistics." Default value: false ( bool ).
 
static bool defaultRtabmapSaveWMState ()
 Default value of parameter Rtabmap/SaveWMState : false .
 
static std::string typeRtabmapSaveWMState ()
 Type of parameter Rtabmap/SaveWMState , as a string: bool .
 
static std::string kRtabmapTimeThr ()
 Key of parameter Rtabmap/TimeThr : "Maximum time allowed for map update (ms) (0 means infinity). When map update time exceeds this fixed time threshold, some nodes in Working Memory (WM) are transferred to Long-Term Memory to limit the size of the WM and decrease the update time." Default value: 0 ( float ).
 
static float defaultRtabmapTimeThr ()
 Default value of parameter Rtabmap/TimeThr : 0 .
 
static std::string typeRtabmapTimeThr ()
 Type of parameter Rtabmap/TimeThr , as a string: float .
 
static std::string kRtabmapMemoryThr ()
 Key of parameter Rtabmap/MemoryThr : uFormat("Maximum nodes in the Working Memory (0 means infinity). Similar to \"%s\", when the number of nodes in Working Memory (WM) exceeds this treshold, some nodes are transferred to Long-Term Memory to keep WM size fixed.", kRtabmapTimeThr().c_str()) Default value: 0 ( int ).
 
static int defaultRtabmapMemoryThr ()
 Default value of parameter Rtabmap/MemoryThr : 0 .
 
static std::string typeRtabmapMemoryThr ()
 Type of parameter Rtabmap/MemoryThr , as a string: int .
 
static std::string kRtabmapDetectionRate ()
 Key of parameter Rtabmap/DetectionRate : "Detection rate (Hz). RTAB-Map will filter input images to satisfy this rate." Default value: 1 ( float ).
 
static float defaultRtabmapDetectionRate ()
 Default value of parameter Rtabmap/DetectionRate : 1 .
 
static std::string typeRtabmapDetectionRate ()
 Type of parameter Rtabmap/DetectionRate , as a string: float .
 
static std::string kRtabmapImageBufferSize ()
 Key of parameter Rtabmap/ImageBufferSize : "Data buffer size (0 min inf)." Default value: 1 ( unsigned int ).
 
static unsigned int defaultRtabmapImageBufferSize ()
 Default value of parameter Rtabmap/ImageBufferSize : 1 .
 
static std::string typeRtabmapImageBufferSize ()
 Type of parameter Rtabmap/ImageBufferSize , as a string: unsigned int .
 
static std::string kRtabmapCreateIntermediateNodes ()
 Key of parameter Rtabmap/CreateIntermediateNodes : uFormat("Create intermediate nodes between loop closure detection. Only used when %s>0.", kRtabmapDetectionRate().c_str()) Default value: false ( bool ).
 
static bool defaultRtabmapCreateIntermediateNodes ()
 Default value of parameter Rtabmap/CreateIntermediateNodes : false .
 
static std::string typeRtabmapCreateIntermediateNodes ()
 Type of parameter Rtabmap/CreateIntermediateNodes , as a string: bool .
 
static std::string kRtabmapWorkingDirectory ()
 Key of parameter Rtabmap/WorkingDirectory : "Working directory." Default value: "" (string).
 
static std::string defaultRtabmapWorkingDirectory ()
 Default value of parameter Rtabmap/WorkingDirectory : "" .
 
static std::string typeRtabmapWorkingDirectory ()
 Type of parameter Rtabmap/WorkingDirectory , as a string: string.
 
static std::string kRtabmapMaxRetrieved ()
 Key of parameter Rtabmap/MaxRetrieved : "Maximum nodes retrieved at the same time from LTM." Default value: 2 ( unsigned int ).
 
static unsigned int defaultRtabmapMaxRetrieved ()
 Default value of parameter Rtabmap/MaxRetrieved : 2 .
 
static std::string typeRtabmapMaxRetrieved ()
 Type of parameter Rtabmap/MaxRetrieved , as a string: unsigned int .
 
static std::string kRtabmapMaxRepublished ()
 Key of parameter Rtabmap/MaxRepublished : uFormat("Maximum nodes republished when requesting missing data. When %s=false, only loop closure data is republished, otherwise the closest nodes from the current localization are republished first. Ignored if %s=false.", kRGBDEnabled().c_str(), kRtabmapPublishLastSignature().c_str()) Default value: 2 ( unsigned int ).
 
static unsigned int defaultRtabmapMaxRepublished ()
 Default value of parameter Rtabmap/MaxRepublished : 2 .
 
static std::string typeRtabmapMaxRepublished ()
 Type of parameter Rtabmap/MaxRepublished , as a string: unsigned int .
 
static std::string kRtabmapStatisticLogsBufferedInRAM ()
 Key of parameter Rtabmap/StatisticLogsBufferedInRAM : "Statistic logs buffered in RAM instead of written to hard drive after each iteration." Default value: true ( bool ).
 
static bool defaultRtabmapStatisticLogsBufferedInRAM ()
 Default value of parameter Rtabmap/StatisticLogsBufferedInRAM : true .
 
static std::string typeRtabmapStatisticLogsBufferedInRAM ()
 Type of parameter Rtabmap/StatisticLogsBufferedInRAM , as a string: bool .
 
static std::string kRtabmapStatisticLogged ()
 Key of parameter Rtabmap/StatisticLogged : "Logging enabled." Default value: false ( bool ).
 
static bool defaultRtabmapStatisticLogged ()
 Default value of parameter Rtabmap/StatisticLogged : false .
 
static std::string typeRtabmapStatisticLogged ()
 Type of parameter Rtabmap/StatisticLogged , as a string: bool .
 
static std::string kRtabmapStatisticLoggedHeaders ()
 Key of parameter Rtabmap/StatisticLoggedHeaders : "Add column header description to log files." Default value: true ( bool ).
 
static bool defaultRtabmapStatisticLoggedHeaders ()
 Default value of parameter Rtabmap/StatisticLoggedHeaders : true .
 
static std::string typeRtabmapStatisticLoggedHeaders ()
 Type of parameter Rtabmap/StatisticLoggedHeaders , as a string: bool .
 
static std::string kRtabmapStartNewMapOnLoopClosure ()
 Key of parameter Rtabmap/StartNewMapOnLoopClosure : "Start a new map only if there is a global loop closure with a previous map." Default value: false ( bool ).
 
static bool defaultRtabmapStartNewMapOnLoopClosure ()
 Default value of parameter Rtabmap/StartNewMapOnLoopClosure : false .
 
static std::string typeRtabmapStartNewMapOnLoopClosure ()
 Type of parameter Rtabmap/StartNewMapOnLoopClosure , as a string: bool .
 
static std::string kRtabmapStartNewMapOnGoodSignature ()
 Key of parameter Rtabmap/StartNewMapOnGoodSignature : uFormat("Start a new map only if the first signature is not bad (i.e., has enough features, see %s).", kKpBadSignRatio().c_str()) Default value: false ( bool ).
 
static bool defaultRtabmapStartNewMapOnGoodSignature ()
 Default value of parameter Rtabmap/StartNewMapOnGoodSignature : false .
 
static std::string typeRtabmapStartNewMapOnGoodSignature ()
 Type of parameter Rtabmap/StartNewMapOnGoodSignature , as a string: bool .
 
static std::string kRtabmapImagesAlreadyRectified ()
 Key of parameter Rtabmap/ImagesAlreadyRectified : "Images are already rectified. By default RTAB-Map assumes that received images are rectified. If they are not, they can be rectified by RTAB-Map if this parameter is false." Default value: true ( bool ).
 
static bool defaultRtabmapImagesAlreadyRectified ()
 Default value of parameter Rtabmap/ImagesAlreadyRectified : true .
 
static std::string typeRtabmapImagesAlreadyRectified ()
 Type of parameter Rtabmap/ImagesAlreadyRectified , as a string: bool .
 
static std::string kRtabmapRectifyOnlyFeatures ()
 Key of parameter Rtabmap/RectifyOnlyFeatures : uFormat("If \"%s\" is false and this parameter is true, the whole RGB image will not be rectified, only the features. Warning: As projection of RGB-D image to point cloud is assuming that images are rectified, the generated point cloud map will have wrong colors if this parameter is true.", kRtabmapImagesAlreadyRectified().c_str()) Default value: false ( bool ).
 
static bool defaultRtabmapRectifyOnlyFeatures ()
 Default value of parameter Rtabmap/RectifyOnlyFeatures : false .
 
static std::string typeRtabmapRectifyOnlyFeatures ()
 Type of parameter Rtabmap/RectifyOnlyFeatures , as a string: bool .
 
static std::string kRtabmapLoopThr ()
 Key of parameter Rtabmap/LoopThr : "Loop closing threshold." Default value: 0.11 ( float ).
 
static float defaultRtabmapLoopThr ()
 Default value of parameter Rtabmap/LoopThr : 0.11 .
 
static std::string typeRtabmapLoopThr ()
 Type of parameter Rtabmap/LoopThr , as a string: float .
 
static std::string kRtabmapLoopRatio ()
 Key of parameter Rtabmap/LoopRatio : "The loop closure hypothesis must be over LoopRatio x lastHypothesisValue." Default value: 0 ( float ).
 
static float defaultRtabmapLoopRatio ()
 Default value of parameter Rtabmap/LoopRatio : 0 .
 
static std::string typeRtabmapLoopRatio ()
 Type of parameter Rtabmap/LoopRatio , as a string: float .
 
static std::string kRtabmapLoopGPS ()
 Key of parameter Rtabmap/LoopGPS : uFormat("Use GPS to filter likelihood (if GPS is recorded). Only locations inside the local radius \"%s\" of the current GPS location are considered for loop closure detection.", kRGBDLocalRadius().c_str()) Default value: true ( bool ).
 
static bool defaultRtabmapLoopGPS ()
 Default value of parameter Rtabmap/LoopGPS : true .
 
static std::string typeRtabmapLoopGPS ()
 Type of parameter Rtabmap/LoopGPS , as a string: bool .
 
static std::string kRtabmapVirtualPlaceLikelihoodRatio ()
 Key of parameter Rtabmap/VirtualPlaceLikelihoodRatio : "Likelihood ratio for virtual place (for no loop closure hypothesis): 0=Mean / StdDev, 1=StdDev / (Max-Mean)" Default value: 0 ( int ).
 
static int defaultRtabmapVirtualPlaceLikelihoodRatio ()
 Default value of parameter Rtabmap/VirtualPlaceLikelihoodRatio : 0 .
 
static std::string typeRtabmapVirtualPlaceLikelihoodRatio ()
 Type of parameter Rtabmap/VirtualPlaceLikelihoodRatio , as a string: int .
 
static std::string kMemRehearsalSimilarity ()
 Key of parameter Mem/RehearsalSimilarity : "Rehearsal similarity." Default value: 0.6 ( float ).
 
static float defaultMemRehearsalSimilarity ()
 Default value of parameter Mem/RehearsalSimilarity : 0.6 .
 
static std::string typeMemRehearsalSimilarity ()
 Type of parameter Mem/RehearsalSimilarity , as a string: float .
 
static std::string kMemImageKept ()
 Key of parameter Mem/ImageKept : "Keep raw images in RAM." Default value: false ( bool ).
 
static bool defaultMemImageKept ()
 Default value of parameter Mem/ImageKept : false .
 
static std::string typeMemImageKept ()
 Type of parameter Mem/ImageKept , as a string: bool .
 
static std::string kMemBinDataKept ()
 Key of parameter Mem/BinDataKept : "Keep binary data in db." Default value: true ( bool ).
 
static bool defaultMemBinDataKept ()
 Default value of parameter Mem/BinDataKept : true .
 
static std::string typeMemBinDataKept ()
 Type of parameter Mem/BinDataKept , as a string: bool .
 
static std::string kMemRawDescriptorsKept ()
 Key of parameter Mem/RawDescriptorsKept : "Raw descriptors kept in memory." Default value: true ( bool ).
 
static bool defaultMemRawDescriptorsKept ()
 Default value of parameter Mem/RawDescriptorsKept : true .
 
static std::string typeMemRawDescriptorsKept ()
 Type of parameter Mem/RawDescriptorsKept , as a string: bool .
 
static std::string kMemLoadVisualLocalFeaturesOnInit ()
 Key of parameter Mem/LoadVisualLocalFeaturesOnInit : "Load all local visual features (keypoints, descriptors and 3D points) in RAM when loading an existing database. This can add significant time to initialize the memory but the features will be already loaded before computing loop closure transforms. If false, the features are loaded on-demand from the database when a loop closure transformation should be estimated." Default value: true ( bool ).
 
static bool defaultMemLoadVisualLocalFeaturesOnInit ()
 Default value of parameter Mem/LoadVisualLocalFeaturesOnInit : true .
 
static std::string typeMemLoadVisualLocalFeaturesOnInit ()
 Type of parameter Mem/LoadVisualLocalFeaturesOnInit , as a string: bool .
 
static std::string kMemMapLabelsAdded ()
 Key of parameter Mem/MapLabelsAdded : "Create map labels. The first node of a map will be labeled as \"map#\" where # is the map ID." Default value: true ( bool ).
 
static bool defaultMemMapLabelsAdded ()
 Default value of parameter Mem/MapLabelsAdded : true .
 
static std::string typeMemMapLabelsAdded ()
 Type of parameter Mem/MapLabelsAdded , as a string: bool .
 
static std::string kMemSaveDepth16Format ()
 Key of parameter Mem/SaveDepth16Format : "Save depth image into 16 bits format to reduce memory used. Warning: values over ~65 meters are ignored (maximum 65535 millimeters)." Default value: false ( bool ).
 
static bool defaultMemSaveDepth16Format ()
 Default value of parameter Mem/SaveDepth16Format : false .
 
static std::string typeMemSaveDepth16Format ()
 Type of parameter Mem/SaveDepth16Format , as a string: bool .
 
static std::string kMemNotLinkedNodesKept ()
 Key of parameter Mem/NotLinkedNodesKept : "Keep not linked nodes in db (rehearsed nodes and deleted nodes)." Default value: true ( bool ).
 
static bool defaultMemNotLinkedNodesKept ()
 Default value of parameter Mem/NotLinkedNodesKept : true .
 
static std::string typeMemNotLinkedNodesKept ()
 Type of parameter Mem/NotLinkedNodesKept , as a string: bool .
 
static std::string kMemIntermediateNodeDataKept ()
 Key of parameter Mem/IntermediateNodeDataKept : "Keep intermediate node data in db." Default value: false ( bool ).
 
static bool defaultMemIntermediateNodeDataKept ()
 Default value of parameter Mem/IntermediateNodeDataKept : false .
 
static std::string typeMemIntermediateNodeDataKept ()
 Type of parameter Mem/IntermediateNodeDataKept , as a string: bool .
 
static std::string kMemImageCompressionFormat ()
 Key of parameter Mem/ImageCompressionFormat : "RGB image compression format. It should be \".jpg\" or \".png\"." Default value: ".jpg" (string).
 
static std::string defaultMemImageCompressionFormat ()
 Default value of parameter Mem/ImageCompressionFormat : ".jpg" .
 
static std::string typeMemImageCompressionFormat ()
 Type of parameter Mem/ImageCompressionFormat , as a string: string.
 
static std::string kMemDepthCompressionFormat ()
 Key of parameter Mem/DepthCompressionFormat : "Depth image compression format for 16UC1 depth type. It should be \".png\" or \".rvl\". If depth type is 32FC1, \".png\" is used." Default value: ".rvl" (string).
 
static std::string defaultMemDepthCompressionFormat ()
 Default value of parameter Mem/DepthCompressionFormat : ".rvl" .
 
static std::string typeMemDepthCompressionFormat ()
 Type of parameter Mem/DepthCompressionFormat , as a string: string.
 
static std::string kMemSTMSize ()
 Key of parameter Mem/STMSize : "Short-term memory size." Default value: 10 ( unsigned int ).
 
static unsigned int defaultMemSTMSize ()
 Default value of parameter Mem/STMSize : 10 .
 
static std::string typeMemSTMSize ()
 Type of parameter Mem/STMSize , as a string: unsigned int .
 
static std::string kMemIncrementalMemory ()
 Key of parameter Mem/IncrementalMemory : "SLAM mode, otherwise it is Localization mode." Default value: true ( bool ).
 
static bool defaultMemIncrementalMemory ()
 Default value of parameter Mem/IncrementalMemory : true .
 
static std::string typeMemIncrementalMemory ()
 Type of parameter Mem/IncrementalMemory , as a string: bool .
 
static std::string kMemLocalizationReadOnly ()
 Key of parameter Mem/LocalizationReadOnly : uFormat("In localization mode, open the database in read-only mode (ignored if %s=true). Currrenty incompatible with memory management (%s and %s cannot be used) and if there are disjoint sessions in working memory. Last localization pose won't be saved back in the database at the end of the session, so the robot will always restart to original last localization pose, unless %s is used or an external initial pose is provided on initialization.", kMemIncrementalMemory().c_str(), kRtabmapLoopThr().c_str(), kRtabmapMemoryThr().c_str(), kRGBDStartAtOrigin().c_str()).c_str() Default value: false ( bool ).
 
static bool defaultMemLocalizationReadOnly ()
 Default value of parameter Mem/LocalizationReadOnly : false .
 
static std::string typeMemLocalizationReadOnly ()
 Type of parameter Mem/LocalizationReadOnly , as a string: bool .
 
static std::string kMemLocalizationDataSaved ()
 Key of parameter Mem/LocalizationDataSaved : uFormat("Save localization data during localization session (when %s=false). When enabled, the database will then also grow in localization mode. This mode would be used only for debugging purpose.", kMemIncrementalMemory().c_str()).c_str() Default value: false ( bool ).
 
static bool defaultMemLocalizationDataSaved ()
 Default value of parameter Mem/LocalizationDataSaved : false .
 
static std::string typeMemLocalizationDataSaved ()
 Type of parameter Mem/LocalizationDataSaved , as a string: bool .
 
static std::string kMemReduceGraph ()
 Key of parameter Mem/ReduceGraph : uFormat("Reduce graph. Merge nodes when loop closures are added (ignoring those with user data). Note that this approach assumes that 100%% of the loop closures accepted are good, so it is highly recommended to enable \"%s\" at the same time.", kRGBDOptimizeMaxError().c_str()) Default value: false ( bool ).
 
static bool defaultMemReduceGraph ()
 Default value of parameter Mem/ReduceGraph : false .
 
static std::string typeMemReduceGraph ()
 Type of parameter Mem/ReduceGraph , as a string: bool .
 
static std::string kMemRecentWmRatio ()
 Key of parameter Mem/RecentWmRatio : "Ratio of locations after the last loop closure in WM that cannot be transferred." Default value: 0.2 ( float ).
 
static float defaultMemRecentWmRatio ()
 Default value of parameter Mem/RecentWmRatio : 0.2 .
 
static std::string typeMemRecentWmRatio ()
 Type of parameter Mem/RecentWmRatio , as a string: float .
 
static std::string kMemTransferSortingByWeightId ()
 Key of parameter Mem/TransferSortingByWeightId : "On transfer, signatures are sorted by weight->ID only (i.e. the oldest of the lowest weighted signatures are transferred first). If false, the signatures are sorted by weight->Age->ID (i.e. the oldest inserted in WM of the lowest weighted signatures are transferred first). Note that retrieval updates the age, not the ID." Default value: false ( bool ).
 
static bool defaultMemTransferSortingByWeightId ()
 Default value of parameter Mem/TransferSortingByWeightId : false .
 
static std::string typeMemTransferSortingByWeightId ()
 Type of parameter Mem/TransferSortingByWeightId , as a string: bool .
 
static std::string kMemRehearsalIdUpdatedToNewOne ()
 Key of parameter Mem/RehearsalIdUpdatedToNewOne : uFormat("On merge, update to new id. When false, no copy. Keep this disable if %s=true.", kRtabmapCreateIntermediateNodes().c_str()) Default value: false ( bool ).
 
static bool defaultMemRehearsalIdUpdatedToNewOne ()
 Default value of parameter Mem/RehearsalIdUpdatedToNewOne : false .
 
static std::string typeMemRehearsalIdUpdatedToNewOne ()
 Type of parameter Mem/RehearsalIdUpdatedToNewOne , as a string: bool .
 
static std::string kMemRehearsalWeightIgnoredWhileMoving ()
 Key of parameter Mem/RehearsalWeightIgnoredWhileMoving : "When the robot is moving, weights are not updated on rehearsal." Default value: false ( bool ).
 
static bool defaultMemRehearsalWeightIgnoredWhileMoving ()
 Default value of parameter Mem/RehearsalWeightIgnoredWhileMoving : false .
 
static std::string typeMemRehearsalWeightIgnoredWhileMoving ()
 Type of parameter Mem/RehearsalWeightIgnoredWhileMoving , as a string: bool .
 
static std::string kMemGenerateIds ()
 Key of parameter Mem/GenerateIds : "True=Generate location IDs, False=use input image IDs." Default value: true ( bool ).
 
static bool defaultMemGenerateIds ()
 Default value of parameter Mem/GenerateIds : true .
 
static std::string typeMemGenerateIds ()
 Type of parameter Mem/GenerateIds , as a string: bool .
 
static std::string kMemBadSignaturesIgnored ()
 Key of parameter Mem/BadSignaturesIgnored : "Bad signatures are ignored." Default value: false ( bool ).
 
static bool defaultMemBadSignaturesIgnored ()
 Default value of parameter Mem/BadSignaturesIgnored : false .
 
static std::string typeMemBadSignaturesIgnored ()
 Type of parameter Mem/BadSignaturesIgnored , as a string: bool .
 
static std::string kMemInitWMWithAllNodes ()
 Key of parameter Mem/InitWMWithAllNodes : "Initialize the Working Memory with all nodes in Long-Term Memory. When false, it is initialized with nodes of the previous session." Default value: false ( bool ).
 
static bool defaultMemInitWMWithAllNodes ()
 Default value of parameter Mem/InitWMWithAllNodes : false .
 
static std::string typeMemInitWMWithAllNodes ()
 Type of parameter Mem/InitWMWithAllNodes , as a string: bool .
 
static std::string kMemDepthAsMask ()
 Key of parameter Mem/DepthAsMask : "Use depth image as mask when extracting features for vocabulary." Default value: true ( bool ).
 
static bool defaultMemDepthAsMask ()
 Default value of parameter Mem/DepthAsMask : true .
 
static std::string typeMemDepthAsMask ()
 Type of parameter Mem/DepthAsMask , as a string: bool .
 
static std::string kMemDepthMaskFloorThr ()
 Key of parameter Mem/DepthMaskFloorThr : uFormat("Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if %s is false.", kMemDepthAsMask().c_str()) Default value: 0.0 ( float ).
 
static float defaultMemDepthMaskFloorThr ()
 Default value of parameter Mem/DepthMaskFloorThr : 0.0 .
 
static std::string typeMemDepthMaskFloorThr ()
 Type of parameter Mem/DepthMaskFloorThr , as a string: float .
 
static std::string kMemStereoFromMotion ()
 Key of parameter Mem/StereoFromMotion : uFormat("Triangulate features without depth using stereo from motion (odometry). It would be ignored if %s is true and the feature detector used supports masking.", kMemDepthAsMask().c_str()) Default value: false ( bool ).
 
static bool defaultMemStereoFromMotion ()
 Default value of parameter Mem/StereoFromMotion : false .
 
static std::string typeMemStereoFromMotion ()
 Type of parameter Mem/StereoFromMotion , as a string: bool .
 
static std::string kMemImagePreDecimation ()
 Key of parameter Mem/ImagePreDecimation : uFormat("Decimation of the RGB image before visual feature detection. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If %s is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.",kMemDepthAsMask().c_str()) Default value: 1 ( unsigned int ).
 
static unsigned int defaultMemImagePreDecimation ()
 Default value of parameter Mem/ImagePreDecimation : 1 .
 
static std::string typeMemImagePreDecimation ()
 Type of parameter Mem/ImagePreDecimation , as a string: unsigned int .
 
static std::string kMemImagePostDecimation ()
 Key of parameter Mem/ImagePostDecimation : uFormat("Decimation of the RGB image before saving it to database. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. Decimation is done from the original image. If set to same value than %s, data already decimated is saved (no need to re-decimate the image).", kMemImagePreDecimation().c_str()) Default value: 1 ( unsigned int ).
 
static unsigned int defaultMemImagePostDecimation ()
 Default value of parameter Mem/ImagePostDecimation : 1 .
 
static std::string typeMemImagePostDecimation ()
 Type of parameter Mem/ImagePostDecimation , as a string: unsigned int .
 
static std::string kMemCompressionParallelized ()
 Key of parameter Mem/CompressionParallelized : "Compression of sensor data is multi-threaded." Default value: true ( bool ).
 
static bool defaultMemCompressionParallelized ()
 Default value of parameter Mem/CompressionParallelized : true .
 
static std::string typeMemCompressionParallelized ()
 Type of parameter Mem/CompressionParallelized , as a string: bool .
 
static std::string kMemLaserScanDownsampleStepSize ()
 Key of parameter Mem/LaserScanDownsampleStepSize : "If > 1, downsample the laser scans when creating a signature." Default value: 1 ( int ).
 
static int defaultMemLaserScanDownsampleStepSize ()
 Default value of parameter Mem/LaserScanDownsampleStepSize : 1 .
 
static std::string typeMemLaserScanDownsampleStepSize ()
 Type of parameter Mem/LaserScanDownsampleStepSize , as a string: int .
 
static std::string kMemLaserScanVoxelSize ()
 Key of parameter Mem/LaserScanVoxelSize : uFormat("If > 0 m, voxel filtering is done on laser scans when creating a signature. If the laser scan had normals, they will be removed. To recompute the normals, make sure to use \"%s\" or \"%s\" parameters.", kMemLaserScanNormalK().c_str(), kMemLaserScanNormalRadius().c_str()) Default value: 0.0 ( float ).
 
static float defaultMemLaserScanVoxelSize ()
 Default value of parameter Mem/LaserScanVoxelSize : 0.0 .
 
static std::string typeMemLaserScanVoxelSize ()
 Type of parameter Mem/LaserScanVoxelSize , as a string: float .
 
static std::string kMemLaserScanNormalK ()
 Key of parameter Mem/LaserScanNormalK : "If > 0 and laser scans don't have normals, normals will be computed with K search neighbors when creating a signature." Default value: 0 ( int ).
 
static int defaultMemLaserScanNormalK ()
 Default value of parameter Mem/LaserScanNormalK : 0 .
 
static std::string typeMemLaserScanNormalK ()
 Type of parameter Mem/LaserScanNormalK , as a string: int .
 
static std::string kMemLaserScanNormalRadius ()
 Key of parameter Mem/LaserScanNormalRadius : "If > 0 m and laser scans don't have normals, normals will be computed with radius search neighbors when creating a signature." Default value: 0.0 ( float ).
 
static float defaultMemLaserScanNormalRadius ()
 Default value of parameter Mem/LaserScanNormalRadius : 0.0 .
 
static std::string typeMemLaserScanNormalRadius ()
 Type of parameter Mem/LaserScanNormalRadius , as a string: float .
 
static std::string kMemUseOdomFeatures ()
 Key of parameter Mem/UseOdomFeatures : "Use odometry features instead of regenerating them." Default value: true ( bool ).
 
static bool defaultMemUseOdomFeatures ()
 Default value of parameter Mem/UseOdomFeatures : true .
 
static std::string typeMemUseOdomFeatures ()
 Type of parameter Mem/UseOdomFeatures , as a string: bool .
 
static std::string kMemUseOdomGravity ()
 Key of parameter Mem/UseOdomGravity : uFormat("Use odometry instead of IMU orientation to add gravity links to new nodes created. We assume that odometry is already aligned with gravity (e.g., we are using a VIO approach). Gravity constraints are used by graph optimization only if \"%s\" is not zero.", kOptimizerGravitySigma().c_str()) Default value: false ( bool ).
 
static bool defaultMemUseOdomGravity ()
 Default value of parameter Mem/UseOdomGravity : false .
 
static std::string typeMemUseOdomGravity ()
 Type of parameter Mem/UseOdomGravity , as a string: bool .
 
static std::string kMemCovOffDiagIgnored ()
 Key of parameter Mem/CovOffDiagIgnored : "Ignore off diagonal values of the covariance matrix." Default value: true ( bool ).
 
static bool defaultMemCovOffDiagIgnored ()
 Default value of parameter Mem/CovOffDiagIgnored : true .
 
static std::string typeMemCovOffDiagIgnored ()
 Type of parameter Mem/CovOffDiagIgnored , as a string: bool .
 
static std::string kMemGlobalDescriptorStrategy ()
 Key of parameter Mem/GlobalDescriptorStrategy : "Extract global descriptor from sensor data. 0=disabled, 1=PyDescriptor" Default value: 0 ( int ).
 
static int defaultMemGlobalDescriptorStrategy ()
 Default value of parameter Mem/GlobalDescriptorStrategy : 0 .
 
static std::string typeMemGlobalDescriptorStrategy ()
 Type of parameter Mem/GlobalDescriptorStrategy , as a string: int .
 
static std::string kMemRotateImagesUpsideUp ()
 Key of parameter Mem/RotateImagesUpsideUp : "Rotate images so that upside is up if they are not already. This can be useful in case the robots don't have all same camera orientation but are using the same map, so that not rotation-invariant visual features can still be used across the fleet." Default value: false ( bool ).
 
static bool defaultMemRotateImagesUpsideUp ()
 Default value of parameter Mem/RotateImagesUpsideUp : false .
 
static std::string typeMemRotateImagesUpsideUp ()
 Type of parameter Mem/RotateImagesUpsideUp , as a string: bool .
 
static std::string kKpNNStrategy ()
 Key of parameter Kp/NNStrategy : "FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, FLANN KdTree Single=5, NanoFLANN KdTree=6" Default value: 1 ( int ).
 
static int defaultKpNNStrategy ()
 Default value of parameter Kp/NNStrategy : 1 .
 
static std::string typeKpNNStrategy ()
 Type of parameter Kp/NNStrategy , as a string: int .
 
static std::string kKpIncrementalDictionary ()
 Key of parameter Kp/IncrementalDictionary : "" Default value: true ( bool ).
 
static bool defaultKpIncrementalDictionary ()
 Default value of parameter Kp/IncrementalDictionary : true .
 
static std::string typeKpIncrementalDictionary ()
 Type of parameter Kp/IncrementalDictionary , as a string: bool .
 
static std::string kKpIncrementalFlann ()
 Key of parameter Kp/IncrementalFlann : uFormat("When using FLANN based strategy, add/remove points to its index without always rebuilding the index (the index is only rebuilt when too many of its features have been removed, see \"%s\").", kKpFlannRebalancingFactor().c_str()) Default value: true ( bool ).
 
static bool defaultKpIncrementalFlann ()
 Default value of parameter Kp/IncrementalFlann : true .
 
static std::string typeKpIncrementalFlann ()
 Type of parameter Kp/IncrementalFlann , as a string: bool .
 
static std::string kKpFlannRebalancingFactor ()
 Key of parameter Kp/FlannRebalancingFactor : uFormat("Rebuild the incremental FLANN index (see \"%s\") once the ratio (factor-1)/factor of its features has been removed, e.g. half of them for a factor of 2. Rebuilding frees the memory of the removed features and speeds up the searches. Features are mostly removed when memory management is enabled (\"%s\" or \"%s\"). Set to 1 to never rebuild, which also uses less memory as the features don't have to be referenced one by one.", kKpIncrementalFlann().c_str(), kRtabmapTimeThr().c_str(), kRtabmapMemoryThr().c_str()) Default value: 2.0 ( float ).
 
static float defaultKpFlannRebalancingFactor ()
 Default value of parameter Kp/FlannRebalancingFactor : 2.0 .
 
static std::string typeKpFlannRebalancingFactor ()
 Type of parameter Kp/FlannRebalancingFactor , as a string: float .
 
static std::string kKpFlannThreads ()
 Key of parameter Kp/FlannThreads : "Number of threads used for FLANN kNN search (batched queries). Set to 0 for all available." Default value: 1 ( int ).
 
static int defaultKpFlannThreads ()
 Default value of parameter Kp/FlannThreads : 1 .
 
static std::string typeKpFlannThreads ()
 Type of parameter Kp/FlannThreads , as a string: int .
 
static std::string kKpByteToFloat ()
 Key of parameter Kp/ByteToFloat : uFormat("For %s=1, binary descriptors are converted to float by converting each byte to float instead of converting each bit to float. When converting bytes instead of bits, less memory is used and search is faster at the cost of slightly less accurate matching.", kKpNNStrategy().c_str()) Default value: false ( bool ).
 
static bool defaultKpByteToFloat ()
 Default value of parameter Kp/ByteToFloat : false .
 
static std::string typeKpByteToFloat ()
 Type of parameter Kp/ByteToFloat , as a string: bool .
 
static std::string kKpMaxDepth ()
 Key of parameter Kp/MaxDepth : "Filter extracted keypoints by depth (0=inf)." Default value: 0 ( float ).
 
static float defaultKpMaxDepth ()
 Default value of parameter Kp/MaxDepth : 0 .
 
static std::string typeKpMaxDepth ()
 Type of parameter Kp/MaxDepth , as a string: float .
 
static std::string kKpMinDepth ()
 Key of parameter Kp/MinDepth : "Filter extracted keypoints by depth." Default value: 0 ( float ).
 
static float defaultKpMinDepth ()
 Default value of parameter Kp/MinDepth : 0 .
 
static std::string typeKpMinDepth ()
 Type of parameter Kp/MinDepth , as a string: float .
 
static std::string kKpMaxFeatures ()
 Key of parameter Kp/MaxFeatures : "Maximum features extracted from the images (0 means not bounded, <0 means no extraction)." Default value: 500 ( int ).
 
static int defaultKpMaxFeatures ()
 Default value of parameter Kp/MaxFeatures : 500 .
 
static std::string typeKpMaxFeatures ()
 Type of parameter Kp/MaxFeatures , as a string: int .
 
static std::string kKpSSC ()
 Key of parameter Kp/SSC : "If true, SSC (Suppression via Square Covering) is applied to limit keypoints." Default value: false ( bool ).
 
static bool defaultKpSSC ()
 Default value of parameter Kp/SSC : false .
 
static std::string typeKpSSC ()
 Type of parameter Kp/SSC , as a string: bool .
 
static std::string kKpBadSignRatio ()
 Key of parameter Kp/BadSignRatio : uFormat("Bad signature ratio. If %s=0, the ratio is computed from the average number of words per signature (less than Ratio x AverageWordsPerImage = bad).", kKpMaxFeatures().c_str()) Default value: 0.5 ( float ).
 
static float defaultKpBadSignRatio ()
 Default value of parameter Kp/BadSignRatio : 0.5 .
 
static std::string typeKpBadSignRatio ()
 Type of parameter Kp/BadSignRatio , as a string: float .
 
static std::string kKpNndrRatio ()
 Key of parameter Kp/NndrRatio : "NNDR ratio (A matching pair is detected, if its distance is closer than X times the distance of the second nearest neighbor.)" Default value: 0.8 ( float ).
 
static float defaultKpNndrRatio ()
 Default value of parameter Kp/NndrRatio : 0.8 .
 
static std::string typeKpNndrRatio ()
 Type of parameter Kp/NndrRatio , as a string: float .
 
static std::string kKpDetectorStrategy ()
 Key of parameter Kp/DetectorStrategy : "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat" Default value: 6 ( int ).
 
static int defaultKpDetectorStrategy ()
 Default value of parameter Kp/DetectorStrategy : 6 .
 
static std::string typeKpDetectorStrategy ()
 Type of parameter Kp/DetectorStrategy , as a string: int .
 
static std::string kKpTfIdfLikelihoodUsed ()
 Key of parameter Kp/TfIdfLikelihoodUsed : "Use of the td-idf strategy to compute the likelihood." Default value: true ( bool ).
 
static bool defaultKpTfIdfLikelihoodUsed ()
 Default value of parameter Kp/TfIdfLikelihoodUsed : true .
 
static std::string typeKpTfIdfLikelihoodUsed ()
 Type of parameter Kp/TfIdfLikelihoodUsed , as a string: bool .
 
static std::string kKpParallelized ()
 Key of parameter Kp/Parallelized : "If the dictionary update and signature creation were parallelized." Default value: true ( bool ).
 
static bool defaultKpParallelized ()
 Default value of parameter Kp/Parallelized : true .
 
static std::string typeKpParallelized ()
 Type of parameter Kp/Parallelized , as a string: bool .
 
static std::string kKpRoiRatios ()
 Key of parameter Kp/RoiRatios : "Region of interest ratios [left, right, top, bottom]." Default value: "0.0 0.0 0.0 0.0" (string).
 
static std::string defaultKpRoiRatios ()
 Default value of parameter Kp/RoiRatios : "0.0 0.0 0.0 0.0" .
 
static std::string typeKpRoiRatios ()
 Type of parameter Kp/RoiRatios , as a string: string.
 
static std::string kKpDictionaryPath ()
 Key of parameter Kp/DictionaryPath : "Path of the pre-computed dictionary" Default value: "" (string).
 
static std::string defaultKpDictionaryPath ()
 Default value of parameter Kp/DictionaryPath : "" .
 
static std::string typeKpDictionaryPath ()
 Type of parameter Kp/DictionaryPath , as a string: string.
 
static std::string kKpNewWordsComparedTogether ()
 Key of parameter Kp/NewWordsComparedTogether : "When adding new words to dictionary, they are compared also with each other (to detect same words in the same signature)." Default value: true ( bool ).
 
static bool defaultKpNewWordsComparedTogether ()
 Default value of parameter Kp/NewWordsComparedTogether : true .
 
static std::string typeKpNewWordsComparedTogether ()
 Type of parameter Kp/NewWordsComparedTogether , as a string: bool .
 
static std::string kKpFlannIndexSaved ()
 Key of parameter Kp/FlannIndexSaved : uFormat("Save FLANN index during localization session (when %s=false). The FLANN index will be saved to database after the first time localization mode is used, then on next sessions, the index is reloaded from the database instead of being rebuilt again. This can save significant loading time when the visual word dictionary is big (>1M words). Note that if the dictionary is modified (parameters or data), the index will be rebuilt and saved again on the next session. Ignored on initialization if %s is enabled.", kMemIncrementalMemory().c_str(), kMemInitWMWithAllNodes().c_str()).c_str() Default value: false ( bool ).
 
static bool defaultKpFlannIndexSaved ()
 Default value of parameter Kp/FlannIndexSaved : false .
 
static std::string typeKpFlannIndexSaved ()
 Type of parameter Kp/FlannIndexSaved , as a string: bool .
 
static std::string kKpSerializeWithChecksum ()
 Key of parameter Kp/SerializeWithChecksum : "On serialization of the FLANN index, compute checksum of the data used by the FLANN index. This adds a slight overhead on serialization/deserialization to make sure that the dictionary data correspond to same data used when the index was built." Default value: true ( bool ).
 
static bool defaultKpSerializeWithChecksum ()
 Default value of parameter Kp/SerializeWithChecksum : true .
 
static std::string typeKpSerializeWithChecksum ()
 Type of parameter Kp/SerializeWithChecksum , as a string: bool .
 
static std::string kKpSubPixWinSize ()
 Key of parameter Kp/SubPixWinSize : "See cv::cornerSubPix()." Default value: 3 ( int ).
 
static int defaultKpSubPixWinSize ()
 Default value of parameter Kp/SubPixWinSize : 3 .
 
static std::string typeKpSubPixWinSize ()
 Type of parameter Kp/SubPixWinSize , as a string: int .
 
static std::string kKpSubPixIterations ()
 Key of parameter Kp/SubPixIterations : "See cv::cornerSubPix(). 0 disables sub pixel refining." Default value: 0 ( int ).
 
static int defaultKpSubPixIterations ()
 Default value of parameter Kp/SubPixIterations : 0 .
 
static std::string typeKpSubPixIterations ()
 Type of parameter Kp/SubPixIterations , as a string: int .
 
static std::string kKpSubPixEps ()
 Key of parameter Kp/SubPixEps : "See cv::cornerSubPix()." Default value: 0.02 ( double ).
 
static double defaultKpSubPixEps ()
 Default value of parameter Kp/SubPixEps : 0.02 .
 
static std::string typeKpSubPixEps ()
 Type of parameter Kp/SubPixEps , as a string: double .
 
static std::string kKpGridRows ()
 Key of parameter Kp/GridRows : uFormat("Number of rows of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kKpMaxFeatures().c_str()) Default value: 1 ( int ).
 
static int defaultKpGridRows ()
 Default value of parameter Kp/GridRows : 1 .
 
static std::string typeKpGridRows ()
 Type of parameter Kp/GridRows , as a string: int .
 
static std::string kKpGridCols ()
 Key of parameter Kp/GridCols : uFormat("Number of columns of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kKpMaxFeatures().c_str()) Default value: 1 ( int ).
 
static int defaultKpGridCols ()
 Default value of parameter Kp/GridCols : 1 .
 
static std::string typeKpGridCols ()
 Type of parameter Kp/GridCols , as a string: int .
 
static std::string kDbSqlite3InMemory ()
 Key of parameter DbSqlite3/InMemory : "Using database in the memory instead of a file on the hard disk." Default value: false ( bool ).
 
static bool defaultDbSqlite3InMemory ()
 Default value of parameter DbSqlite3/InMemory : false .
 
static std::string typeDbSqlite3InMemory ()
 Type of parameter DbSqlite3/InMemory , as a string: bool .
 
static std::string kDbSqlite3CacheSize ()
 Key of parameter DbSqlite3/CacheSize : "PRAGMA cache_size: number of database pages kept in SQLite's page cache (approx. cacheSize * page_size bytes, often ~4 KiB per page). " "Larger values reduce disk I/O when the working set fits in RAM. SQLite built-in default is typically 2000 pages." Default value: 10000 ( unsigned int ).
 
static unsigned int defaultDbSqlite3CacheSize ()
 Default value of parameter DbSqlite3/CacheSize : 10000 .
 
static std::string typeDbSqlite3CacheSize ()
 Type of parameter DbSqlite3/CacheSize , as a string: unsigned int .
 
static std::string kDbSqlite3JournalMode ()
 Key of parameter DbSqlite3/JournalMode : "PRAGMA journal_mode: rollback journal storage. See sqlite.org/pragma.html#pragma_journal_mode for more details. " "0=DELETE (SQLite default): journal file deleted after each commit. " "1=TRUNCATE: journal truncated to zero length. " "2=PERSIST: journal file kept, header zeroed after commit. " "3=MEMORY: journal in RAM only; faster, weaker crash safety. " "4=OFF: no journal; fastest, risk of corruption on crash." Default value: 3 ( int ).
 
static int defaultDbSqlite3JournalMode ()
 Default value of parameter DbSqlite3/JournalMode : 3 .
 
static std::string typeDbSqlite3JournalMode ()
 Type of parameter DbSqlite3/JournalMode , as a string: int .
 
static std::string kDbSqlite3Synchronous ()
 Key of parameter DbSqlite3/Synchronous : "PRAGMA synchronous: how aggressively SQLite syncs the database to disk. See sqlite.org/pragma.html#pragma_synchronous for more details. " "0=OFF: no wait for persistent storage; fastest, corruption possible on power loss. " "1=NORMAL: sync at critical moments (common SQLite default with WAL). " "2=FULL (SQLite safest default): sync after every commit; slowest." Default value: 0 ( int ).
 
static int defaultDbSqlite3Synchronous ()
 Default value of parameter DbSqlite3/Synchronous : 0 .
 
static std::string typeDbSqlite3Synchronous ()
 Type of parameter DbSqlite3/Synchronous , as a string: int .
 
static std::string kDbSqlite3TempStore ()
 Key of parameter DbSqlite3/TempStore : "PRAGMA temp_store: where SQLite stores temporary tables and indices. See sqlite.org/pragma.html#pragma_temp_store for more details. " "0=DEFAULT: SQLite compile-time default (often on-disk temp files). " "1=FILE: temporary files in the system temp directory. " "2=MEMORY: temporary data in RAM when possible." Default value: 2 ( int ).
 
static int defaultDbSqlite3TempStore ()
 Default value of parameter DbSqlite3/TempStore : 2 .
 
static std::string typeDbSqlite3TempStore ()
 Type of parameter DbSqlite3/TempStore , as a string: int .
 
static std::string kDbTargetVersion ()
 Key of parameter Db/TargetVersion : "Target database version for backward compatibility purpose. Only Major and minor versions are used and should be set (e.g., 0.19 vs 0.20 or 1.0 vs 2.0). Patch version is ignored (e.g., 0.20.1 and 0.20.3 will generate a 0.20 database)." Default value: "" (string).
 
static std::string defaultDbTargetVersion ()
 Default value of parameter Db/TargetVersion : "" .
 
static std::string typeDbTargetVersion ()
 Type of parameter Db/TargetVersion , as a string: string.
 
static std::string kSURFExtended ()
 Key of parameter SURF/Extended : "Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors)." Default value: false ( bool ).
 
static bool defaultSURFExtended ()
 Default value of parameter SURF/Extended : false .
 
static std::string typeSURFExtended ()
 Type of parameter SURF/Extended , as a string: bool .
 
static std::string kSURFHessianThreshold ()
 Key of parameter SURF/HessianThreshold : "Threshold for hessian keypoint detector used in SURF." Default value: 500 ( float ).
 
static float defaultSURFHessianThreshold ()
 Default value of parameter SURF/HessianThreshold : 500 .
 
static std::string typeSURFHessianThreshold ()
 Type of parameter SURF/HessianThreshold , as a string: float .
 
static std::string kSURFOctaves ()
 Key of parameter SURF/Octaves : "Number of pyramid octaves the keypoint detector will use." Default value: 4 ( int ).
 
static int defaultSURFOctaves ()
 Default value of parameter SURF/Octaves : 4 .
 
static std::string typeSURFOctaves ()
 Type of parameter SURF/Octaves , as a string: int .
 
static std::string kSURFOctaveLayers ()
 Key of parameter SURF/OctaveLayers : "Number of octave layers within each octave." Default value: 2 ( int ).
 
static int defaultSURFOctaveLayers ()
 Default value of parameter SURF/OctaveLayers : 2 .
 
static std::string typeSURFOctaveLayers ()
 Type of parameter SURF/OctaveLayers , as a string: int .
 
static std::string kSURFUpright ()
 Key of parameter SURF/Upright : "Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation)." Default value: false ( bool ).
 
static bool defaultSURFUpright ()
 Default value of parameter SURF/Upright : false .
 
static std::string typeSURFUpright ()
 Type of parameter SURF/Upright , as a string: bool .
 
static std::string kSURFGpuVersion ()
 Key of parameter SURF/GpuVersion : "GPU-SURF: Use GPU version of SURF. This option is enabled only if OpenCV is built with CUDA and GPUs are detected." Default value: false ( bool ).
 
static bool defaultSURFGpuVersion ()
 Default value of parameter SURF/GpuVersion : false .
 
static std::string typeSURFGpuVersion ()
 Type of parameter SURF/GpuVersion , as a string: bool .
 
static std::string kSURFGpuKeypointsRatio ()
 Key of parameter SURF/GpuKeypointsRatio : "Used with SURF GPU." Default value: 0.01 ( float ).
 
static float defaultSURFGpuKeypointsRatio ()
 Default value of parameter SURF/GpuKeypointsRatio : 0.01 .
 
static std::string typeSURFGpuKeypointsRatio ()
 Type of parameter SURF/GpuKeypointsRatio , as a string: float .
 
static std::string kSIFTNOctaveLayers ()
 Key of parameter SIFT/NOctaveLayers : "The number of layers in each octave. 3 is the value used in D. Lowe paper. The number of octaves is computed automatically from the image resolution. Not used by CudaSift, the number of octaves is still computed automatically." Default value: 3 ( int ).
 
static int defaultSIFTNOctaveLayers ()
 Default value of parameter SIFT/NOctaveLayers : 3 .
 
static std::string typeSIFTNOctaveLayers ()
 Type of parameter SIFT/NOctaveLayers , as a string: int .
 
static std::string kSIFTContrastThreshold ()
 Key of parameter SIFT/ContrastThreshold : uFormat("The contrast threshold used to filter out weak features in semi-uniform (low-contrast) regions. The larger the threshold, the less features are produced by the detector. Not used by CudaSift (see %s instead).", kSIFTGaussianThreshold().c_str()) Default value: 0.04 ( double ).
 
static double defaultSIFTContrastThreshold ()
 Default value of parameter SIFT/ContrastThreshold : 0.04 .
 
static std::string typeSIFTContrastThreshold ()
 Type of parameter SIFT/ContrastThreshold , as a string: double .
 
static std::string kSIFTEdgeThreshold ()
 Key of parameter SIFT/EdgeThreshold : "The threshold used to filter out edge-like features. Note that the its meaning is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are filtered out (more features are retained)." Default value: 10 ( double ).
 
static double defaultSIFTEdgeThreshold ()
 Default value of parameter SIFT/EdgeThreshold : 10 .
 
static std::string typeSIFTEdgeThreshold ()
 Type of parameter SIFT/EdgeThreshold , as a string: double .
 
static std::string kSIFTSigma ()
 Key of parameter SIFT/Sigma : "The sigma of the Gaussian applied to the input image at the octave #0. If your image is captured with a weak camera with soft lenses, you might want to reduce the number." Default value: 1.6 ( double ).
 
static double defaultSIFTSigma ()
 Default value of parameter SIFT/Sigma : 1.6 .
 
static std::string typeSIFTSigma ()
 Type of parameter SIFT/Sigma , as a string: double .
 
static std::string kSIFTPreciseUpscale ()
 Key of parameter SIFT/PreciseUpscale : "Whether to enable precise upscaling in the scale pyramid (OpenCV >= 4.8)." Default value: false ( bool ).
 
static bool defaultSIFTPreciseUpscale ()
 Default value of parameter SIFT/PreciseUpscale : false .
 
static std::string typeSIFTPreciseUpscale ()
 Type of parameter SIFT/PreciseUpscale , as a string: bool .
 
static std::string kSIFTRootSIFT ()
 Key of parameter SIFT/RootSIFT : "Apply RootSIFT normalization of the descriptors." Default value: false ( bool ).
 
static bool defaultSIFTRootSIFT ()
 Default value of parameter SIFT/RootSIFT : false .
 
static std::string typeSIFTRootSIFT ()
 Type of parameter SIFT/RootSIFT , as a string: bool .
 
static std::string kSIFTGpu ()
 Key of parameter SIFT/Gpu : "CudaSift: Use GPU version of SIFT. This option is enabled only if RTAB-Map is built with CudaSift dependency and GPUs are detected." Default value: false ( bool ).
 
static bool defaultSIFTGpu ()
 Default value of parameter SIFT/Gpu : false .
 
static std::string typeSIFTGpu ()
 Type of parameter SIFT/Gpu , as a string: bool .
 
static std::string kSIFTGaussianThreshold ()
 Key of parameter SIFT/GaussianThreshold : "CudaSift: Threshold on difference of Gaussians for feature pruning. The higher the threshold, the less features with low response/hessian are produced by the detector." Default value: 2.0 ( float ).
 
static float defaultSIFTGaussianThreshold ()
 Default value of parameter SIFT/GaussianThreshold : 2.0 .
 
static std::string typeSIFTGaussianThreshold ()
 Type of parameter SIFT/GaussianThreshold , as a string: float .
 
static std::string kSIFTMaxGaussianThreshold ()
 Key of parameter SIFT/MaxGaussianThreshold : uFormat("CudaSift: Maximum threshold on difference of Gaussians for feature pruning (ignored if smaller or equal than %s). The lower the threshold, the less features with high response/hessian are produced by the detector.", kSIFTGaussianThreshold().c_str()) Default value: 0.0 ( float ).
 
static float defaultSIFTMaxGaussianThreshold ()
 Default value of parameter SIFT/MaxGaussianThreshold : 0.0 .
 
static std::string typeSIFTMaxGaussianThreshold ()
 Type of parameter SIFT/MaxGaussianThreshold , as a string: float .
 
static std::string kSIFTUpscale ()
 Key of parameter SIFT/Upscale : "CudaSift: Whether to enable upscaling." Default value: false ( bool ).
 
static bool defaultSIFTUpscale ()
 Default value of parameter SIFT/Upscale : false .
 
static std::string typeSIFTUpscale ()
 Type of parameter SIFT/Upscale , as a string: bool .
 
static std::string kBRIEFBytes ()
 Key of parameter BRIEF/Bytes : "Bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes." Default value: 32 ( int ).
 
static int defaultBRIEFBytes ()
 Default value of parameter BRIEF/Bytes : 32 .
 
static std::string typeBRIEFBytes ()
 Type of parameter BRIEF/Bytes , as a string: int .
 
static std::string kFASTThreshold ()
 Key of parameter FAST/Threshold : "Threshold on difference between intensity of the central pixel and pixels of a circle around this pixel." Default value: 20 ( int ).
 
static int defaultFASTThreshold ()
 Default value of parameter FAST/Threshold : 20 .
 
static std::string typeFASTThreshold ()
 Type of parameter FAST/Threshold , as a string: int .
 
static std::string kFASTNonmaxSuppression ()
 Key of parameter FAST/NonmaxSuppression : "If true, non-maximum suppression is applied to detected corners (keypoints)." Default value: true ( bool ).
 
static bool defaultFASTNonmaxSuppression ()
 Default value of parameter FAST/NonmaxSuppression : true .
 
static std::string typeFASTNonmaxSuppression ()
 Type of parameter FAST/NonmaxSuppression , as a string: bool .
 
static std::string kFASTGpu ()
 Key of parameter FAST/Gpu : "GPU-FAST: Use GPU version of FAST. This option is enabled only if OpenCV is built with CUDA and GPUs are detected." Default value: false ( bool ).
 
static bool defaultFASTGpu ()
 Default value of parameter FAST/Gpu : false .
 
static std::string typeFASTGpu ()
 Type of parameter FAST/Gpu , as a string: bool .
 
static std::string kFASTGpuKeypointsRatio ()
 Key of parameter FAST/GpuKeypointsRatio : "Used with FAST GPU." Default value: 0.05 ( double ).
 
static double defaultFASTGpuKeypointsRatio ()
 Default value of parameter FAST/GpuKeypointsRatio : 0.05 .
 
static std::string typeFASTGpuKeypointsRatio ()
 Type of parameter FAST/GpuKeypointsRatio , as a string: double .
 
static std::string kFASTMinThreshold ()
 Key of parameter FAST/MinThreshold : "Minimum threshold. Used only when FAST/GridRows and FAST/GridCols are set." Default value: 7 ( int ).
 
static int defaultFASTMinThreshold ()
 Default value of parameter FAST/MinThreshold : 7 .
 
static std::string typeFASTMinThreshold ()
 Type of parameter FAST/MinThreshold , as a string: int .
 
static std::string kFASTMaxThreshold ()
 Key of parameter FAST/MaxThreshold : "Maximum threshold. Used only when FAST/GridRows and FAST/GridCols are set." Default value: 200 ( int ).
 
static int defaultFASTMaxThreshold ()
 Default value of parameter FAST/MaxThreshold : 200 .
 
static std::string typeFASTMaxThreshold ()
 Type of parameter FAST/MaxThreshold , as a string: int .
 
static std::string kFASTGridRows ()
 Key of parameter FAST/GridRows : "Grid rows (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell." Default value: 0 ( int ).
 
static int defaultFASTGridRows ()
 Default value of parameter FAST/GridRows : 0 .
 
static std::string typeFASTGridRows ()
 Type of parameter FAST/GridRows , as a string: int .
 
static std::string kFASTGridCols ()
 Key of parameter FAST/GridCols : "Grid cols (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell." Default value: 0 ( int ).
 
static int defaultFASTGridCols ()
 Default value of parameter FAST/GridCols : 0 .
 
static std::string typeFASTGridCols ()
 Type of parameter FAST/GridCols , as a string: int .
 
static std::string kFASTCV ()
 Key of parameter FAST/CV : "Enable FastCV implementation if non-zero (and RTAB-Map is built with FastCV support). Values should be 9 and 10." Default value: 0 ( int ).
 
static int defaultFASTCV ()
 Default value of parameter FAST/CV : 0 .
 
static std::string typeFASTCV ()
 Type of parameter FAST/CV , as a string: int .
 
static std::string kGFTTQualityLevel ()
 Key of parameter GFTT/QualityLevel : "" Default value: 0.001 ( double ).
 
static double defaultGFTTQualityLevel ()
 Default value of parameter GFTT/QualityLevel : 0.001 .
 
static std::string typeGFTTQualityLevel ()
 Type of parameter GFTT/QualityLevel , as a string: double .
 
static std::string kGFTTMinDistance ()
 Key of parameter GFTT/MinDistance : "" Default value: 7 ( double ).
 
static double defaultGFTTMinDistance ()
 Default value of parameter GFTT/MinDistance : 7 .
 
static std::string typeGFTTMinDistance ()
 Type of parameter GFTT/MinDistance , as a string: double .
 
static std::string kGFTTBlockSize ()
 Key of parameter GFTT/BlockSize : "" Default value: 3 ( int ).
 
static int defaultGFTTBlockSize ()
 Default value of parameter GFTT/BlockSize : 3 .
 
static std::string typeGFTTBlockSize ()
 Type of parameter GFTT/BlockSize , as a string: int .
 
static std::string kGFTTUseHarrisDetector ()
 Key of parameter GFTT/UseHarrisDetector : "" Default value: false ( bool ).
 
static bool defaultGFTTUseHarrisDetector ()
 Default value of parameter GFTT/UseHarrisDetector : false .
 
static std::string typeGFTTUseHarrisDetector ()
 Type of parameter GFTT/UseHarrisDetector , as a string: bool .
 
static std::string kGFTTK ()
 Key of parameter GFTT/K : "" Default value: 0.04 ( double ).
 
static double defaultGFTTK ()
 Default value of parameter GFTT/K : 0.04 .
 
static std::string typeGFTTK ()
 Type of parameter GFTT/K , as a string: double .
 
static std::string kGFTTGpu ()
 Key of parameter GFTT/Gpu : "GPU-GFTT: Use GPU version of GFTT. This option is enabled only if OpenCV>=3 is built with CUDA and GPUs are detected." Default value: false ( bool ).
 
static bool defaultGFTTGpu ()
 Default value of parameter GFTT/Gpu : false .
 
static std::string typeGFTTGpu ()
 Type of parameter GFTT/Gpu , as a string: bool .
 
static std::string kORBScaleFactor ()
 Key of parameter ORB/ScaleFactor : "Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor will mean that to cover certain scale range you will need more pyramid levels and so the speed will suffer." Default value: 2 ( float ).
 
static float defaultORBScaleFactor ()
 Default value of parameter ORB/ScaleFactor : 2 .
 
static std::string typeORBScaleFactor ()
 Type of parameter ORB/ScaleFactor , as a string: float .
 
static std::string kORBNLevels ()
 Key of parameter ORB/NLevels : "The number of pyramid levels. The smallest level will have linear size equal to input_image_linear_size/pow(scaleFactor, nlevels)." Default value: 3 ( int ).
 
static int defaultORBNLevels ()
 Default value of parameter ORB/NLevels : 3 .
 
static std::string typeORBNLevels ()
 Type of parameter ORB/NLevels , as a string: int .
 
static std::string kORBEdgeThreshold ()
 Key of parameter ORB/EdgeThreshold : "This is size of the border where the features are not detected. It should roughly match the patchSize parameter." Default value: 19 ( int ).
 
static int defaultORBEdgeThreshold ()
 Default value of parameter ORB/EdgeThreshold : 19 .
 
static std::string typeORBEdgeThreshold ()
 Type of parameter ORB/EdgeThreshold , as a string: int .
 
static std::string kORBFirstLevel ()
 Key of parameter ORB/FirstLevel : "It should be 0 in the current implementation." Default value: 0 ( int ).
 
static int defaultORBFirstLevel ()
 Default value of parameter ORB/FirstLevel : 0 .
 
static std::string typeORBFirstLevel ()
 Type of parameter ORB/FirstLevel , as a string: int .
 
static std::string kORBWTA_K ()
 Key of parameter ORB/WTA_K : "The number of points that produce each element of the oriented BRIEF descriptor. The default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 random points (of course, those point coordinates are random, but they are generated from the pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3)." Default value: 2 ( int ).
 
static int defaultORBWTA_K ()
 Default value of parameter ORB/WTA_K : 2 .
 
static std::string typeORBWTA_K ()
 Type of parameter ORB/WTA_K , as a string: int .
 
static std::string kORBScoreType ()
 Key of parameter ORB/ScoreType : "The default HARRIS_SCORE=0 means that Harris algorithm is used to rank features (the score is written to KeyPoint::score and is used to retain best nfeatures features); FAST_SCORE=1 is alternative value of the parameter that produces slightly less stable keypoints, but it is a little faster to compute." Default value: 0 ( int ).
 
static int defaultORBScoreType ()
 Default value of parameter ORB/ScoreType : 0 .
 
static std::string typeORBScoreType ()
 Type of parameter ORB/ScoreType , as a string: int .
 
static std::string kORBPatchSize ()
 Key of parameter ORB/PatchSize : "size of the patch used by the oriented BRIEF descriptor. Of course, on smaller pyramid layers the perceived image area covered by a feature will be larger." Default value: 31 ( int ).
 
static int defaultORBPatchSize ()
 Default value of parameter ORB/PatchSize : 31 .
 
static std::string typeORBPatchSize ()
 Type of parameter ORB/PatchSize , as a string: int .
 
static std::string kORBGpu ()
 Key of parameter ORB/Gpu : "GPU-ORB: Use GPU version of ORB. This option is enabled only if OpenCV is built with CUDA and GPUs are detected." Default value: false ( bool ).
 
static bool defaultORBGpu ()
 Default value of parameter ORB/Gpu : false .
 
static std::string typeORBGpu ()
 Type of parameter ORB/Gpu , as a string: bool .
 
static std::string kFREAKOrientationNormalized ()
 Key of parameter FREAK/OrientationNormalized : "Enable orientation normalization." Default value: true ( bool ).
 
static bool defaultFREAKOrientationNormalized ()
 Default value of parameter FREAK/OrientationNormalized : true .
 
static std::string typeFREAKOrientationNormalized ()
 Type of parameter FREAK/OrientationNormalized , as a string: bool .
 
static std::string kFREAKScaleNormalized ()
 Key of parameter FREAK/ScaleNormalized : "Enable scale normalization." Default value: true ( bool ).
 
static bool defaultFREAKScaleNormalized ()
 Default value of parameter FREAK/ScaleNormalized : true .
 
static std::string typeFREAKScaleNormalized ()
 Type of parameter FREAK/ScaleNormalized , as a string: bool .
 
static std::string kFREAKPatternScale ()
 Key of parameter FREAK/PatternScale : "Scaling of the description pattern." Default value: 22 ( float ).
 
static float defaultFREAKPatternScale ()
 Default value of parameter FREAK/PatternScale : 22 .
 
static std::string typeFREAKPatternScale ()
 Type of parameter FREAK/PatternScale , as a string: float .
 
static std::string kFREAKNOctaves ()
 Key of parameter FREAK/NOctaves : "Number of octaves covered by the detected keypoints." Default value: 4 ( int ).
 
static int defaultFREAKNOctaves ()
 Default value of parameter FREAK/NOctaves : 4 .
 
static std::string typeFREAKNOctaves ()
 Type of parameter FREAK/NOctaves , as a string: int .
 
static std::string kBRISKThresh ()
 Key of parameter BRISK/Thresh : "FAST/AGAST detection threshold score." Default value: 30 ( int ).
 
static int defaultBRISKThresh ()
 Default value of parameter BRISK/Thresh : 30 .
 
static std::string typeBRISKThresh ()
 Type of parameter BRISK/Thresh , as a string: int .
 
static std::string kBRISKOctaves ()
 Key of parameter BRISK/Octaves : "Detection octaves. Use 0 to do single scale." Default value: 3 ( int ).
 
static int defaultBRISKOctaves ()
 Default value of parameter BRISK/Octaves : 3 .
 
static std::string typeBRISKOctaves ()
 Type of parameter BRISK/Octaves , as a string: int .
 
static std::string kBRISKPatternScale ()
 Key of parameter BRISK/PatternScale : "Apply this scale to the pattern used for sampling the neighbourhood of a keypoint." Default value: 1 ( float ).
 
static float defaultBRISKPatternScale ()
 Default value of parameter BRISK/PatternScale : 1 .
 
static std::string typeBRISKPatternScale ()
 Type of parameter BRISK/PatternScale , as a string: float .
 
static std::string kKAZEExtended ()
 Key of parameter KAZE/Extended : "Set to enable extraction of extended (128-byte) descriptor." Default value: false ( bool ).
 
static bool defaultKAZEExtended ()
 Default value of parameter KAZE/Extended : false .
 
static std::string typeKAZEExtended ()
 Type of parameter KAZE/Extended , as a string: bool .
 
static std::string kKAZEUpright ()
 Key of parameter KAZE/Upright : "Set to enable use of upright descriptors (non rotation-invariant)." Default value: false ( bool ).
 
static bool defaultKAZEUpright ()
 Default value of parameter KAZE/Upright : false .
 
static std::string typeKAZEUpright ()
 Type of parameter KAZE/Upright , as a string: bool .
 
static std::string kKAZEThreshold ()
 Key of parameter KAZE/Threshold : "Detector response threshold to accept keypoint." Default value: 0.001 ( float ).
 
static float defaultKAZEThreshold ()
 Default value of parameter KAZE/Threshold : 0.001 .
 
static std::string typeKAZEThreshold ()
 Type of parameter KAZE/Threshold , as a string: float .
 
static std::string kKAZENOctaves ()
 Key of parameter KAZE/NOctaves : "Maximum octave evolution of the image." Default value: 4 ( int ).
 
static int defaultKAZENOctaves ()
 Default value of parameter KAZE/NOctaves : 4 .
 
static std::string typeKAZENOctaves ()
 Type of parameter KAZE/NOctaves , as a string: int .
 
static std::string kKAZENOctaveLayers ()
 Key of parameter KAZE/NOctaveLayers : "Default number of sublevels per scale level." Default value: 4 ( int ).
 
static int defaultKAZENOctaveLayers ()
 Default value of parameter KAZE/NOctaveLayers : 4 .
 
static std::string typeKAZENOctaveLayers ()
 Type of parameter KAZE/NOctaveLayers , as a string: int .
 
static std::string kKAZEDiffusivity ()
 Key of parameter KAZE/Diffusivity : "Diffusivity type: 0=DIFF_PM_G1, 1=DIFF_PM_G2, 2=DIFF_WEICKERT or 3=DIFF_CHARBONNIER." Default value: 1 ( int ).
 
static int defaultKAZEDiffusivity ()
 Default value of parameter KAZE/Diffusivity : 1 .
 
static std::string typeKAZEDiffusivity ()
 Type of parameter KAZE/Diffusivity , as a string: int .
 
static std::string kSuperPointModelPath ()
 Key of parameter SuperPoint/ModelPath : "[Required] Path to pre-trained weights Torch file of SuperPoint (*.pt)." Default value: "" (string).
 
static std::string defaultSuperPointModelPath ()
 Default value of parameter SuperPoint/ModelPath : "" .
 
static std::string typeSuperPointModelPath ()
 Type of parameter SuperPoint/ModelPath , as a string: string.
 
static std::string kSuperPointThreshold ()
 Key of parameter SuperPoint/Threshold : "Detector response threshold to accept keypoint." Default value: 0.010 ( float ).
 
static float defaultSuperPointThreshold ()
 Default value of parameter SuperPoint/Threshold : 0.010 .
 
static std::string typeSuperPointThreshold ()
 Type of parameter SuperPoint/Threshold , as a string: float .
 
static std::string kSuperPointNMS ()
 Key of parameter SuperPoint/NMS : "If true, non-maximum suppression is applied to detected keypoints." Default value: true ( bool ).
 
static bool defaultSuperPointNMS ()
 Default value of parameter SuperPoint/NMS : true .
 
static std::string typeSuperPointNMS ()
 Type of parameter SuperPoint/NMS , as a string: bool .
 
static std::string kSuperPointNMSRadius ()
 Key of parameter SuperPoint/NMSRadius : uFormat("[%s=true] Minimum distance (pixels) between keypoints.", kSuperPointNMS().c_str()) Default value: 4 ( int ).
 
static int defaultSuperPointNMSRadius ()
 Default value of parameter SuperPoint/NMSRadius : 4 .
 
static std::string typeSuperPointNMSRadius ()
 Type of parameter SuperPoint/NMSRadius , as a string: int .
 
static std::string kSuperPointCuda ()
 Key of parameter SuperPoint/Cuda : "Use Cuda device for Torch, otherwise CPU device is used by default." Default value: true ( bool ).
 
static bool defaultSuperPointCuda ()
 Default value of parameter SuperPoint/Cuda : true .
 
static std::string typeSuperPointCuda ()
 Type of parameter SuperPoint/Cuda , as a string: bool .
 
static std::string kSuperPointRpautratWeightsPath ()
 Key of parameter SuperPointRpautrat/WeightsPath : "[Required] SuperPoint weights file (*.pth)." Default value: "" (string).
 
static std::string defaultSuperPointRpautratWeightsPath ()
 Default value of parameter SuperPointRpautrat/WeightsPath : "" .
 
static std::string typeSuperPointRpautratWeightsPath ()
 Type of parameter SuperPointRpautrat/WeightsPath , as a string: string.
 
static std::string kSuperPointRpautratModelPath ()
 Key of parameter SuperPointRpautrat/ModelPath : "[Required] SuperPoint python model file (superpoint_pytorch.py)." Default value: "" (string).
 
static std::string defaultSuperPointRpautratModelPath ()
 Default value of parameter SuperPointRpautrat/ModelPath : "" .
 
static std::string typeSuperPointRpautratModelPath ()
 Type of parameter SuperPointRpautrat/ModelPath , as a string: string.
 
static std::string kSuperPointRpautratThreshold ()
 Key of parameter SuperPointRpautrat/Threshold : "Detector response threshold to accept keypoint." Default value: 0.005 ( float ).
 
static float defaultSuperPointRpautratThreshold ()
 Default value of parameter SuperPointRpautrat/Threshold : 0.005 .
 
static std::string typeSuperPointRpautratThreshold ()
 Type of parameter SuperPointRpautrat/Threshold , as a string: float .
 
static std::string kSuperPointRpautratNMS ()
 Key of parameter SuperPointRpautrat/NMS : "If true, non-maximum suppression is applied to detected keypoints." Default value: true ( bool ).
 
static bool defaultSuperPointRpautratNMS ()
 Default value of parameter SuperPointRpautrat/NMS : true .
 
static std::string typeSuperPointRpautratNMS ()
 Type of parameter SuperPointRpautrat/NMS , as a string: bool .
 
static std::string kSuperPointRpautratNMSRadius ()
 Key of parameter SuperPointRpautrat/NMSRadius : uFormat("[%s=true] Minimum distance (pixels) between keypoints.", kSuperPointRpautratNMS().c_str()) Default value: 4 ( int ).
 
static int defaultSuperPointRpautratNMSRadius ()
 Default value of parameter SuperPointRpautrat/NMSRadius : 4 .
 
static std::string typeSuperPointRpautratNMSRadius ()
 Type of parameter SuperPointRpautrat/NMSRadius , as a string: int .
 
static std::string kSuperPointRpautratCuda ()
 Key of parameter SuperPointRpautrat/Cuda : "Use Cuda device for Torch, otherwise CPU device is used by default." Default value: true ( bool ).
 
static bool defaultSuperPointRpautratCuda ()
 Default value of parameter SuperPointRpautrat/Cuda : true .
 
static std::string typeSuperPointRpautratCuda ()
 Type of parameter SuperPointRpautrat/Cuda , as a string: bool .
 
static std::string kPyDetectorPath ()
 Key of parameter PyDetector/Path : "Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied." Default value: "" (string).
 
static std::string defaultPyDetectorPath ()
 Default value of parameter PyDetector/Path : "" .
 
static std::string typePyDetectorPath ()
 Type of parameter PyDetector/Path , as a string: string.
 
static std::string kPyDetectorCuda ()
 Key of parameter PyDetector/Cuda : "Use cuda." Default value: true ( bool ).
 
static bool defaultPyDetectorCuda ()
 Default value of parameter PyDetector/Cuda : true .
 
static std::string typePyDetectorCuda ()
 Type of parameter PyDetector/Cuda , as a string: bool .
 
static std::string kBayesVirtualPlacePriorThr ()
 Key of parameter Bayes/VirtualPlacePriorThr : "Virtual place prior. Considering that we are at a new place, this is the prior probability to move again to a new place (unvisited location). The prior probability to move to a previously visited location is 1 - VirtualPlacePriorThr (split equally against all previously visited locations)." Default value: 0.9 ( float ).
 
static float defaultBayesVirtualPlacePriorThr ()
 Default value of parameter Bayes/VirtualPlacePriorThr : 0.9 .
 
static std::string typeBayesVirtualPlacePriorThr ()
 Type of parameter Bayes/VirtualPlacePriorThr , as a string: float .
 
static std::string kBayesPredictionLC ()
 Key of parameter Bayes/PredictionLC : "Prediction of loop closures (Gaussian-like, here with sigma=1.6) - Format: {VirtualPlaceProb, LoopClosureProb, NeighborLvl1, NeighborLvl2, ...}. Considering we are at a previously visited location, the first value is the probability to move to a new place (unvisited location), the second value is the probability to stay at the same location, the third value is the probability to move to a neighbor or loop closure at the first depth level, the fourth value is the probability to move to a neighbor or loop closure at the second depth level, etc. If the sum of the values is not 1, the difference is normalized against all remaining visited locations. Normally, the sum of these values should be 1." Default value: "0.1 0.36 0.30 0.16 0.062 0.0151 0.00255 0.000324 2.5e-05 1e-06 4.8e-08 1.2e-09 1.9e-11 2.2e-13 1.7e-15 8.5e-18 2.9e-20 6.9e-23" (string).
 
static std::string defaultBayesPredictionLC ()
 Default value of parameter Bayes/PredictionLC : "0.1 0.36 0.30 0.16 0.062 0.0151 0.00255 0.000324 2.5e-05 1e-06 4.8e-08 1.2e-09 1.9e-11 2.2e-13 1.7e-15 8.5e-18 2.9e-20 6.9e-23" .
 
static std::string typeBayesPredictionLC ()
 Type of parameter Bayes/PredictionLC , as a string: string.
 
static std::string kBayesFullPredictionUpdate ()
 Key of parameter Bayes/FullPredictionUpdate : "Regenerate all the prediction matrix on each iteration (otherwise only removed/added ids are updated)." Default value: false ( bool ).
 
static bool defaultBayesFullPredictionUpdate ()
 Default value of parameter Bayes/FullPredictionUpdate : false .
 
static std::string typeBayesFullPredictionUpdate ()
 Type of parameter Bayes/FullPredictionUpdate , as a string: bool .
 
static std::string kBayesSparsePrediction ()
 Key of parameter Bayes/SparsePrediction : uFormat("Use a sparse representation of the prediction instead of a dense matrix, which significantly reduces memory usage and processing time on large maps. Ignored when the values of %s sum to less than 1, as the prediction is then not sparse.", kBayesPredictionLC().c_str()).c_str() Default value: true ( bool ).
 
static bool defaultBayesSparsePrediction ()
 Default value of parameter Bayes/SparsePrediction : true .
 
static std::string typeBayesSparsePrediction ()
 Type of parameter Bayes/SparsePrediction , as a string: bool .
 
static std::string kVhEpEnabled ()
 Key of parameter VhEp/Enabled : uFormat("Verify visual loop closure hypothesis by computing a fundamental matrix. This is done prior to transformation computation when %s is enabled.", kRGBDEnabled().c_str()) Default value: false ( bool ).
 
static bool defaultVhEpEnabled ()
 Default value of parameter VhEp/Enabled : false .
 
static std::string typeVhEpEnabled ()
 Type of parameter VhEp/Enabled , as a string: bool .
 
static std::string kVhEpMatchCountMin ()
 Key of parameter VhEp/MatchCountMin : "Minimum of matching visual words pairs to accept the loop hypothesis." Default value: 8 ( int ).
 
static int defaultVhEpMatchCountMin ()
 Default value of parameter VhEp/MatchCountMin : 8 .
 
static std::string typeVhEpMatchCountMin ()
 Type of parameter VhEp/MatchCountMin , as a string: int .
 
static std::string kVhEpRansacParam1 ()
 Key of parameter VhEp/RansacParam1 : "Fundamental matrix (see cvFindFundamentalMat()): Max distance (in pixels) from the epipolar line for a point to be inlier." Default value: 3 ( float ).
 
static float defaultVhEpRansacParam1 ()
 Default value of parameter VhEp/RansacParam1 : 3 .
 
static std::string typeVhEpRansacParam1 ()
 Type of parameter VhEp/RansacParam1 , as a string: float .
 
static std::string kVhEpRansacParam2 ()
 Key of parameter VhEp/RansacParam2 : "Fundamental matrix (see cvFindFundamentalMat()): Performance of RANSAC." Default value: 0.99 ( float ).
 
static float defaultVhEpRansacParam2 ()
 Default value of parameter VhEp/RansacParam2 : 0.99 .
 
static std::string typeVhEpRansacParam2 ()
 Type of parameter VhEp/RansacParam2 , as a string: float .
 
static std::string kRGBDEnabled ()
 Key of parameter RGBD/Enabled : "Activate metric SLAM. If set to false, classic RTAB-Map loop closure detection is done using only images and without any metric information." Default value: true ( bool ).
 
static bool defaultRGBDEnabled ()
 Default value of parameter RGBD/Enabled : true .
 
static std::string typeRGBDEnabled ()
 Type of parameter RGBD/Enabled , as a string: bool .
 
static std::string kRGBDLinearUpdate ()
 Key of parameter RGBD/LinearUpdate : uFormat("Minimum linear displacement (m) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both %s and %s should be set to 0.", Parameters::kRGBDLinearUpdate().c_str(), Parameters::kRGBDAngularUpdate().c_str()) Default value: 0.1 ( float ).
 
static float defaultRGBDLinearUpdate ()
 Default value of parameter RGBD/LinearUpdate : 0.1 .
 
static std::string typeRGBDLinearUpdate ()
 Type of parameter RGBD/LinearUpdate , as a string: float .
 
static std::string kRGBDAngularUpdate ()
 Key of parameter RGBD/AngularUpdate : uFormat("Minimum angular displacement (rad) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both %s and %s should be set to 0.", Parameters::kRGBDLinearUpdate().c_str(), Parameters::kRGBDAngularUpdate().c_str()) Default value: 0.1 ( float ).
 
static float defaultRGBDAngularUpdate ()
 Default value of parameter RGBD/AngularUpdate : 0.1 .
 
static std::string typeRGBDAngularUpdate ()
 Type of parameter RGBD/AngularUpdate , as a string: float .
 
static std::string kRGBDLinearSpeedUpdate ()
 Key of parameter RGBD/LinearSpeedUpdate : "Maximum linear speed (m/s) to update the map (0 means not limit)." Default value: 0.0 ( float ).
 
static float defaultRGBDLinearSpeedUpdate ()
 Default value of parameter RGBD/LinearSpeedUpdate : 0.0 .
 
static std::string typeRGBDLinearSpeedUpdate ()
 Type of parameter RGBD/LinearSpeedUpdate , as a string: float .
 
static std::string kRGBDAngularSpeedUpdate ()
 Key of parameter RGBD/AngularSpeedUpdate : "Maximum angular speed (rad/s) to update the map (0 means not limit)." Default value: 0.0 ( float ).
 
static float defaultRGBDAngularSpeedUpdate ()
 Default value of parameter RGBD/AngularSpeedUpdate : 0.0 .
 
static std::string typeRGBDAngularSpeedUpdate ()
 Type of parameter RGBD/AngularSpeedUpdate , as a string: float .
 
static std::string kRGBDAggressiveLoopThr ()
 Key of parameter RGBD/AggressiveLoopThr : uFormat("Loop closure threshold used (overriding %s) when a new mapping session is not yet linked to a map of the highest loop closure hypothesis. In localization mode, this threshold is used when there are no loop closure constraints with any map in the cache (%s). In all cases, the goal is to aggressively loop on a previous map in the database. Only used when %s is enabled. Set 1 to disable.", kRtabmapLoopThr().c_str(), kRGBDMaxOdomCacheSize().c_str(), kRGBDEnabled().c_str()) Default value: 0.05 ( float ).
 
static float defaultRGBDAggressiveLoopThr ()
 Default value of parameter RGBD/AggressiveLoopThr : 0.05 .
 
static std::string typeRGBDAggressiveLoopThr ()
 Type of parameter RGBD/AggressiveLoopThr , as a string: float .
 
static std::string kRGBDNewMapOdomChangeDistance ()
 Key of parameter RGBD/NewMapOdomChangeDistance : "A new map is created if a change of odometry translation greater than X m is detected (0 m = disabled)." Default value: 0 ( float ).
 
static float defaultRGBDNewMapOdomChangeDistance ()
 Default value of parameter RGBD/NewMapOdomChangeDistance : 0 .
 
static std::string typeRGBDNewMapOdomChangeDistance ()
 Type of parameter RGBD/NewMapOdomChangeDistance , as a string: float .
 
static std::string kRGBDOptimizeFromGraphEnd ()
 Key of parameter RGBD/OptimizeFromGraphEnd : "Optimize graph from the newest node. If false, the graph is optimized from the oldest node of the current graph (this adds an overhead computation to detect to oldest node of the current graph, but it can be useful to preserve the map referential from the oldest node). Warning when set to false: when some nodes are transferred, the first referential of the local map may change, resulting in momentary changes in robot/map position (which are annoying in teleoperation)." Default value: false ( bool ).
 
static bool defaultRGBDOptimizeFromGraphEnd ()
 Default value of parameter RGBD/OptimizeFromGraphEnd : false .
 
static std::string typeRGBDOptimizeFromGraphEnd ()
 Type of parameter RGBD/OptimizeFromGraphEnd , as a string: bool .
 
static std::string kRGBDOptimizeMaxError ()
 Key of parameter RGBD/OptimizeMaxError : uFormat("Reject loop closures if optimization error ratio is greater than this value (0=disabled). Ratio is computed as absolute error over standard deviation of each link. This will help to detect when a wrong loop closure is added to the graph. If used with \"%s\", the disabled loop closure links will be removed.", kOptimizerRobust().c_str()) Default value: 3.0 ( float ).
 
static float defaultRGBDOptimizeMaxError ()
 Default value of parameter RGBD/OptimizeMaxError : 3.0 .
 
static std::string typeRGBDOptimizeMaxError ()
 Type of parameter RGBD/OptimizeMaxError , as a string: float .
 
static std::string kRGBDOptimizeMaxErrorRepairRadius ()
 Key of parameter RGBD/OptimizeMaxErrorRepairRadius : uFormat("If two consecutive loop closures are rejected by %s on the same old loop closure link, we will remove that old link, and other old links under that radius if necessary, until optimization is accepted. When optimization is accepted, the old loop closure links are removed from the graph. This feature is useful to reject bad loop closures that were accepted previously. Set to 0 to disable this feature.", kRGBDOptimizeMaxError().c_str()) Default value: 0.0 ( float ).
 
static float defaultRGBDOptimizeMaxErrorRepairRadius ()
 Default value of parameter RGBD/OptimizeMaxErrorRepairRadius : 0.0 .
 
static std::string typeRGBDOptimizeMaxErrorRepairRadius ()
 Type of parameter RGBD/OptimizeMaxErrorRepairRadius , as a string: float .
 
static std::string kRGBDMaxLoopClosureDistance ()
 Key of parameter RGBD/MaxLoopClosureDistance : "Reject loop closures/localizations if the distance from the map is over this distance (0=disabled)." Default value: 0.0 ( float ).
 
static float defaultRGBDMaxLoopClosureDistance ()
 Default value of parameter RGBD/MaxLoopClosureDistance : 0.0 .
 
static std::string typeRGBDMaxLoopClosureDistance ()
 Type of parameter RGBD/MaxLoopClosureDistance , as a string: float .
 
static std::string kRGBDForceOdom3DoF ()
 Key of parameter RGBD/ForceOdom3DoF : uFormat("Force odometry pose to be 3DoF if %s=true.", kRegForce3DoF().c_str()) Default value: true ( bool ).
 
static bool defaultRGBDForceOdom3DoF ()
 Default value of parameter RGBD/ForceOdom3DoF : true .
 
static std::string typeRGBDForceOdom3DoF ()
 Type of parameter RGBD/ForceOdom3DoF , as a string: bool .
 
static std::string kRGBDStartAtOrigin ()
 Key of parameter RGBD/StartAtOrigin : uFormat("If true, rtabmap will assume the robot is starting from origin of the map. If false, rtabmap will assume the robot is restarting from the last saved localization pose from previous session (the place where it shut down previously). Used only in localization mode (%s=false).", kMemIncrementalMemory().c_str()) Default value: false ( bool ).
 
static bool defaultRGBDStartAtOrigin ()
 Default value of parameter RGBD/StartAtOrigin : false .
 
static std::string typeRGBDStartAtOrigin ()
 Type of parameter RGBD/StartAtOrigin , as a string: bool .
 
static std::string kRGBDGoalReachedRadius ()
 Key of parameter RGBD/GoalReachedRadius : "Goal reached radius (m)." Default value: 0.5 ( float ).
 
static float defaultRGBDGoalReachedRadius ()
 Default value of parameter RGBD/GoalReachedRadius : 0.5 .
 
static std::string typeRGBDGoalReachedRadius ()
 Type of parameter RGBD/GoalReachedRadius , as a string: float .
 
static std::string kRGBDPlanStuckIterations ()
 Key of parameter RGBD/PlanStuckIterations : "Mark the current goal node on the path as unreachable if it is not updated after X iterations (0=disabled). If all upcoming nodes on the path are unreachabled, the plan fails." Default value: 0 ( int ).
 
static int defaultRGBDPlanStuckIterations ()
 Default value of parameter RGBD/PlanStuckIterations : 0 .
 
static std::string typeRGBDPlanStuckIterations ()
 Type of parameter RGBD/PlanStuckIterations , as a string: int .
 
static std::string kRGBDPlanLinearVelocity ()
 Key of parameter RGBD/PlanLinearVelocity : "Linear velocity (m/sec) used to compute path weights." Default value: 0 ( float ).
 
static float defaultRGBDPlanLinearVelocity ()
 Default value of parameter RGBD/PlanLinearVelocity : 0 .
 
static std::string typeRGBDPlanLinearVelocity ()
 Type of parameter RGBD/PlanLinearVelocity , as a string: float .
 
static std::string kRGBDPlanAngularVelocity ()
 Key of parameter RGBD/PlanAngularVelocity : "Angular velocity (rad/sec) used to compute path weights." Default value: 0 ( float ).
 
static float defaultRGBDPlanAngularVelocity ()
 Default value of parameter RGBD/PlanAngularVelocity : 0 .
 
static std::string typeRGBDPlanAngularVelocity ()
 Type of parameter RGBD/PlanAngularVelocity , as a string: float .
 
static std::string kRGBDGoalsSavedInUserData ()
 Key of parameter RGBD/GoalsSavedInUserData : "When a goal is received and processed with success, it is saved in user data of the location with this format: \"GOAL:#\"." Default value: false ( bool ).
 
static bool defaultRGBDGoalsSavedInUserData ()
 Default value of parameter RGBD/GoalsSavedInUserData : false .
 
static std::string typeRGBDGoalsSavedInUserData ()
 Type of parameter RGBD/GoalsSavedInUserData , as a string: bool .
 
static std::string kRGBDMaxLocalRetrieved ()
 Key of parameter RGBD/MaxLocalRetrieved : "Maximum local locations retrieved (0=disabled) near the current pose in the local map or on the current planned path (those on the planned path have priority)." Default value: 2 ( unsigned int ).
 
static unsigned int defaultRGBDMaxLocalRetrieved ()
 Default value of parameter RGBD/MaxLocalRetrieved : 2 .
 
static std::string typeRGBDMaxLocalRetrieved ()
 Type of parameter RGBD/MaxLocalRetrieved , as a string: unsigned int .
 
static std::string kRGBDLocalRadius ()
 Key of parameter RGBD/LocalRadius : "Local radius (m) for nodes selection in the local map. This parameter is used in some approaches about the local map management." Default value: 10 ( float ).
 
static float defaultRGBDLocalRadius ()
 Default value of parameter RGBD/LocalRadius : 10 .
 
static std::string typeRGBDLocalRadius ()
 Type of parameter RGBD/LocalRadius , as a string: float .
 
static std::string kRGBDLocalImmunizationRatio ()
 Key of parameter RGBD/LocalImmunizationRatio : "Ratio of working memory for which local nodes are immunized from transfer." Default value: 0.25 ( float ).
 
static float defaultRGBDLocalImmunizationRatio ()
 Default value of parameter RGBD/LocalImmunizationRatio : 0.25 .
 
static std::string typeRGBDLocalImmunizationRatio ()
 Type of parameter RGBD/LocalImmunizationRatio , as a string: float .
 
static std::string kRGBDScanMatchingIdsSavedInLinks ()
 Key of parameter RGBD/ScanMatchingIdsSavedInLinks : "Save scan matching IDs from one-to-many proximity detection in link's user data." Default value: true ( bool ).
 
static bool defaultRGBDScanMatchingIdsSavedInLinks ()
 Default value of parameter RGBD/ScanMatchingIdsSavedInLinks : true .
 
static std::string typeRGBDScanMatchingIdsSavedInLinks ()
 Type of parameter RGBD/ScanMatchingIdsSavedInLinks , as a string: bool .
 
static std::string kRGBDNeighborLinkRefining ()
 Key of parameter RGBD/NeighborLinkRefining : uFormat("When a new node is added to the graph, the transformation of its neighbor link to the previous node is refined using registration approach selected (%s).", kRegStrategy().c_str()) Default value: false ( bool ).
 
static bool defaultRGBDNeighborLinkRefining ()
 Default value of parameter RGBD/NeighborLinkRefining : false .
 
static std::string typeRGBDNeighborLinkRefining ()
 Type of parameter RGBD/NeighborLinkRefining , as a string: bool .
 
static std::string kRGBDLoopClosureIdentityGuess ()
 Key of parameter RGBD/LoopClosureIdentityGuess : uFormat("Use Identity matrix as guess when computing loop closure transform, otherwise no guess is used, thus assuming that registration strategy selected (%s) can deal with transformation estimation without guess.", kRegStrategy().c_str()) Default value: false ( bool ).
 
static bool defaultRGBDLoopClosureIdentityGuess ()
 Default value of parameter RGBD/LoopClosureIdentityGuess : false .
 
static std::string typeRGBDLoopClosureIdentityGuess ()
 Type of parameter RGBD/LoopClosureIdentityGuess , as a string: bool .
 
static std::string kRGBDLoopClosureReextractFeatures ()
 Key of parameter RGBD/LoopClosureReextractFeatures : "Extract features even if there are some already in the nodes. Raw features are not saved in database." Default value: false ( bool ).
 
static bool defaultRGBDLoopClosureReextractFeatures ()
 Default value of parameter RGBD/LoopClosureReextractFeatures : false .
 
static std::string typeRGBDLoopClosureReextractFeatures ()
 Type of parameter RGBD/LoopClosureReextractFeatures , as a string: bool .
 
static std::string kRGBDLocalBundleOnLoopClosure ()
 Key of parameter RGBD/LocalBundleOnLoopClosure : "Do local bundle adjustment with neighborhood of the loop closure." Default value: false ( bool ).
 
static bool defaultRGBDLocalBundleOnLoopClosure ()
 Default value of parameter RGBD/LocalBundleOnLoopClosure : false .
 
static std::string typeRGBDLocalBundleOnLoopClosure ()
 Type of parameter RGBD/LocalBundleOnLoopClosure , as a string: bool .
 
static std::string kRGBDInvertedReg ()
 Key of parameter RGBD/InvertedReg : "On loop closure, do registration from the target to reference instead of reference to target." Default value: false ( bool ).
 
static bool defaultRGBDInvertedReg ()
 Default value of parameter RGBD/InvertedReg : false .
 
static std::string typeRGBDInvertedReg ()
 Type of parameter RGBD/InvertedReg , as a string: bool .
 
static std::string kRGBDCreateOccupancyGrid ()
 Key of parameter RGBD/CreateOccupancyGrid : "Create local occupancy grid maps. See \"Grid\" group for parameters." Default value: false ( bool ).
 
static bool defaultRGBDCreateOccupancyGrid ()
 Default value of parameter RGBD/CreateOccupancyGrid : false .
 
static std::string typeRGBDCreateOccupancyGrid ()
 Type of parameter RGBD/CreateOccupancyGrid , as a string: bool .
 
static std::string kRGBDMarkerDetection ()
 Key of parameter RGBD/MarkerDetection : "Detect static markers to be added as landmarks for graph optimization. If input data have already landmarks, this will be ignored. See \"Marker\" group for parameters." Default value: false ( bool ).
 
static bool defaultRGBDMarkerDetection ()
 Default value of parameter RGBD/MarkerDetection : false .
 
static std::string typeRGBDMarkerDetection ()
 Type of parameter RGBD/MarkerDetection , as a string: bool .
 
static std::string kRGBDLoopCovLimited ()
 Key of parameter RGBD/LoopCovLimited : "Limit covariance of non-neighbor links to minimum covariance of neighbor links. In other words, if covariance of a loop closure link is smaller than the minimum covariance of odometry links, its covariance is set to minimum covariance of odometry links." Default value: false ( bool ).
 
static bool defaultRGBDLoopCovLimited ()
 Default value of parameter RGBD/LoopCovLimited : false .
 
static std::string typeRGBDLoopCovLimited ()
 Type of parameter RGBD/LoopCovLimited , as a string: bool .
 
static std::string kRGBDMaxOdomCacheSize ()
 Key of parameter RGBD/MaxOdomCacheSize : uFormat("Maximum odometry cache size. Used only in localization mode (when %s=false). This is used to get smoother localizations and to verify localization transforms (when %s!=0) to make sure we don't teleport to a location very similar to one we previously localized on. Set 0 to disable caching.", kMemIncrementalMemory().c_str(), kRGBDOptimizeMaxError().c_str()) Default value: 10 ( int ).
 
static int defaultRGBDMaxOdomCacheSize ()
 Default value of parameter RGBD/MaxOdomCacheSize : 10 .
 
static std::string typeRGBDMaxOdomCacheSize ()
 Type of parameter RGBD/MaxOdomCacheSize , as a string: int .
 
static std::string kRGBDLocalizationSmoothing ()
 Key of parameter RGBD/LocalizationSmoothing : uFormat("Adjust localization constraints based on optimized odometry cache poses (when %s>0).", kRGBDMaxOdomCacheSize().c_str()) Default value: true ( bool ).
 
static bool defaultRGBDLocalizationSmoothing ()
 Default value of parameter RGBD/LocalizationSmoothing : true .
 
static std::string typeRGBDLocalizationSmoothing ()
 Type of parameter RGBD/LocalizationSmoothing , as a string: bool .
 
static std::string kRGBDLocalizationPriorError ()
 Key of parameter RGBD/LocalizationPriorError : uFormat("The corresponding variance (error x error) set to priors of the map's poses during localization (when %s>0).", kRGBDMaxOdomCacheSize().c_str()) Default value: 0.001 ( double ).
 
static double defaultRGBDLocalizationPriorError ()
 Default value of parameter RGBD/LocalizationPriorError : 0.001 .
 
static std::string typeRGBDLocalizationPriorError ()
 Type of parameter RGBD/LocalizationPriorError , as a string: double .
 
static std::string kRGBDLocalizationSecondTryWithoutProximityLinks ()
 Key of parameter RGBD/LocalizationSecondTryWithoutProximityLinks : uFormat("When localization is rejected by graph optimization validation, try a second time without proximity links if landmark or loop closure links are also present in odometry cache (see %s). If it succeeds, the proximity links are removed. This assumes that global loop closure and landmark links are more accurate than proximity links.", kRGBDMaxOdomCacheSize().c_str()) Default value: true ( bool ).
 
static bool defaultRGBDLocalizationSecondTryWithoutProximityLinks ()
 Default value of parameter RGBD/LocalizationSecondTryWithoutProximityLinks : true .
 
static std::string typeRGBDLocalizationSecondTryWithoutProximityLinks ()
 Type of parameter RGBD/LocalizationSecondTryWithoutProximityLinks , as a string: bool .
 
static std::string kRGBDProximityByTime ()
 Key of parameter RGBD/ProximityByTime : "Detection over all locations in STM." Default value: false ( bool ).
 
static bool defaultRGBDProximityByTime ()
 Default value of parameter RGBD/ProximityByTime : false .
 
static std::string typeRGBDProximityByTime ()
 Type of parameter RGBD/ProximityByTime , as a string: bool .
 
static std::string kRGBDProximityBySpace ()
 Key of parameter RGBD/ProximityBySpace : "Detection over locations (in Working Memory) near in space." Default value: true ( bool ).
 
static bool defaultRGBDProximityBySpace ()
 Default value of parameter RGBD/ProximityBySpace : true .
 
static std::string typeRGBDProximityBySpace ()
 Type of parameter RGBD/ProximityBySpace , as a string: bool .
 
static std::string kRGBDProximityMaxGraphDepth ()
 Key of parameter RGBD/ProximityMaxGraphDepth : "Maximum depth from the current/last loop closure location and the local loop closure hypotheses. Set 0 to ignore." Default value: 50 ( int ).
 
static int defaultRGBDProximityMaxGraphDepth ()
 Default value of parameter RGBD/ProximityMaxGraphDepth : 50 .
 
static std::string typeRGBDProximityMaxGraphDepth ()
 Type of parameter RGBD/ProximityMaxGraphDepth , as a string: int .
 
static std::string kRGBDProximityMaxPaths ()
 Key of parameter RGBD/ProximityMaxPaths : "Maximum paths compared (from the most recent) for proximity detection. 0 means no limit." Default value: 3 ( int ).
 
static int defaultRGBDProximityMaxPaths ()
 Default value of parameter RGBD/ProximityMaxPaths : 3 .
 
static std::string typeRGBDProximityMaxPaths ()
 Type of parameter RGBD/ProximityMaxPaths , as a string: int .
 
static std::string kRGBDProximityPathFilteringRadius ()
 Key of parameter RGBD/ProximityPathFilteringRadius : "Path filtering radius to reduce the number of nodes to compare in a path in one-to-many proximity detection. The nearest node in a path should be inside that radius to be considered for one-to-one proximity detection." Default value: 1 ( float ).
 
static float defaultRGBDProximityPathFilteringRadius ()
 Default value of parameter RGBD/ProximityPathFilteringRadius : 1 .
 
static std::string typeRGBDProximityPathFilteringRadius ()
 Type of parameter RGBD/ProximityPathFilteringRadius , as a string: float .
 
static std::string kRGBDProximityPathMaxNeighbors ()
 Key of parameter RGBD/ProximityPathMaxNeighbors : "Maximum neighbor nodes compared on each path for one-to-many proximity detection. Set to 0 to disable one-to-many proximity detection (by merging the laser scans)." Default value: 0 ( int ).
 
static int defaultRGBDProximityPathMaxNeighbors ()
 Default value of parameter RGBD/ProximityPathMaxNeighbors : 0 .
 
static std::string typeRGBDProximityPathMaxNeighbors ()
 Type of parameter RGBD/ProximityPathMaxNeighbors , as a string: int .
 
static std::string kRGBDProximityPathRawPosesUsed ()
 Key of parameter RGBD/ProximityPathRawPosesUsed : "When comparing to a local path for one-to-many proximity detection, merge the scans using the odometry poses (with neighbor link optimizations) instead of the ones in the optimized local graph." Default value: true ( bool ).
 
static bool defaultRGBDProximityPathRawPosesUsed ()
 Default value of parameter RGBD/ProximityPathRawPosesUsed : true .
 
static std::string typeRGBDProximityPathRawPosesUsed ()
 Type of parameter RGBD/ProximityPathRawPosesUsed , as a string: bool .
 
static std::string kRGBDProximityAngle ()
 Key of parameter RGBD/ProximityAngle : "Maximum angle (degrees) for one-to-one proximity detection." Default value: 45 ( float ).
 
static float defaultRGBDProximityAngle ()
 Default value of parameter RGBD/ProximityAngle : 45 .
 
static std::string typeRGBDProximityAngle ()
 Type of parameter RGBD/ProximityAngle , as a string: float .
 
static std::string kRGBDProximityOdomGuess ()
 Key of parameter RGBD/ProximityOdomGuess : "Use odometry as motion guess for one-to-one proximity detection." Default value: false ( bool ).
 
static bool defaultRGBDProximityOdomGuess ()
 Default value of parameter RGBD/ProximityOdomGuess : false .
 
static std::string typeRGBDProximityOdomGuess ()
 Type of parameter RGBD/ProximityOdomGuess , as a string: bool .
 
static std::string kRGBDProximityGlobalScanMap ()
 Key of parameter RGBD/ProximityGlobalScanMap : uFormat("Create a global assembled map from laser scans for one-to-many proximity detection, replacing the original one-to-many proximity detection (i.e., detection against local paths). Only used in localization mode (%s=false), otherwise original one-to-many proximity detection is done. Note also that if graph is modified (i.e., memory management is enabled or robot jumps from one disjoint session to another in same database), the global scan map is cleared and one-to-many proximity detection is reverted to original approach.", kMemIncrementalMemory().c_str()) Default value: false ( bool ).
 
static bool defaultRGBDProximityGlobalScanMap ()
 Default value of parameter RGBD/ProximityGlobalScanMap : false .
 
static std::string typeRGBDProximityGlobalScanMap ()
 Type of parameter RGBD/ProximityGlobalScanMap , as a string: bool .
 
static std::string kRGBDProximityMergedScanCovFactor ()
 Key of parameter RGBD/ProximityMergedScanCovFactor : uFormat("Covariance factor for one-to-many proximity detection (when %s>0 and scans are used).", kRGBDProximityPathMaxNeighbors().c_str()) Default value: 100.0 ( double ).
 
static double defaultRGBDProximityMergedScanCovFactor ()
 Default value of parameter RGBD/ProximityMergedScanCovFactor : 100.0 .
 
static std::string typeRGBDProximityMergedScanCovFactor ()
 Type of parameter RGBD/ProximityMergedScanCovFactor , as a string: double .
 
static std::string kOptimizerStrategy ()
 Key of parameter Optimizer/Strategy : "Graph optimization strategy: 0=TORO, 1=g2o, 2=GTSAM and 3=Ceres." Default value: 0 ( int ).
 
static int defaultOptimizerStrategy ()
 Default value of parameter Optimizer/Strategy : 0 .
 
static std::string typeOptimizerStrategy ()
 Type of parameter Optimizer/Strategy , as a string: int .
 
static std::string kOptimizerIterations ()
 Key of parameter Optimizer/Iterations : "Optimization iterations." Default value: 100 ( int ).
 
static int defaultOptimizerIterations ()
 Default value of parameter Optimizer/Iterations : 100 .
 
static std::string typeOptimizerIterations ()
 Type of parameter Optimizer/Iterations , as a string: int .
 
static std::string kOptimizerEpsilon ()
 Key of parameter Optimizer/Epsilon : "Stop optimizing when the error improvement is less than this value." Default value: 0.00001 ( double ).
 
static double defaultOptimizerEpsilon ()
 Default value of parameter Optimizer/Epsilon : 0.00001 .
 
static std::string typeOptimizerEpsilon ()
 Type of parameter Optimizer/Epsilon , as a string: double .
 
static std::string kOptimizerVarianceIgnored ()
 Key of parameter Optimizer/VarianceIgnored : "Ignore constraints' variance. If checked, identity information matrix is used for each constraint. Otherwise, an information matrix is generated from the variance saved in the links." Default value: false ( bool ).
 
static bool defaultOptimizerVarianceIgnored ()
 Default value of parameter Optimizer/VarianceIgnored : false .
 
static std::string typeOptimizerVarianceIgnored ()
 Type of parameter Optimizer/VarianceIgnored , as a string: bool .
 
static std::string kOptimizerRobust ()
 Key of parameter Optimizer/Robust : "Robust graph optimization using Vertigo (only work for g2o and GTSAM optimization strategies)." Default value: false ( bool ).
 
static bool defaultOptimizerRobust ()
 Default value of parameter Optimizer/Robust : false .
 
static std::string typeOptimizerRobust ()
 Type of parameter Optimizer/Robust , as a string: bool .
 
static std::string kOptimizerPriorsIgnored ()
 Key of parameter Optimizer/PriorsIgnored : "Ignore prior constraints (global pose or GPS) while optimizing. Currently only g2o and gtsam optimization supports this." Default value: true ( bool ).
 
static bool defaultOptimizerPriorsIgnored ()
 Default value of parameter Optimizer/PriorsIgnored : true .
 
static std::string typeOptimizerPriorsIgnored ()
 Type of parameter Optimizer/PriorsIgnored , as a string: bool .
 
static std::string kOptimizerLandmarksIgnored ()
 Key of parameter Optimizer/LandmarksIgnored : "Ignore landmark constraints while optimizing. Currently only g2o and gtsam optimization supports this." Default value: false ( bool ).
 
static bool defaultOptimizerLandmarksIgnored ()
 Default value of parameter Optimizer/LandmarksIgnored : false .
 
static std::string typeOptimizerLandmarksIgnored ()
 Type of parameter Optimizer/LandmarksIgnored , as a string: bool .
 
static std::string kOptimizerGravitySigma ()
 Key of parameter Optimizer/GravitySigma : uFormat("Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see %s).", kOptimizerStrategy().c_str()) Default value: 0.0 ( float ).
 
static float defaultOptimizerGravitySigma ()
 Default value of parameter Optimizer/GravitySigma : 0.0 .
 
static std::string typeOptimizerGravitySigma ()
 Type of parameter Optimizer/GravitySigma , as a string: float .
 
static std::string kg2oSolver ()
 Key of parameter g2o/Solver : "0=csparse 1=pcg 2=cholmod 3=Eigen" Default value: 0 ( int ).
 
static int defaultg2oSolver ()
 Default value of parameter g2o/Solver : 0 .
 
static std::string typeg2oSolver ()
 Type of parameter g2o/Solver , as a string: int .
 
static std::string kg2oOptimizer ()
 Key of parameter g2o/Optimizer : "0=Levenberg 1=GaussNewton" Default value: 0 ( int ).
 
static int defaultg2oOptimizer ()
 Default value of parameter g2o/Optimizer : 0 .
 
static std::string typeg2oOptimizer ()
 Type of parameter g2o/Optimizer , as a string: int .
 
static std::string kOptimizerBaseline ()
 Key of parameter Optimizer/Baseline : "When doing bundle adjustment with RGB-D data (mono camera + depth), set a fake baseline (m) so the BA backend treats depth as stereo disparity. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Set to 0 to keep the problem mono (depth observations are ignored). For real stereo data the baseline in the calibration (Tx) is used directly." Default value: 0.075 ( double ).
 
static double defaultOptimizerBaseline ()
 Default value of parameter Optimizer/Baseline : 0.075 .
 
static std::string typeOptimizerBaseline ()
 Type of parameter Optimizer/Baseline , as a string: double .
 
static std::string kOptimizerPixelVariance ()
 Key of parameter Optimizer/PixelVariance : "Pixel variance used on the u/v axes of every bundle adjustment reprojection edge. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Should approximate the squared 1-sigma keypoint localization error in pixels. Set higher (e.g. 4-9) if features are noisy (low texture, motion blur, low light, or large detector scale). Set lower (e.g. 0.01-0.1) if features are sub-pixel refined (Lucas-Kanade tracking, parabolic peak interpolation). Intuition: the lower the pixel variance, the more the optimizer trusts the keypoint positions." Default value: 1.0 ( double ).
 
static double defaultOptimizerPixelVariance ()
 Default value of parameter Optimizer/PixelVariance : 1.0 .
 
static std::string typeOptimizerPixelVariance ()
 Type of parameter Optimizer/PixelVariance , as a string: double .
 
static std::string kOptimizerDisparityVariance ()
 Key of parameter Optimizer/DisparityVariance : "Disparity variance used on the disparity axis (u - u_right) of stereo / RGB-D bundle adjustment edges. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Defaults to the same value as PixelVariance for backward compatibility. Set higher (e.g. 2-4) if your depth source is noisier than your feature detector's u/v precision (typical for stereo block matchers / SGM at long range). Set lower (e.g. 0.01-0.1) if your depth source is more accurate than the u/v detector (typical for ToF / LiDAR-fused depth where range is measured directly rather than triangulated). Intuition: the lower the disparity variance, the more the optimizer trusts the depth measurements. Geometric note: wider baseline and/or higher image resolution improve a block matcher's effective disparity precision (larger disparity magnitudes and finer sub-pixel refinement), so wide-baseline high-resolution stereo pairs can usually afford a lower disparity variance (e.g. 0.1-0.5); narrow-baseline low-resolution pairs should keep it higher (e.g. 1-4)." Default value: 1.0 ( double ).
 
static double defaultOptimizerDisparityVariance ()
 Default value of parameter Optimizer/DisparityVariance : 1.0 .
 
static std::string typeOptimizerDisparityVariance ()
 Type of parameter Optimizer/DisparityVariance , as a string: double .
 
static std::string kOptimizerRobustKernelDelta ()
 Key of parameter Optimizer/RobustKernelDelta : "Robust kernel delta used for bundle adjustment (0 means don't use robust kernel). Applies to all BA-capable backends (g2o, GTSAM, Ceres). Observations with chi2 over this threshold will be ignored in the second optimization pass." Default value: 8 ( double ).
 
static double defaultOptimizerRobustKernelDelta ()
 Default value of parameter Optimizer/RobustKernelDelta : 8 .
 
static std::string typeOptimizerRobustKernelDelta ()
 Type of parameter Optimizer/RobustKernelDelta , as a string: double .
 
static std::string kGTSAMOptimizer ()
 Key of parameter GTSAM/Optimizer : "0=Levenberg 1=GaussNewton 2=Dogleg" Default value: 1 ( int ).
 
static int defaultGTSAMOptimizer ()
 Default value of parameter GTSAM/Optimizer : 1 .
 
static std::string typeGTSAMOptimizer ()
 Type of parameter GTSAM/Optimizer , as a string: int .
 
static std::string kGTSAMIncremental ()
 Key of parameter GTSAM/Incremental : uFormat("Do graph optimization incrementally (iSAM2) to increase optimization speed on loop closures. Note that only GaussNewton and Dogleg optimization algorithms are supported (%s) in this mode.", kGTSAMOptimizer().c_str()) Default value: false ( bool ).
 
static bool defaultGTSAMIncremental ()
 Default value of parameter GTSAM/Incremental : false .
 
static std::string typeGTSAMIncremental ()
 Type of parameter GTSAM/Incremental , as a string: bool .
 
static std::string kGTSAMIncRelinearizeThreshold ()
 Key of parameter GTSAM/IncRelinearizeThreshold : "Only relinearize variables whose linear delta magnitude is greater than this threshold. See GTSAM::ISAM2 doc for more info." Default value: 0.01 ( double ).
 
static double defaultGTSAMIncRelinearizeThreshold ()
 Default value of parameter GTSAM/IncRelinearizeThreshold : 0.01 .
 
static std::string typeGTSAMIncRelinearizeThreshold ()
 Type of parameter GTSAM/IncRelinearizeThreshold , as a string: double .
 
static std::string kGTSAMIncRelinearizeSkip ()
 Key of parameter GTSAM/IncRelinearizeSkip : "Only relinearize any variables every X calls to ISAM2::update(). See GTSAM::ISAM2 doc for more info." Default value: 1 ( int ).
 
static int defaultGTSAMIncRelinearizeSkip ()
 Default value of parameter GTSAM/IncRelinearizeSkip : 1 .
 
static std::string typeGTSAMIncRelinearizeSkip ()
 Type of parameter GTSAM/IncRelinearizeSkip , as a string: int .
 
static std::string kOdomStrategy ()
 Key of parameter Odom/Strategy : "0=Frame-to-Map (F2M) 1=Frame-to-Frame (F2F) 2=Fovis 3=viso2 4=DVO-SLAM 5=ORB_SLAM 6=OKVIS 7=LOAM 8=MSCKF_VIO 9=VINS-Fusion 10=OpenVINS 11=FLOAM 12=Open3D 13=cuVSLAM 14=LIO-SAM" Default value: 0 ( int ).
 
static int defaultOdomStrategy ()
 Default value of parameter Odom/Strategy : 0 .
 
static std::string typeOdomStrategy ()
 Type of parameter Odom/Strategy , as a string: int .
 
static std::string kOdomResetCountdown ()
 Key of parameter Odom/ResetCountdown : "Automatically reset odometry after X consecutive images where odometry cannot be computed (a value of 0 disables auto-reset). When a reset occurs, odometry resumes from the last successfully computed pose with large covariance to trigger a new map. If external odometry is used, it will also be reset based on the motion estimated relative to the last computed pose but no large covariance will be received, so that a new map won't be triggered." Default value: 0 ( int ).
 
static int defaultOdomResetCountdown ()
 Default value of parameter Odom/ResetCountdown : 0 .
 
static std::string typeOdomResetCountdown ()
 Type of parameter Odom/ResetCountdown , as a string: int .
 
static std::string kOdomHolonomic ()
 Key of parameter Odom/Holonomic : "If the robot is holonomic (strafing commands can be issued). If not, y value will be estimated from x and yaw values (y=x*tan(yaw))." Default value: true ( bool ).
 
static bool defaultOdomHolonomic ()
 Default value of parameter Odom/Holonomic : true .
 
static std::string typeOdomHolonomic ()
 Type of parameter Odom/Holonomic , as a string: bool .
 
static std::string kOdomFillInfoData ()
 Key of parameter Odom/FillInfoData : "Fill info with data (inliers/outliers features)." Default value: true ( bool ).
 
static bool defaultOdomFillInfoData ()
 Default value of parameter Odom/FillInfoData : true .
 
static std::string typeOdomFillInfoData ()
 Type of parameter Odom/FillInfoData , as a string: bool .
 
static std::string kOdomImageBufferSize ()
 Key of parameter Odom/ImageBufferSize : "Data buffer size (0 min inf)." Default value: 1 ( unsigned int ).
 
static unsigned int defaultOdomImageBufferSize ()
 Default value of parameter Odom/ImageBufferSize : 1 .
 
static std::string typeOdomImageBufferSize ()
 Type of parameter Odom/ImageBufferSize , as a string: unsigned int .
 
static std::string kOdomFilteringStrategy ()
 Key of parameter Odom/FilteringStrategy : "0=No filtering 1=Kalman filtering 2=Particle filtering. This filter is used to smooth the odometry output." Default value: 0 ( int ).
 
static int defaultOdomFilteringStrategy ()
 Default value of parameter Odom/FilteringStrategy : 0 .
 
static std::string typeOdomFilteringStrategy ()
 Type of parameter Odom/FilteringStrategy , as a string: int .
 
static std::string kOdomParticleSize ()
 Key of parameter Odom/ParticleSize : "Number of particles of the filter." Default value: 400 ( unsigned int ).
 
static unsigned int defaultOdomParticleSize ()
 Default value of parameter Odom/ParticleSize : 400 .
 
static std::string typeOdomParticleSize ()
 Type of parameter Odom/ParticleSize , as a string: unsigned int .
 
static std::string kOdomParticleNoiseT ()
 Key of parameter Odom/ParticleNoiseT : "Noise (m) of translation components (x,y,z)." Default value: 0.002 ( float ).
 
static float defaultOdomParticleNoiseT ()
 Default value of parameter Odom/ParticleNoiseT : 0.002 .
 
static std::string typeOdomParticleNoiseT ()
 Type of parameter Odom/ParticleNoiseT , as a string: float .
 
static std::string kOdomParticleLambdaT ()
 Key of parameter Odom/ParticleLambdaT : "Lambda of translation components (x,y,z)." Default value: 100 ( float ).
 
static float defaultOdomParticleLambdaT ()
 Default value of parameter Odom/ParticleLambdaT : 100 .
 
static std::string typeOdomParticleLambdaT ()
 Type of parameter Odom/ParticleLambdaT , as a string: float .
 
static std::string kOdomParticleNoiseR ()
 Key of parameter Odom/ParticleNoiseR : "Noise (rad) of rotational components (roll,pitch,yaw)." Default value: 0.002 ( float ).
 
static float defaultOdomParticleNoiseR ()
 Default value of parameter Odom/ParticleNoiseR : 0.002 .
 
static std::string typeOdomParticleNoiseR ()
 Type of parameter Odom/ParticleNoiseR , as a string: float .
 
static std::string kOdomParticleLambdaR ()
 Key of parameter Odom/ParticleLambdaR : "Lambda of rotational components (roll,pitch,yaw)." Default value: 100 ( float ).
 
static float defaultOdomParticleLambdaR ()
 Default value of parameter Odom/ParticleLambdaR : 100 .
 
static std::string typeOdomParticleLambdaR ()
 Type of parameter Odom/ParticleLambdaR , as a string: float .
 
static std::string kOdomKalmanProcessNoise ()
 Key of parameter Odom/KalmanProcessNoise : "Process noise covariance value." Default value: 0.001 ( float ).
 
static float defaultOdomKalmanProcessNoise ()
 Default value of parameter Odom/KalmanProcessNoise : 0.001 .
 
static std::string typeOdomKalmanProcessNoise ()
 Type of parameter Odom/KalmanProcessNoise , as a string: float .
 
static std::string kOdomKalmanMeasurementNoise ()
 Key of parameter Odom/KalmanMeasurementNoise : "Process measurement covariance value." Default value: 0.01 ( float ).
 
static float defaultOdomKalmanMeasurementNoise ()
 Default value of parameter Odom/KalmanMeasurementNoise : 0.01 .
 
static std::string typeOdomKalmanMeasurementNoise ()
 Type of parameter Odom/KalmanMeasurementNoise , as a string: float .
 
static std::string kOdomGuessMotion ()
 Key of parameter Odom/GuessMotion : "Guess next transformation from the last motion computed." Default value: true ( bool ).
 
static bool defaultOdomGuessMotion ()
 Default value of parameter Odom/GuessMotion : true .
 
static std::string typeOdomGuessMotion ()
 Type of parameter Odom/GuessMotion , as a string: bool .
 
static std::string kOdomGuessSmoothingDelay ()
 Key of parameter Odom/GuessSmoothingDelay : uFormat("Guess smoothing delay (s). Estimated velocity is averaged based on last transforms up to this maximum delay. This can help to get smoother velocity prediction. Last velocity computed is used directly if \"%s\" is set or the delay is below the odometry rate.", kOdomFilteringStrategy().c_str()) Default value: 0 ( float ).
 
static float defaultOdomGuessSmoothingDelay ()
 Default value of parameter Odom/GuessSmoothingDelay : 0 .
 
static std::string typeOdomGuessSmoothingDelay ()
 Type of parameter Odom/GuessSmoothingDelay , as a string: float .
 
static std::string kOdomKeyFrameThr ()
 Key of parameter Odom/KeyFrameThr : "[Visual] Create a new keyframe when the number of inliers drops under this ratio of features in last frame. Setting the value to 0 means that a keyframe is created for each processed frame." Default value: 0.3 ( float ).
 
static float defaultOdomKeyFrameThr ()
 Default value of parameter Odom/KeyFrameThr : 0.3 .
 
static std::string typeOdomKeyFrameThr ()
 Type of parameter Odom/KeyFrameThr , as a string: float .
 
static std::string kOdomVisKeyFrameThr ()
 Key of parameter Odom/VisKeyFrameThr : "[Visual] Create a new keyframe when the number of inliers drops under this threshold. Setting the value to 0 means that a keyframe is created for each processed frame." Default value: 150 ( int ).
 
static int defaultOdomVisKeyFrameThr ()
 Default value of parameter Odom/VisKeyFrameThr : 150 .
 
static std::string typeOdomVisKeyFrameThr ()
 Type of parameter Odom/VisKeyFrameThr , as a string: int .
 
static std::string kOdomScanKeyFrameThr ()
 Key of parameter Odom/ScanKeyFrameThr : "[Geometry] Create a new keyframe when the number of ICP inliers drops under this ratio of points in last frame's scan. Setting the value to 0 means that a keyframe is created for each processed frame." Default value: 0.9 ( float ).
 
static float defaultOdomScanKeyFrameThr ()
 Default value of parameter Odom/ScanKeyFrameThr : 0.9 .
 
static std::string typeOdomScanKeyFrameThr ()
 Type of parameter Odom/ScanKeyFrameThr , as a string: float .
 
static std::string kOdomImageDecimation ()
 Key of parameter Odom/ImageDecimation : uFormat("Decimation of the RGB image before registration. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If %s is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.", kVisDepthAsMask().c_str()) Default value: 1 ( unsigned int ).
 
static unsigned int defaultOdomImageDecimation ()
 Default value of parameter Odom/ImageDecimation : 1 .
 
static std::string typeOdomImageDecimation ()
 Type of parameter Odom/ImageDecimation , as a string: unsigned int .
 
static std::string kOdomAlignWithGround ()
 Key of parameter Odom/AlignWithGround : "Align odometry with the ground on initialization." Default value: false ( bool ).
 
static bool defaultOdomAlignWithGround ()
 Default value of parameter Odom/AlignWithGround : false .
 
static std::string typeOdomAlignWithGround ()
 Type of parameter Odom/AlignWithGround , as a string: bool .
 
static std::string kOdomDeskewing ()
 Key of parameter Odom/Deskewing : "Lidar deskewing. If input lidar has time channel, it will be deskewed with a constant motion model (with IMU orientation and/or guess if provided)." Default value: true ( bool ).
 
static bool defaultOdomDeskewing ()
 Default value of parameter Odom/Deskewing : true .
 
static std::string typeOdomDeskewing ()
 Type of parameter Odom/Deskewing , as a string: bool .
 
static std::string kOdomF2MMaxSize ()
 Key of parameter OdomF2M/MaxSize : "[Visual] Local map size: If > 0 (example 5000), the odometry will maintain a local map of X maximum words." Default value: 2000 ( int ).
 
static int defaultOdomF2MMaxSize ()
 Default value of parameter OdomF2M/MaxSize : 2000 .
 
static std::string typeOdomF2MMaxSize ()
 Type of parameter OdomF2M/MaxSize , as a string: int .
 
static std::string kOdomF2MMaxNewFeatures ()
 Key of parameter OdomF2M/MaxNewFeatures : "[Visual] Maximum features (sorted by keypoint response) added to local map from a new key-frame. 0 means no limit." Default value: 0 ( int ).
 
static int defaultOdomF2MMaxNewFeatures ()
 Default value of parameter OdomF2M/MaxNewFeatures : 0 .
 
static std::string typeOdomF2MMaxNewFeatures ()
 Type of parameter OdomF2M/MaxNewFeatures , as a string: int .
 
static std::string kOdomF2MInitDepthFactor ()
 Key of parameter OdomF2M/InitDepthFactor : "[Visual] Depth factor used to initialize depth of features without depth. Depth = Factor * fx." Default value: 0.05 ( float ).
 
static float defaultOdomF2MInitDepthFactor ()
 Default value of parameter OdomF2M/InitDepthFactor : 0.05 .
 
static std::string typeOdomF2MInitDepthFactor ()
 Type of parameter OdomF2M/InitDepthFactor , as a string: float .
 
static std::string kOdomF2MFloorThreshold ()
 Key of parameter OdomF2M/FloorThreshold : "[Visual] Only track features in 3D feature map that are over this threshold (height in base frame). Can be useful to ignore reflections on the floor. 0 means disabled." Default value: 0.0 ( float ).
 
static float defaultOdomF2MFloorThreshold ()
 Default value of parameter OdomF2M/FloorThreshold : 0.0 .
 
static std::string typeOdomF2MFloorThreshold ()
 Type of parameter OdomF2M/FloorThreshold , as a string: float .
 
static std::string kOdomF2MScanMaxSize ()
 Key of parameter OdomF2M/ScanMaxSize : "[Geometry] Maximum local scan map size." Default value: 2000 ( int ).
 
static int defaultOdomF2MScanMaxSize ()
 Default value of parameter OdomF2M/ScanMaxSize : 2000 .
 
static std::string typeOdomF2MScanMaxSize ()
 Type of parameter OdomF2M/ScanMaxSize , as a string: int .
 
static std::string kOdomF2MScanSubtractRadius ()
 Key of parameter OdomF2M/ScanSubtractRadius : "[Geometry] Radius used to filter points of a new added scan to local map. This could match the voxel size of the scans." Default value: 0.05 ( float ).
 
static float defaultOdomF2MScanSubtractRadius ()
 Default value of parameter OdomF2M/ScanSubtractRadius : 0.05 .
 
static std::string typeOdomF2MScanSubtractRadius ()
 Type of parameter OdomF2M/ScanSubtractRadius , as a string: float .
 
static std::string kOdomF2MScanSubtractAngle ()
 Key of parameter OdomF2M/ScanSubtractAngle : uFormat("[Geometry] Max angle (degrees) used to filter points of a new added scan to local map (when \"%s\">0). 0 means any angle.", kOdomF2MScanSubtractRadius().c_str()).c_str() Default value: 45 ( float ).
 
static float defaultOdomF2MScanSubtractAngle ()
 Default value of parameter OdomF2M/ScanSubtractAngle : 45 .
 
static std::string typeOdomF2MScanSubtractAngle ()
 Type of parameter OdomF2M/ScanSubtractAngle , as a string: float .
 
static std::string kOdomF2MScanRange ()
 Key of parameter OdomF2M/ScanRange : "[Geometry] Distance Range used to filter points of local map (when > 0). 0 means local map is updated using time and not range." Default value: 0 ( float ).
 
static float defaultOdomF2MScanRange ()
 Default value of parameter OdomF2M/ScanRange : 0 .
 
static std::string typeOdomF2MScanRange ()
 Type of parameter OdomF2M/ScanRange , as a string: float .
 
static std::string kOdomF2MValidDepthRatio ()
 Key of parameter OdomF2M/ValidDepthRatio : "If a new frame has points without valid depth, they are added to local feature map only if points with valid depth on total points is over this ratio. Setting to 1 means no points without valid depth are added to local feature map." Default value: 0.75 ( float ).
 
static float defaultOdomF2MValidDepthRatio ()
 Default value of parameter OdomF2M/ValidDepthRatio : 0.75 .
 
static std::string typeOdomF2MValidDepthRatio ()
 Type of parameter OdomF2M/ValidDepthRatio , as a string: float .
 
static std::string kOdomF2MBundleAdjustment ()
 Key of parameter OdomF2M/BundleAdjustment : uFormat("Local bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()) Default value: 0 ( int ).
 
static int defaultOdomF2MBundleAdjustment ()
 Default value of parameter OdomF2M/BundleAdjustment : 0 .
 
static std::string typeOdomF2MBundleAdjustment ()
 Type of parameter OdomF2M/BundleAdjustment , as a string: int .
 
static std::string kOdomF2MBundleAdjustmentMaxFrames ()
 Key of parameter OdomF2M/BundleAdjustmentMaxFrames : "Maximum frames used for bundle adjustment (0=inf or all current frames in the local map)." Default value: 10 ( int ).
 
static int defaultOdomF2MBundleAdjustmentMaxFrames ()
 Default value of parameter OdomF2M/BundleAdjustmentMaxFrames : 10 .
 
static std::string typeOdomF2MBundleAdjustmentMaxFrames ()
 Type of parameter OdomF2M/BundleAdjustmentMaxFrames , as a string: int .
 
static std::string kOdomF2MBundleAdjustmentMinMotion ()
 Key of parameter OdomF2M/BundleAdjustmentMinMotion : "To create a new keyframe with bundle adjustment, a minimum motion (in pixels) can be required. The motion is computed by the average distance between inliers of the previous keyframe and new frame." Default value: 0.0 ( float ).
 
static float defaultOdomF2MBundleAdjustmentMinMotion ()
 Default value of parameter OdomF2M/BundleAdjustmentMinMotion : 0.0 .
 
static std::string typeOdomF2MBundleAdjustmentMinMotion ()
 Type of parameter OdomF2M/BundleAdjustmentMinMotion , as a string: float .
 
static std::string kOdomF2MBundleAdjustmentMaxKeyFramesPerFeature ()
 Key of parameter OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature : "Maximum keyframes per feature for bundle adjustment. 0 means not limit." Default value: 0 ( int ).
 
static int defaultOdomF2MBundleAdjustmentMaxKeyFramesPerFeature ()
 Default value of parameter OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature : 0 .
 
static std::string typeOdomF2MBundleAdjustmentMaxKeyFramesPerFeature ()
 Type of parameter OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature , as a string: int .
 
static std::string kOdomF2MBundleUpdateFeatureMapOnAllFrames ()
 Key of parameter OdomF2M/BundleUpdateFeatureMapOnAllFrames : uFormat("Update 3D local feature map on every frame with bundle adjustment. Recommended if %s=false and %s=true so that features without depth are better triangulated on every frame (not only on keyframes). If disabled, the feature map is updated only when a new keyframe is added (legacy approach).", kVisDepthAsMask().c_str(), kMemUseOdomFeatures().c_str()) Default value: false ( bool ).
 
static bool defaultOdomF2MBundleUpdateFeatureMapOnAllFrames ()
 Default value of parameter OdomF2M/BundleUpdateFeatureMapOnAllFrames : false .
 
static std::string typeOdomF2MBundleUpdateFeatureMapOnAllFrames ()
 Type of parameter OdomF2M/BundleUpdateFeatureMapOnAllFrames , as a string: bool .
 
static std::string kOdomMonoInitMinFlow ()
 Key of parameter OdomMono/InitMinFlow : "Minimum optical flow required for the initialization step." Default value: 100 ( float ).
 
static float defaultOdomMonoInitMinFlow ()
 Default value of parameter OdomMono/InitMinFlow : 100 .
 
static std::string typeOdomMonoInitMinFlow ()
 Type of parameter OdomMono/InitMinFlow , as a string: float .
 
static std::string kOdomMonoInitMinTranslation ()
 Key of parameter OdomMono/InitMinTranslation : "Minimum translation required for the initialization step." Default value: 0.1 ( float ).
 
static float defaultOdomMonoInitMinTranslation ()
 Default value of parameter OdomMono/InitMinTranslation : 0.1 .
 
static std::string typeOdomMonoInitMinTranslation ()
 Type of parameter OdomMono/InitMinTranslation , as a string: float .
 
static std::string kOdomMonoMinTranslation ()
 Key of parameter OdomMono/MinTranslation : "Minimum translation to add new points to local map. On initialization, translation x 5 is used as the minimum." Default value: 0.02 ( float ).
 
static float defaultOdomMonoMinTranslation ()
 Default value of parameter OdomMono/MinTranslation : 0.02 .
 
static std::string typeOdomMonoMinTranslation ()
 Type of parameter OdomMono/MinTranslation , as a string: float .
 
static std::string kOdomMonoMaxVariance ()
 Key of parameter OdomMono/MaxVariance : "Maximum variance to add new points to local map." Default value: 0.01 ( float ).
 
static float defaultOdomMonoMaxVariance ()
 Default value of parameter OdomMono/MaxVariance : 0.01 .
 
static std::string typeOdomMonoMaxVariance ()
 Type of parameter OdomMono/MaxVariance , as a string: float .
 
static std::string kOdomFovisFeatureWindowSize ()
 Key of parameter OdomFovis/FeatureWindowSize : "The size of the n x n image patch surrounding each feature, used for keypoint matching." Default value: 9 ( int ).
 
static int defaultOdomFovisFeatureWindowSize ()
 Default value of parameter OdomFovis/FeatureWindowSize : 9 .
 
static std::string typeOdomFovisFeatureWindowSize ()
 Type of parameter OdomFovis/FeatureWindowSize , as a string: int .
 
static std::string kOdomFovisMaxPyramidLevel ()
 Key of parameter OdomFovis/MaxPyramidLevel : "The maximum Gaussian pyramid level to process the image at. Pyramid level 1 corresponds to the original image." Default value: 3 ( int ).
 
static int defaultOdomFovisMaxPyramidLevel ()
 Default value of parameter OdomFovis/MaxPyramidLevel : 3 .
 
static std::string typeOdomFovisMaxPyramidLevel ()
 Type of parameter OdomFovis/MaxPyramidLevel , as a string: int .
 
static std::string kOdomFovisMinPyramidLevel ()
 Key of parameter OdomFovis/MinPyramidLevel : "The minimum pyramid level." Default value: 0 ( int ).
 
static int defaultOdomFovisMinPyramidLevel ()
 Default value of parameter OdomFovis/MinPyramidLevel : 0 .
 
static std::string typeOdomFovisMinPyramidLevel ()
 Type of parameter OdomFovis/MinPyramidLevel , as a string: int .
 
static std::string kOdomFovisTargetPixelsPerFeature ()
 Key of parameter OdomFovis/TargetPixelsPerFeature : "Specifies the desired feature density as a ratio of input image pixels per feature detected. This number is used to control the adaptive feature thresholding." Default value: 250 ( int ).
 
static int defaultOdomFovisTargetPixelsPerFeature ()
 Default value of parameter OdomFovis/TargetPixelsPerFeature : 250 .
 
static std::string typeOdomFovisTargetPixelsPerFeature ()
 Type of parameter OdomFovis/TargetPixelsPerFeature , as a string: int .
 
static std::string kOdomFovisFastThreshold ()
 Key of parameter OdomFovis/FastThreshold : "FAST threshold." Default value: 20 ( int ).
 
static int defaultOdomFovisFastThreshold ()
 Default value of parameter OdomFovis/FastThreshold : 20 .
 
static std::string typeOdomFovisFastThreshold ()
 Type of parameter OdomFovis/FastThreshold , as a string: int .
 
static std::string kOdomFovisUseAdaptiveThreshold ()
 Key of parameter OdomFovis/UseAdaptiveThreshold : "Use FAST adaptive threshold." Default value: true ( bool ).
 
static bool defaultOdomFovisUseAdaptiveThreshold ()
 Default value of parameter OdomFovis/UseAdaptiveThreshold : true .
 
static std::string typeOdomFovisUseAdaptiveThreshold ()
 Type of parameter OdomFovis/UseAdaptiveThreshold , as a string: bool .
 
static std::string kOdomFovisFastThresholdAdaptiveGain ()
 Key of parameter OdomFovis/FastThresholdAdaptiveGain : "FAST threshold adaptive gain." Default value: 0.005 ( double ).
 
static double defaultOdomFovisFastThresholdAdaptiveGain ()
 Default value of parameter OdomFovis/FastThresholdAdaptiveGain : 0.005 .
 
static std::string typeOdomFovisFastThresholdAdaptiveGain ()
 Type of parameter OdomFovis/FastThresholdAdaptiveGain , as a string: double .
 
static std::string kOdomFovisUseHomographyInitialization ()
 Key of parameter OdomFovis/UseHomographyInitialization : "Use homography initialization." Default value: true ( bool ).
 
static bool defaultOdomFovisUseHomographyInitialization ()
 Default value of parameter OdomFovis/UseHomographyInitialization : true .
 
static std::string typeOdomFovisUseHomographyInitialization ()
 Type of parameter OdomFovis/UseHomographyInitialization , as a string: bool .
 
static std::string kOdomFovisUseBucketing ()
 Key of parameter OdomFovis/UseBucketing : "" Default value: true ( bool ).
 
static bool defaultOdomFovisUseBucketing ()
 Default value of parameter OdomFovis/UseBucketing : true .
 
static std::string typeOdomFovisUseBucketing ()
 Type of parameter OdomFovis/UseBucketing , as a string: bool .
 
static std::string kOdomFovisBucketWidth ()
 Key of parameter OdomFovis/BucketWidth : "" Default value: 80 ( int ).
 
static int defaultOdomFovisBucketWidth ()
 Default value of parameter OdomFovis/BucketWidth : 80 .
 
static std::string typeOdomFovisBucketWidth ()
 Type of parameter OdomFovis/BucketWidth , as a string: int .
 
static std::string kOdomFovisBucketHeight ()
 Key of parameter OdomFovis/BucketHeight : "" Default value: 80 ( int ).
 
static int defaultOdomFovisBucketHeight ()
 Default value of parameter OdomFovis/BucketHeight : 80 .
 
static std::string typeOdomFovisBucketHeight ()
 Type of parameter OdomFovis/BucketHeight , as a string: int .
 
static std::string kOdomFovisMaxKeypointsPerBucket ()
 Key of parameter OdomFovis/MaxKeypointsPerBucket : "" Default value: 25 ( int ).
 
static int defaultOdomFovisMaxKeypointsPerBucket ()
 Default value of parameter OdomFovis/MaxKeypointsPerBucket : 25 .
 
static std::string typeOdomFovisMaxKeypointsPerBucket ()
 Type of parameter OdomFovis/MaxKeypointsPerBucket , as a string: int .
 
static std::string kOdomFovisUseImageNormalization ()
 Key of parameter OdomFovis/UseImageNormalization : "" Default value: false ( bool ).
 
static bool defaultOdomFovisUseImageNormalization ()
 Default value of parameter OdomFovis/UseImageNormalization : false .
 
static std::string typeOdomFovisUseImageNormalization ()
 Type of parameter OdomFovis/UseImageNormalization , as a string: bool .
 
static std::string kOdomFovisInlierMaxReprojectionError ()
 Key of parameter OdomFovis/InlierMaxReprojectionError : "The maximum image-space reprojection error (in pixels) a feature match is allowed to have and still be considered an inlier in the set of features used for motion estimation." Default value: 1.5 ( double ).
 
static double defaultOdomFovisInlierMaxReprojectionError ()
 Default value of parameter OdomFovis/InlierMaxReprojectionError : 1.5 .
 
static std::string typeOdomFovisInlierMaxReprojectionError ()
 Type of parameter OdomFovis/InlierMaxReprojectionError , as a string: double .
 
static std::string kOdomFovisCliqueInlierThreshold ()
 Key of parameter OdomFovis/CliqueInlierThreshold : "See Howard's greedy max-clique algorithm for determining the maximum set of mutually consisten feature matches. This specifies the compatibility threshold, in meters." Default value: 0.1 ( double ).
 
static double defaultOdomFovisCliqueInlierThreshold ()
 Default value of parameter OdomFovis/CliqueInlierThreshold : 0.1 .
 
static std::string typeOdomFovisCliqueInlierThreshold ()
 Type of parameter OdomFovis/CliqueInlierThreshold , as a string: double .
 
static std::string kOdomFovisMinFeaturesForEstimate ()
 Key of parameter OdomFovis/MinFeaturesForEstimate : "Minimum number of features in the inlier set for the motion estimate to be considered valid." Default value: 20 ( int ).
 
static int defaultOdomFovisMinFeaturesForEstimate ()
 Default value of parameter OdomFovis/MinFeaturesForEstimate : 20 .
 
static std::string typeOdomFovisMinFeaturesForEstimate ()
 Type of parameter OdomFovis/MinFeaturesForEstimate , as a string: int .
 
static std::string kOdomFovisMaxMeanReprojectionError ()
 Key of parameter OdomFovis/MaxMeanReprojectionError : "Maximum mean reprojection error over the inlier feature matches for the motion estimate to be considered valid." Default value: 10.0 ( double ).
 
static double defaultOdomFovisMaxMeanReprojectionError ()
 Default value of parameter OdomFovis/MaxMeanReprojectionError : 10.0 .
 
static std::string typeOdomFovisMaxMeanReprojectionError ()
 Type of parameter OdomFovis/MaxMeanReprojectionError , as a string: double .
 
static std::string kOdomFovisUseSubpixelRefinement ()
 Key of parameter OdomFovis/UseSubpixelRefinement : "Specifies whether or not to refine feature matches to subpixel resolution." Default value: true ( bool ).
 
static bool defaultOdomFovisUseSubpixelRefinement ()
 Default value of parameter OdomFovis/UseSubpixelRefinement : true .
 
static std::string typeOdomFovisUseSubpixelRefinement ()
 Type of parameter OdomFovis/UseSubpixelRefinement , as a string: bool .
 
static std::string kOdomFovisFeatureSearchWindow ()
 Key of parameter OdomFovis/FeatureSearchWindow : "Specifies the size of the search window to apply when searching for feature matches across time frames. The search is conducted around the feature location predicted by the initial rotation estimate." Default value: 25 ( int ).
 
static int defaultOdomFovisFeatureSearchWindow ()
 Default value of parameter OdomFovis/FeatureSearchWindow : 25 .
 
static std::string typeOdomFovisFeatureSearchWindow ()
 Type of parameter OdomFovis/FeatureSearchWindow , as a string: int .
 
static std::string kOdomFovisUpdateTargetFeaturesWithRefined ()
 Key of parameter OdomFovis/UpdateTargetFeaturesWithRefined : "When subpixel refinement is enabled, the refined feature locations can be saved over the original feature locations. This has a slightly negative impact on frame-to-frame visual odometry, but is likely better when using this library as part of a visual SLAM algorithm." Default value: false ( bool ).
 
static bool defaultOdomFovisUpdateTargetFeaturesWithRefined ()
 Default value of parameter OdomFovis/UpdateTargetFeaturesWithRefined : false .
 
static std::string typeOdomFovisUpdateTargetFeaturesWithRefined ()
 Type of parameter OdomFovis/UpdateTargetFeaturesWithRefined , as a string: bool .
 
static std::string kOdomFovisStereoRequireMutualMatch ()
 Key of parameter OdomFovis/StereoRequireMutualMatch : "" Default value: true ( bool ).
 
static bool defaultOdomFovisStereoRequireMutualMatch ()
 Default value of parameter OdomFovis/StereoRequireMutualMatch : true .
 
static std::string typeOdomFovisStereoRequireMutualMatch ()
 Type of parameter OdomFovis/StereoRequireMutualMatch , as a string: bool .
 
static std::string kOdomFovisStereoMaxDistEpipolarLine ()
 Key of parameter OdomFovis/StereoMaxDistEpipolarLine : "" Default value: 1.5 ( double ).
 
static double defaultOdomFovisStereoMaxDistEpipolarLine ()
 Default value of parameter OdomFovis/StereoMaxDistEpipolarLine : 1.5 .
 
static std::string typeOdomFovisStereoMaxDistEpipolarLine ()
 Type of parameter OdomFovis/StereoMaxDistEpipolarLine , as a string: double .
 
static std::string kOdomFovisStereoMaxRefinementDisplacement ()
 Key of parameter OdomFovis/StereoMaxRefinementDisplacement : "" Default value: 1.0 ( double ).
 
static double defaultOdomFovisStereoMaxRefinementDisplacement ()
 Default value of parameter OdomFovis/StereoMaxRefinementDisplacement : 1.0 .
 
static std::string typeOdomFovisStereoMaxRefinementDisplacement ()
 Type of parameter OdomFovis/StereoMaxRefinementDisplacement , as a string: double .
 
static std::string kOdomFovisStereoMaxDisparity ()
 Key of parameter OdomFovis/StereoMaxDisparity : "" Default value: 128 ( int ).
 
static int defaultOdomFovisStereoMaxDisparity ()
 Default value of parameter OdomFovis/StereoMaxDisparity : 128 .
 
static std::string typeOdomFovisStereoMaxDisparity ()
 Type of parameter OdomFovis/StereoMaxDisparity , as a string: int .
 
static std::string kOdomViso2RansacIters ()
 Key of parameter OdomViso2/RansacIters : "Number of RANSAC iterations." Default value: 200 ( int ).
 
static int defaultOdomViso2RansacIters ()
 Default value of parameter OdomViso2/RansacIters : 200 .
 
static std::string typeOdomViso2RansacIters ()
 Type of parameter OdomViso2/RansacIters , as a string: int .
 
static std::string kOdomViso2InlierThreshold ()
 Key of parameter OdomViso2/InlierThreshold : "Fundamental matrix inlier threshold." Default value: 2.0 ( double ).
 
static double defaultOdomViso2InlierThreshold ()
 Default value of parameter OdomViso2/InlierThreshold : 2.0 .
 
static std::string typeOdomViso2InlierThreshold ()
 Type of parameter OdomViso2/InlierThreshold , as a string: double .
 
static std::string kOdomViso2Reweighting ()
 Key of parameter OdomViso2/Reweighting : "Lower border weights (more robust to calibration errors)." Default value: true ( bool ).
 
static bool defaultOdomViso2Reweighting ()
 Default value of parameter OdomViso2/Reweighting : true .
 
static std::string typeOdomViso2Reweighting ()
 Type of parameter OdomViso2/Reweighting , as a string: bool .
 
static std::string kOdomViso2MatchNmsN ()
 Key of parameter OdomViso2/MatchNmsN : "Non-max-suppression: min. distance between maxima (in pixels)." Default value: 3 ( int ).
 
static int defaultOdomViso2MatchNmsN ()
 Default value of parameter OdomViso2/MatchNmsN : 3 .
 
static std::string typeOdomViso2MatchNmsN ()
 Type of parameter OdomViso2/MatchNmsN , as a string: int .
 
static std::string kOdomViso2MatchNmsTau ()
 Key of parameter OdomViso2/MatchNmsTau : "Non-max-suppression: interest point peakiness threshold." Default value: 50 ( int ).
 
static int defaultOdomViso2MatchNmsTau ()
 Default value of parameter OdomViso2/MatchNmsTau : 50 .
 
static std::string typeOdomViso2MatchNmsTau ()
 Type of parameter OdomViso2/MatchNmsTau , as a string: int .
 
static std::string kOdomViso2MatchBinsize ()
 Key of parameter OdomViso2/MatchBinsize : "Matching bin width/height (affects efficiency only)." Default value: 50 ( int ).
 
static int defaultOdomViso2MatchBinsize ()
 Default value of parameter OdomViso2/MatchBinsize : 50 .
 
static std::string typeOdomViso2MatchBinsize ()
 Type of parameter OdomViso2/MatchBinsize , as a string: int .
 
static std::string kOdomViso2MatchRadius ()
 Key of parameter OdomViso2/MatchRadius : "Matching radius (du/dv in pixels)." Default value: 200 ( int ).
 
static int defaultOdomViso2MatchRadius ()
 Default value of parameter OdomViso2/MatchRadius : 200 .
 
static std::string typeOdomViso2MatchRadius ()
 Type of parameter OdomViso2/MatchRadius , as a string: int .
 
static std::string kOdomViso2MatchDispTolerance ()
 Key of parameter OdomViso2/MatchDispTolerance : "Disparity tolerance for stereo matches (in pixels)." Default value: 2 ( int ).
 
static int defaultOdomViso2MatchDispTolerance ()
 Default value of parameter OdomViso2/MatchDispTolerance : 2 .
 
static std::string typeOdomViso2MatchDispTolerance ()
 Type of parameter OdomViso2/MatchDispTolerance , as a string: int .
 
static std::string kOdomViso2MatchOutlierDispTolerance ()
 Key of parameter OdomViso2/MatchOutlierDispTolerance : "Outlier removal: disparity tolerance (in pixels)." Default value: 5 ( int ).
 
static int defaultOdomViso2MatchOutlierDispTolerance ()
 Default value of parameter OdomViso2/MatchOutlierDispTolerance : 5 .
 
static std::string typeOdomViso2MatchOutlierDispTolerance ()
 Type of parameter OdomViso2/MatchOutlierDispTolerance , as a string: int .
 
static std::string kOdomViso2MatchOutlierFlowTolerance ()
 Key of parameter OdomViso2/MatchOutlierFlowTolerance : "Outlier removal: flow tolerance (in pixels)." Default value: 5 ( int ).
 
static int defaultOdomViso2MatchOutlierFlowTolerance ()
 Default value of parameter OdomViso2/MatchOutlierFlowTolerance : 5 .
 
static std::string typeOdomViso2MatchOutlierFlowTolerance ()
 Type of parameter OdomViso2/MatchOutlierFlowTolerance , as a string: int .
 
static std::string kOdomViso2MatchMultiStage ()
 Key of parameter OdomViso2/MatchMultiStage : "Multistage matching (denser and faster)." Default value: true ( bool ).
 
static bool defaultOdomViso2MatchMultiStage ()
 Default value of parameter OdomViso2/MatchMultiStage : true .
 
static std::string typeOdomViso2MatchMultiStage ()
 Type of parameter OdomViso2/MatchMultiStage , as a string: bool .
 
static std::string kOdomViso2MatchHalfResolution ()
 Key of parameter OdomViso2/MatchHalfResolution : "Match at half resolution, refine at full resolution." Default value: true ( bool ).
 
static bool defaultOdomViso2MatchHalfResolution ()
 Default value of parameter OdomViso2/MatchHalfResolution : true .
 
static std::string typeOdomViso2MatchHalfResolution ()
 Type of parameter OdomViso2/MatchHalfResolution , as a string: bool .
 
static std::string kOdomViso2MatchRefinement ()
 Key of parameter OdomViso2/MatchRefinement : "Refinement (0=none,1=pixel,2=subpixel)." Default value: 1 ( int ).
 
static int defaultOdomViso2MatchRefinement ()
 Default value of parameter OdomViso2/MatchRefinement : 1 .
 
static std::string typeOdomViso2MatchRefinement ()
 Type of parameter OdomViso2/MatchRefinement , as a string: int .
 
static std::string kOdomViso2BucketMaxFeatures ()
 Key of parameter OdomViso2/BucketMaxFeatures : "Maximal number of features per bucket." Default value: 2 ( int ).
 
static int defaultOdomViso2BucketMaxFeatures ()
 Default value of parameter OdomViso2/BucketMaxFeatures : 2 .
 
static std::string typeOdomViso2BucketMaxFeatures ()
 Type of parameter OdomViso2/BucketMaxFeatures , as a string: int .
 
static std::string kOdomViso2BucketWidth ()
 Key of parameter OdomViso2/BucketWidth : "Width of bucket." Default value: 50 ( double ).
 
static double defaultOdomViso2BucketWidth ()
 Default value of parameter OdomViso2/BucketWidth : 50 .
 
static std::string typeOdomViso2BucketWidth ()
 Type of parameter OdomViso2/BucketWidth , as a string: double .
 
static std::string kOdomViso2BucketHeight ()
 Key of parameter OdomViso2/BucketHeight : "Height of bucket." Default value: 50 ( double ).
 
static double defaultOdomViso2BucketHeight ()
 Default value of parameter OdomViso2/BucketHeight : 50 .
 
static std::string typeOdomViso2BucketHeight ()
 Type of parameter OdomViso2/BucketHeight , as a string: double .
 
static std::string kOdomORBSLAMVocPath ()
 Key of parameter OdomORBSLAM/VocPath : "Path to ORB vocabulary (*.txt)." Default value: "" (string).
 
static std::string defaultOdomORBSLAMVocPath ()
 Default value of parameter OdomORBSLAM/VocPath : "" .
 
static std::string typeOdomORBSLAMVocPath ()
 Type of parameter OdomORBSLAM/VocPath , as a string: string.
 
static std::string kOdomORBSLAMBf ()
 Key of parameter OdomORBSLAM/Bf : "Fake IR projector baseline (m) used only when stereo is not used." Default value: 0.076 ( double ).
 
static double defaultOdomORBSLAMBf ()
 Default value of parameter OdomORBSLAM/Bf : 0.076 .
 
static std::string typeOdomORBSLAMBf ()
 Type of parameter OdomORBSLAM/Bf , as a string: double .
 
static std::string kOdomORBSLAMThDepth ()
 Key of parameter OdomORBSLAM/ThDepth : "Close/Far threshold. Baseline times." Default value: 40.0 ( double ).
 
static double defaultOdomORBSLAMThDepth ()
 Default value of parameter OdomORBSLAM/ThDepth : 40.0 .
 
static std::string typeOdomORBSLAMThDepth ()
 Type of parameter OdomORBSLAM/ThDepth , as a string: double .
 
static std::string kOdomORBSLAMFps ()
 Key of parameter OdomORBSLAM/Fps : "Camera FPS (0 to estimate from input data)." Default value: 0.0 ( float ).
 
static float defaultOdomORBSLAMFps ()
 Default value of parameter OdomORBSLAM/Fps : 0.0 .
 
static std::string typeOdomORBSLAMFps ()
 Type of parameter OdomORBSLAM/Fps , as a string: float .
 
static std::string kOdomORBSLAMMaxFeatures ()
 Key of parameter OdomORBSLAM/MaxFeatures : "Maximum ORB features extracted per frame." Default value: 1000 ( int ).
 
static int defaultOdomORBSLAMMaxFeatures ()
 Default value of parameter OdomORBSLAM/MaxFeatures : 1000 .
 
static std::string typeOdomORBSLAMMaxFeatures ()
 Type of parameter OdomORBSLAM/MaxFeatures , as a string: int .
 
static std::string kOdomORBSLAMMapSize ()
 Key of parameter OdomORBSLAM/MapSize : "Maximum size of the feature map (0 means infinite). Only supported with ORB_SLAM2." Default value: 3000 ( int ).
 
static int defaultOdomORBSLAMMapSize ()
 Default value of parameter OdomORBSLAM/MapSize : 3000 .
 
static std::string typeOdomORBSLAMMapSize ()
 Type of parameter OdomORBSLAM/MapSize , as a string: int .
 
static std::string kOdomORBSLAMInertial ()
 Key of parameter OdomORBSLAM/Inertial : "Enable IMU. Only supported with ORB_SLAM3." Default value: false ( bool ).
 
static bool defaultOdomORBSLAMInertial ()
 Default value of parameter OdomORBSLAM/Inertial : false .
 
static std::string typeOdomORBSLAMInertial ()
 Type of parameter OdomORBSLAM/Inertial , as a string: bool .
 
static std::string kOdomORBSLAMGyroNoise ()
 Key of parameter OdomORBSLAM/GyroNoise : "IMU gyroscope \"white noise\"." Default value: 0.01 ( double ).
 
static double defaultOdomORBSLAMGyroNoise ()
 Default value of parameter OdomORBSLAM/GyroNoise : 0.01 .
 
static std::string typeOdomORBSLAMGyroNoise ()
 Type of parameter OdomORBSLAM/GyroNoise , as a string: double .
 
static std::string kOdomORBSLAMAccNoise ()
 Key of parameter OdomORBSLAM/AccNoise : "IMU accelerometer \"white noise\"." Default value: 0.1 ( double ).
 
static double defaultOdomORBSLAMAccNoise ()
 Default value of parameter OdomORBSLAM/AccNoise : 0.1 .
 
static std::string typeOdomORBSLAMAccNoise ()
 Type of parameter OdomORBSLAM/AccNoise , as a string: double .
 
static std::string kOdomORBSLAMGyroWalk ()
 Key of parameter OdomORBSLAM/GyroWalk : "IMU gyroscope \"random walk\"." Default value: 0.000001 ( double ).
 
static double defaultOdomORBSLAMGyroWalk ()
 Default value of parameter OdomORBSLAM/GyroWalk : 0.000001 .
 
static std::string typeOdomORBSLAMGyroWalk ()
 Type of parameter OdomORBSLAM/GyroWalk , as a string: double .
 
static std::string kOdomORBSLAMAccWalk ()
 Key of parameter OdomORBSLAM/AccWalk : "IMU accelerometer \"random walk\"." Default value: 0.0001 ( double ).
 
static double defaultOdomORBSLAMAccWalk ()
 Default value of parameter OdomORBSLAM/AccWalk : 0.0001 .
 
static std::string typeOdomORBSLAMAccWalk ()
 Type of parameter OdomORBSLAM/AccWalk , as a string: double .
 
static std::string kOdomORBSLAMSamplingRate ()
 Key of parameter OdomORBSLAM/SamplingRate : "IMU sampling rate (0 to estimate from input data)." Default value: 0 ( double ).
 
static double defaultOdomORBSLAMSamplingRate ()
 Default value of parameter OdomORBSLAM/SamplingRate : 0 .
 
static std::string typeOdomORBSLAMSamplingRate ()
 Type of parameter OdomORBSLAM/SamplingRate , as a string: double .
 
static std::string kOdomOKVISConfigPath ()
 Key of parameter OdomOKVIS/ConfigPath : "Path of OKVIS config file." Default value: "" (string).
 
static std::string defaultOdomOKVISConfigPath ()
 Default value of parameter OdomOKVIS/ConfigPath : "" .
 
static std::string typeOdomOKVISConfigPath ()
 Type of parameter OdomOKVIS/ConfigPath , as a string: string.
 
static std::string kOdomLOAMSensor ()
 Key of parameter OdomLOAM/Sensor : "Velodyne sensor: 0=VLP-16, 1=HDL-32, 2=HDL-64E" Default value: 2 ( int ).
 
static int defaultOdomLOAMSensor ()
 Default value of parameter OdomLOAM/Sensor : 2 .
 
static std::string typeOdomLOAMSensor ()
 Type of parameter OdomLOAM/Sensor , as a string: int .
 
static std::string kOdomLOAMScanPeriod ()
 Key of parameter OdomLOAM/ScanPeriod : "Scan period (s)" Default value: 0.1 ( float ).
 
static float defaultOdomLOAMScanPeriod ()
 Default value of parameter OdomLOAM/ScanPeriod : 0.1 .
 
static std::string typeOdomLOAMScanPeriod ()
 Type of parameter OdomLOAM/ScanPeriod , as a string: float .
 
static std::string kOdomLOAMResolution ()
 Key of parameter OdomLOAM/Resolution : "Map resolution" Default value: 0.2 ( float ).
 
static float defaultOdomLOAMResolution ()
 Default value of parameter OdomLOAM/Resolution : 0.2 .
 
static std::string typeOdomLOAMResolution ()
 Type of parameter OdomLOAM/Resolution , as a string: float .
 
static std::string kOdomLOAMLinVar ()
 Key of parameter OdomLOAM/LinVar : "Linear output variance." Default value: 0.01 ( float ).
 
static float defaultOdomLOAMLinVar ()
 Default value of parameter OdomLOAM/LinVar : 0.01 .
 
static std::string typeOdomLOAMLinVar ()
 Type of parameter OdomLOAM/LinVar , as a string: float .
 
static std::string kOdomLOAMAngVar ()
 Key of parameter OdomLOAM/AngVar : "Angular output variance." Default value: 0.01 ( float ).
 
static float defaultOdomLOAMAngVar ()
 Default value of parameter OdomLOAM/AngVar : 0.01 .
 
static std::string typeOdomLOAMAngVar ()
 Type of parameter OdomLOAM/AngVar , as a string: float .
 
static std::string kOdomLOAMLocalMapping ()
 Key of parameter OdomLOAM/LocalMapping : "Local mapping. It adds more time to compute odometry, but accuracy is significantly improved." Default value: true ( bool ).
 
static bool defaultOdomLOAMLocalMapping ()
 Default value of parameter OdomLOAM/LocalMapping : true .
 
static std::string typeOdomLOAMLocalMapping ()
 Type of parameter OdomLOAM/LocalMapping , as a string: bool .
 
static std::string kOdomMSCKFGridRow ()
 Key of parameter OdomMSCKF/GridRow : "" Default value: 4 ( int ).
 
static int defaultOdomMSCKFGridRow ()
 Default value of parameter OdomMSCKF/GridRow : 4 .
 
static std::string typeOdomMSCKFGridRow ()
 Type of parameter OdomMSCKF/GridRow , as a string: int .
 
static std::string kOdomMSCKFGridCol ()
 Key of parameter OdomMSCKF/GridCol : "" Default value: 5 ( int ).
 
static int defaultOdomMSCKFGridCol ()
 Default value of parameter OdomMSCKF/GridCol : 5 .
 
static std::string typeOdomMSCKFGridCol ()
 Type of parameter OdomMSCKF/GridCol , as a string: int .
 
static std::string kOdomMSCKFGridMinFeatureNum ()
 Key of parameter OdomMSCKF/GridMinFeatureNum : "" Default value: 3 ( int ).
 
static int defaultOdomMSCKFGridMinFeatureNum ()
 Default value of parameter OdomMSCKF/GridMinFeatureNum : 3 .
 
static std::string typeOdomMSCKFGridMinFeatureNum ()
 Type of parameter OdomMSCKF/GridMinFeatureNum , as a string: int .
 
static std::string kOdomMSCKFGridMaxFeatureNum ()
 Key of parameter OdomMSCKF/GridMaxFeatureNum : "" Default value: 4 ( int ).
 
static int defaultOdomMSCKFGridMaxFeatureNum ()
 Default value of parameter OdomMSCKF/GridMaxFeatureNum : 4 .
 
static std::string typeOdomMSCKFGridMaxFeatureNum ()
 Type of parameter OdomMSCKF/GridMaxFeatureNum , as a string: int .
 
static std::string kOdomMSCKFPyramidLevels ()
 Key of parameter OdomMSCKF/PyramidLevels : "" Default value: 3 ( int ).
 
static int defaultOdomMSCKFPyramidLevels ()
 Default value of parameter OdomMSCKF/PyramidLevels : 3 .
 
static std::string typeOdomMSCKFPyramidLevels ()
 Type of parameter OdomMSCKF/PyramidLevels , as a string: int .
 
static std::string kOdomMSCKFPatchSize ()
 Key of parameter OdomMSCKF/PatchSize : "" Default value: 15 ( int ).
 
static int defaultOdomMSCKFPatchSize ()
 Default value of parameter OdomMSCKF/PatchSize : 15 .
 
static std::string typeOdomMSCKFPatchSize ()
 Type of parameter OdomMSCKF/PatchSize , as a string: int .
 
static std::string kOdomMSCKFFastThreshold ()
 Key of parameter OdomMSCKF/FastThreshold : "" Default value: 10 ( int ).
 
static int defaultOdomMSCKFFastThreshold ()
 Default value of parameter OdomMSCKF/FastThreshold : 10 .
 
static std::string typeOdomMSCKFFastThreshold ()
 Type of parameter OdomMSCKF/FastThreshold , as a string: int .
 
static std::string kOdomMSCKFMaxIteration ()
 Key of parameter OdomMSCKF/MaxIteration : "" Default value: 30 ( int ).
 
static int defaultOdomMSCKFMaxIteration ()
 Default value of parameter OdomMSCKF/MaxIteration : 30 .
 
static std::string typeOdomMSCKFMaxIteration ()
 Type of parameter OdomMSCKF/MaxIteration , as a string: int .
 
static std::string kOdomMSCKFTrackPrecision ()
 Key of parameter OdomMSCKF/TrackPrecision : "" Default value: 0.01 ( double ).
 
static double defaultOdomMSCKFTrackPrecision ()
 Default value of parameter OdomMSCKF/TrackPrecision : 0.01 .
 
static std::string typeOdomMSCKFTrackPrecision ()
 Type of parameter OdomMSCKF/TrackPrecision , as a string: double .
 
static std::string kOdomMSCKFRansacThreshold ()
 Key of parameter OdomMSCKF/RansacThreshold : "" Default value: 3 ( double ).
 
static double defaultOdomMSCKFRansacThreshold ()
 Default value of parameter OdomMSCKF/RansacThreshold : 3 .
 
static std::string typeOdomMSCKFRansacThreshold ()
 Type of parameter OdomMSCKF/RansacThreshold , as a string: double .
 
static std::string kOdomMSCKFStereoThreshold ()
 Key of parameter OdomMSCKF/StereoThreshold : "" Default value: 5 ( double ).
 
static double defaultOdomMSCKFStereoThreshold ()
 Default value of parameter OdomMSCKF/StereoThreshold : 5 .
 
static std::string typeOdomMSCKFStereoThreshold ()
 Type of parameter OdomMSCKF/StereoThreshold , as a string: double .
 
static std::string kOdomMSCKFPositionStdThreshold ()
 Key of parameter OdomMSCKF/PositionStdThreshold : "" Default value: 8.0 ( double ).
 
static double defaultOdomMSCKFPositionStdThreshold ()
 Default value of parameter OdomMSCKF/PositionStdThreshold : 8.0 .
 
static std::string typeOdomMSCKFPositionStdThreshold ()
 Type of parameter OdomMSCKF/PositionStdThreshold , as a string: double .
 
static std::string kOdomMSCKFRotationThreshold ()
 Key of parameter OdomMSCKF/RotationThreshold : "" Default value: 0.2618 ( double ).
 
static double defaultOdomMSCKFRotationThreshold ()
 Default value of parameter OdomMSCKF/RotationThreshold : 0.2618 .
 
static std::string typeOdomMSCKFRotationThreshold ()
 Type of parameter OdomMSCKF/RotationThreshold , as a string: double .
 
static std::string kOdomMSCKFTranslationThreshold ()
 Key of parameter OdomMSCKF/TranslationThreshold : "" Default value: 0.4 ( double ).
 
static double defaultOdomMSCKFTranslationThreshold ()
 Default value of parameter OdomMSCKF/TranslationThreshold : 0.4 .
 
static std::string typeOdomMSCKFTranslationThreshold ()
 Type of parameter OdomMSCKF/TranslationThreshold , as a string: double .
 
static std::string kOdomMSCKFTrackingRateThreshold ()
 Key of parameter OdomMSCKF/TrackingRateThreshold : "" Default value: 0.5 ( double ).
 
static double defaultOdomMSCKFTrackingRateThreshold ()
 Default value of parameter OdomMSCKF/TrackingRateThreshold : 0.5 .
 
static std::string typeOdomMSCKFTrackingRateThreshold ()
 Type of parameter OdomMSCKF/TrackingRateThreshold , as a string: double .
 
static std::string kOdomMSCKFOptTranslationThreshold ()
 Key of parameter OdomMSCKF/OptTranslationThreshold : "" Default value: 0 ( double ).
 
static double defaultOdomMSCKFOptTranslationThreshold ()
 Default value of parameter OdomMSCKF/OptTranslationThreshold : 0 .
 
static std::string typeOdomMSCKFOptTranslationThreshold ()
 Type of parameter OdomMSCKF/OptTranslationThreshold , as a string: double .
 
static std::string kOdomMSCKFNoiseGyro ()
 Key of parameter OdomMSCKF/NoiseGyro : "" Default value: 0.005 ( double ).
 
static double defaultOdomMSCKFNoiseGyro ()
 Default value of parameter OdomMSCKF/NoiseGyro : 0.005 .
 
static std::string typeOdomMSCKFNoiseGyro ()
 Type of parameter OdomMSCKF/NoiseGyro , as a string: double .
 
static std::string kOdomMSCKFNoiseAcc ()
 Key of parameter OdomMSCKF/NoiseAcc : "" Default value: 0.05 ( double ).
 
static double defaultOdomMSCKFNoiseAcc ()
 Default value of parameter OdomMSCKF/NoiseAcc : 0.05 .
 
static std::string typeOdomMSCKFNoiseAcc ()
 Type of parameter OdomMSCKF/NoiseAcc , as a string: double .
 
static std::string kOdomMSCKFNoiseGyroBias ()
 Key of parameter OdomMSCKF/NoiseGyroBias : "" Default value: 0.001 ( double ).
 
static double defaultOdomMSCKFNoiseGyroBias ()
 Default value of parameter OdomMSCKF/NoiseGyroBias : 0.001 .
 
static std::string typeOdomMSCKFNoiseGyroBias ()
 Type of parameter OdomMSCKF/NoiseGyroBias , as a string: double .
 
static std::string kOdomMSCKFNoiseAccBias ()
 Key of parameter OdomMSCKF/NoiseAccBias : "" Default value: 0.01 ( double ).
 
static double defaultOdomMSCKFNoiseAccBias ()
 Default value of parameter OdomMSCKF/NoiseAccBias : 0.01 .
 
static std::string typeOdomMSCKFNoiseAccBias ()
 Type of parameter OdomMSCKF/NoiseAccBias , as a string: double .
 
static std::string kOdomMSCKFNoiseFeature ()
 Key of parameter OdomMSCKF/NoiseFeature : "" Default value: 0.035 ( double ).
 
static double defaultOdomMSCKFNoiseFeature ()
 Default value of parameter OdomMSCKF/NoiseFeature : 0.035 .
 
static std::string typeOdomMSCKFNoiseFeature ()
 Type of parameter OdomMSCKF/NoiseFeature , as a string: double .
 
static std::string kOdomMSCKFInitCovVel ()
 Key of parameter OdomMSCKF/InitCovVel : "" Default value: 0.25 ( double ).
 
static double defaultOdomMSCKFInitCovVel ()
 Default value of parameter OdomMSCKF/InitCovVel : 0.25 .
 
static std::string typeOdomMSCKFInitCovVel ()
 Type of parameter OdomMSCKF/InitCovVel , as a string: double .
 
static std::string kOdomMSCKFInitCovGyroBias ()
 Key of parameter OdomMSCKF/InitCovGyroBias : "" Default value: 0.01 ( double ).
 
static double defaultOdomMSCKFInitCovGyroBias ()
 Default value of parameter OdomMSCKF/InitCovGyroBias : 0.01 .
 
static std::string typeOdomMSCKFInitCovGyroBias ()
 Type of parameter OdomMSCKF/InitCovGyroBias , as a string: double .
 
static std::string kOdomMSCKFInitCovAccBias ()
 Key of parameter OdomMSCKF/InitCovAccBias : "" Default value: 0.01 ( double ).
 
static double defaultOdomMSCKFInitCovAccBias ()
 Default value of parameter OdomMSCKF/InitCovAccBias : 0.01 .
 
static std::string typeOdomMSCKFInitCovAccBias ()
 Type of parameter OdomMSCKF/InitCovAccBias , as a string: double .
 
static std::string kOdomMSCKFInitCovExRot ()
 Key of parameter OdomMSCKF/InitCovExRot : "" Default value: 0.00030462 ( double ).
 
static double defaultOdomMSCKFInitCovExRot ()
 Default value of parameter OdomMSCKF/InitCovExRot : 0.00030462 .
 
static std::string typeOdomMSCKFInitCovExRot ()
 Type of parameter OdomMSCKF/InitCovExRot , as a string: double .
 
static std::string kOdomMSCKFInitCovExTrans ()
 Key of parameter OdomMSCKF/InitCovExTrans : "" Default value: 0.000025 ( double ).
 
static double defaultOdomMSCKFInitCovExTrans ()
 Default value of parameter OdomMSCKF/InitCovExTrans : 0.000025 .
 
static std::string typeOdomMSCKFInitCovExTrans ()
 Type of parameter OdomMSCKF/InitCovExTrans , as a string: double .
 
static std::string kOdomMSCKFMaxCamStateSize ()
 Key of parameter OdomMSCKF/MaxCamStateSize : "" Default value: 20 ( int ).
 
static int defaultOdomMSCKFMaxCamStateSize ()
 Default value of parameter OdomMSCKF/MaxCamStateSize : 20 .
 
static std::string typeOdomMSCKFMaxCamStateSize ()
 Type of parameter OdomMSCKF/MaxCamStateSize , as a string: int .
 
static std::string kOdomVINSFusionConfigPath ()
 Key of parameter OdomVINSFusion/ConfigPath : "Path of VINS-Fusion config file." Default value: "" (string).
 
static std::string defaultOdomVINSFusionConfigPath ()
 Default value of parameter OdomVINSFusion/ConfigPath : "" .
 
static std::string typeOdomVINSFusionConfigPath ()
 Type of parameter OdomVINSFusion/ConfigPath , as a string: string.
 
static std::string kOdomOpenVINSConfigPath ()
 Key of parameter OdomOpenVINS/ConfigPath : "Path of OpenVINS config file (*.yaml). Same format used than OpenVINS library. Note that any parameter from that config file will overwrite the same parameter in OdomOpenVINS group." Default value: "" (string).
 
static std::string defaultOdomOpenVINSConfigPath ()
 Default value of parameter OdomOpenVINS/ConfigPath : "" .
 
static std::string typeOdomOpenVINSConfigPath ()
 Type of parameter OdomOpenVINS/ConfigPath , as a string: string.
 
static std::string kOdomOpenVINSUseStereo ()
 Key of parameter OdomOpenVINS/UseStereo : "If we have more than 1 camera, if we should try to track stereo constraints between pairs." Default value: true ( bool ).
 
static bool defaultOdomOpenVINSUseStereo ()
 Default value of parameter OdomOpenVINS/UseStereo : true .
 
static std::string typeOdomOpenVINSUseStereo ()
 Type of parameter OdomOpenVINS/UseStereo , as a string: bool .
 
static std::string kOdomOpenVINSUseKLT ()
 Key of parameter OdomOpenVINS/UseKLT : "If true we will use KLT, otherwise use a ORB descriptor + robust matching." Default value: true ( bool ).
 
static bool defaultOdomOpenVINSUseKLT ()
 Default value of parameter OdomOpenVINS/UseKLT : true .
 
static std::string typeOdomOpenVINSUseKLT ()
 Type of parameter OdomOpenVINS/UseKLT , as a string: bool .
 
static std::string kOdomOpenVINSNumPts ()
 Key of parameter OdomOpenVINS/NumPts : "Number of points (per camera) we will extract and try to track." Default value: 200 ( int ).
 
static int defaultOdomOpenVINSNumPts ()
 Default value of parameter OdomOpenVINS/NumPts : 200 .
 
static std::string typeOdomOpenVINSNumPts ()
 Type of parameter OdomOpenVINS/NumPts , as a string: int .
 
static std::string kOdomOpenVINSMinPxDist ()
 Key of parameter OdomOpenVINS/MinPxDist : "Eistance between features (features near each other provide less information)." Default value: 15 ( int ).
 
static int defaultOdomOpenVINSMinPxDist ()
 Default value of parameter OdomOpenVINS/MinPxDist : 15 .
 
static std::string typeOdomOpenVINSMinPxDist ()
 Type of parameter OdomOpenVINS/MinPxDist , as a string: int .
 
static std::string kOdomOpenVINSFiTriangulate1d ()
 Key of parameter OdomOpenVINS/FiTriangulate1d : "If we should perform 1d triangulation instead of 3d." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSFiTriangulate1d ()
 Default value of parameter OdomOpenVINS/FiTriangulate1d : false .
 
static std::string typeOdomOpenVINSFiTriangulate1d ()
 Type of parameter OdomOpenVINS/FiTriangulate1d , as a string: bool .
 
static std::string kOdomOpenVINSFiRefineFeatures ()
 Key of parameter OdomOpenVINS/FiRefineFeatures : "If we should perform Levenberg-Marquardt refinement." Default value: true ( bool ).
 
static bool defaultOdomOpenVINSFiRefineFeatures ()
 Default value of parameter OdomOpenVINS/FiRefineFeatures : true .
 
static std::string typeOdomOpenVINSFiRefineFeatures ()
 Type of parameter OdomOpenVINS/FiRefineFeatures , as a string: bool .
 
static std::string kOdomOpenVINSFiMaxRuns ()
 Key of parameter OdomOpenVINS/FiMaxRuns : "Max runs for Levenberg-Marquardt." Default value: 5 ( int ).
 
static int defaultOdomOpenVINSFiMaxRuns ()
 Default value of parameter OdomOpenVINS/FiMaxRuns : 5 .
 
static std::string typeOdomOpenVINSFiMaxRuns ()
 Type of parameter OdomOpenVINS/FiMaxRuns , as a string: int .
 
static std::string kOdomOpenVINSFiMaxBaseline ()
 Key of parameter OdomOpenVINS/FiMaxBaseline : "Max baseline ratio to accept triangulated features." Default value: 40 ( double ).
 
static double defaultOdomOpenVINSFiMaxBaseline ()
 Default value of parameter OdomOpenVINS/FiMaxBaseline : 40 .
 
static std::string typeOdomOpenVINSFiMaxBaseline ()
 Type of parameter OdomOpenVINS/FiMaxBaseline , as a string: double .
 
static std::string kOdomOpenVINSFiMaxCondNumber ()
 Key of parameter OdomOpenVINS/FiMaxCondNumber : "Max condition number of linear triangulation matrix accept triangulated features." Default value: 10000 ( double ).
 
static double defaultOdomOpenVINSFiMaxCondNumber ()
 Default value of parameter OdomOpenVINS/FiMaxCondNumber : 10000 .
 
static std::string typeOdomOpenVINSFiMaxCondNumber ()
 Type of parameter OdomOpenVINS/FiMaxCondNumber , as a string: double .
 
static std::string kOdomOpenVINSUseFEJ ()
 Key of parameter OdomOpenVINS/UseFEJ : "If first-estimate Jacobians should be used (enable for good consistency)." Default value: true ( bool ).
 
static bool defaultOdomOpenVINSUseFEJ ()
 Default value of parameter OdomOpenVINS/UseFEJ : true .
 
static std::string typeOdomOpenVINSUseFEJ ()
 Type of parameter OdomOpenVINS/UseFEJ , as a string: bool .
 
static std::string kOdomOpenVINSIntegration ()
 Key of parameter OdomOpenVINS/Integration : "0=discrete, 1=rk4, 2=analytical (if rk4 or analytical used then analytical covariance propagation is used)." Default value: 1 ( int ).
 
static int defaultOdomOpenVINSIntegration ()
 Default value of parameter OdomOpenVINS/Integration : 1 .
 
static std::string typeOdomOpenVINSIntegration ()
 Type of parameter OdomOpenVINS/Integration , as a string: int .
 
static std::string kOdomOpenVINSCalibCamExtrinsics ()
 Key of parameter OdomOpenVINS/CalibCamExtrinsics : "Bool to determine whether or not to calibrate imu-to-camera pose." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSCalibCamExtrinsics ()
 Default value of parameter OdomOpenVINS/CalibCamExtrinsics : false .
 
static std::string typeOdomOpenVINSCalibCamExtrinsics ()
 Type of parameter OdomOpenVINS/CalibCamExtrinsics , as a string: bool .
 
static std::string kOdomOpenVINSCalibCamIntrinsics ()
 Key of parameter OdomOpenVINS/CalibCamIntrinsics : "Bool to determine whether or not to calibrate camera intrinsics." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSCalibCamIntrinsics ()
 Default value of parameter OdomOpenVINS/CalibCamIntrinsics : false .
 
static std::string typeOdomOpenVINSCalibCamIntrinsics ()
 Type of parameter OdomOpenVINS/CalibCamIntrinsics , as a string: bool .
 
static std::string kOdomOpenVINSCalibCamTimeoffset ()
 Key of parameter OdomOpenVINS/CalibCamTimeoffset : "Bool to determine whether or not to calibrate camera to IMU time offset." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSCalibCamTimeoffset ()
 Default value of parameter OdomOpenVINS/CalibCamTimeoffset : false .
 
static std::string typeOdomOpenVINSCalibCamTimeoffset ()
 Type of parameter OdomOpenVINS/CalibCamTimeoffset , as a string: bool .
 
static std::string kOdomOpenVINSCalibIMUIntrinsics ()
 Key of parameter OdomOpenVINS/CalibIMUIntrinsics : "Bool to determine whether or not to calibrate the IMU intrinsics." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSCalibIMUIntrinsics ()
 Default value of parameter OdomOpenVINS/CalibIMUIntrinsics : false .
 
static std::string typeOdomOpenVINSCalibIMUIntrinsics ()
 Type of parameter OdomOpenVINS/CalibIMUIntrinsics , as a string: bool .
 
static std::string kOdomOpenVINSCalibIMUGSensitivity ()
 Key of parameter OdomOpenVINS/CalibIMUGSensitivity : "Bool to determine whether or not to calibrate the Gravity sensitivity." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSCalibIMUGSensitivity ()
 Default value of parameter OdomOpenVINS/CalibIMUGSensitivity : false .
 
static std::string typeOdomOpenVINSCalibIMUGSensitivity ()
 Type of parameter OdomOpenVINS/CalibIMUGSensitivity , as a string: bool .
 
static std::string kOdomOpenVINSMaxClones ()
 Key of parameter OdomOpenVINS/MaxClones : "Max clone size of sliding window." Default value: 11 ( int ).
 
static int defaultOdomOpenVINSMaxClones ()
 Default value of parameter OdomOpenVINS/MaxClones : 11 .
 
static std::string typeOdomOpenVINSMaxClones ()
 Type of parameter OdomOpenVINS/MaxClones , as a string: int .
 
static std::string kOdomOpenVINSMaxSLAM ()
 Key of parameter OdomOpenVINS/MaxSLAM : "Max number of estimated SLAM features." Default value: 50 ( int ).
 
static int defaultOdomOpenVINSMaxSLAM ()
 Default value of parameter OdomOpenVINS/MaxSLAM : 50 .
 
static std::string typeOdomOpenVINSMaxSLAM ()
 Type of parameter OdomOpenVINS/MaxSLAM , as a string: int .
 
static std::string kOdomOpenVINSMaxSLAMInUpdate ()
 Key of parameter OdomOpenVINS/MaxSLAMInUpdate : "Max number of SLAM features we allow to be included in a single EKF update.." Default value: 25 ( int ).
 
static int defaultOdomOpenVINSMaxSLAMInUpdate ()
 Default value of parameter OdomOpenVINS/MaxSLAMInUpdate : 25 .
 
static std::string typeOdomOpenVINSMaxSLAMInUpdate ()
 Type of parameter OdomOpenVINS/MaxSLAMInUpdate , as a string: int .
 
static std::string kOdomOpenVINSMaxMSCKFInUpdate ()
 Key of parameter OdomOpenVINS/MaxMSCKFInUpdate : "Max number of MSCKF features we will use at a given image timestep.." Default value: 50 ( int ).
 
static int defaultOdomOpenVINSMaxMSCKFInUpdate ()
 Default value of parameter OdomOpenVINS/MaxMSCKFInUpdate : 50 .
 
static std::string typeOdomOpenVINSMaxMSCKFInUpdate ()
 Type of parameter OdomOpenVINS/MaxMSCKFInUpdate , as a string: int .
 
static std::string kOdomOpenVINSFeatRepMSCKF ()
 Key of parameter OdomOpenVINS/FeatRepMSCKF : "What representation our features are in (msckf features)." Default value: 0 ( int ).
 
static int defaultOdomOpenVINSFeatRepMSCKF ()
 Default value of parameter OdomOpenVINS/FeatRepMSCKF : 0 .
 
static std::string typeOdomOpenVINSFeatRepMSCKF ()
 Type of parameter OdomOpenVINS/FeatRepMSCKF , as a string: int .
 
static std::string kOdomOpenVINSFeatRepSLAM ()
 Key of parameter OdomOpenVINS/FeatRepSLAM : "What representation our features are in (slam features)." Default value: 4 ( int ).
 
static int defaultOdomOpenVINSFeatRepSLAM ()
 Default value of parameter OdomOpenVINS/FeatRepSLAM : 4 .
 
static std::string typeOdomOpenVINSFeatRepSLAM ()
 Type of parameter OdomOpenVINS/FeatRepSLAM , as a string: int .
 
static std::string kOdomOpenVINSDtSLAMDelay ()
 Key of parameter OdomOpenVINS/DtSLAMDelay : "Delay, in seconds, that we should wait from init before we start estimating SLAM features." Default value: 0.0 ( double ).
 
static double defaultOdomOpenVINSDtSLAMDelay ()
 Default value of parameter OdomOpenVINS/DtSLAMDelay : 0.0 .
 
static std::string typeOdomOpenVINSDtSLAMDelay ()
 Type of parameter OdomOpenVINS/DtSLAMDelay , as a string: double .
 
static std::string kOdomOpenVINSGravityMag ()
 Key of parameter OdomOpenVINS/GravityMag : "Gravity magnitude in the global frame (i.e. should be 9.81 typically)." Default value: 9.81 ( double ).
 
static double defaultOdomOpenVINSGravityMag ()
 Default value of parameter OdomOpenVINS/GravityMag : 9.81 .
 
static std::string typeOdomOpenVINSGravityMag ()
 Type of parameter OdomOpenVINS/GravityMag , as a string: double .
 
static std::string kOdomOpenVINSLeftMaskPath ()
 Key of parameter OdomOpenVINS/LeftMaskPath : "Mask for left image." Default value: "" (string).
 
static std::string defaultOdomOpenVINSLeftMaskPath ()
 Default value of parameter OdomOpenVINS/LeftMaskPath : "" .
 
static std::string typeOdomOpenVINSLeftMaskPath ()
 Type of parameter OdomOpenVINS/LeftMaskPath , as a string: string.
 
static std::string kOdomOpenVINSRightMaskPath ()
 Key of parameter OdomOpenVINS/RightMaskPath : "Mask for right image." Default value: "" (string).
 
static std::string defaultOdomOpenVINSRightMaskPath ()
 Default value of parameter OdomOpenVINS/RightMaskPath : "" .
 
static std::string typeOdomOpenVINSRightMaskPath ()
 Type of parameter OdomOpenVINS/RightMaskPath , as a string: string.
 
static std::string kOdomOpenVINSInitWindowTime ()
 Key of parameter OdomOpenVINS/InitWindowTime : "Amount of time we will initialize over (seconds)." Default value: 2.0 ( double ).
 
static double defaultOdomOpenVINSInitWindowTime ()
 Default value of parameter OdomOpenVINS/InitWindowTime : 2.0 .
 
static std::string typeOdomOpenVINSInitWindowTime ()
 Type of parameter OdomOpenVINS/InitWindowTime , as a string: double .
 
static std::string kOdomOpenVINSInitIMUThresh ()
 Key of parameter OdomOpenVINS/InitIMUThresh : "Variance threshold on our acceleration to be classified as moving." Default value: 1.0 ( double ).
 
static double defaultOdomOpenVINSInitIMUThresh ()
 Default value of parameter OdomOpenVINS/InitIMUThresh : 1.0 .
 
static std::string typeOdomOpenVINSInitIMUThresh ()
 Type of parameter OdomOpenVINS/InitIMUThresh , as a string: double .
 
static std::string kOdomOpenVINSInitMaxDisparity ()
 Key of parameter OdomOpenVINS/InitMaxDisparity : "Max disparity to consider the platform stationary (dependent on resolution)." Default value: 10.0 ( double ).
 
static double defaultOdomOpenVINSInitMaxDisparity ()
 Default value of parameter OdomOpenVINS/InitMaxDisparity : 10.0 .
 
static std::string typeOdomOpenVINSInitMaxDisparity ()
 Type of parameter OdomOpenVINS/InitMaxDisparity , as a string: double .
 
static std::string kOdomOpenVINSInitMaxFeatures ()
 Key of parameter OdomOpenVINS/InitMaxFeatures : "How many features to track during initialization (saves on computation)." Default value: 50 ( int ).
 
static int defaultOdomOpenVINSInitMaxFeatures ()
 Default value of parameter OdomOpenVINS/InitMaxFeatures : 50 .
 
static std::string typeOdomOpenVINSInitMaxFeatures ()
 Type of parameter OdomOpenVINS/InitMaxFeatures , as a string: int .
 
static std::string kOdomOpenVINSInitDynUse ()
 Key of parameter OdomOpenVINS/InitDynUse : "If dynamic initialization should be used." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSInitDynUse ()
 Default value of parameter OdomOpenVINS/InitDynUse : false .
 
static std::string typeOdomOpenVINSInitDynUse ()
 Type of parameter OdomOpenVINS/InitDynUse , as a string: bool .
 
static std::string kOdomOpenVINSInitDynMLEOptCalib ()
 Key of parameter OdomOpenVINS/InitDynMLEOptCalib : "If we should optimize calibration during intialization (not recommended)." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSInitDynMLEOptCalib ()
 Default value of parameter OdomOpenVINS/InitDynMLEOptCalib : false .
 
static std::string typeOdomOpenVINSInitDynMLEOptCalib ()
 Type of parameter OdomOpenVINS/InitDynMLEOptCalib , as a string: bool .
 
static std::string kOdomOpenVINSInitDynMLEMaxIter ()
 Key of parameter OdomOpenVINS/InitDynMLEMaxIter : "How many iterations the MLE refinement should use (zero to skip the MLE)." Default value: 50 ( int ).
 
static int defaultOdomOpenVINSInitDynMLEMaxIter ()
 Default value of parameter OdomOpenVINS/InitDynMLEMaxIter : 50 .
 
static std::string typeOdomOpenVINSInitDynMLEMaxIter ()
 Type of parameter OdomOpenVINS/InitDynMLEMaxIter , as a string: int .
 
static std::string kOdomOpenVINSInitDynMLEMaxTime ()
 Key of parameter OdomOpenVINS/InitDynMLEMaxTime : "How many seconds the MLE should be completed in." Default value: 0.05 ( double ).
 
static double defaultOdomOpenVINSInitDynMLEMaxTime ()
 Default value of parameter OdomOpenVINS/InitDynMLEMaxTime : 0.05 .
 
static std::string typeOdomOpenVINSInitDynMLEMaxTime ()
 Type of parameter OdomOpenVINS/InitDynMLEMaxTime , as a string: double .
 
static std::string kOdomOpenVINSInitDynMLEMaxThreads ()
 Key of parameter OdomOpenVINS/InitDynMLEMaxThreads : "How many threads the MLE should use." Default value: 6 ( int ).
 
static int defaultOdomOpenVINSInitDynMLEMaxThreads ()
 Default value of parameter OdomOpenVINS/InitDynMLEMaxThreads : 6 .
 
static std::string typeOdomOpenVINSInitDynMLEMaxThreads ()
 Type of parameter OdomOpenVINS/InitDynMLEMaxThreads , as a string: int .
 
static std::string kOdomOpenVINSInitDynNumPose ()
 Key of parameter OdomOpenVINS/InitDynNumPose : "Number of poses to use within our window time (evenly spaced)." Default value: 6 ( int ).
 
static int defaultOdomOpenVINSInitDynNumPose ()
 Default value of parameter OdomOpenVINS/InitDynNumPose : 6 .
 
static std::string typeOdomOpenVINSInitDynNumPose ()
 Type of parameter OdomOpenVINS/InitDynNumPose , as a string: int .
 
static std::string kOdomOpenVINSInitDynMinDeg ()
 Key of parameter OdomOpenVINS/InitDynMinDeg : "Orientation change needed to try to init." Default value: 10.0 ( double ).
 
static double defaultOdomOpenVINSInitDynMinDeg ()
 Default value of parameter OdomOpenVINS/InitDynMinDeg : 10.0 .
 
static std::string typeOdomOpenVINSInitDynMinDeg ()
 Type of parameter OdomOpenVINS/InitDynMinDeg , as a string: double .
 
static std::string kOdomOpenVINSInitDynInflationOri ()
 Key of parameter OdomOpenVINS/InitDynInflationOri : "What to inflate the recovered q_GtoI covariance by." Default value: 10.0 ( double ).
 
static double defaultOdomOpenVINSInitDynInflationOri ()
 Default value of parameter OdomOpenVINS/InitDynInflationOri : 10.0 .
 
static std::string typeOdomOpenVINSInitDynInflationOri ()
 Type of parameter OdomOpenVINS/InitDynInflationOri , as a string: double .
 
static std::string kOdomOpenVINSInitDynInflationVel ()
 Key of parameter OdomOpenVINS/InitDynInflationVel : "What to inflate the recovered v_IinG covariance by." Default value: 100.0 ( double ).
 
static double defaultOdomOpenVINSInitDynInflationVel ()
 Default value of parameter OdomOpenVINS/InitDynInflationVel : 100.0 .
 
static std::string typeOdomOpenVINSInitDynInflationVel ()
 Type of parameter OdomOpenVINS/InitDynInflationVel , as a string: double .
 
static std::string kOdomOpenVINSInitDynInflationBg ()
 Key of parameter OdomOpenVINS/InitDynInflationBg : "What to inflate the recovered bias_g covariance by." Default value: 10.0 ( double ).
 
static double defaultOdomOpenVINSInitDynInflationBg ()
 Default value of parameter OdomOpenVINS/InitDynInflationBg : 10.0 .
 
static std::string typeOdomOpenVINSInitDynInflationBg ()
 Type of parameter OdomOpenVINS/InitDynInflationBg , as a string: double .
 
static std::string kOdomOpenVINSInitDynInflationBa ()
 Key of parameter OdomOpenVINS/InitDynInflationBa : "What to inflate the recovered bias_a covariance by." Default value: 100.0 ( double ).
 
static double defaultOdomOpenVINSInitDynInflationBa ()
 Default value of parameter OdomOpenVINS/InitDynInflationBa : 100.0 .
 
static std::string typeOdomOpenVINSInitDynInflationBa ()
 Type of parameter OdomOpenVINS/InitDynInflationBa , as a string: double .
 
static std::string kOdomOpenVINSInitDynMinRecCond ()
 Key of parameter OdomOpenVINS/InitDynMinRecCond : "Reciprocal condition number thresh for info inversion." Default value: 1e-15 ( double ).
 
static double defaultOdomOpenVINSInitDynMinRecCond ()
 Default value of parameter OdomOpenVINS/InitDynMinRecCond : 1e-15 .
 
static std::string typeOdomOpenVINSInitDynMinRecCond ()
 Type of parameter OdomOpenVINS/InitDynMinRecCond , as a string: double .
 
static std::string kOdomOpenVINSTryZUPT ()
 Key of parameter OdomOpenVINS/TryZUPT : "If we should try to use zero velocity update." Default value: true ( bool ).
 
static bool defaultOdomOpenVINSTryZUPT ()
 Default value of parameter OdomOpenVINS/TryZUPT : true .
 
static std::string typeOdomOpenVINSTryZUPT ()
 Type of parameter OdomOpenVINS/TryZUPT , as a string: bool .
 
static std::string kOdomOpenVINSZUPTChi2Multiplier ()
 Key of parameter OdomOpenVINS/ZUPTChi2Multiplier : "Chi2 multiplier for zero velocity." Default value: 0.0 ( double ).
 
static double defaultOdomOpenVINSZUPTChi2Multiplier ()
 Default value of parameter OdomOpenVINS/ZUPTChi2Multiplier : 0.0 .
 
static std::string typeOdomOpenVINSZUPTChi2Multiplier ()
 Type of parameter OdomOpenVINS/ZUPTChi2Multiplier , as a string: double .
 
static std::string kOdomOpenVINSZUPTMaxVelodicy ()
 Key of parameter OdomOpenVINS/ZUPTMaxVelodicy : "Max velocity we will consider to try to do a zupt (i.e. if above this, don't do zupt)." Default value: 0.1 ( double ).
 
static double defaultOdomOpenVINSZUPTMaxVelodicy ()
 Default value of parameter OdomOpenVINS/ZUPTMaxVelodicy : 0.1 .
 
static std::string typeOdomOpenVINSZUPTMaxVelodicy ()
 Type of parameter OdomOpenVINS/ZUPTMaxVelodicy , as a string: double .
 
static std::string kOdomOpenVINSZUPTNoiseMultiplier ()
 Key of parameter OdomOpenVINS/ZUPTNoiseMultiplier : "Multiplier of our zupt measurement IMU noise matrix (default should be 1.0)." Default value: 10.0 ( double ).
 
static double defaultOdomOpenVINSZUPTNoiseMultiplier ()
 Default value of parameter OdomOpenVINS/ZUPTNoiseMultiplier : 10.0 .
 
static std::string typeOdomOpenVINSZUPTNoiseMultiplier ()
 Type of parameter OdomOpenVINS/ZUPTNoiseMultiplier , as a string: double .
 
static std::string kOdomOpenVINSZUPTMaxDisparity ()
 Key of parameter OdomOpenVINS/ZUPTMaxDisparity : "Max disparity we will consider to try to do a zupt (i.e. if above this, don't do zupt)." Default value: 0.5 ( double ).
 
static double defaultOdomOpenVINSZUPTMaxDisparity ()
 Default value of parameter OdomOpenVINS/ZUPTMaxDisparity : 0.5 .
 
static std::string typeOdomOpenVINSZUPTMaxDisparity ()
 Type of parameter OdomOpenVINS/ZUPTMaxDisparity , as a string: double .
 
static std::string kOdomOpenVINSZUPTOnlyAtBeginning ()
 Key of parameter OdomOpenVINS/ZUPTOnlyAtBeginning : "If we should only use the zupt at the very beginning static initialization phase." Default value: false ( bool ).
 
static bool defaultOdomOpenVINSZUPTOnlyAtBeginning ()
 Default value of parameter OdomOpenVINS/ZUPTOnlyAtBeginning : false .
 
static std::string typeOdomOpenVINSZUPTOnlyAtBeginning ()
 Type of parameter OdomOpenVINS/ZUPTOnlyAtBeginning , as a string: bool .
 
static std::string kOdomOpenVINSAccelerometerNoiseDensity ()
 Key of parameter OdomOpenVINS/AccelerometerNoiseDensity : "[m/s^2/sqrt(Hz)] (accel \"white noise\")." Default value: 0.01 ( double ).
 
static double defaultOdomOpenVINSAccelerometerNoiseDensity ()
 Default value of parameter OdomOpenVINS/AccelerometerNoiseDensity : 0.01 .
 
static std::string typeOdomOpenVINSAccelerometerNoiseDensity ()
 Type of parameter OdomOpenVINS/AccelerometerNoiseDensity , as a string: double .
 
static std::string kOdomOpenVINSAccelerometerRandomWalk ()
 Key of parameter OdomOpenVINS/AccelerometerRandomWalk : "[m/s^3/sqrt(Hz)] (accel bias diffusion)." Default value: 0.001 ( double ).
 
static double defaultOdomOpenVINSAccelerometerRandomWalk ()
 Default value of parameter OdomOpenVINS/AccelerometerRandomWalk : 0.001 .
 
static std::string typeOdomOpenVINSAccelerometerRandomWalk ()
 Type of parameter OdomOpenVINS/AccelerometerRandomWalk , as a string: double .
 
static std::string kOdomOpenVINSGyroscopeNoiseDensity ()
 Key of parameter OdomOpenVINS/GyroscopeNoiseDensity : "[rad/s/sqrt(Hz)] (gyro \"white noise\")." Default value: 0.001 ( double ).
 
static double defaultOdomOpenVINSGyroscopeNoiseDensity ()
 Default value of parameter OdomOpenVINS/GyroscopeNoiseDensity : 0.001 .
 
static std::string typeOdomOpenVINSGyroscopeNoiseDensity ()
 Type of parameter OdomOpenVINS/GyroscopeNoiseDensity , as a string: double .
 
static std::string kOdomOpenVINSGyroscopeRandomWalk ()
 Key of parameter OdomOpenVINS/GyroscopeRandomWalk : "[rad/s^2/sqrt(Hz)] (gyro bias diffusion)." Default value: 0.0001 ( double ).
 
static double defaultOdomOpenVINSGyroscopeRandomWalk ()
 Default value of parameter OdomOpenVINS/GyroscopeRandomWalk : 0.0001 .
 
static std::string typeOdomOpenVINSGyroscopeRandomWalk ()
 Type of parameter OdomOpenVINS/GyroscopeRandomWalk , as a string: double .
 
static std::string kOdomOpenVINSUpMSCKFSigmaPx ()
 Key of parameter OdomOpenVINS/UpMSCKFSigmaPx : "Pixel noise for MSCKF features." Default value: 1.0 ( double ).
 
static double defaultOdomOpenVINSUpMSCKFSigmaPx ()
 Default value of parameter OdomOpenVINS/UpMSCKFSigmaPx : 1.0 .
 
static std::string typeOdomOpenVINSUpMSCKFSigmaPx ()
 Type of parameter OdomOpenVINS/UpMSCKFSigmaPx , as a string: double .
 
static std::string kOdomOpenVINSUpMSCKFChi2Multiplier ()
 Key of parameter OdomOpenVINS/UpMSCKFChi2Multiplier : "Chi2 multiplier for MSCKF features." Default value: 1.0 ( double ).
 
static double defaultOdomOpenVINSUpMSCKFChi2Multiplier ()
 Default value of parameter OdomOpenVINS/UpMSCKFChi2Multiplier : 1.0 .
 
static std::string typeOdomOpenVINSUpMSCKFChi2Multiplier ()
 Type of parameter OdomOpenVINS/UpMSCKFChi2Multiplier , as a string: double .
 
static std::string kOdomOpenVINSUpSLAMSigmaPx ()
 Key of parameter OdomOpenVINS/UpSLAMSigmaPx : "Pixel noise for SLAM features." Default value: 1.0 ( double ).
 
static double defaultOdomOpenVINSUpSLAMSigmaPx ()
 Default value of parameter OdomOpenVINS/UpSLAMSigmaPx : 1.0 .
 
static std::string typeOdomOpenVINSUpSLAMSigmaPx ()
 Type of parameter OdomOpenVINS/UpSLAMSigmaPx , as a string: double .
 
static std::string kOdomOpenVINSUpSLAMChi2Multiplier ()
 Key of parameter OdomOpenVINS/UpSLAMChi2Multiplier : "Chi2 multiplier for SLAM features." Default value: 1.0 ( double ).
 
static double defaultOdomOpenVINSUpSLAMChi2Multiplier ()
 Default value of parameter OdomOpenVINS/UpSLAMChi2Multiplier : 1.0 .
 
static std::string typeOdomOpenVINSUpSLAMChi2Multiplier ()
 Type of parameter OdomOpenVINS/UpSLAMChi2Multiplier , as a string: double .
 
static std::string kOdomOpen3DMaxDepth ()
 Key of parameter OdomOpen3D/MaxDepth : "Maximum depth." Default value: 3.0 ( float ).
 
static float defaultOdomOpen3DMaxDepth ()
 Default value of parameter OdomOpen3D/MaxDepth : 3.0 .
 
static std::string typeOdomOpen3DMaxDepth ()
 Type of parameter OdomOpen3D/MaxDepth , as a string: float .
 
static std::string kOdomOpen3DMethod ()
 Key of parameter OdomOpen3D/Method : "Registration method: 0=PointToPlane, 1=Intensity, 2=Hybrid." Default value: 0 ( int ).
 
static int defaultOdomOpen3DMethod ()
 Default value of parameter OdomOpen3D/Method : 0 .
 
static std::string typeOdomOpen3DMethod ()
 Type of parameter OdomOpen3D/Method , as a string: int .
 
static std::string kOdomCuVSLAMMulticamMode ()
 Key of parameter OdomCuVSLAM/MulticamMode : "cuVSLAM multicam_mode setting: 0=moderate, 1=performance, 2=precision." Default value: 0 ( int ).
 
static int defaultOdomCuVSLAMMulticamMode ()
 Default value of parameter OdomCuVSLAM/MulticamMode : 0 .
 
static std::string typeOdomCuVSLAMMulticamMode ()
 Type of parameter OdomCuVSLAM/MulticamMode , as a string: int .
 
static std::string kOdomLIOSAMConfigPath ()
 Key of parameter OdomLIOSAM/ConfigPath : "Path to LIO-SAM params.yaml config file. When set, sensor/IMU/feature parameters are loaded from the file and the individual parameters below are ignored." Default value: "" (string).
 
static std::string defaultOdomLIOSAMConfigPath ()
 Default value of parameter OdomLIOSAM/ConfigPath : "" .
 
static std::string typeOdomLIOSAMConfigPath ()
 Type of parameter OdomLIOSAM/ConfigPath , as a string: string.
 
static std::string kOdomLIOSAMSensor ()
 Key of parameter OdomLIOSAM/Sensor : "LiDAR sensor: 0=Velodyne, 1=Ouster, 2=Livox" Default value: 0 ( int ).
 
static int defaultOdomLIOSAMSensor ()
 Default value of parameter OdomLIOSAM/Sensor : 0 .
 
static std::string typeOdomLIOSAMSensor ()
 Type of parameter OdomLIOSAM/Sensor , as a string: int .
 
static std::string kOdomLIOSAMNScan ()
 Key of parameter OdomLIOSAM/NScan : "Number of LiDAR channels (16, 32, 64, 128)." Default value: 16 ( int ).
 
static int defaultOdomLIOSAMNScan ()
 Default value of parameter OdomLIOSAM/NScan : 16 .
 
static std::string typeOdomLIOSAMNScan ()
 Type of parameter OdomLIOSAM/NScan , as a string: int .
 
static std::string kOdomLIOSAMHorizonScan ()
 Key of parameter OdomLIOSAM/HorizonScan : "Horizontal resolution (Velodyne:1800, Ouster:512/1024/2048)." Default value: 1800 ( int ).
 
static int defaultOdomLIOSAMHorizonScan ()
 Default value of parameter OdomLIOSAM/HorizonScan : 1800 .
 
static std::string typeOdomLIOSAMHorizonScan ()
 Type of parameter OdomLIOSAM/HorizonScan , as a string: int .
 
static std::string kOdomLIOSAMImuAccNoise ()
 Key of parameter OdomLIOSAM/ImuAccNoise : "IMU accelerometer white noise." Default value: 0.01 ( float ).
 
static float defaultOdomLIOSAMImuAccNoise ()
 Default value of parameter OdomLIOSAM/ImuAccNoise : 0.01 .
 
static std::string typeOdomLIOSAMImuAccNoise ()
 Type of parameter OdomLIOSAM/ImuAccNoise , as a string: float .
 
static std::string kOdomLIOSAMImuGyrNoise ()
 Key of parameter OdomLIOSAM/ImuGyrNoise : "IMU gyroscope white noise." Default value: 0.001 ( float ).
 
static float defaultOdomLIOSAMImuGyrNoise ()
 Default value of parameter OdomLIOSAM/ImuGyrNoise : 0.001 .
 
static std::string typeOdomLIOSAMImuGyrNoise ()
 Type of parameter OdomLIOSAM/ImuGyrNoise , as a string: float .
 
static std::string kOdomLIOSAMImuAccBiasN ()
 Key of parameter OdomLIOSAM/ImuAccBiasN : "IMU accelerometer bias noise." Default value: 0.0002 ( float ).
 
static float defaultOdomLIOSAMImuAccBiasN ()
 Default value of parameter OdomLIOSAM/ImuAccBiasN : 0.0002 .
 
static std::string typeOdomLIOSAMImuAccBiasN ()
 Type of parameter OdomLIOSAM/ImuAccBiasN , as a string: float .
 
static std::string kOdomLIOSAMImuGyrBiasN ()
 Key of parameter OdomLIOSAM/ImuGyrBiasN : "IMU gyroscope bias noise." Default value: 0.00003 ( float ).
 
static float defaultOdomLIOSAMImuGyrBiasN ()
 Default value of parameter OdomLIOSAM/ImuGyrBiasN : 0.00003 .
 
static std::string typeOdomLIOSAMImuGyrBiasN ()
 Type of parameter OdomLIOSAM/ImuGyrBiasN , as a string: float .
 
static std::string kOdomLIOSAMImuGravity ()
 Key of parameter OdomLIOSAM/ImuGravity : "Gravity magnitude." Default value: 9.80511 ( float ).
 
static float defaultOdomLIOSAMImuGravity ()
 Default value of parameter OdomLIOSAM/ImuGravity : 9.80511 .
 
static std::string typeOdomLIOSAMImuGravity ()
 Type of parameter OdomLIOSAM/ImuGravity , as a string: float .
 
static std::string kOdomLIOSAMEdgeThreshold ()
 Key of parameter OdomLIOSAM/EdgeThreshold : "Edge feature curvature threshold." Default value: 1.0 ( float ).
 
static float defaultOdomLIOSAMEdgeThreshold ()
 Default value of parameter OdomLIOSAM/EdgeThreshold : 1.0 .
 
static std::string typeOdomLIOSAMEdgeThreshold ()
 Type of parameter OdomLIOSAM/EdgeThreshold , as a string: float .
 
static std::string kOdomLIOSAMSurfThreshold ()
 Key of parameter OdomLIOSAM/SurfThreshold : "Surface feature curvature threshold." Default value: 0.1 ( float ).
 
static float defaultOdomLIOSAMSurfThreshold ()
 Default value of parameter OdomLIOSAM/SurfThreshold : 0.1 .
 
static std::string typeOdomLIOSAMSurfThreshold ()
 Type of parameter OdomLIOSAM/SurfThreshold , as a string: float .
 
static std::string kOdomLIOSAMLinVar ()
 Key of parameter OdomLIOSAM/LinVar : "Linear output variance." Default value: 0.01 ( float ).
 
static float defaultOdomLIOSAMLinVar ()
 Default value of parameter OdomLIOSAM/LinVar : 0.01 .
 
static std::string typeOdomLIOSAMLinVar ()
 Type of parameter OdomLIOSAM/LinVar , as a string: float .
 
static std::string kOdomLIOSAMAngVar ()
 Key of parameter OdomLIOSAM/AngVar : "Angular output variance." Default value: 0.01 ( float ).
 
static float defaultOdomLIOSAMAngVar ()
 Default value of parameter OdomLIOSAM/AngVar : 0.01 .
 
static std::string typeOdomLIOSAMAngVar ()
 Type of parameter OdomLIOSAM/AngVar , as a string: float .
 
static std::string kRegRepeatOnce ()
 Key of parameter Reg/RepeatOnce : "Do a second registration with the output of the first registration as guess. Only done if no guess was provided for the first registration (like on loop closure). It can be useful if the registration approach used can use a guess to get better matches." Default value: true ( bool ).
 
static bool defaultRegRepeatOnce ()
 Default value of parameter Reg/RepeatOnce : true .
 
static std::string typeRegRepeatOnce ()
 Type of parameter Reg/RepeatOnce , as a string: bool .
 
static std::string kRegStrategy ()
 Key of parameter Reg/Strategy : "0=Vis, 1=Icp, 2=VisIcp" Default value: 0 ( int ).
 
static int defaultRegStrategy ()
 Default value of parameter Reg/Strategy : 0 .
 
static std::string typeRegStrategy ()
 Type of parameter Reg/Strategy , as a string: int .
 
static std::string kRegForce3DoF ()
 Key of parameter Reg/Force3DoF : "Force 3 degrees-of-freedom transform (3Dof: x,y and yaw). Parameters z, roll and pitch will be set to 0." Default value: false ( bool ).
 
static bool defaultRegForce3DoF ()
 Default value of parameter Reg/Force3DoF : false .
 
static std::string typeRegForce3DoF ()
 Type of parameter Reg/Force3DoF , as a string: bool .
 
static std::string kVisEstimationType ()
 Key of parameter Vis/EstimationType : "Motion estimation approach: 0:3D->3D, 1:3D->2D (PnP), 2:2D->2D (Epipolar Geometry)" Default value: 1 ( int ).
 
static int defaultVisEstimationType ()
 Default value of parameter Vis/EstimationType : 1 .
 
static std::string typeVisEstimationType ()
 Type of parameter Vis/EstimationType , as a string: int .
 
static std::string kVisInlierDistance ()
 Key of parameter Vis/InlierDistance : uFormat("[%s = 0] Maximum distance for feature correspondences. Used by 3D->3D estimation approach.", kVisEstimationType().c_str()) Default value: 0.1 ( float ).
 
static float defaultVisInlierDistance ()
 Default value of parameter Vis/InlierDistance : 0.1 .
 
static std::string typeVisInlierDistance ()
 Type of parameter Vis/InlierDistance , as a string: float .
 
static std::string kVisRefineIterations ()
 Key of parameter Vis/RefineIterations : uFormat("[%s = 0] Number of iterations used to refine the transformation found by RANSAC. 0 means that the transformation is not refined.", kVisEstimationType().c_str()) Default value: 5 ( int ).
 
static int defaultVisRefineIterations ()
 Default value of parameter Vis/RefineIterations : 5 .
 
static std::string typeVisRefineIterations ()
 Type of parameter Vis/RefineIterations , as a string: int .
 
static std::string kVisPnPReprojError ()
 Key of parameter Vis/PnPReprojError : uFormat("[%s = 1] PnP reprojection error.", kVisEstimationType().c_str()) Default value: 2 ( float ).
 
static float defaultVisPnPReprojError ()
 Default value of parameter Vis/PnPReprojError : 2 .
 
static std::string typeVisPnPReprojError ()
 Type of parameter Vis/PnPReprojError , as a string: float .
 
static std::string kVisPnPFlags ()
 Key of parameter Vis/PnPFlags : uFormat("[%s = 1] PnP flags: 0=Iterative, 1=EPNP, 2=P3P", kVisEstimationType().c_str()) Default value: 0 ( int ).
 
static int defaultVisPnPFlags ()
 Default value of parameter Vis/PnPFlags : 0 .
 
static std::string typeVisPnPFlags ()
 Type of parameter Vis/PnPFlags , as a string: int .
 
static std::string kVisPnPRefineIterations ()
 Key of parameter Vis/PnPRefineIterations : uFormat("[%s = 1] Refine iterations. Set to 0 if \"%s\" is also used.", kVisEstimationType().c_str(), kVisBundleAdjustment().c_str()) Default value: 1 ( int ).
 
static int defaultVisPnPRefineIterations ()
 Default value of parameter Vis/PnPRefineIterations : 1 .
 
static std::string typeVisPnPRefineIterations ()
 Type of parameter Vis/PnPRefineIterations , as a string: int .
 
static std::string kVisPnPVarianceMedianRatio ()
 Key of parameter Vis/PnPVarianceMedianRatio : uFormat("[%s = 1] Ratio used to compute variance of the estimated transformation if 3D correspondences are provided (should be > 1). The higher it is, the smaller the covariance will be. With accurate depth estimation, this could be set to 2. For depth estimated by stereo, 4 or more maybe used to ignore large errors of very far points.", kVisEstimationType().c_str()) Default value: 4 ( int ).
 
static int defaultVisPnPVarianceMedianRatio ()
 Default value of parameter Vis/PnPVarianceMedianRatio : 4 .
 
static std::string typeVisPnPVarianceMedianRatio ()
 Type of parameter Vis/PnPVarianceMedianRatio , as a string: int .
 
static std::string kVisPnPMaxVariance ()
 Key of parameter Vis/PnPMaxVariance : uFormat("[%s = 1] Max linear variance between 3D point correspondences after PnP. 0 means disabled.", kVisEstimationType().c_str()) Default value: 0.0 ( float ).
 
static float defaultVisPnPMaxVariance ()
 Default value of parameter Vis/PnPMaxVariance : 0.0 .
 
static std::string typeVisPnPMaxVariance ()
 Type of parameter Vis/PnPMaxVariance , as a string: float .
 
static std::string kVisPnPSamplingPolicy ()
 Key of parameter Vis/PnPSamplingPolicy : uFormat("[%s = 1] Multi-camera random sampling policy: 0=AUTO, 1=ANY, 2=HOMOGENEOUS. With HOMOGENEOUS policy, RANSAC will be done uniformly against all cameras, so at least 2 matches per camera are required. With ANY policy, RANSAC is not constraint to sample on all cameras at the same time. AUTO policy will use HOMOGENEOUS if there are at least 2 matches per camera, otherwise it will fallback to ANY policy.", kVisEstimationType().c_str()).c_str() Default value: 1 ( unsigned int ).
 
static unsigned int defaultVisPnPSamplingPolicy ()
 Default value of parameter Vis/PnPSamplingPolicy : 1 .
 
static std::string typeVisPnPSamplingPolicy ()
 Type of parameter Vis/PnPSamplingPolicy , as a string: unsigned int .
 
static std::string kVisPnPSplitLinearCovComponents ()
 Key of parameter Vis/PnPSplitLinearCovComponents : uFormat("[%s = 1] Compute variance for each linear component instead of using the combined XYZ variance for all linear components.", kVisEstimationType().c_str()).c_str() Default value: false ( bool ).
 
static bool defaultVisPnPSplitLinearCovComponents ()
 Default value of parameter Vis/PnPSplitLinearCovComponents : false .
 
static std::string typeVisPnPSplitLinearCovComponents ()
 Type of parameter Vis/PnPSplitLinearCovComponents , as a string: bool .
 
static std::string kVisEpipolarGeometryVar ()
 Key of parameter Vis/EpipolarGeometryVar : uFormat("[%s = 2] Epipolar geometry maximum variance to accept the transformation.", kVisEstimationType().c_str()) Default value: 0.1 ( float ).
 
static float defaultVisEpipolarGeometryVar ()
 Default value of parameter Vis/EpipolarGeometryVar : 0.1 .
 
static std::string typeVisEpipolarGeometryVar ()
 Type of parameter Vis/EpipolarGeometryVar , as a string: float .
 
static std::string kVisMinInliers ()
 Key of parameter Vis/MinInliers : "Minimum feature correspondences to compute/accept the transformation." Default value: 20 ( int ).
 
static int defaultVisMinInliers ()
 Default value of parameter Vis/MinInliers : 20 .
 
static std::string typeVisMinInliers ()
 Type of parameter Vis/MinInliers , as a string: int .
 
static std::string kVisMeanInliersDistance ()
 Key of parameter Vis/MeanInliersDistance : "Maximum distance (m) of the mean distance of inliers from the camera to accept the transformation. 0 means disabled." Default value: 0.0 ( float ).
 
static float defaultVisMeanInliersDistance ()
 Default value of parameter Vis/MeanInliersDistance : 0.0 .
 
static std::string typeVisMeanInliersDistance ()
 Type of parameter Vis/MeanInliersDistance , as a string: float .
 
static std::string kVisMinInliersDistribution ()
 Key of parameter Vis/MinInliersDistribution : "Minimum distribution value of the inliers in the image to accept the transformation. The distribution is the second eigen value of the PCA (Principal Component Analysis) on the keypoints of the normalized image [-0.5, 0.5]. The value would be between 0 and 0.5. 0 means disabled." Default value: 0.0 ( float ).
 
static float defaultVisMinInliersDistribution ()
 Default value of parameter Vis/MinInliersDistribution : 0.0 .
 
static std::string typeVisMinInliersDistribution ()
 Type of parameter Vis/MinInliersDistribution , as a string: float .
 
static std::string kVisIterations ()
 Key of parameter Vis/Iterations : "Maximum iterations to compute the transform." Default value: 300 ( int ).
 
static int defaultVisIterations ()
 Default value of parameter Vis/Iterations : 300 .
 
static std::string typeVisIterations ()
 Type of parameter Vis/Iterations , as a string: int .
 
static std::string kVisFeatureType ()
 Key of parameter Vis/FeatureType : "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat" Default value: 6 ( int ).
 
static int defaultVisFeatureType ()
 Default value of parameter Vis/FeatureType : 6 .
 
static std::string typeVisFeatureType ()
 Type of parameter Vis/FeatureType , as a string: int .
 
static std::string kVisMaxFeatures ()
 Key of parameter Vis/MaxFeatures : "0 no limits." Default value: 1000 ( int ).
 
static int defaultVisMaxFeatures ()
 Default value of parameter Vis/MaxFeatures : 1000 .
 
static std::string typeVisMaxFeatures ()
 Type of parameter Vis/MaxFeatures , as a string: int .
 
static std::string kVisSSC ()
 Key of parameter Vis/SSC : "If true, SSC (Suppression via Square Covering) is applied to limit keypoints." Default value: false ( bool ).
 
static bool defaultVisSSC ()
 Default value of parameter Vis/SSC : false .
 
static std::string typeVisSSC ()
 Type of parameter Vis/SSC , as a string: bool .
 
static std::string kVisMaxDepth ()
 Key of parameter Vis/MaxDepth : "Max depth of the features (0 means no limit)." Default value: 0 ( float ).
 
static float defaultVisMaxDepth ()
 Default value of parameter Vis/MaxDepth : 0 .
 
static std::string typeVisMaxDepth ()
 Type of parameter Vis/MaxDepth , as a string: float .
 
static std::string kVisMinDepth ()
 Key of parameter Vis/MinDepth : "Min depth of the features (0 means no limit)." Default value: 0 ( float ).
 
static float defaultVisMinDepth ()
 Default value of parameter Vis/MinDepth : 0 .
 
static std::string typeVisMinDepth ()
 Type of parameter Vis/MinDepth , as a string: float .
 
static std::string kVisDepthAsMask ()
 Key of parameter Vis/DepthAsMask : "Use depth image as mask when extracting features." Default value: true ( bool ).
 
static bool defaultVisDepthAsMask ()
 Default value of parameter Vis/DepthAsMask : true .
 
static std::string typeVisDepthAsMask ()
 Type of parameter Vis/DepthAsMask , as a string: bool .
 
static std::string kVisDepthMaskFloorThr ()
 Key of parameter Vis/DepthMaskFloorThr : uFormat("Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if %s is false.", kVisDepthAsMask().c_str()) Default value: 0.0 ( float ).
 
static float defaultVisDepthMaskFloorThr ()
 Default value of parameter Vis/DepthMaskFloorThr : 0.0 .
 
static std::string typeVisDepthMaskFloorThr ()
 Type of parameter Vis/DepthMaskFloorThr , as a string: float .
 
static std::string kVisRoiRatios ()
 Key of parameter Vis/RoiRatios : "Region of interest ratios [left, right, top, bottom]." Default value: "0.0 0.0 0.0 0.0" (string).
 
static std::string defaultVisRoiRatios ()
 Default value of parameter Vis/RoiRatios : "0.0 0.0 0.0 0.0" .
 
static std::string typeVisRoiRatios ()
 Type of parameter Vis/RoiRatios , as a string: string.
 
static std::string kVisSubPixWinSize ()
 Key of parameter Vis/SubPixWinSize : "See cv::cornerSubPix()." Default value: 3 ( int ).
 
static int defaultVisSubPixWinSize ()
 Default value of parameter Vis/SubPixWinSize : 3 .
 
static std::string typeVisSubPixWinSize ()
 Type of parameter Vis/SubPixWinSize , as a string: int .
 
static std::string kVisSubPixIterations ()
 Key of parameter Vis/SubPixIterations : "See cv::cornerSubPix(). 0 disables sub pixel refining." Default value: 0 ( int ).
 
static int defaultVisSubPixIterations ()
 Default value of parameter Vis/SubPixIterations : 0 .
 
static std::string typeVisSubPixIterations ()
 Type of parameter Vis/SubPixIterations , as a string: int .
 
static std::string kVisSubPixEps ()
 Key of parameter Vis/SubPixEps : "See cv::cornerSubPix()." Default value: 0.02 ( float ).
 
static float defaultVisSubPixEps ()
 Default value of parameter Vis/SubPixEps : 0.02 .
 
static std::string typeVisSubPixEps ()
 Type of parameter Vis/SubPixEps , as a string: float .
 
static std::string kVisGridRows ()
 Key of parameter Vis/GridRows : uFormat("Number of rows of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kVisMaxFeatures().c_str()) Default value: 1 ( int ).
 
static int defaultVisGridRows ()
 Default value of parameter Vis/GridRows : 1 .
 
static std::string typeVisGridRows ()
 Type of parameter Vis/GridRows , as a string: int .
 
static std::string kVisGridCols ()
 Key of parameter Vis/GridCols : uFormat("Number of columns of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kVisMaxFeatures().c_str()) Default value: 1 ( int ).
 
static int defaultVisGridCols ()
 Default value of parameter Vis/GridCols : 1 .
 
static std::string typeVisGridCols ()
 Type of parameter Vis/GridCols , as a string: int .
 
static std::string kVisCorType ()
 Key of parameter Vis/CorType : "Correspondences computation approach: 0=Features Matching, 1=Optical Flow" Default value: 0 ( int ).
 
static int defaultVisCorType ()
 Default value of parameter Vis/CorType : 0 .
 
static std::string typeVisCorType ()
 Type of parameter Vis/CorType , as a string: int .
 
static std::string kVisCorNNType ()
 Key of parameter Vis/CorNNType : uFormat("[%s=0] FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, Brute Force Cross Check=5, SuperGlue=6, GMS=7, FLANN KdTree Single=8, NanoFLANN KdTree=9. Used for features matching approach.", kVisCorType().c_str()) Default value: 1 ( int ).
 
static int defaultVisCorNNType ()
 Default value of parameter Vis/CorNNType : 1 .
 
static std::string typeVisCorNNType ()
 Type of parameter Vis/CorNNType , as a string: int .
 
static std::string kVisCorNNDR ()
 Key of parameter Vis/CorNNDR : uFormat("[%s=0] NNDR: nearest neighbor distance ratio. Used for knn features matching approach.", kVisCorType().c_str()) Default value: 0.8 ( float ).
 
static float defaultVisCorNNDR ()
 Default value of parameter Vis/CorNNDR : 0.8 .
 
static std::string typeVisCorNNDR ()
 Type of parameter Vis/CorNNDR , as a string: float .
 
static std::string kVisCorGuessWinSize ()
 Key of parameter Vis/CorGuessWinSize : uFormat("[%s=0] Matching window size (pixels) around projected points when a guess transform is provided to find correspondences. 0 means disabled.", kVisCorType().c_str()) Default value: 40 ( int ).
 
static int defaultVisCorGuessWinSize ()
 Default value of parameter Vis/CorGuessWinSize : 40 .
 
static std::string typeVisCorGuessWinSize ()
 Type of parameter Vis/CorGuessWinSize , as a string: int .
 
static std::string kVisCorGuessMatchToProjection ()
 Key of parameter Vis/CorGuessMatchToProjection : uFormat("[%s=0] Match frame's corners to source's projected points (when guess transform is provided) instead of projected points to frame's corners.", kVisCorType().c_str()) Default value: false ( bool ).
 
static bool defaultVisCorGuessMatchToProjection ()
 Default value of parameter Vis/CorGuessMatchToProjection : false .
 
static std::string typeVisCorGuessMatchToProjection ()
 Type of parameter Vis/CorGuessMatchToProjection , as a string: bool .
 
static std::string kVisCorFlowWinSize ()
 Key of parameter Vis/CorFlowWinSize : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 16 ( int ).
 
static int defaultVisCorFlowWinSize ()
 Default value of parameter Vis/CorFlowWinSize : 16 .
 
static std::string typeVisCorFlowWinSize ()
 Type of parameter Vis/CorFlowWinSize , as a string: int .
 
static std::string kVisCorFlowIterations ()
 Key of parameter Vis/CorFlowIterations : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 30 ( int ).
 
static int defaultVisCorFlowIterations ()
 Default value of parameter Vis/CorFlowIterations : 30 .
 
static std::string typeVisCorFlowIterations ()
 Type of parameter Vis/CorFlowIterations , as a string: int .
 
static std::string kVisCorFlowEps ()
 Key of parameter Vis/CorFlowEps : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 0.01 ( float ).
 
static float defaultVisCorFlowEps ()
 Default value of parameter Vis/CorFlowEps : 0.01 .
 
static std::string typeVisCorFlowEps ()
 Type of parameter Vis/CorFlowEps , as a string: float .
 
static std::string kVisCorFlowMaxLevel ()
 Key of parameter Vis/CorFlowMaxLevel : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 3 ( int ).
 
static int defaultVisCorFlowMaxLevel ()
 Default value of parameter Vis/CorFlowMaxLevel : 3 .
 
static std::string typeVisCorFlowMaxLevel ()
 Type of parameter Vis/CorFlowMaxLevel , as a string: int .
 
static std::string kVisCorFlowUseMinEigenVals ()
 Key of parameter Vis/CorFlowUseMinEigenVals : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach. Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.", kVisCorType().c_str()) Default value: true ( bool ).
 
static bool defaultVisCorFlowUseMinEigenVals ()
 Default value of parameter Vis/CorFlowUseMinEigenVals : true .
 
static std::string typeVisCorFlowUseMinEigenVals ()
 Type of parameter Vis/CorFlowUseMinEigenVals , as a string: bool .
 
static std::string kVisCorFlowMinEigThreshold ()
 Key of parameter Vis/CorFlowMinEigThreshold : uFormat("[%s=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.", kVisCorFlowUseMinEigenVals().c_str()) Default value: 1e-4 ( float ).
 
static float defaultVisCorFlowMinEigThreshold ()
 Default value of parameter Vis/CorFlowMinEigThreshold : 1e-4 .
 
static std::string typeVisCorFlowMinEigThreshold ()
 Type of parameter Vis/CorFlowMinEigThreshold , as a string: float .
 
static std::string kVisCorFlowErrorThreshold ()
 Key of parameter Vis/CorFlowErrorThreshold : uFormat("[%s=false] Filter out features with error greater than this threshold.", kVisCorFlowUseMinEigenVals().c_str()) Default value: 20 ( float ).
 
static float defaultVisCorFlowErrorThreshold ()
 Default value of parameter Vis/CorFlowErrorThreshold : 20 .
 
static std::string typeVisCorFlowErrorThreshold ()
 Type of parameter Vis/CorFlowErrorThreshold , as a string: float .
 
static std::string kVisCorFlowGpu ()
 Key of parameter Vis/CorFlowGpu : uFormat("[%s=1] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that %s is not used in the GPU implementation.", kVisCorType().c_str(), kVisCorFlowUseMinEigenVals().c_str()) Default value: false ( bool ).
 
static bool defaultVisCorFlowGpu ()
 Default value of parameter Vis/CorFlowGpu : false .
 
static std::string typeVisCorFlowGpu ()
 Type of parameter Vis/CorFlowGpu , as a string: bool .
 
static std::string kVisBundleAdjustment ()
 Key of parameter Vis/BundleAdjustment : uFormat("Optimization with bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()) Default value: 0 ( int ).
 
static int defaultVisBundleAdjustment ()
 Default value of parameter Vis/BundleAdjustment : 0 .
 
static std::string typeVisBundleAdjustment ()
 Type of parameter Vis/BundleAdjustment , as a string: int .
 
static std::string kPyMatcherPath ()
 Key of parameter PyMatcher/Path : "Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied." Default value: "" (string).
 
static std::string defaultPyMatcherPath ()
 Default value of parameter PyMatcher/Path : "" .
 
static std::string typePyMatcherPath ()
 Type of parameter PyMatcher/Path , as a string: string.
 
static std::string kPyMatcherIterations ()
 Key of parameter PyMatcher/Iterations : "Sinkhorn iterations. Used by SuperGlue." Default value: 20 ( int ).
 
static int defaultPyMatcherIterations ()
 Default value of parameter PyMatcher/Iterations : 20 .
 
static std::string typePyMatcherIterations ()
 Type of parameter PyMatcher/Iterations , as a string: int .
 
static std::string kPyMatcherThreshold ()
 Key of parameter PyMatcher/Threshold : "Used by SuperGlue." Default value: 0.2 ( float ).
 
static float defaultPyMatcherThreshold ()
 Default value of parameter PyMatcher/Threshold : 0.2 .
 
static std::string typePyMatcherThreshold ()
 Type of parameter PyMatcher/Threshold , as a string: float .
 
static std::string kPyMatcherCuda ()
 Key of parameter PyMatcher/Cuda : "Used by SuperGlue." Default value: true ( bool ).
 
static bool defaultPyMatcherCuda ()
 Default value of parameter PyMatcher/Cuda : true .
 
static std::string typePyMatcherCuda ()
 Type of parameter PyMatcher/Cuda , as a string: bool .
 
static std::string kPyMatcherModel ()
 Key of parameter PyMatcher/Model : "For SuperGlue, set only \"indoor\" or \"outdoor\". For OANet, set path to one of the pth file (e.g., \"OANet/model/gl3d/sift-4000/model_best.pth\")." Default value: "indoor" (string).
 
static std::string defaultPyMatcherModel ()
 Default value of parameter PyMatcher/Model : "indoor" .
 
static std::string typePyMatcherModel ()
 Type of parameter PyMatcher/Model , as a string: string.
 
static std::string kGMSWithRotation ()
 Key of parameter GMS/WithRotation : "Take rotation transformation into account." Default value: false ( bool ).
 
static bool defaultGMSWithRotation ()
 Default value of parameter GMS/WithRotation : false .
 
static std::string typeGMSWithRotation ()
 Type of parameter GMS/WithRotation , as a string: bool .
 
static std::string kGMSWithScale ()
 Key of parameter GMS/WithScale : "Take scale transformation into account." Default value: false ( bool ).
 
static bool defaultGMSWithScale ()
 Default value of parameter GMS/WithScale : false .
 
static std::string typeGMSWithScale ()
 Type of parameter GMS/WithScale , as a string: bool .
 
static std::string kGMSThresholdFactor ()
 Key of parameter GMS/ThresholdFactor : "The higher, the less matches." Default value: 6.0 ( double ).
 
static double defaultGMSThresholdFactor ()
 Default value of parameter GMS/ThresholdFactor : 6.0 .
 
static std::string typeGMSThresholdFactor ()
 Type of parameter GMS/ThresholdFactor , as a string: double .
 
static std::string kPyDescriptorPath ()
 Key of parameter PyDescriptor/Path : "Path to python script file (see available ones in rtabmap/corelib/src/pydescriptor/*). See the header to see where the script should be used." Default value: "" (string).
 
static std::string defaultPyDescriptorPath ()
 Default value of parameter PyDescriptor/Path : "" .
 
static std::string typePyDescriptorPath ()
 Type of parameter PyDescriptor/Path , as a string: string.
 
static std::string kPyDescriptorDim ()
 Key of parameter PyDescriptor/Dim : "Descriptor dimension." Default value: 4096 ( int ).
 
static int defaultPyDescriptorDim ()
 Default value of parameter PyDescriptor/Dim : 4096 .
 
static std::string typePyDescriptorDim ()
 Type of parameter PyDescriptor/Dim , as a string: int .
 
static std::string kIcpStrategy ()
 Key of parameter Icp/Strategy : "ICP implementation: 0=Point Cloud Library, 1=libpointmatcher, 2=CCCoreLib (CloudCompare)." Default value: 0 ( int ).
 
static int defaultIcpStrategy ()
 Default value of parameter Icp/Strategy : 0 .
 
static std::string typeIcpStrategy ()
 Type of parameter Icp/Strategy , as a string: int .
 
static std::string kIcpMaxTranslation ()
 Key of parameter Icp/MaxTranslation : "Maximum ICP translation correction accepted (m)." Default value: 0.2 ( float ).
 
static float defaultIcpMaxTranslation ()
 Default value of parameter Icp/MaxTranslation : 0.2 .
 
static std::string typeIcpMaxTranslation ()
 Type of parameter Icp/MaxTranslation , as a string: float .
 
static std::string kIcpMaxRotation ()
 Key of parameter Icp/MaxRotation : "Maximum ICP rotation correction accepted (rad)." Default value: 0.78 ( float ).
 
static float defaultIcpMaxRotation ()
 Default value of parameter Icp/MaxRotation : 0.78 .
 
static std::string typeIcpMaxRotation ()
 Type of parameter Icp/MaxRotation , as a string: float .
 
static std::string kIcpVoxelSize ()
 Key of parameter Icp/VoxelSize : "Uniform sampling voxel size (0=disabled)." Default value: 0.05 ( float ).
 
static float defaultIcpVoxelSize ()
 Default value of parameter Icp/VoxelSize : 0.05 .
 
static std::string typeIcpVoxelSize ()
 Type of parameter Icp/VoxelSize , as a string: float .
 
static std::string kIcpDownsamplingStep ()
 Key of parameter Icp/DownsamplingStep : "Downsampling step size (1=no sampling). This is done before uniform sampling." Default value: 1 ( int ).
 
static int defaultIcpDownsamplingStep ()
 Default value of parameter Icp/DownsamplingStep : 1 .
 
static std::string typeIcpDownsamplingStep ()
 Type of parameter Icp/DownsamplingStep , as a string: int .
 
static std::string kIcpRangeMin ()
 Key of parameter Icp/RangeMin : "Minimum range filtering (0=disabled)." Default value: 0 ( float ).
 
static float defaultIcpRangeMin ()
 Default value of parameter Icp/RangeMin : 0 .
 
static std::string typeIcpRangeMin ()
 Type of parameter Icp/RangeMin , as a string: float .
 
static std::string kIcpRangeMax ()
 Key of parameter Icp/RangeMax : "Maximum range filtering (0=disabled)." Default value: 0 ( float ).
 
static float defaultIcpRangeMax ()
 Default value of parameter Icp/RangeMax : 0 .
 
static std::string typeIcpRangeMax ()
 Type of parameter Icp/RangeMax , as a string: float .
 
static std::string kIcpMaxCorrespondenceDistance ()
 Key of parameter Icp/MaxCorrespondenceDistance : "Max distance for point correspondences." Default value: 0.05 ( float ).
 
static float defaultIcpMaxCorrespondenceDistance ()
 Default value of parameter Icp/MaxCorrespondenceDistance : 0.05 .
 
static std::string typeIcpMaxCorrespondenceDistance ()
 Type of parameter Icp/MaxCorrespondenceDistance , as a string: float .
 
static std::string kIcpReciprocalCorrespondences ()
 Key of parameter Icp/ReciprocalCorrespondences : "To be a valid correspondence, the corresponding point in target cloud to point in source cloud should be both their closest closest correspondence." Default value: true ( bool ).
 
static bool defaultIcpReciprocalCorrespondences ()
 Default value of parameter Icp/ReciprocalCorrespondences : true .
 
static std::string typeIcpReciprocalCorrespondences ()
 Type of parameter Icp/ReciprocalCorrespondences , as a string: bool .
 
static std::string kIcpIterations ()
 Key of parameter Icp/Iterations : "Max iterations." Default value: 30 ( int ).
 
static int defaultIcpIterations ()
 Default value of parameter Icp/Iterations : 30 .
 
static std::string typeIcpIterations ()
 Type of parameter Icp/Iterations , as a string: int .
 
static std::string kIcpEpsilon ()
 Key of parameter Icp/Epsilon : "Set the transformation epsilon (maximum allowable difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution." Default value: 0 ( float ).
 
static float defaultIcpEpsilon ()
 Default value of parameter Icp/Epsilon : 0 .
 
static std::string typeIcpEpsilon ()
 Type of parameter Icp/Epsilon , as a string: float .
 
static std::string kIcpCorrespondenceRatio ()
 Key of parameter Icp/CorrespondenceRatio : "Ratio of matching correspondences to accept the transform." Default value: 0.1 ( float ).
 
static float defaultIcpCorrespondenceRatio ()
 Default value of parameter Icp/CorrespondenceRatio : 0.1 .
 
static std::string typeIcpCorrespondenceRatio ()
 Type of parameter Icp/CorrespondenceRatio , as a string: float .
 
static std::string kIcpForce4DoF ()
 Key of parameter Icp/Force4DoF : uFormat("Limit ICP to x, y, z and yaw DoF. Available if %s > 0.", kIcpStrategy().c_str()) Default value: false ( bool ).
 
static bool defaultIcpForce4DoF ()
 Default value of parameter Icp/Force4DoF : false .
 
static std::string typeIcpForce4DoF ()
 Type of parameter Icp/Force4DoF , as a string: bool .
 
static std::string kIcpFiltersEnabled ()
 Key of parameter Icp/FiltersEnabled : "Flag to enable filters: 1=\"from\" cloud only, 2=\"to\" cloud only, 3=both." Default value: 3 ( int ).
 
static int defaultIcpFiltersEnabled ()
 Default value of parameter Icp/FiltersEnabled : 3 .
 
static std::string typeIcpFiltersEnabled ()
 Type of parameter Icp/FiltersEnabled , as a string: int .
 
static std::string kIcpPointToPlane ()
 Key of parameter Icp/PointToPlane : "Use point to plane ICP." Default value: false ( bool ).
 
static bool defaultIcpPointToPlane ()
 Default value of parameter Icp/PointToPlane : false .
 
static std::string typeIcpPointToPlane ()
 Type of parameter Icp/PointToPlane , as a string: bool .
 
static std::string kIcpPointToPlaneK ()
 Key of parameter Icp/PointToPlaneK : "Number of neighbors to compute normals for point to plane if the cloud doesn't have already normals." Default value: 5 ( int ).
 
static int defaultIcpPointToPlaneK ()
 Default value of parameter Icp/PointToPlaneK : 5 .
 
static std::string typeIcpPointToPlaneK ()
 Type of parameter Icp/PointToPlaneK , as a string: int .
 
static std::string kIcpPointToPlaneRadius ()
 Key of parameter Icp/PointToPlaneRadius : "Search radius to compute normals for point to plane if the cloud doesn't have already normals." Default value: 0.0 ( float ).
 
static float defaultIcpPointToPlaneRadius ()
 Default value of parameter Icp/PointToPlaneRadius : 0.0 .
 
static std::string typeIcpPointToPlaneRadius ()
 Type of parameter Icp/PointToPlaneRadius , as a string: float .
 
static std::string kIcpPointToPlaneGroundNormalsUp ()
 Key of parameter Icp/PointToPlaneGroundNormalsUp : "Invert normals on ground if they are pointing down (useful for ring-like 3D LiDARs). 0 means disabled, 1 means only normals perfectly aligned with -z axis. This is only done with 3D scans." Default value: 0.0 ( float ).
 
static float defaultIcpPointToPlaneGroundNormalsUp ()
 Default value of parameter Icp/PointToPlaneGroundNormalsUp : 0.0 .
 
static std::string typeIcpPointToPlaneGroundNormalsUp ()
 Type of parameter Icp/PointToPlaneGroundNormalsUp , as a string: float .
 
static std::string kIcpPointToPlaneMinComplexity ()
 Key of parameter Icp/PointToPlaneMinComplexity : uFormat("Minimum structural complexity (0.0=low, 1.0=high) of the scan to do PointToPlane registration, otherwise PointToPoint registration is done instead and strategy from %s is used. This check is done only when %s=true.", kIcpPointToPlaneLowComplexityStrategy().c_str(), kIcpPointToPlane().c_str()) Default value: 0.02 ( float ).
 
static float defaultIcpPointToPlaneMinComplexity ()
 Default value of parameter Icp/PointToPlaneMinComplexity : 0.02 .
 
static std::string typeIcpPointToPlaneMinComplexity ()
 Type of parameter Icp/PointToPlaneMinComplexity , as a string: float .
 
static std::string kIcpPointToPlaneComplexityCentered ()
 Key of parameter Icp/PointToPlaneComplexityCentered : uFormat("If false (default), the complexity metric uses the uncentered second-moment matrix (1/N) * sum(n_i * n_i^T), whose smallest eigenvalue directly measures how well the surface normals span R^N. If true, uses centered PCA (cv::PCA covariance) for backwards compatibility -- but the centered metric is known to mis-classify perpendicular-surface scenes as degenerate when normals are consistently viewpoint-flipped (only N distinct directions in N-D collapse to rank N-1 after centering). For true degeneracies (parallel surfaces, e.g. corridors) the two metrics agree because the normal mean is zero. The %s threshold of 0.02 works under either setting.", kIcpPointToPlaneMinComplexity().c_str()) Default value: false ( bool ).
 
static bool defaultIcpPointToPlaneComplexityCentered ()
 Default value of parameter Icp/PointToPlaneComplexityCentered : false .
 
static std::string typeIcpPointToPlaneComplexityCentered ()
 Type of parameter Icp/PointToPlaneComplexityCentered , as a string: bool .
 
static std::string kIcpPointToPlaneLowComplexityStrategy ()
 Key of parameter Icp/PointToPlaneLowComplexityStrategy : uFormat("If structural complexity is below %s: set to 0 so that the transform is automatically rejected, set to 1 (default, legacy) to recompute the transform with PointToPoint and limit its correction in axes with most constraints (e.g., for a corridor-like environment, the resulting transform will be limited in y and yaw, x will taken from the guess), set to 2 to recompute the transform with PointToPoint and accept it \"as is\", set to 3 to keep the PointToPlane transform and apply the same axis-constrained projection as strategy 1.", kIcpPointToPlaneMinComplexity().c_str()) Default value: 1 ( int ).
 
static int defaultIcpPointToPlaneLowComplexityStrategy ()
 Default value of parameter Icp/PointToPlaneLowComplexityStrategy : 1 .
 
static std::string typeIcpPointToPlaneLowComplexityStrategy ()
 Type of parameter Icp/PointToPlaneLowComplexityStrategy , as a string: int .
 
static std::string kIcpOutlierRatio ()
 Key of parameter Icp/OutlierRatio : uFormat("Outlier ratio. For libpointmatcher (%s=1), sets TrimmedDistOutlierFilter/ratio for convenience when configuration file is not set. For CCCoreLib (%s=2), sets \"finalOverlapRatio\". For PCL (%s=0), if 0<value<1, installs a RANSAC correspondence rejector with inlier threshold = value * %s. The value should be between 0 and 1.", kIcpStrategy().c_str(), kIcpStrategy().c_str(), kIcpStrategy().c_str(), kIcpMaxCorrespondenceDistance().c_str()) Default value: 0.85 ( float ).
 
static float defaultIcpOutlierRatio ()
 Default value of parameter Icp/OutlierRatio : 0.85 .
 
static std::string typeIcpOutlierRatio ()
 Type of parameter Icp/OutlierRatio , as a string: float .
 
static std::string kIcpDebugExportFormat ()
 Key of parameter Icp/DebugExportFormat : "Export scans used for ICP in the specified format (a warning on terminal will be shown with the file paths used). Supported formats are \"pcd\", \"ply\" or \"vtk\". If logger level is debug, from and to scans will stamped, so previous files won't be overwritten." Default value: "" (string).
 
static std::string defaultIcpDebugExportFormat ()
 Default value of parameter Icp/DebugExportFormat : "" .
 
static std::string typeIcpDebugExportFormat ()
 Type of parameter Icp/DebugExportFormat , as a string: string.
 
static std::string kIcpPMConfig ()
 Key of parameter Icp/PMConfig : uFormat("Configuration file (*.yaml) used by libpointmatcher. Note that data filters set for libpointmatcher are done after filtering done by rtabmap (i.e., %s, %s), so make sure to disable those in rtabmap if you want to use only those from libpointmatcher. Parameters %s, %s and %s are also ignored if configuration file is set.", kIcpVoxelSize().c_str(), kIcpDownsamplingStep().c_str(), kIcpIterations().c_str(), kIcpEpsilon().c_str(), kIcpMaxCorrespondenceDistance().c_str()).c_str() Default value: "" (string).
 
static std::string defaultIcpPMConfig ()
 Default value of parameter Icp/PMConfig : "" .
 
static std::string typeIcpPMConfig ()
 Type of parameter Icp/PMConfig , as a string: string.
 
static std::string kIcpPMMatcherKnn ()
 Key of parameter Icp/PMMatcherKnn : "KDTreeMatcher/knn: number of nearest neighbors to consider it the reference. For convenience when configuration file is not set." Default value: 1 ( int ).
 
static int defaultIcpPMMatcherKnn ()
 Default value of parameter Icp/PMMatcherKnn : 1 .
 
static std::string typeIcpPMMatcherKnn ()
 Type of parameter Icp/PMMatcherKnn , as a string: int .
 
static std::string kIcpPMMatcherEpsilon ()
 Key of parameter Icp/PMMatcherEpsilon : "KDTreeMatcher/epsilon: approximation to use for the nearest-neighbor search. For convenience when configuration file is not set." Default value: 0.0 ( float ).
 
static float defaultIcpPMMatcherEpsilon ()
 Default value of parameter Icp/PMMatcherEpsilon : 0.0 .
 
static std::string typeIcpPMMatcherEpsilon ()
 Type of parameter Icp/PMMatcherEpsilon , as a string: float .
 
static std::string kIcpPMMatcherIntensity ()
 Key of parameter Icp/PMMatcherIntensity : uFormat("KDTreeMatcher: among nearest neighbors, keep only the one with the most similar intensity. This only work with %s>1.", kIcpPMMatcherKnn().c_str()) Default value: false ( bool ).
 
static bool defaultIcpPMMatcherIntensity ()
 Default value of parameter Icp/PMMatcherIntensity : false .
 
static std::string typeIcpPMMatcherIntensity ()
 Type of parameter Icp/PMMatcherIntensity , as a string: bool .
 
static std::string kIcpCCSamplingLimit ()
 Key of parameter Icp/CCSamplingLimit : "Maximum number of points per cloud (they are randomly resampled below this limit otherwise)." Default value: 50000 ( unsigned int ).
 
static unsigned int defaultIcpCCSamplingLimit ()
 Default value of parameter Icp/CCSamplingLimit : 50000 .
 
static std::string typeIcpCCSamplingLimit ()
 Type of parameter Icp/CCSamplingLimit , as a string: unsigned int .
 
static std::string kIcpCCFilterOutFarthestPoints ()
 Key of parameter Icp/CCFilterOutFarthestPoints : "If true, the algorithm will automatically ignore farthest points from the reference, for better convergence." Default value: false ( bool ).
 
static bool defaultIcpCCFilterOutFarthestPoints ()
 Default value of parameter Icp/CCFilterOutFarthestPoints : false .
 
static std::string typeIcpCCFilterOutFarthestPoints ()
 Type of parameter Icp/CCFilterOutFarthestPoints , as a string: bool .
 
static std::string kIcpCCMaxFinalRMS ()
 Key of parameter Icp/CCMaxFinalRMS : "Maximum final RMS error." Default value: 0.2 ( float ).
 
static float defaultIcpCCMaxFinalRMS ()
 Default value of parameter Icp/CCMaxFinalRMS : 0.2 .
 
static std::string typeIcpCCMaxFinalRMS ()
 Type of parameter Icp/CCMaxFinalRMS , as a string: float .
 
static std::string kStereoWinWidth ()
 Key of parameter Stereo/WinWidth : "Window width." Default value: 15 ( int ).
 
static int defaultStereoWinWidth ()
 Default value of parameter Stereo/WinWidth : 15 .
 
static std::string typeStereoWinWidth ()
 Type of parameter Stereo/WinWidth , as a string: int .
 
static std::string kStereoWinHeight ()
 Key of parameter Stereo/WinHeight : "Window height." Default value: 3 ( int ).
 
static int defaultStereoWinHeight ()
 Default value of parameter Stereo/WinHeight : 3 .
 
static std::string typeStereoWinHeight ()
 Type of parameter Stereo/WinHeight , as a string: int .
 
static std::string kStereoIterations ()
 Key of parameter Stereo/Iterations : "Maximum iterations." Default value: 30 ( int ).
 
static int defaultStereoIterations ()
 Default value of parameter Stereo/Iterations : 30 .
 
static std::string typeStereoIterations ()
 Type of parameter Stereo/Iterations , as a string: int .
 
static std::string kStereoMaxLevel ()
 Key of parameter Stereo/MaxLevel : "Maximum pyramid level." Default value: 5 ( int ).
 
static int defaultStereoMaxLevel ()
 Default value of parameter Stereo/MaxLevel : 5 .
 
static std::string typeStereoMaxLevel ()
 Type of parameter Stereo/MaxLevel , as a string: int .
 
static std::string kStereoMinDisparity ()
 Key of parameter Stereo/MinDisparity : "Minimum disparity." Default value: 0.5 ( float ).
 
static float defaultStereoMinDisparity ()
 Default value of parameter Stereo/MinDisparity : 0.5 .
 
static std::string typeStereoMinDisparity ()
 Type of parameter Stereo/MinDisparity , as a string: float .
 
static std::string kStereoMaxDisparity ()
 Key of parameter Stereo/MaxDisparity : "Maximum disparity." Default value: 128.0 ( float ).
 
static float defaultStereoMaxDisparity ()
 Default value of parameter Stereo/MaxDisparity : 128.0 .
 
static std::string typeStereoMaxDisparity ()
 Type of parameter Stereo/MaxDisparity , as a string: float .
 
static std::string kStereoOpticalFlow ()
 Key of parameter Stereo/OpticalFlow : "Use optical flow to find stereo correspondences, otherwise a simple block matching approach is used." Default value: true ( bool ).
 
static bool defaultStereoOpticalFlow ()
 Default value of parameter Stereo/OpticalFlow : true .
 
static std::string typeStereoOpticalFlow ()
 Type of parameter Stereo/OpticalFlow , as a string: bool .
 
static std::string kStereoSSD ()
 Key of parameter Stereo/SSD : uFormat("[%s=false] Use Sum of Squared Differences (SSD) window, otherwise Sum of Absolute Differences (SAD) window is used.", kStereoOpticalFlow().c_str()) Default value: true ( bool ).
 
static bool defaultStereoSSD ()
 Default value of parameter Stereo/SSD : true .
 
static std::string typeStereoSSD ()
 Type of parameter Stereo/SSD , as a string: bool .
 
static std::string kStereoEps ()
 Key of parameter Stereo/Eps : uFormat("[%s=true] Epsilon stop criterion.", kStereoOpticalFlow().c_str()) Default value: 0.01 ( double ).
 
static double defaultStereoEps ()
 Default value of parameter Stereo/Eps : 0.01 .
 
static std::string typeStereoEps ()
 Type of parameter Stereo/Eps , as a string: double .
 
static std::string kStereoUseMinEigenVals ()
 Key of parameter Stereo/UseMinEigenVals : uFormat("[%s=true] Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.", kStereoOpticalFlow().c_str()) Default value: true ( bool ).
 
static bool defaultStereoUseMinEigenVals ()
 Default value of parameter Stereo/UseMinEigenVals : true .
 
static std::string typeStereoUseMinEigenVals ()
 Type of parameter Stereo/UseMinEigenVals , as a string: bool .
 
static std::string kStereoMinEigThreshold ()
 Key of parameter Stereo/MinEigThreshold : uFormat("[%s=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.", kStereoUseMinEigenVals().c_str()) Default value: 1e-4 ( double ).
 
static double defaultStereoMinEigThreshold ()
 Default value of parameter Stereo/MinEigThreshold : 1e-4 .
 
static std::string typeStereoMinEigThreshold ()
 Type of parameter Stereo/MinEigThreshold , as a string: double .
 
static std::string kStereoErrorThreshold ()
 Key of parameter Stereo/ErrorThreshold : uFormat("[%s=false] Filter out features with error greater than this threshold.", kStereoUseMinEigenVals().c_str()) Default value: 50 ( double ).
 
static double defaultStereoErrorThreshold ()
 Default value of parameter Stereo/ErrorThreshold : 50 .
 
static std::string typeStereoErrorThreshold ()
 Type of parameter Stereo/ErrorThreshold , as a string: double .
 
static std::string kStereoGpu ()
 Key of parameter Stereo/Gpu : uFormat("[%s=true] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that %s is not used in the GPU implementation.", kStereoOpticalFlow().c_str(), kStereoUseMinEigenVals().c_str()) Default value: false ( bool ).
 
static bool defaultStereoGpu ()
 Default value of parameter Stereo/Gpu : false .
 
static std::string typeStereoGpu ()
 Type of parameter Stereo/Gpu , as a string: bool .
 
static std::string kStereoDenseStrategy ()
 Key of parameter Stereo/DenseStrategy : "0=cv::StereoBM, 1=cv::StereoSGBM" Default value: 0 ( int ).
 
static int defaultStereoDenseStrategy ()
 Default value of parameter Stereo/DenseStrategy : 0 .
 
static std::string typeStereoDenseStrategy ()
 Type of parameter Stereo/DenseStrategy , as a string: int .
 
static std::string kStereoBMBlockSize ()
 Key of parameter StereoBM/BlockSize : "See cv::StereoBM" Default value: 15 ( int ).
 
static int defaultStereoBMBlockSize ()
 Default value of parameter StereoBM/BlockSize : 15 .
 
static std::string typeStereoBMBlockSize ()
 Type of parameter StereoBM/BlockSize , as a string: int .
 
static std::string kStereoBMMinDisparity ()
 Key of parameter StereoBM/MinDisparity : "See cv::StereoBM" Default value: 0 ( int ).
 
static int defaultStereoBMMinDisparity ()
 Default value of parameter StereoBM/MinDisparity : 0 .
 
static std::string typeStereoBMMinDisparity ()
 Type of parameter StereoBM/MinDisparity , as a string: int .
 
static std::string kStereoBMNumDisparities ()
 Key of parameter StereoBM/NumDisparities : "See cv::StereoBM" Default value: 128 ( int ).
 
static int defaultStereoBMNumDisparities ()
 Default value of parameter StereoBM/NumDisparities : 128 .
 
static std::string typeStereoBMNumDisparities ()
 Type of parameter StereoBM/NumDisparities , as a string: int .
 
static std::string kStereoBMPreFilterSize ()
 Key of parameter StereoBM/PreFilterSize : "See cv::StereoBM" Default value: 9 ( int ).
 
static int defaultStereoBMPreFilterSize ()
 Default value of parameter StereoBM/PreFilterSize : 9 .
 
static std::string typeStereoBMPreFilterSize ()
 Type of parameter StereoBM/PreFilterSize , as a string: int .
 
static std::string kStereoBMPreFilterCap ()
 Key of parameter StereoBM/PreFilterCap : "See cv::StereoBM" Default value: 31 ( int ).
 
static int defaultStereoBMPreFilterCap ()
 Default value of parameter StereoBM/PreFilterCap : 31 .
 
static std::string typeStereoBMPreFilterCap ()
 Type of parameter StereoBM/PreFilterCap , as a string: int .
 
static std::string kStereoBMUniquenessRatio ()
 Key of parameter StereoBM/UniquenessRatio : "See cv::StereoBM" Default value: 15 ( int ).
 
static int defaultStereoBMUniquenessRatio ()
 Default value of parameter StereoBM/UniquenessRatio : 15 .
 
static std::string typeStereoBMUniquenessRatio ()
 Type of parameter StereoBM/UniquenessRatio , as a string: int .
 
static std::string kStereoBMTextureThreshold ()
 Key of parameter StereoBM/TextureThreshold : "See cv::StereoBM" Default value: 10 ( int ).
 
static int defaultStereoBMTextureThreshold ()
 Default value of parameter StereoBM/TextureThreshold : 10 .
 
static std::string typeStereoBMTextureThreshold ()
 Type of parameter StereoBM/TextureThreshold , as a string: int .
 
static std::string kStereoBMSpeckleWindowSize ()
 Key of parameter StereoBM/SpeckleWindowSize : "See cv::StereoBM" Default value: 100 ( int ).
 
static int defaultStereoBMSpeckleWindowSize ()
 Default value of parameter StereoBM/SpeckleWindowSize : 100 .
 
static std::string typeStereoBMSpeckleWindowSize ()
 Type of parameter StereoBM/SpeckleWindowSize , as a string: int .
 
static std::string kStereoBMSpeckleRange ()
 Key of parameter StereoBM/SpeckleRange : "See cv::StereoBM" Default value: 4 ( int ).
 
static int defaultStereoBMSpeckleRange ()
 Default value of parameter StereoBM/SpeckleRange : 4 .
 
static std::string typeStereoBMSpeckleRange ()
 Type of parameter StereoBM/SpeckleRange , as a string: int .
 
static std::string kStereoBMDisp12MaxDiff ()
 Key of parameter StereoBM/Disp12MaxDiff : "See cv::StereoBM" Default value: -1 ( int ).
 
static int defaultStereoBMDisp12MaxDiff ()
 Default value of parameter StereoBM/Disp12MaxDiff : -1 .
 
static std::string typeStereoBMDisp12MaxDiff ()
 Type of parameter StereoBM/Disp12MaxDiff , as a string: int .
 
static std::string kStereoSGBMBlockSize ()
 Key of parameter StereoSGBM/BlockSize : "See cv::StereoSGBM" Default value: 15 ( int ).
 
static int defaultStereoSGBMBlockSize ()
 Default value of parameter StereoSGBM/BlockSize : 15 .
 
static std::string typeStereoSGBMBlockSize ()
 Type of parameter StereoSGBM/BlockSize , as a string: int .
 
static std::string kStereoSGBMMinDisparity ()
 Key of parameter StereoSGBM/MinDisparity : "See cv::StereoSGBM" Default value: 0 ( int ).
 
static int defaultStereoSGBMMinDisparity ()
 Default value of parameter StereoSGBM/MinDisparity : 0 .
 
static std::string typeStereoSGBMMinDisparity ()
 Type of parameter StereoSGBM/MinDisparity , as a string: int .
 
static std::string kStereoSGBMNumDisparities ()
 Key of parameter StereoSGBM/NumDisparities : "See cv::StereoSGBM" Default value: 128 ( int ).
 
static int defaultStereoSGBMNumDisparities ()
 Default value of parameter StereoSGBM/NumDisparities : 128 .
 
static std::string typeStereoSGBMNumDisparities ()
 Type of parameter StereoSGBM/NumDisparities , as a string: int .
 
static std::string kStereoSGBMPreFilterCap ()
 Key of parameter StereoSGBM/PreFilterCap : "See cv::StereoSGBM" Default value: 31 ( int ).
 
static int defaultStereoSGBMPreFilterCap ()
 Default value of parameter StereoSGBM/PreFilterCap : 31 .
 
static std::string typeStereoSGBMPreFilterCap ()
 Type of parameter StereoSGBM/PreFilterCap , as a string: int .
 
static std::string kStereoSGBMUniquenessRatio ()
 Key of parameter StereoSGBM/UniquenessRatio : "See cv::StereoSGBM" Default value: 20 ( int ).
 
static int defaultStereoSGBMUniquenessRatio ()
 Default value of parameter StereoSGBM/UniquenessRatio : 20 .
 
static std::string typeStereoSGBMUniquenessRatio ()
 Type of parameter StereoSGBM/UniquenessRatio , as a string: int .
 
static std::string kStereoSGBMSpeckleWindowSize ()
 Key of parameter StereoSGBM/SpeckleWindowSize : "See cv::StereoSGBM" Default value: 100 ( int ).
 
static int defaultStereoSGBMSpeckleWindowSize ()
 Default value of parameter StereoSGBM/SpeckleWindowSize : 100 .
 
static std::string typeStereoSGBMSpeckleWindowSize ()
 Type of parameter StereoSGBM/SpeckleWindowSize , as a string: int .
 
static std::string kStereoSGBMSpeckleRange ()
 Key of parameter StereoSGBM/SpeckleRange : "See cv::StereoSGBM" Default value: 4 ( int ).
 
static int defaultStereoSGBMSpeckleRange ()
 Default value of parameter StereoSGBM/SpeckleRange : 4 .
 
static std::string typeStereoSGBMSpeckleRange ()
 Type of parameter StereoSGBM/SpeckleRange , as a string: int .
 
static std::string kStereoSGBMDisp12MaxDiff ()
 Key of parameter StereoSGBM/Disp12MaxDiff : "See cv::StereoSGBM" Default value: 1 ( int ).
 
static int defaultStereoSGBMDisp12MaxDiff ()
 Default value of parameter StereoSGBM/Disp12MaxDiff : 1 .
 
static std::string typeStereoSGBMDisp12MaxDiff ()
 Type of parameter StereoSGBM/Disp12MaxDiff , as a string: int .
 
static std::string kStereoSGBMP1 ()
 Key of parameter StereoSGBM/P1 : "See cv::StereoSGBM" Default value: 2 ( int ).
 
static int defaultStereoSGBMP1 ()
 Default value of parameter StereoSGBM/P1 : 2 .
 
static std::string typeStereoSGBMP1 ()
 Type of parameter StereoSGBM/P1 , as a string: int .
 
static std::string kStereoSGBMP2 ()
 Key of parameter StereoSGBM/P2 : "See cv::StereoSGBM" Default value: 5 ( int ).
 
static int defaultStereoSGBMP2 ()
 Default value of parameter StereoSGBM/P2 : 5 .
 
static std::string typeStereoSGBMP2 ()
 Type of parameter StereoSGBM/P2 , as a string: int .
 
static std::string kStereoSGBMMode ()
 Key of parameter StereoSGBM/Mode : "See cv::StereoSGBM" Default value: 0 ( int ).
 
static int defaultStereoSGBMMode ()
 Default value of parameter StereoSGBM/Mode : 0 .
 
static std::string typeStereoSGBMMode ()
 Type of parameter StereoSGBM/Mode , as a string: int .
 
static std::string kGridSensor ()
 Key of parameter Grid/Sensor : "Create occupancy grid from selected sensor: 0=laser scan, 1=depth image(s) or 2=both laser scan and depth image(s)." Default value: 1 ( int ).
 
static int defaultGridSensor ()
 Default value of parameter Grid/Sensor : 1 .
 
static std::string typeGridSensor ()
 Type of parameter Grid/Sensor , as a string: int .
 
static std::string kGridDepthDecimation ()
 Key of parameter Grid/DepthDecimation : uFormat("[%s=true] Decimation of the depth image before creating cloud.", kGridDepthDecimation().c_str()) Default value: 4 ( unsigned int ).
 
static unsigned int defaultGridDepthDecimation ()
 Default value of parameter Grid/DepthDecimation : 4 .
 
static std::string typeGridDepthDecimation ()
 Type of parameter Grid/DepthDecimation , as a string: unsigned int .
 
static std::string kGridRangeMin ()
 Key of parameter Grid/RangeMin : "Minimum range from sensor." Default value: 0.0 ( float ).
 
static float defaultGridRangeMin ()
 Default value of parameter Grid/RangeMin : 0.0 .
 
static std::string typeGridRangeMin ()
 Type of parameter Grid/RangeMin , as a string: float .
 
static std::string kGridRangeMax ()
 Key of parameter Grid/RangeMax : "Maximum range from sensor. 0=inf." Default value: 5.0 ( float ).
 
static float defaultGridRangeMax ()
 Default value of parameter Grid/RangeMax : 5.0 .
 
static std::string typeGridRangeMax ()
 Type of parameter Grid/RangeMax , as a string: float .
 
static std::string kGridDepthRoiRatios ()
 Key of parameter Grid/DepthRoiRatios : uFormat("[%s>=1] Region of interest ratios [left, right, top, bottom].", kGridSensor().c_str()) Default value: "0.0 0.0 0.0 0.0" (string).
 
static std::string defaultGridDepthRoiRatios ()
 Default value of parameter Grid/DepthRoiRatios : "0.0 0.0 0.0 0.0" .
 
static std::string typeGridDepthRoiRatios ()
 Type of parameter Grid/DepthRoiRatios , as a string: string.
 
static std::string kGridFootprintLength ()
 Key of parameter Grid/FootprintLength : "Footprint length used to filter points over the footprint of the robot." Default value: 0.0 ( float ).
 
static float defaultGridFootprintLength ()
 Default value of parameter Grid/FootprintLength : 0.0 .
 
static std::string typeGridFootprintLength ()
 Type of parameter Grid/FootprintLength , as a string: float .
 
static std::string kGridFootprintWidth ()
 Key of parameter Grid/FootprintWidth : "Footprint width used to filter points over the footprint of the robot. Footprint length should be set." Default value: 0.0 ( float ).
 
static float defaultGridFootprintWidth ()
 Default value of parameter Grid/FootprintWidth : 0.0 .
 
static std::string typeGridFootprintWidth ()
 Type of parameter Grid/FootprintWidth , as a string: float .
 
static std::string kGridFootprintHeight ()
 Key of parameter Grid/FootprintHeight : "Footprint height used to filter points over the footprint of the robot. Footprint length and width should be set." Default value: 0.0 ( float ).
 
static float defaultGridFootprintHeight ()
 Default value of parameter Grid/FootprintHeight : 0.0 .
 
static std::string typeGridFootprintHeight ()
 Type of parameter Grid/FootprintHeight , as a string: float .
 
static std::string kGridScanDecimation ()
 Key of parameter Grid/ScanDecimation : uFormat("[%s=0 or 2] Decimation of the laser scan before creating cloud.", kGridSensor().c_str()) Default value: 1 ( int ).
 
static int defaultGridScanDecimation ()
 Default value of parameter Grid/ScanDecimation : 1 .
 
static std::string typeGridScanDecimation ()
 Type of parameter Grid/ScanDecimation , as a string: int .
 
static std::string kGridCellSize ()
 Key of parameter Grid/CellSize : "Resolution of the occupancy grid." Default value: 0.05 ( float ).
 
static float defaultGridCellSize ()
 Default value of parameter Grid/CellSize : 0.05 .
 
static std::string typeGridCellSize ()
 Type of parameter Grid/CellSize , as a string: float .
 
static std::string kGridPreVoxelFiltering ()
 Key of parameter Grid/PreVoxelFiltering : uFormat("Input cloud is downsampled by voxel filter (voxel size is \"%s\") before doing segmentation of obstacles and ground.", kGridCellSize().c_str()) Default value: true ( bool ).
 
static bool defaultGridPreVoxelFiltering ()
 Default value of parameter Grid/PreVoxelFiltering : true .
 
static std::string typeGridPreVoxelFiltering ()
 Type of parameter Grid/PreVoxelFiltering , as a string: bool .
 
static std::string kGridMapFrameProjection ()
 Key of parameter Grid/MapFrameProjection : "Projection in map frame. On a 3D terrain and a fixed local camera transform (the cloud is created relative to ground), you may want to disable this to do the projection in robot frame instead." Default value: false ( bool ).
 
static bool defaultGridMapFrameProjection ()
 Default value of parameter Grid/MapFrameProjection : false .
 
static std::string typeGridMapFrameProjection ()
 Type of parameter Grid/MapFrameProjection , as a string: bool .
 
static std::string kGridNormalsSegmentation ()
 Key of parameter Grid/NormalsSegmentation : "Segment ground from obstacles using point normals, otherwise a fast passthrough is used." Default value: true ( bool ).
 
static bool defaultGridNormalsSegmentation ()
 Default value of parameter Grid/NormalsSegmentation : true .
 
static std::string typeGridNormalsSegmentation ()
 Type of parameter Grid/NormalsSegmentation , as a string: bool .
 
static std::string kGridMaxObstacleHeight ()
 Key of parameter Grid/MaxObstacleHeight : "Maximum obstacles height (0=disabled)." Default value: 0.0 ( float ).
 
static float defaultGridMaxObstacleHeight ()
 Default value of parameter Grid/MaxObstacleHeight : 0.0 .
 
static std::string typeGridMaxObstacleHeight ()
 Type of parameter Grid/MaxObstacleHeight , as a string: float .
 
static std::string kGridMinGroundHeight ()
 Key of parameter Grid/MinGroundHeight : "Minimum ground height (0=disabled)." Default value: 0.0 ( float ).
 
static float defaultGridMinGroundHeight ()
 Default value of parameter Grid/MinGroundHeight : 0.0 .
 
static std::string typeGridMinGroundHeight ()
 Type of parameter Grid/MinGroundHeight , as a string: float .
 
static std::string kGridMaxGroundHeight ()
 Key of parameter Grid/MaxGroundHeight : uFormat("Maximum ground height (0=disabled). Should be set if \"%s\" is false.", kGridNormalsSegmentation().c_str()) Default value: 0.0 ( float ).
 
static float defaultGridMaxGroundHeight ()
 Default value of parameter Grid/MaxGroundHeight : 0.0 .
 
static std::string typeGridMaxGroundHeight ()
 Type of parameter Grid/MaxGroundHeight , as a string: float .
 
static std::string kGridMaxGroundAngle ()
 Key of parameter Grid/MaxGroundAngle : uFormat("[%s=true] Maximum angle (degrees) between point's normal to ground's normal to label it as ground. Points with higher angle difference are considered as obstacles.", kGridNormalsSegmentation().c_str()) Default value: 45 ( float ).
 
static float defaultGridMaxGroundAngle ()
 Default value of parameter Grid/MaxGroundAngle : 45 .
 
static std::string typeGridMaxGroundAngle ()
 Type of parameter Grid/MaxGroundAngle , as a string: float .
 
static std::string kGridNormalK ()
 Key of parameter Grid/NormalK : uFormat("[%s=true] K neighbors to compute normals.", kGridNormalsSegmentation().c_str()) Default value: 20 ( int ).
 
static int defaultGridNormalK ()
 Default value of parameter Grid/NormalK : 20 .
 
static std::string typeGridNormalK ()
 Type of parameter Grid/NormalK , as a string: int .
 
static std::string kGridClusterRadius ()
 Key of parameter Grid/ClusterRadius : uFormat("[%s=true] Cluster maximum radius.", kGridNormalsSegmentation().c_str()) Default value: 0.1 ( float ).
 
static float defaultGridClusterRadius ()
 Default value of parameter Grid/ClusterRadius : 0.1 .
 
static std::string typeGridClusterRadius ()
 Type of parameter Grid/ClusterRadius , as a string: float .
 
static std::string kGridMinClusterSize ()
 Key of parameter Grid/MinClusterSize : uFormat("[%s=true] Minimum cluster size to project the points.", kGridNormalsSegmentation().c_str()) Default value: 10 ( int ).
 
static int defaultGridMinClusterSize ()
 Default value of parameter Grid/MinClusterSize : 10 .
 
static std::string typeGridMinClusterSize ()
 Type of parameter Grid/MinClusterSize , as a string: int .
 
static std::string kGridFlatObstacleDetected ()
 Key of parameter Grid/FlatObstacleDetected : uFormat("[%s=true] Flat obstacles detected.", kGridNormalsSegmentation().c_str()) Default value: true ( bool ).
 
static bool defaultGridFlatObstacleDetected ()
 Default value of parameter Grid/FlatObstacleDetected : true .
 
static std::string typeGridFlatObstacleDetected ()
 Type of parameter Grid/FlatObstacleDetected , as a string: bool .
 
static std::string kGrid3D ()
 Key of parameter Grid/3D : uFormat("A 3D occupancy grid is required if you want an OctoMap (3D ray tracing). Set to false if you want only a 2D map, the cloud will be projected on xy plane. A 2D map can be still generated if checked, but it requires more memory and time to generate it. Ignored if laser scan is 2D and \"%s\" is 0.", kGridSensor().c_str()) Default value: false ( bool ).
 
static bool defaultGrid3D ()
 Default value of parameter Grid/3D : false .
 
static std::string typeGrid3D ()
 Type of parameter Grid/3D , as a string: bool .
 
static std::string kGridGroundIsObstacle ()
 Key of parameter Grid/GroundIsObstacle : uFormat("[%s=true] Ground segmentation (%s) is ignored, all points are obstacles. Use this only if you want an OctoMap with ground identified as an obstacle (e.g., with an UAV).", kGrid3D().c_str(), kGridNormalsSegmentation().c_str()) Default value: false ( bool ).
 
static bool defaultGridGroundIsObstacle ()
 Default value of parameter Grid/GroundIsObstacle : false .
 
static std::string typeGridGroundIsObstacle ()
 Type of parameter Grid/GroundIsObstacle , as a string: bool .
 
static std::string kGridNoiseFilteringRadius ()
 Key of parameter Grid/NoiseFilteringRadius : "Noise filtering radius (0=disabled). Done after segmentation." Default value: 0.0 ( float ).
 
static float defaultGridNoiseFilteringRadius ()
 Default value of parameter Grid/NoiseFilteringRadius : 0.0 .
 
static std::string typeGridNoiseFilteringRadius ()
 Type of parameter Grid/NoiseFilteringRadius , as a string: float .
 
static std::string kGridNoiseFilteringMinNeighbors ()
 Key of parameter Grid/NoiseFilteringMinNeighbors : "Noise filtering minimum neighbors." Default value: 5 ( int ).
 
static int defaultGridNoiseFilteringMinNeighbors ()
 Default value of parameter Grid/NoiseFilteringMinNeighbors : 5 .
 
static std::string typeGridNoiseFilteringMinNeighbors ()
 Type of parameter Grid/NoiseFilteringMinNeighbors , as a string: int .
 
static std::string kGridScan2dUnknownSpaceFilled ()
 Key of parameter Grid/Scan2dUnknownSpaceFilled : uFormat("Unknown space filled. Only used with 2D laser scans. Use %s to set maximum range if laser scan max range is to set.", kGridRangeMax().c_str()) Default value: false ( bool ).
 
static bool defaultGridScan2dUnknownSpaceFilled ()
 Default value of parameter Grid/Scan2dUnknownSpaceFilled : false .
 
static std::string typeGridScan2dUnknownSpaceFilled ()
 Type of parameter Grid/Scan2dUnknownSpaceFilled , as a string: bool .
 
static std::string kGridRayTracing ()
 Key of parameter Grid/RayTracing : uFormat("Ray tracing is done for each occupied cell, filling unknown space between the sensor and occupied cells. If %s=true, RTAB-Map should be built with OctoMap support, otherwise 3D ray tracing is ignored.", kGrid3D().c_str()) Default value: false ( bool ).
 
static bool defaultGridRayTracing ()
 Default value of parameter Grid/RayTracing : false .
 
static std::string typeGridRayTracing ()
 Type of parameter Grid/RayTracing , as a string: bool .
 
static std::string kGridGlobalUpdateError ()
 Key of parameter GridGlobal/UpdateError : "Graph changed detection error (m). Update map only if poses in new optimized graph have moved more than this value." Default value: 0.01 ( float ).
 
static float defaultGridGlobalUpdateError ()
 Default value of parameter GridGlobal/UpdateError : 0.01 .
 
static std::string typeGridGlobalUpdateError ()
 Type of parameter GridGlobal/UpdateError , as a string: float .
 
static std::string kGridGlobalFootprintRadius ()
 Key of parameter GridGlobal/FootprintRadius : "Footprint radius (m) used to clear all obstacles under the graph." Default value: 0.0 ( float ).
 
static float defaultGridGlobalFootprintRadius ()
 Default value of parameter GridGlobal/FootprintRadius : 0.0 .
 
static std::string typeGridGlobalFootprintRadius ()
 Type of parameter GridGlobal/FootprintRadius , as a string: float .
 
static std::string kGridGlobalMinSize ()
 Key of parameter GridGlobal/MinSize : "Minimum map size (m)." Default value: 0.0 ( float ).
 
static float defaultGridGlobalMinSize ()
 Default value of parameter GridGlobal/MinSize : 0.0 .
 
static std::string typeGridGlobalMinSize ()
 Type of parameter GridGlobal/MinSize , as a string: float .
 
static std::string kGridGlobalEroded ()
 Key of parameter GridGlobal/Eroded : "Erode obstacle cells." Default value: false ( bool ).
 
static bool defaultGridGlobalEroded ()
 Default value of parameter GridGlobal/Eroded : false .
 
static std::string typeGridGlobalEroded ()
 Type of parameter GridGlobal/Eroded , as a string: bool .
 
static std::string kGridGlobalMaxNodes ()
 Key of parameter GridGlobal/MaxNodes : "Maximum nodes assembled in the map starting from the last node (0=unlimited)." Default value: 0 ( int ).
 
static int defaultGridGlobalMaxNodes ()
 Default value of parameter GridGlobal/MaxNodes : 0 .
 
static std::string typeGridGlobalMaxNodes ()
 Type of parameter GridGlobal/MaxNodes , as a string: int .
 
static std::string kGridGlobalAltitudeDelta ()
 Key of parameter GridGlobal/AltitudeDelta : "Assemble only nodes that have the same altitude of +-delta meters of the current pose (0=disabled). This is used to generate 2D occupancy grid based on the current altitude (e.g., multi-floor building)." Default value: 0 ( float ).
 
static float defaultGridGlobalAltitudeDelta ()
 Default value of parameter GridGlobal/AltitudeDelta : 0 .
 
static std::string typeGridGlobalAltitudeDelta ()
 Type of parameter GridGlobal/AltitudeDelta , as a string: float .
 
static std::string kGridGlobalOccupancyThr ()
 Key of parameter GridGlobal/OccupancyThr : "Occupancy threshold (value between 0 and 1)." Default value: 0.5 ( float ).
 
static float defaultGridGlobalOccupancyThr ()
 Default value of parameter GridGlobal/OccupancyThr : 0.5 .
 
static std::string typeGridGlobalOccupancyThr ()
 Type of parameter GridGlobal/OccupancyThr , as a string: float .
 
static std::string kGridGlobalProbHit ()
 Key of parameter GridGlobal/ProbHit : "Probability of a hit (value between 0.5 and 1)." Default value: 0.7 ( float ).
 
static float defaultGridGlobalProbHit ()
 Default value of parameter GridGlobal/ProbHit : 0.7 .
 
static std::string typeGridGlobalProbHit ()
 Type of parameter GridGlobal/ProbHit , as a string: float .
 
static std::string kGridGlobalProbMiss ()
 Key of parameter GridGlobal/ProbMiss : "Probability of a miss (value between 0 and 0.5)." Default value: 0.4 ( float ).
 
static float defaultGridGlobalProbMiss ()
 Default value of parameter GridGlobal/ProbMiss : 0.4 .
 
static std::string typeGridGlobalProbMiss ()
 Type of parameter GridGlobal/ProbMiss , as a string: float .
 
static std::string kGridGlobalProbClampingMin ()
 Key of parameter GridGlobal/ProbClampingMin : "Probability clamping minimum (value between 0 and 1)." Default value: 0.1192 ( float ).
 
static float defaultGridGlobalProbClampingMin ()
 Default value of parameter GridGlobal/ProbClampingMin : 0.1192 .
 
static std::string typeGridGlobalProbClampingMin ()
 Type of parameter GridGlobal/ProbClampingMin , as a string: float .
 
static std::string kGridGlobalProbClampingMax ()
 Key of parameter GridGlobal/ProbClampingMax : "Probability clamping maximum (value between 0 and 1)." Default value: 0.971 ( float ).
 
static float defaultGridGlobalProbClampingMax ()
 Default value of parameter GridGlobal/ProbClampingMax : 0.971 .
 
static std::string typeGridGlobalProbClampingMax ()
 Type of parameter GridGlobal/ProbClampingMax , as a string: float .
 
static std::string kGridGlobalFloodFillDepth ()
 Key of parameter GridGlobal/FloodFillDepth : "Flood fill filter (0=disabled), used to remove empty cells outside the map. The flood fill is done at the specified depth (between 1 and 16) of the OctoMap." Default value: 0 ( unsigned int ).
 
static unsigned int defaultGridGlobalFloodFillDepth ()
 Default value of parameter GridGlobal/FloodFillDepth : 0 .
 
static std::string typeGridGlobalFloodFillDepth ()
 Type of parameter GridGlobal/FloodFillDepth , as a string: unsigned int .
 
static std::string kMarkerStrategy ()
 Key of parameter Marker/Strategy : "Marker detection implementation: 0=OpenCV, 1=AprilTag" Default value: 0 ( int ).
 
static int defaultMarkerStrategy ()
 Default value of parameter Marker/Strategy : 0 .
 
static std::string typeMarkerStrategy ()
 Type of parameter Marker/Strategy , as a string: int .
 
static std::string kMarkerDictionary ()
 Key of parameter Marker/Dictionary : "Dictionary to use: DICT_ARUCO_4X4_50=0, DICT_ARUCO_4X4_100=1, DICT_ARUCO_4X4_250=2, DICT_ARUCO_4X4_1000=3, DICT_ARUCO_5X5_50=4, DICT_ARUCO_5X5_100=5, DICT_ARUCO_5X5_250=6, DICT_ARUCO_5X5_1000=7, DICT_ARUCO_6X6_50=8, DICT_ARUCO_6X6_100=9, DICT_ARUCO_6X6_250=10, DICT_ARUCO_6X6_1000=11, DICT_ARUCO_7X7_50=12, DICT_ARUCO_7X7_100=13, DICT_ARUCO_7X7_250=14, DICT_ARUCO_7X7_1000=15, DICT_ARUCO_ORIGINAL = 16, DICT_APRILTAG_16h5=17, DICT_APRILTAG_25h9=18, DICT_APRILTAG_36h10=19, DICT_APRILTAG_36h11=20, DICT_ARUCO_MIP_36H12=21" Default value: 0 ( int ).
 
static int defaultMarkerDictionary ()
 Default value of parameter Marker/Dictionary : 0 .
 
static std::string typeMarkerDictionary ()
 Type of parameter Marker/Dictionary , as a string: int .
 
static std::string kMarkerLength ()
 Key of parameter Marker/Length : "The length (m) of the markers' side. Value <=0 means automatic marker length estimation using the depth image (the camera should look at the marker perpendicularly for initialization). If 0, the length is estimated only on the first marker detected, then re-used for all next detections (i.e., this assumes that markers have all the same length). With <0, the length is estimated once for each unique marker, then re-used for next detections with the same marker ID." Default value: 0 ( float ).
 
static float defaultMarkerLength ()
 Default value of parameter Marker/Length : 0 .
 
static std::string typeMarkerLength ()
 Type of parameter Marker/Length , as a string: float .
 
static std::string kMarkerLengths ()
 Key of parameter Marker/Lengths : uFormat("List of markers to detect. Format is the marker's ID followed by its length (in meters), multiple markers are separated by a vertical line (\"id1 length|id2 length\"). We can also define a range of markers with \"id1:id2 length\" (id2 included). If empty, all markers of the chosen dictionary can be detected and their length is set/estimated based on %s. For example, to detect markers 12 and 14 with lengths of 8 and 15 cm respectively, and all markers between 30 and 40 with a length of 10 cm, set \"12 0.08|14 0.15|30:40 0.1\".", kMarkerLength().c_str()).c_str() Default value: "" (string).
 
static std::string defaultMarkerLengths ()
 Default value of parameter Marker/Lengths : "" .
 
static std::string typeMarkerLengths ()
 Type of parameter Marker/Lengths , as a string: string.
 
static std::string kMarkerMaxDepthError ()
 Key of parameter Marker/MaxDepthError : uFormat("Maximum depth error between all corners of a marker when estimating the marker length (when %s is 0). The smaller it is, the more perpendicular the camera should be toward the marker to initialize the length.", kMarkerLength().c_str()) Default value: 0.01 ( float ).
 
static float defaultMarkerMaxDepthError ()
 Default value of parameter Marker/MaxDepthError : 0.01 .
 
static std::string typeMarkerMaxDepthError ()
 Type of parameter Marker/MaxDepthError , as a string: float .
 
static std::string kMarkerVarianceLinear ()
 Key of parameter Marker/VarianceLinear : uFormat("Linear variance to set on marker detections. If %s is enabled and %s=2 (GTSAM): it is the variance of the range factor, with 9999 to disable range factor and to do only bearing.", kMarkerVarianceOrientationIgnored().c_str(), kOptimizerStrategy().c_str()) Default value: 0.001 ( float ).
 
static float defaultMarkerVarianceLinear ()
 Default value of parameter Marker/VarianceLinear : 0.001 .
 
static std::string typeMarkerVarianceLinear ()
 Type of parameter Marker/VarianceLinear , as a string: float .
 
static std::string kMarkerVarianceAngular ()
 Key of parameter Marker/VarianceAngular : uFormat("Angular variance to set on marker detections. If %s is enabled, it is ignored with %s=1 (g2o) and it corresponds to bearing variance with %s=2 (GTSAM).", kMarkerVarianceOrientationIgnored().c_str(), kOptimizerStrategy().c_str(), kOptimizerStrategy().c_str()) Default value: 0.01 ( float ).
 
static float defaultMarkerVarianceAngular ()
 Default value of parameter Marker/VarianceAngular : 0.01 .
 
static std::string typeMarkerVarianceAngular ()
 Type of parameter Marker/VarianceAngular , as a string: float .
 
static std::string kMarkerVarianceOrientationIgnored ()
 Key of parameter Marker/VarianceOrientationIgnored : uFormat("When this setting is false, the landmark's orientation is optimized during graph optimization. When this setting is true, only the position of the landmark is optimized. This can be useful when the landmark's orientation estimation is not reliable. Note that for %s=1 (g2o), only %s needs be set if we ignore orientation. For %s=2 (GTSAM), instead of optimizing the landmark's position directly, a bearing/range factor is used, with %s as the variance of the range factor (with 9999 to optimize the position with only a bearing factor) and %s as the variance of the bearing factor (pitch/yaw).", kOptimizerStrategy().c_str(), kMarkerVarianceLinear().c_str(), kOptimizerStrategy().c_str(), kMarkerVarianceLinear().c_str(), kMarkerVarianceAngular().c_str()) Default value: false ( bool ).
 
static bool defaultMarkerVarianceOrientationIgnored ()
 Default value of parameter Marker/VarianceOrientationIgnored : false .
 
static std::string typeMarkerVarianceOrientationIgnored ()
 Type of parameter Marker/VarianceOrientationIgnored , as a string: bool .
 
static std::string kMarkerMaxRange ()
 Key of parameter Marker/MaxRange : "Maximum range in which markers will be detected. <=0 for unlimited range." Default value: 0.0 ( float ).
 
static float defaultMarkerMaxRange ()
 Default value of parameter Marker/MaxRange : 0.0 .
 
static std::string typeMarkerMaxRange ()
 Type of parameter Marker/MaxRange , as a string: float .
 
static std::string kMarkerMinRange ()
 Key of parameter Marker/MinRange : "Miniminum range in which markers will be detected. <=0 for unlimited range." Default value: 0.0 ( float ).
 
static float defaultMarkerMinRange ()
 Default value of parameter Marker/MinRange : 0.0 .
 
static std::string typeMarkerMinRange ()
 Type of parameter Marker/MinRange , as a string: float .
 
static std::string kMarkerPriors ()
 Key of parameter Marker/Priors : "World prior locations of the markers. The map will be transformed in marker's world frame when a tag is detected. Format is the marker's ID followed by its position (angles in rad), multiple markers are separated by vertical line (\"id1 x y z roll pitch yaw|id2 x y z roll pitch yaw\"). Example: \"1 0 0 1 0 0 0|2 1 0 1 0 0 1.57\" (marker 2 is 1 meter forward than marker 1 with 90 deg yaw rotation)." Default value: "" (string).
 
static std::string defaultMarkerPriors ()
 Default value of parameter Marker/Priors : "" .
 
static std::string typeMarkerPriors ()
 Type of parameter Marker/Priors , as a string: string.
 
static std::string kMarkerPriorsVarianceLinear ()
 Key of parameter Marker/PriorsVarianceLinear : "Linear variance to set on marker priors." Default value: 0.001 ( float ).
 
static float defaultMarkerPriorsVarianceLinear ()
 Default value of parameter Marker/PriorsVarianceLinear : 0.001 .
 
static std::string typeMarkerPriorsVarianceLinear ()
 Type of parameter Marker/PriorsVarianceLinear , as a string: float .
 
static std::string kMarkerPriorsVarianceAngular ()
 Key of parameter Marker/PriorsVarianceAngular : "Angular variance to set on marker priors." Default value: 0.001 ( float ).
 
static float defaultMarkerPriorsVarianceAngular ()
 Default value of parameter Marker/PriorsVarianceAngular : 0.001 .
 
static std::string typeMarkerPriorsVarianceAngular ()
 Type of parameter Marker/PriorsVarianceAngular , as a string: float .
 
static std::string kMarkerAprilTagNThreads ()
 Key of parameter MarkerAprilTag/NThreads : "How many threads should be used?" Default value: 1 ( int ).
 
static int defaultMarkerAprilTagNThreads ()
 Default value of parameter MarkerAprilTag/NThreads : 1 .
 
static std::string typeMarkerAprilTagNThreads ()
 Type of parameter MarkerAprilTag/NThreads , as a string: int .
 
static std::string kMarkerAprilTagQuadDecimate ()
 Key of parameter MarkerAprilTag/QuadDecimate : "Detection of quads can be done on a lower-resolution image, improving speed at a cost of pose accuracy and a slight decrease in detection rate. Decoding the binary payload is still done at full resolution." Default value: 1.0 ( float ).
 
static float defaultMarkerAprilTagQuadDecimate ()
 Default value of parameter MarkerAprilTag/QuadDecimate : 1.0 .
 
static std::string typeMarkerAprilTagQuadDecimate ()
 Type of parameter MarkerAprilTag/QuadDecimate , as a string: float .
 
static std::string kMarkerAprilTagQuadSigma ()
 Key of parameter MarkerAprilTag/QuadSigma : "What Gaussian blur should be applied to the segmented image (used for quad detection?) Parameter is the standard deviation in pixels. Very noisy images benefit from non-zero values (e.g. 0.8)." Default value: 0.0 ( float ).
 
static float defaultMarkerAprilTagQuadSigma ()
 Default value of parameter MarkerAprilTag/QuadSigma : 0.0 .
 
static std::string typeMarkerAprilTagQuadSigma ()
 Type of parameter MarkerAprilTag/QuadSigma , as a string: float .
 
static std::string kMarkerAprilTagRefineEdges ()
 Key of parameter MarkerAprilTag/RefineEdges : uFormat("When true, the edges of the each quad are adjusted to \"snap to\" strong gradients nearby. This is useful when decimation is employed, as it can increase the quality of the initial quad estimate substantially. Generally recommended to be on (true). Very computationally inexpensive. Option is ignored if %s = 1.", kMarkerAprilTagQuadDecimate().c_str()) Default value: true ( bool ).
 
static bool defaultMarkerAprilTagRefineEdges ()
 Default value of parameter MarkerAprilTag/RefineEdges : true .
 
static std::string typeMarkerAprilTagRefineEdges ()
 Type of parameter MarkerAprilTag/RefineEdges , as a string: bool .
 
static std::string kMarkerAprilTagDecodeSharpening ()
 Key of parameter MarkerAprilTag/DecodeSharpening : "How much sharpening should be done to decoded images? This can help decode small tags but may or may not help in odd lighting conditions or low light conditions." Default value: 0.25 ( double ).
 
static double defaultMarkerAprilTagDecodeSharpening ()
 Default value of parameter MarkerAprilTag/DecodeSharpening : 0.25 .
 
static std::string typeMarkerAprilTagDecodeSharpening ()
 Type of parameter MarkerAprilTag/DecodeSharpening , as a string: double .
 
static std::string kMarkerAprilTagDebug ()
 Key of parameter MarkerAprilTag/Debug : uFormat("When true, write a variety of debugging images to the working directory where the app started (not %s) at various stages through the detection process. (Somewhat slow).", kRtabmapWorkingDirectory().c_str()) Default value: false ( bool ).
 
static bool defaultMarkerAprilTagDebug ()
 Default value of parameter MarkerAprilTag/Debug : false .
 
static std::string typeMarkerAprilTagDebug ()
 Type of parameter MarkerAprilTag/Debug , as a string: bool .
 
static std::string kMarkerOpenCVCornerRefinementMethod ()
 Key of parameter MarkerOpenCV/CornerRefinementMethod : "Corner refinement method for OpenCV strategy (0: None, 1: Subpixel, 2:contour, 3: AprilTag2). For OpenCV <3.3.0, this is \"doCornerRefinement\" parameter: set 0 for false and 1 for true." Default value: 0 ( int ).
 
static int defaultMarkerOpenCVCornerRefinementMethod ()
 Default value of parameter MarkerOpenCV/CornerRefinementMethod : 0 .
 
static std::string typeMarkerOpenCVCornerRefinementMethod ()
 Type of parameter MarkerOpenCV/CornerRefinementMethod , as a string: int .
 
static std::string kImuFilterMadgwickGain ()
 Key of parameter ImuFilter/MadgwickGain : "Gain of the filter. Higher values lead to faster convergence but more noise. Lower values lead to slower convergence but smoother signal, belongs in [0, 1]." Default value: 0.1 ( double ).
 
static double defaultImuFilterMadgwickGain ()
 Default value of parameter ImuFilter/MadgwickGain : 0.1 .
 
static std::string typeImuFilterMadgwickGain ()
 Type of parameter ImuFilter/MadgwickGain , as a string: double .
 
static std::string kImuFilterMadgwickZeta ()
 Key of parameter ImuFilter/MadgwickZeta : "Gyro drift gain (approx. rad/s), belongs in [-1, 1]." Default value: 0.0 ( double ).
 
static double defaultImuFilterMadgwickZeta ()
 Default value of parameter ImuFilter/MadgwickZeta : 0.0 .
 
static std::string typeImuFilterMadgwickZeta ()
 Type of parameter ImuFilter/MadgwickZeta , as a string: double .
 
static std::string kImuFilterComplementaryGainAcc ()
 Key of parameter ImuFilter/ComplementaryGainAcc : "Gain parameter for the complementary filter, belongs in [0, 1]." Default value: 0.01 ( double ).
 
static double defaultImuFilterComplementaryGainAcc ()
 Default value of parameter ImuFilter/ComplementaryGainAcc : 0.01 .
 
static std::string typeImuFilterComplementaryGainAcc ()
 Type of parameter ImuFilter/ComplementaryGainAcc , as a string: double .
 
static std::string kImuFilterComplementaryBiasAlpha ()
 Key of parameter ImuFilter/ComplementaryBiasAlpha : "Bias estimation gain parameter, belongs in [0, 1]." Default value: 0.01 ( double ).
 
static double defaultImuFilterComplementaryBiasAlpha ()
 Default value of parameter ImuFilter/ComplementaryBiasAlpha : 0.01 .
 
static std::string typeImuFilterComplementaryBiasAlpha ()
 Type of parameter ImuFilter/ComplementaryBiasAlpha , as a string: double .
 
static std::string kImuFilterComplementaryDoBiasEstimation ()
 Key of parameter ImuFilter/ComplementaryDoBiasEstimation : "Parameter whether to do bias estimation or not." Default value: true ( bool ).
 
static bool defaultImuFilterComplementaryDoBiasEstimation ()
 Default value of parameter ImuFilter/ComplementaryDoBiasEstimation : true .
 
static std::string typeImuFilterComplementaryDoBiasEstimation ()
 Type of parameter ImuFilter/ComplementaryDoBiasEstimation , as a string: bool .
 
static std::string kImuFilterComplementaryDoAdpativeGain ()
 Key of parameter ImuFilter/ComplementaryDoAdpativeGain : "Parameter whether to do adaptive gain or not." Default value: true ( bool ).
 
static bool defaultImuFilterComplementaryDoAdpativeGain ()
 Default value of parameter ImuFilter/ComplementaryDoAdpativeGain : true .
 
static std::string typeImuFilterComplementaryDoAdpativeGain ()
 Type of parameter ImuFilter/ComplementaryDoAdpativeGain , as a string: bool .
 
static const ParametersMap & getDefaultParameters ()
 
static std::string getType (const std::string &paramKey)
 
static std::string getDescription (const std::string &paramKey)
 
+static bool parse (const ParametersMap &parameters, const std::string &key, bool &value)
 
+static bool parse (const ParametersMap &parameters, const std::string &key, int &value)
 
+static bool parse (const ParametersMap &parameters, const std::string &key, unsigned int &value)
 
+static bool parse (const ParametersMap &parameters, const std::string &key, float &value)
 
+static bool parse (const ParametersMap &parameters, const std::string &key, double &value)
 
+static bool parse (const ParametersMap &parameters, const std::string &key, std::string &value)
 
+static void parse (const ParametersMap &parameters, ParametersMap &parametersOut)
 
+static const char * showUsage ()
 
+static ParametersMap parseArguments (int argc, char *argv[], bool onlyParameters=false)
 
+static std::string getVersion ()
 
+static std::string getDefaultDatabaseName ()
 
+static std::string serialize (const ParametersMap &parameters)
 
+static ParametersMap deserialize (const std::string &parameters)
 
+static bool isFeatureParameter (const std::string &param)
 
+static ParametersMap getDefaultOdometryParameters (bool stereo=false, bool vis=true, bool icp=false)
 
+static ParametersMap getDefaultParameters (const std::string &group)
 
static ParametersMap filterParameters (const ParametersMap &parameters, const std::string &group, bool remove=false)
 
+static void readINI (const std::string &configFile, ParametersMap &parameters, bool modifiedOnly=false)
 
+static void readINIStr (const std::string &configContent, ParametersMap &parameters, bool modifiedOnly=false)
 
+static void writeINI (const std::string &configFile, const ParametersMap &parameters)
 
static const std::map< std::string, std::pair< bool, std::string > > & getRemovedParameters ()
 
static const ParametersMap & getBackwardCompatibilityMap ()
 
+static std::string createDefaultWorkingDirectory ()
 
+

Detailed Description

+

Class Parameters. This class is used to manage all custom parameters we want in the application. It was designed to be very easy to add a new parameter (just by adding one line of code). The macro PARAM(PREFIX, NAME, TYPE, DEFAULT_VALUE) is used to create a parameter in this class. A parameter can be accessed after by Parameters::defaultPARAMETERNAME() for the default value, Parameters::kPARAMETERNAME for his key (parameter name). The class provides also a general map containing all the parameter's key and default value. This map can be accessed anywhere in the application by Parameters::getDefaultParameters(); Example:

//Defining a parameter in this class with the macro PARAM:
+
PARAM(Video, ImageWidth, int, 640);
+
+
// Now from anywhere in the application (Parameters is a singleton)
+
int width = Parameters::defaultVideoImageWidth(); // theDefaultValue = 640
+
std::string theKey = Parameters::kVideoImageWidth(); // theKey = "Video/ImageWidth"
+
std::string strValue = Util::value(Parameters::getDefaultParameters(), theKey); // strValue = "640"
+
static const ParametersMap & getDefaultParameters()
Definition Parameters.h:992
+
See also
getDefaultParameters()
+
+The Parameter reference page, which lists every parameter with its type, default value and description.
+ +

Definition at line 182 of file Parameters.h.

+

Member Function Documentation

+ +

◆ kRtabmapPublishStats()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapPublishStats ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/PublishStats : "Publishing statistics." Default value: true ( bool ).

+ +

Definition at line 185 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapPublishStats()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapPublishStats ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/PublishStats : true .

+ +

Definition at line 185 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapPublishStats()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapPublishStats ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/PublishStats , as a string: bool .

+ +

Definition at line 185 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapPublishLastSignature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapPublishLastSignature ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/PublishLastSignature : "Publishing last signature." Default value: true ( bool ).

+ +

Definition at line 186 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapPublishLastSignature()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapPublishLastSignature ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/PublishLastSignature : true .

+ +

Definition at line 186 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapPublishLastSignature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapPublishLastSignature ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/PublishLastSignature , as a string: bool .

+ +

Definition at line 186 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapPublishPdf()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapPublishPdf ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/PublishPdf : "Publishing pdf." Default value: true ( bool ).

+ +

Definition at line 187 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapPublishPdf()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapPublishPdf ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/PublishPdf : true .

+ +

Definition at line 187 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapPublishPdf()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapPublishPdf ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/PublishPdf , as a string: bool .

+ +

Definition at line 187 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapPublishLikelihood()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapPublishLikelihood ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/PublishLikelihood : "Publishing likelihood." Default value: true ( bool ).

+ +

Definition at line 188 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapPublishLikelihood()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapPublishLikelihood ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/PublishLikelihood : true .

+ +

Definition at line 188 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapPublishLikelihood()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapPublishLikelihood ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/PublishLikelihood , as a string: bool .

+ +

Definition at line 188 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapPublishRAMUsage()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapPublishRAMUsage ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/PublishRAMUsage : "Publishing RAM usage in statistics (may add a small overhead to get info from the system)." Default value: false ( bool ).

+ +

Definition at line 189 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapPublishRAMUsage()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapPublishRAMUsage ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/PublishRAMUsage : false .

+ +

Definition at line 189 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapPublishRAMUsage()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapPublishRAMUsage ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/PublishRAMUsage , as a string: bool .

+ +

Definition at line 189 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapComputeRMSE()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapComputeRMSE ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/ComputeRMSE : "Compute root mean square error (RMSE) and publish it in statistics, if ground truth is provided." Default value: true ( bool ).

+ +

Definition at line 190 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapComputeRMSE()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapComputeRMSE ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/ComputeRMSE : true .

+ +

Definition at line 190 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapComputeRMSE()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapComputeRMSE ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/ComputeRMSE , as a string: bool .

+ +

Definition at line 190 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapSaveWMState()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapSaveWMState ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/SaveWMState : "Save working memory state after each update in statistics." Default value: false ( bool ).

+ +

Definition at line 191 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapSaveWMState()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapSaveWMState ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/SaveWMState : false .

+ +

Definition at line 191 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapSaveWMState()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapSaveWMState ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/SaveWMState , as a string: bool .

+ +

Definition at line 191 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapTimeThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapTimeThr ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/TimeThr : "Maximum time allowed for map update (ms) (0 means infinity). When map update time exceeds this fixed time threshold, some nodes in Working Memory (WM) are transferred to Long-Term Memory to limit the size of the WM and decrease the update time." Default value: 0 ( float ).

+ +

Definition at line 192 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapTimeThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRtabmapTimeThr ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/TimeThr : 0 .

+ +

Definition at line 192 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapTimeThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapTimeThr ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/TimeThr , as a string: float .

+ +

Definition at line 192 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapMemoryThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapMemoryThr ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/MemoryThr : uFormat("Maximum nodes in the Working Memory (0 means infinity). Similar to \"%s\", when the number of nodes in Working Memory (WM) exceeds this treshold, some nodes are transferred to Long-Term Memory to keep WM size fixed.", kRtabmapTimeThr().c_str()) Default value: 0 ( int ).

+ +

Definition at line 193 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapMemoryThr()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRtabmapMemoryThr ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/MemoryThr : 0 .

+ +

Definition at line 193 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapMemoryThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapMemoryThr ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/MemoryThr , as a string: int .

+ +

Definition at line 193 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapDetectionRate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapDetectionRate ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/DetectionRate : "Detection rate (Hz). RTAB-Map will filter input images to satisfy this rate." Default value: 1 ( float ).

+ +

Definition at line 194 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapDetectionRate()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRtabmapDetectionRate ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/DetectionRate : 1 .

+ +

Definition at line 194 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapDetectionRate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapDetectionRate ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/DetectionRate , as a string: float .

+ +

Definition at line 194 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapImageBufferSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapImageBufferSize ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/ImageBufferSize : "Data buffer size (0 min inf)." Default value: 1 ( unsigned int ).

+ +

Definition at line 195 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapImageBufferSize()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultRtabmapImageBufferSize ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/ImageBufferSize : 1 .

+ +

Definition at line 195 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapImageBufferSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapImageBufferSize ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/ImageBufferSize , as a string: unsigned int .

+ +

Definition at line 195 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapCreateIntermediateNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapCreateIntermediateNodes ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/CreateIntermediateNodes : uFormat("Create intermediate nodes between loop closure detection. Only used when %s>0.", kRtabmapDetectionRate().c_str()) Default value: false ( bool ).

+ +

Definition at line 196 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapCreateIntermediateNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapCreateIntermediateNodes ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/CreateIntermediateNodes : false .

+ +

Definition at line 196 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapCreateIntermediateNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapCreateIntermediateNodes ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/CreateIntermediateNodes , as a string: bool .

+ +

Definition at line 196 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapWorkingDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapWorkingDirectory ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/WorkingDirectory : "Working directory." Default value: "" (string).

+ +

Definition at line 197 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapWorkingDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultRtabmapWorkingDirectory ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/WorkingDirectory : "" .

+ +

Definition at line 197 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapWorkingDirectory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapWorkingDirectory ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/WorkingDirectory , as a string: string.

+ +

Definition at line 197 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapMaxRetrieved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapMaxRetrieved ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/MaxRetrieved : "Maximum nodes retrieved at the same time from LTM." Default value: 2 ( unsigned int ).

+ +

Definition at line 198 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapMaxRetrieved()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultRtabmapMaxRetrieved ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/MaxRetrieved : 2 .

+ +

Definition at line 198 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapMaxRetrieved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapMaxRetrieved ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/MaxRetrieved , as a string: unsigned int .

+ +

Definition at line 198 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapMaxRepublished()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapMaxRepublished ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/MaxRepublished : uFormat("Maximum nodes republished when requesting missing data. When %s=false, only loop closure data is republished, otherwise the closest nodes from the current localization are republished first. Ignored if %s=false.", kRGBDEnabled().c_str(), kRtabmapPublishLastSignature().c_str()) Default value: 2 ( unsigned int ).

+ +

Definition at line 199 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapMaxRepublished()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultRtabmapMaxRepublished ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/MaxRepublished : 2 .

+ +

Definition at line 199 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapMaxRepublished()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapMaxRepublished ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/MaxRepublished , as a string: unsigned int .

+ +

Definition at line 199 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapStatisticLogsBufferedInRAM()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapStatisticLogsBufferedInRAM ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/StatisticLogsBufferedInRAM : "Statistic logs buffered in RAM instead of written to hard drive after each iteration." Default value: true ( bool ).

+ +

Definition at line 200 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapStatisticLogsBufferedInRAM()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapStatisticLogsBufferedInRAM ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/StatisticLogsBufferedInRAM : true .

+ +

Definition at line 200 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapStatisticLogsBufferedInRAM()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapStatisticLogsBufferedInRAM ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/StatisticLogsBufferedInRAM , as a string: bool .

+ +

Definition at line 200 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapStatisticLogged()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapStatisticLogged ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/StatisticLogged : "Logging enabled." Default value: false ( bool ).

+ +

Definition at line 201 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapStatisticLogged()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapStatisticLogged ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/StatisticLogged : false .

+ +

Definition at line 201 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapStatisticLogged()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapStatisticLogged ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/StatisticLogged , as a string: bool .

+ +

Definition at line 201 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapStatisticLoggedHeaders()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapStatisticLoggedHeaders ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/StatisticLoggedHeaders : "Add column header description to log files." Default value: true ( bool ).

+ +

Definition at line 202 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapStatisticLoggedHeaders()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapStatisticLoggedHeaders ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/StatisticLoggedHeaders : true .

+ +

Definition at line 202 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapStatisticLoggedHeaders()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapStatisticLoggedHeaders ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/StatisticLoggedHeaders , as a string: bool .

+ +

Definition at line 202 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapStartNewMapOnLoopClosure()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapStartNewMapOnLoopClosure ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/StartNewMapOnLoopClosure : "Start a new map only if there is a global loop closure with a previous map." Default value: false ( bool ).

+ +

Definition at line 203 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapStartNewMapOnLoopClosure()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapStartNewMapOnLoopClosure ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/StartNewMapOnLoopClosure : false .

+ +

Definition at line 203 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapStartNewMapOnLoopClosure()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapStartNewMapOnLoopClosure ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/StartNewMapOnLoopClosure , as a string: bool .

+ +

Definition at line 203 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapStartNewMapOnGoodSignature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapStartNewMapOnGoodSignature ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/StartNewMapOnGoodSignature : uFormat("Start a new map only if the first signature is not bad (i.e., has enough features, see %s).", kKpBadSignRatio().c_str()) Default value: false ( bool ).

+ +

Definition at line 204 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapStartNewMapOnGoodSignature()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapStartNewMapOnGoodSignature ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/StartNewMapOnGoodSignature : false .

+ +

Definition at line 204 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapStartNewMapOnGoodSignature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapStartNewMapOnGoodSignature ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/StartNewMapOnGoodSignature , as a string: bool .

+ +

Definition at line 204 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapImagesAlreadyRectified()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapImagesAlreadyRectified ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/ImagesAlreadyRectified : "Images are already rectified. By default RTAB-Map assumes that received images are rectified. If they are not, they can be rectified by RTAB-Map if this parameter is false." Default value: true ( bool ).

+ +

Definition at line 205 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapImagesAlreadyRectified()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapImagesAlreadyRectified ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/ImagesAlreadyRectified : true .

+ +

Definition at line 205 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapImagesAlreadyRectified()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapImagesAlreadyRectified ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/ImagesAlreadyRectified , as a string: bool .

+ +

Definition at line 205 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapRectifyOnlyFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapRectifyOnlyFeatures ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/RectifyOnlyFeatures : uFormat("If \"%s\" is false and this parameter is true, the whole RGB image will not be rectified, only the features. Warning: As projection of RGB-D image to point cloud is assuming that images are rectified, the generated point cloud map will have wrong colors if this parameter is true.", kRtabmapImagesAlreadyRectified().c_str()) Default value: false ( bool ).

+ +

Definition at line 206 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapRectifyOnlyFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapRectifyOnlyFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/RectifyOnlyFeatures : false .

+ +

Definition at line 206 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapRectifyOnlyFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapRectifyOnlyFeatures ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/RectifyOnlyFeatures , as a string: bool .

+ +

Definition at line 206 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapLoopThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapLoopThr ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/LoopThr : "Loop closing threshold." Default value: 0.11 ( float ).

+ +

Definition at line 209 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapLoopThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRtabmapLoopThr ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/LoopThr : 0.11 .

+ +

Definition at line 209 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapLoopThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapLoopThr ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/LoopThr , as a string: float .

+ +

Definition at line 209 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapLoopRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapLoopRatio ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/LoopRatio : "The loop closure hypothesis must be over LoopRatio x lastHypothesisValue." Default value: 0 ( float ).

+ +

Definition at line 210 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapLoopRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRtabmapLoopRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/LoopRatio : 0 .

+ +

Definition at line 210 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapLoopRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapLoopRatio ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/LoopRatio , as a string: float .

+ +

Definition at line 210 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapLoopGPS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapLoopGPS ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/LoopGPS : uFormat("Use GPS to filter likelihood (if GPS is recorded). Only locations inside the local radius \"%s\" of the current GPS location are considered for loop closure detection.", kRGBDLocalRadius().c_str()) Default value: true ( bool ).

+ +

Definition at line 211 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapLoopGPS()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRtabmapLoopGPS ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/LoopGPS : true .

+ +

Definition at line 211 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapLoopGPS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapLoopGPS ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/LoopGPS , as a string: bool .

+ +

Definition at line 211 of file Parameters.h.

+ +
+
+ +

◆ kRtabmapVirtualPlaceLikelihoodRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRtabmapVirtualPlaceLikelihoodRatio ()
+
+inlinestatic
+
+ +

Key of parameter Rtabmap/VirtualPlaceLikelihoodRatio : "Likelihood ratio for virtual place (for no loop closure hypothesis): 0=Mean / StdDev, 1=StdDev / (Max-Mean)" Default value: 0 ( int ).

+ +

Definition at line 212 of file Parameters.h.

+ +
+
+ +

◆ defaultRtabmapVirtualPlaceLikelihoodRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRtabmapVirtualPlaceLikelihoodRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Rtabmap/VirtualPlaceLikelihoodRatio : 0 .

+ +

Definition at line 212 of file Parameters.h.

+ +
+
+ +

◆ typeRtabmapVirtualPlaceLikelihoodRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRtabmapVirtualPlaceLikelihoodRatio ()
+
+inlinestatic
+
+ +

Type of parameter Rtabmap/VirtualPlaceLikelihoodRatio , as a string: int .

+ +

Definition at line 212 of file Parameters.h.

+ +
+
+ +

◆ kMemRehearsalSimilarity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemRehearsalSimilarity ()
+
+inlinestatic
+
+ +

Key of parameter Mem/RehearsalSimilarity : "Rehearsal similarity." Default value: 0.6 ( float ).

+ +

Definition at line 215 of file Parameters.h.

+ +
+
+ +

◆ defaultMemRehearsalSimilarity()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMemRehearsalSimilarity ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/RehearsalSimilarity : 0.6 .

+ +

Definition at line 215 of file Parameters.h.

+ +
+
+ +

◆ typeMemRehearsalSimilarity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemRehearsalSimilarity ()
+
+inlinestatic
+
+ +

Type of parameter Mem/RehearsalSimilarity , as a string: float .

+ +

Definition at line 215 of file Parameters.h.

+ +
+
+ +

◆ kMemImageKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemImageKept ()
+
+inlinestatic
+
+ +

Key of parameter Mem/ImageKept : "Keep raw images in RAM." Default value: false ( bool ).

+ +

Definition at line 216 of file Parameters.h.

+ +
+
+ +

◆ defaultMemImageKept()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemImageKept ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/ImageKept : false .

+ +

Definition at line 216 of file Parameters.h.

+ +
+
+ +

◆ typeMemImageKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemImageKept ()
+
+inlinestatic
+
+ +

Type of parameter Mem/ImageKept , as a string: bool .

+ +

Definition at line 216 of file Parameters.h.

+ +
+
+ +

◆ kMemBinDataKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemBinDataKept ()
+
+inlinestatic
+
+ +

Key of parameter Mem/BinDataKept : "Keep binary data in db." Default value: true ( bool ).

+ +

Definition at line 217 of file Parameters.h.

+ +
+
+ +

◆ defaultMemBinDataKept()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemBinDataKept ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/BinDataKept : true .

+ +

Definition at line 217 of file Parameters.h.

+ +
+
+ +

◆ typeMemBinDataKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemBinDataKept ()
+
+inlinestatic
+
+ +

Type of parameter Mem/BinDataKept , as a string: bool .

+ +

Definition at line 217 of file Parameters.h.

+ +
+
+ +

◆ kMemRawDescriptorsKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemRawDescriptorsKept ()
+
+inlinestatic
+
+ +

Key of parameter Mem/RawDescriptorsKept : "Raw descriptors kept in memory." Default value: true ( bool ).

+ +

Definition at line 218 of file Parameters.h.

+ +
+
+ +

◆ defaultMemRawDescriptorsKept()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemRawDescriptorsKept ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/RawDescriptorsKept : true .

+ +

Definition at line 218 of file Parameters.h.

+ +
+
+ +

◆ typeMemRawDescriptorsKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemRawDescriptorsKept ()
+
+inlinestatic
+
+ +

Type of parameter Mem/RawDescriptorsKept , as a string: bool .

+ +

Definition at line 218 of file Parameters.h.

+ +
+
+ +

◆ kMemLoadVisualLocalFeaturesOnInit()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemLoadVisualLocalFeaturesOnInit ()
+
+inlinestatic
+
+ +

Key of parameter Mem/LoadVisualLocalFeaturesOnInit : "Load all local visual features (keypoints, descriptors and 3D points) in RAM when loading an existing database. This can add significant time to initialize the memory but the features will be already loaded before computing loop closure transforms. If false, the features are loaded on-demand from the database when a loop closure transformation should be estimated." Default value: true ( bool ).

+ +

Definition at line 219 of file Parameters.h.

+ +
+
+ +

◆ defaultMemLoadVisualLocalFeaturesOnInit()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemLoadVisualLocalFeaturesOnInit ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/LoadVisualLocalFeaturesOnInit : true .

+ +

Definition at line 219 of file Parameters.h.

+ +
+
+ +

◆ typeMemLoadVisualLocalFeaturesOnInit()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemLoadVisualLocalFeaturesOnInit ()
+
+inlinestatic
+
+ +

Type of parameter Mem/LoadVisualLocalFeaturesOnInit , as a string: bool .

+ +

Definition at line 219 of file Parameters.h.

+ +
+
+ +

◆ kMemMapLabelsAdded()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemMapLabelsAdded ()
+
+inlinestatic
+
+ +

Key of parameter Mem/MapLabelsAdded : "Create map labels. The first node of a map will be labeled as \"map#\" where # is the map ID." Default value: true ( bool ).

+ +

Definition at line 220 of file Parameters.h.

+ +
+
+ +

◆ defaultMemMapLabelsAdded()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemMapLabelsAdded ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/MapLabelsAdded : true .

+ +

Definition at line 220 of file Parameters.h.

+ +
+
+ +

◆ typeMemMapLabelsAdded()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemMapLabelsAdded ()
+
+inlinestatic
+
+ +

Type of parameter Mem/MapLabelsAdded , as a string: bool .

+ +

Definition at line 220 of file Parameters.h.

+ +
+
+ +

◆ kMemSaveDepth16Format()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemSaveDepth16Format ()
+
+inlinestatic
+
+ +

Key of parameter Mem/SaveDepth16Format : "Save depth image into 16 bits format to reduce memory used. Warning: values over ~65 meters are ignored (maximum 65535 millimeters)." Default value: false ( bool ).

+ +

Definition at line 221 of file Parameters.h.

+ +
+
+ +

◆ defaultMemSaveDepth16Format()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemSaveDepth16Format ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/SaveDepth16Format : false .

+ +

Definition at line 221 of file Parameters.h.

+ +
+
+ +

◆ typeMemSaveDepth16Format()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemSaveDepth16Format ()
+
+inlinestatic
+
+ +

Type of parameter Mem/SaveDepth16Format , as a string: bool .

+ +

Definition at line 221 of file Parameters.h.

+ +
+
+ +

◆ kMemNotLinkedNodesKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemNotLinkedNodesKept ()
+
+inlinestatic
+
+ +

Key of parameter Mem/NotLinkedNodesKept : "Keep not linked nodes in db (rehearsed nodes and deleted nodes)." Default value: true ( bool ).

+ +

Definition at line 222 of file Parameters.h.

+ +
+
+ +

◆ defaultMemNotLinkedNodesKept()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemNotLinkedNodesKept ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/NotLinkedNodesKept : true .

+ +

Definition at line 222 of file Parameters.h.

+ +
+
+ +

◆ typeMemNotLinkedNodesKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemNotLinkedNodesKept ()
+
+inlinestatic
+
+ +

Type of parameter Mem/NotLinkedNodesKept , as a string: bool .

+ +

Definition at line 222 of file Parameters.h.

+ +
+
+ +

◆ kMemIntermediateNodeDataKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemIntermediateNodeDataKept ()
+
+inlinestatic
+
+ +

Key of parameter Mem/IntermediateNodeDataKept : "Keep intermediate node data in db." Default value: false ( bool ).

+ +

Definition at line 223 of file Parameters.h.

+ +
+
+ +

◆ defaultMemIntermediateNodeDataKept()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemIntermediateNodeDataKept ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/IntermediateNodeDataKept : false .

+ +

Definition at line 223 of file Parameters.h.

+ +
+
+ +

◆ typeMemIntermediateNodeDataKept()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemIntermediateNodeDataKept ()
+
+inlinestatic
+
+ +

Type of parameter Mem/IntermediateNodeDataKept , as a string: bool .

+ +

Definition at line 223 of file Parameters.h.

+ +
+
+ +

◆ kMemImageCompressionFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemImageCompressionFormat ()
+
+inlinestatic
+
+ +

Key of parameter Mem/ImageCompressionFormat : "RGB image compression format. It should be \".jpg\" or \".png\"." Default value: ".jpg" (string).

+ +

Definition at line 224 of file Parameters.h.

+ +
+
+ +

◆ defaultMemImageCompressionFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultMemImageCompressionFormat ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/ImageCompressionFormat : ".jpg" .

+ +

Definition at line 224 of file Parameters.h.

+ +
+
+ +

◆ typeMemImageCompressionFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemImageCompressionFormat ()
+
+inlinestatic
+
+ +

Type of parameter Mem/ImageCompressionFormat , as a string: string.

+ +

Definition at line 224 of file Parameters.h.

+ +
+
+ +

◆ kMemDepthCompressionFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemDepthCompressionFormat ()
+
+inlinestatic
+
+ +

Key of parameter Mem/DepthCompressionFormat : "Depth image compression format for 16UC1 depth type. It should be \".png\" or \".rvl\". If depth type is 32FC1, \".png\" is used." Default value: ".rvl" (string).

+ +

Definition at line 225 of file Parameters.h.

+ +
+
+ +

◆ defaultMemDepthCompressionFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultMemDepthCompressionFormat ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/DepthCompressionFormat : ".rvl" .

+ +

Definition at line 225 of file Parameters.h.

+ +
+
+ +

◆ typeMemDepthCompressionFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemDepthCompressionFormat ()
+
+inlinestatic
+
+ +

Type of parameter Mem/DepthCompressionFormat , as a string: string.

+ +

Definition at line 225 of file Parameters.h.

+ +
+
+ +

◆ kMemSTMSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemSTMSize ()
+
+inlinestatic
+
+ +

Key of parameter Mem/STMSize : "Short-term memory size." Default value: 10 ( unsigned int ).

+ +

Definition at line 226 of file Parameters.h.

+ +
+
+ +

◆ defaultMemSTMSize()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultMemSTMSize ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/STMSize : 10 .

+ +

Definition at line 226 of file Parameters.h.

+ +
+
+ +

◆ typeMemSTMSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemSTMSize ()
+
+inlinestatic
+
+ +

Type of parameter Mem/STMSize , as a string: unsigned int .

+ +

Definition at line 226 of file Parameters.h.

+ +
+
+ +

◆ kMemIncrementalMemory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemIncrementalMemory ()
+
+inlinestatic
+
+ +

Key of parameter Mem/IncrementalMemory : "SLAM mode, otherwise it is Localization mode." Default value: true ( bool ).

+ +

Definition at line 227 of file Parameters.h.

+ +
+
+ +

◆ defaultMemIncrementalMemory()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemIncrementalMemory ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/IncrementalMemory : true .

+ +

Definition at line 227 of file Parameters.h.

+ +
+
+ +

◆ typeMemIncrementalMemory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemIncrementalMemory ()
+
+inlinestatic
+
+ +

Type of parameter Mem/IncrementalMemory , as a string: bool .

+ +

Definition at line 227 of file Parameters.h.

+ +
+
+ +

◆ kMemLocalizationReadOnly()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemLocalizationReadOnly ()
+
+inlinestatic
+
+ +

Key of parameter Mem/LocalizationReadOnly : uFormat("In localization mode, open the database in read-only mode (ignored if %s=true). Currrenty incompatible with memory management (%s and %s cannot be used) and if there are disjoint sessions in working memory. Last localization pose won't be saved back in the database at the end of the session, so the robot will always restart to original last localization pose, unless %s is used or an external initial pose is provided on initialization.", kMemIncrementalMemory().c_str(), kRtabmapLoopThr().c_str(), kRtabmapMemoryThr().c_str(), kRGBDStartAtOrigin().c_str()).c_str() Default value: false ( bool ).

+ +

Definition at line 228 of file Parameters.h.

+ +
+
+ +

◆ defaultMemLocalizationReadOnly()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemLocalizationReadOnly ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/LocalizationReadOnly : false .

+ +

Definition at line 228 of file Parameters.h.

+ +
+
+ +

◆ typeMemLocalizationReadOnly()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemLocalizationReadOnly ()
+
+inlinestatic
+
+ +

Type of parameter Mem/LocalizationReadOnly , as a string: bool .

+ +

Definition at line 228 of file Parameters.h.

+ +
+
+ +

◆ kMemLocalizationDataSaved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemLocalizationDataSaved ()
+
+inlinestatic
+
+ +

Key of parameter Mem/LocalizationDataSaved : uFormat("Save localization data during localization session (when %s=false). When enabled, the database will then also grow in localization mode. This mode would be used only for debugging purpose.", kMemIncrementalMemory().c_str()).c_str() Default value: false ( bool ).

+ +

Definition at line 229 of file Parameters.h.

+ +
+
+ +

◆ defaultMemLocalizationDataSaved()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemLocalizationDataSaved ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/LocalizationDataSaved : false .

+ +

Definition at line 229 of file Parameters.h.

+ +
+
+ +

◆ typeMemLocalizationDataSaved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemLocalizationDataSaved ()
+
+inlinestatic
+
+ +

Type of parameter Mem/LocalizationDataSaved , as a string: bool .

+ +

Definition at line 229 of file Parameters.h.

+ +
+
+ +

◆ kMemReduceGraph()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemReduceGraph ()
+
+inlinestatic
+
+ +

Key of parameter Mem/ReduceGraph : uFormat("Reduce graph. Merge nodes when loop closures are added (ignoring those with user data). Note that this approach assumes that 100%% of the loop closures accepted are good, so it is highly recommended to enable \"%s\" at the same time.", kRGBDOptimizeMaxError().c_str()) Default value: false ( bool ).

+ +

Definition at line 230 of file Parameters.h.

+ +
+
+ +

◆ defaultMemReduceGraph()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemReduceGraph ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/ReduceGraph : false .

+ +

Definition at line 230 of file Parameters.h.

+ +
+
+ +

◆ typeMemReduceGraph()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemReduceGraph ()
+
+inlinestatic
+
+ +

Type of parameter Mem/ReduceGraph , as a string: bool .

+ +

Definition at line 230 of file Parameters.h.

+ +
+
+ +

◆ kMemRecentWmRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemRecentWmRatio ()
+
+inlinestatic
+
+ +

Key of parameter Mem/RecentWmRatio : "Ratio of locations after the last loop closure in WM that cannot be transferred." Default value: 0.2 ( float ).

+ +

Definition at line 231 of file Parameters.h.

+ +
+
+ +

◆ defaultMemRecentWmRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMemRecentWmRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/RecentWmRatio : 0.2 .

+ +

Definition at line 231 of file Parameters.h.

+ +
+
+ +

◆ typeMemRecentWmRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemRecentWmRatio ()
+
+inlinestatic
+
+ +

Type of parameter Mem/RecentWmRatio , as a string: float .

+ +

Definition at line 231 of file Parameters.h.

+ +
+
+ +

◆ kMemTransferSortingByWeightId()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemTransferSortingByWeightId ()
+
+inlinestatic
+
+ +

Key of parameter Mem/TransferSortingByWeightId : "On transfer, signatures are sorted by weight->ID only (i.e. the oldest of the lowest weighted signatures are transferred first). If false, the signatures are sorted by weight->Age->ID (i.e. the oldest inserted in WM of the lowest weighted signatures are transferred first). Note that retrieval updates the age, not the ID." Default value: false ( bool ).

+ +

Definition at line 232 of file Parameters.h.

+ +
+
+ +

◆ defaultMemTransferSortingByWeightId()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemTransferSortingByWeightId ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/TransferSortingByWeightId : false .

+ +

Definition at line 232 of file Parameters.h.

+ +
+
+ +

◆ typeMemTransferSortingByWeightId()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemTransferSortingByWeightId ()
+
+inlinestatic
+
+ +

Type of parameter Mem/TransferSortingByWeightId , as a string: bool .

+ +

Definition at line 232 of file Parameters.h.

+ +
+
+ +

◆ kMemRehearsalIdUpdatedToNewOne()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemRehearsalIdUpdatedToNewOne ()
+
+inlinestatic
+
+ +

Key of parameter Mem/RehearsalIdUpdatedToNewOne : uFormat("On merge, update to new id. When false, no copy. Keep this disable if %s=true.", kRtabmapCreateIntermediateNodes().c_str()) Default value: false ( bool ).

+ +

Definition at line 233 of file Parameters.h.

+ +
+
+ +

◆ defaultMemRehearsalIdUpdatedToNewOne()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemRehearsalIdUpdatedToNewOne ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/RehearsalIdUpdatedToNewOne : false .

+ +

Definition at line 233 of file Parameters.h.

+ +
+
+ +

◆ typeMemRehearsalIdUpdatedToNewOne()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemRehearsalIdUpdatedToNewOne ()
+
+inlinestatic
+
+ +

Type of parameter Mem/RehearsalIdUpdatedToNewOne , as a string: bool .

+ +

Definition at line 233 of file Parameters.h.

+ +
+
+ +

◆ kMemRehearsalWeightIgnoredWhileMoving()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemRehearsalWeightIgnoredWhileMoving ()
+
+inlinestatic
+
+ +

Key of parameter Mem/RehearsalWeightIgnoredWhileMoving : "When the robot is moving, weights are not updated on rehearsal." Default value: false ( bool ).

+ +

Definition at line 234 of file Parameters.h.

+ +
+
+ +

◆ defaultMemRehearsalWeightIgnoredWhileMoving()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemRehearsalWeightIgnoredWhileMoving ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/RehearsalWeightIgnoredWhileMoving : false .

+ +

Definition at line 234 of file Parameters.h.

+ +
+
+ +

◆ typeMemRehearsalWeightIgnoredWhileMoving()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemRehearsalWeightIgnoredWhileMoving ()
+
+inlinestatic
+
+ +

Type of parameter Mem/RehearsalWeightIgnoredWhileMoving , as a string: bool .

+ +

Definition at line 234 of file Parameters.h.

+ +
+
+ +

◆ kMemGenerateIds()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemGenerateIds ()
+
+inlinestatic
+
+ +

Key of parameter Mem/GenerateIds : "True=Generate location IDs, False=use input image IDs." Default value: true ( bool ).

+ +

Definition at line 235 of file Parameters.h.

+ +
+
+ +

◆ defaultMemGenerateIds()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemGenerateIds ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/GenerateIds : true .

+ +

Definition at line 235 of file Parameters.h.

+ +
+
+ +

◆ typeMemGenerateIds()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemGenerateIds ()
+
+inlinestatic
+
+ +

Type of parameter Mem/GenerateIds , as a string: bool .

+ +

Definition at line 235 of file Parameters.h.

+ +
+
+ +

◆ kMemBadSignaturesIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemBadSignaturesIgnored ()
+
+inlinestatic
+
+ +

Key of parameter Mem/BadSignaturesIgnored : "Bad signatures are ignored." Default value: false ( bool ).

+ +

Definition at line 236 of file Parameters.h.

+ +
+
+ +

◆ defaultMemBadSignaturesIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemBadSignaturesIgnored ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/BadSignaturesIgnored : false .

+ +

Definition at line 236 of file Parameters.h.

+ +
+
+ +

◆ typeMemBadSignaturesIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemBadSignaturesIgnored ()
+
+inlinestatic
+
+ +

Type of parameter Mem/BadSignaturesIgnored , as a string: bool .

+ +

Definition at line 236 of file Parameters.h.

+ +
+
+ +

◆ kMemInitWMWithAllNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemInitWMWithAllNodes ()
+
+inlinestatic
+
+ +

Key of parameter Mem/InitWMWithAllNodes : "Initialize the Working Memory with all nodes in Long-Term Memory. When false, it is initialized with nodes of the previous session." Default value: false ( bool ).

+ +

Definition at line 237 of file Parameters.h.

+ +
+
+ +

◆ defaultMemInitWMWithAllNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemInitWMWithAllNodes ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/InitWMWithAllNodes : false .

+ +

Definition at line 237 of file Parameters.h.

+ +
+
+ +

◆ typeMemInitWMWithAllNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemInitWMWithAllNodes ()
+
+inlinestatic
+
+ +

Type of parameter Mem/InitWMWithAllNodes , as a string: bool .

+ +

Definition at line 237 of file Parameters.h.

+ +
+
+ +

◆ kMemDepthAsMask()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemDepthAsMask ()
+
+inlinestatic
+
+ +

Key of parameter Mem/DepthAsMask : "Use depth image as mask when extracting features for vocabulary." Default value: true ( bool ).

+ +

Definition at line 238 of file Parameters.h.

+ +
+
+ +

◆ defaultMemDepthAsMask()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemDepthAsMask ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/DepthAsMask : true .

+ +

Definition at line 238 of file Parameters.h.

+ +
+
+ +

◆ typeMemDepthAsMask()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemDepthAsMask ()
+
+inlinestatic
+
+ +

Type of parameter Mem/DepthAsMask , as a string: bool .

+ +

Definition at line 238 of file Parameters.h.

+ +
+
+ +

◆ kMemDepthMaskFloorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemDepthMaskFloorThr ()
+
+inlinestatic
+
+ +

Key of parameter Mem/DepthMaskFloorThr : uFormat("Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if %s is false.", kMemDepthAsMask().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 239 of file Parameters.h.

+ +
+
+ +

◆ defaultMemDepthMaskFloorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMemDepthMaskFloorThr ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/DepthMaskFloorThr : 0.0 .

+ +

Definition at line 239 of file Parameters.h.

+ +
+
+ +

◆ typeMemDepthMaskFloorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemDepthMaskFloorThr ()
+
+inlinestatic
+
+ +

Type of parameter Mem/DepthMaskFloorThr , as a string: float .

+ +

Definition at line 239 of file Parameters.h.

+ +
+
+ +

◆ kMemStereoFromMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemStereoFromMotion ()
+
+inlinestatic
+
+ +

Key of parameter Mem/StereoFromMotion : uFormat("Triangulate features without depth using stereo from motion (odometry). It would be ignored if %s is true and the feature detector used supports masking.", kMemDepthAsMask().c_str()) Default value: false ( bool ).

+ +

Definition at line 240 of file Parameters.h.

+ +
+
+ +

◆ defaultMemStereoFromMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemStereoFromMotion ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/StereoFromMotion : false .

+ +

Definition at line 240 of file Parameters.h.

+ +
+
+ +

◆ typeMemStereoFromMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemStereoFromMotion ()
+
+inlinestatic
+
+ +

Type of parameter Mem/StereoFromMotion , as a string: bool .

+ +

Definition at line 240 of file Parameters.h.

+ +
+
+ +

◆ kMemImagePreDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemImagePreDecimation ()
+
+inlinestatic
+
+ +

Key of parameter Mem/ImagePreDecimation : uFormat("Decimation of the RGB image before visual feature detection. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If %s is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.",kMemDepthAsMask().c_str()) Default value: 1 ( unsigned int ).

+ +

Definition at line 241 of file Parameters.h.

+ +
+
+ +

◆ defaultMemImagePreDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultMemImagePreDecimation ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/ImagePreDecimation : 1 .

+ +

Definition at line 241 of file Parameters.h.

+ +
+
+ +

◆ typeMemImagePreDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemImagePreDecimation ()
+
+inlinestatic
+
+ +

Type of parameter Mem/ImagePreDecimation , as a string: unsigned int .

+ +

Definition at line 241 of file Parameters.h.

+ +
+
+ +

◆ kMemImagePostDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemImagePostDecimation ()
+
+inlinestatic
+
+ +

Key of parameter Mem/ImagePostDecimation : uFormat("Decimation of the RGB image before saving it to database. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. Decimation is done from the original image. If set to same value than %s, data already decimated is saved (no need to re-decimate the image).", kMemImagePreDecimation().c_str()) Default value: 1 ( unsigned int ).

+ +

Definition at line 242 of file Parameters.h.

+ +
+
+ +

◆ defaultMemImagePostDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultMemImagePostDecimation ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/ImagePostDecimation : 1 .

+ +

Definition at line 242 of file Parameters.h.

+ +
+
+ +

◆ typeMemImagePostDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemImagePostDecimation ()
+
+inlinestatic
+
+ +

Type of parameter Mem/ImagePostDecimation , as a string: unsigned int .

+ +

Definition at line 242 of file Parameters.h.

+ +
+
+ +

◆ kMemCompressionParallelized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemCompressionParallelized ()
+
+inlinestatic
+
+ +

Key of parameter Mem/CompressionParallelized : "Compression of sensor data is multi-threaded." Default value: true ( bool ).

+ +

Definition at line 243 of file Parameters.h.

+ +
+
+ +

◆ defaultMemCompressionParallelized()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemCompressionParallelized ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/CompressionParallelized : true .

+ +

Definition at line 243 of file Parameters.h.

+ +
+
+ +

◆ typeMemCompressionParallelized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemCompressionParallelized ()
+
+inlinestatic
+
+ +

Type of parameter Mem/CompressionParallelized , as a string: bool .

+ +

Definition at line 243 of file Parameters.h.

+ +
+
+ +

◆ kMemLaserScanDownsampleStepSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemLaserScanDownsampleStepSize ()
+
+inlinestatic
+
+ +

Key of parameter Mem/LaserScanDownsampleStepSize : "If > 1, downsample the laser scans when creating a signature." Default value: 1 ( int ).

+ +

Definition at line 244 of file Parameters.h.

+ +
+
+ +

◆ defaultMemLaserScanDownsampleStepSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultMemLaserScanDownsampleStepSize ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/LaserScanDownsampleStepSize : 1 .

+ +

Definition at line 244 of file Parameters.h.

+ +
+
+ +

◆ typeMemLaserScanDownsampleStepSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemLaserScanDownsampleStepSize ()
+
+inlinestatic
+
+ +

Type of parameter Mem/LaserScanDownsampleStepSize , as a string: int .

+ +

Definition at line 244 of file Parameters.h.

+ +
+
+ +

◆ kMemLaserScanVoxelSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemLaserScanVoxelSize ()
+
+inlinestatic
+
+ +

Key of parameter Mem/LaserScanVoxelSize : uFormat("If > 0 m, voxel filtering is done on laser scans when creating a signature. If the laser scan had normals, they will be removed. To recompute the normals, make sure to use \"%s\" or \"%s\" parameters.", kMemLaserScanNormalK().c_str(), kMemLaserScanNormalRadius().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 245 of file Parameters.h.

+ +
+
+ +

◆ defaultMemLaserScanVoxelSize()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMemLaserScanVoxelSize ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/LaserScanVoxelSize : 0.0 .

+ +

Definition at line 245 of file Parameters.h.

+ +
+
+ +

◆ typeMemLaserScanVoxelSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemLaserScanVoxelSize ()
+
+inlinestatic
+
+ +

Type of parameter Mem/LaserScanVoxelSize , as a string: float .

+ +

Definition at line 245 of file Parameters.h.

+ +
+
+ +

◆ kMemLaserScanNormalK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemLaserScanNormalK ()
+
+inlinestatic
+
+ +

Key of parameter Mem/LaserScanNormalK : "If > 0 and laser scans don't have normals, normals will be computed with K search neighbors when creating a signature." Default value: 0 ( int ).

+ +

Definition at line 246 of file Parameters.h.

+ +
+
+ +

◆ defaultMemLaserScanNormalK()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultMemLaserScanNormalK ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/LaserScanNormalK : 0 .

+ +

Definition at line 246 of file Parameters.h.

+ +
+
+ +

◆ typeMemLaserScanNormalK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemLaserScanNormalK ()
+
+inlinestatic
+
+ +

Type of parameter Mem/LaserScanNormalK , as a string: int .

+ +

Definition at line 246 of file Parameters.h.

+ +
+
+ +

◆ kMemLaserScanNormalRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemLaserScanNormalRadius ()
+
+inlinestatic
+
+ +

Key of parameter Mem/LaserScanNormalRadius : "If > 0 m and laser scans don't have normals, normals will be computed with radius search neighbors when creating a signature." Default value: 0.0 ( float ).

+ +

Definition at line 247 of file Parameters.h.

+ +
+
+ +

◆ defaultMemLaserScanNormalRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMemLaserScanNormalRadius ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/LaserScanNormalRadius : 0.0 .

+ +

Definition at line 247 of file Parameters.h.

+ +
+
+ +

◆ typeMemLaserScanNormalRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemLaserScanNormalRadius ()
+
+inlinestatic
+
+ +

Type of parameter Mem/LaserScanNormalRadius , as a string: float .

+ +

Definition at line 247 of file Parameters.h.

+ +
+
+ +

◆ kMemUseOdomFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemUseOdomFeatures ()
+
+inlinestatic
+
+ +

Key of parameter Mem/UseOdomFeatures : "Use odometry features instead of regenerating them." Default value: true ( bool ).

+ +

Definition at line 248 of file Parameters.h.

+ +
+
+ +

◆ defaultMemUseOdomFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemUseOdomFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/UseOdomFeatures : true .

+ +

Definition at line 248 of file Parameters.h.

+ +
+
+ +

◆ typeMemUseOdomFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemUseOdomFeatures ()
+
+inlinestatic
+
+ +

Type of parameter Mem/UseOdomFeatures , as a string: bool .

+ +

Definition at line 248 of file Parameters.h.

+ +
+
+ +

◆ kMemUseOdomGravity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemUseOdomGravity ()
+
+inlinestatic
+
+ +

Key of parameter Mem/UseOdomGravity : uFormat("Use odometry instead of IMU orientation to add gravity links to new nodes created. We assume that odometry is already aligned with gravity (e.g., we are using a VIO approach). Gravity constraints are used by graph optimization only if \"%s\" is not zero.", kOptimizerGravitySigma().c_str()) Default value: false ( bool ).

+ +

Definition at line 249 of file Parameters.h.

+ +
+
+ +

◆ defaultMemUseOdomGravity()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemUseOdomGravity ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/UseOdomGravity : false .

+ +

Definition at line 249 of file Parameters.h.

+ +
+
+ +

◆ typeMemUseOdomGravity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemUseOdomGravity ()
+
+inlinestatic
+
+ +

Type of parameter Mem/UseOdomGravity , as a string: bool .

+ +

Definition at line 249 of file Parameters.h.

+ +
+
+ +

◆ kMemCovOffDiagIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemCovOffDiagIgnored ()
+
+inlinestatic
+
+ +

Key of parameter Mem/CovOffDiagIgnored : "Ignore off diagonal values of the covariance matrix." Default value: true ( bool ).

+ +

Definition at line 250 of file Parameters.h.

+ +
+
+ +

◆ defaultMemCovOffDiagIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemCovOffDiagIgnored ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/CovOffDiagIgnored : true .

+ +

Definition at line 250 of file Parameters.h.

+ +
+
+ +

◆ typeMemCovOffDiagIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemCovOffDiagIgnored ()
+
+inlinestatic
+
+ +

Type of parameter Mem/CovOffDiagIgnored , as a string: bool .

+ +

Definition at line 250 of file Parameters.h.

+ +
+
+ +

◆ kMemGlobalDescriptorStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemGlobalDescriptorStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Mem/GlobalDescriptorStrategy : "Extract global descriptor from sensor data. 0=disabled, 1=PyDescriptor" Default value: 0 ( int ).

+ +

Definition at line 251 of file Parameters.h.

+ +
+
+ +

◆ defaultMemGlobalDescriptorStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultMemGlobalDescriptorStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/GlobalDescriptorStrategy : 0 .

+ +

Definition at line 251 of file Parameters.h.

+ +
+
+ +

◆ typeMemGlobalDescriptorStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemGlobalDescriptorStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Mem/GlobalDescriptorStrategy , as a string: int .

+ +

Definition at line 251 of file Parameters.h.

+ +
+
+ +

◆ kMemRotateImagesUpsideUp()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMemRotateImagesUpsideUp ()
+
+inlinestatic
+
+ +

Key of parameter Mem/RotateImagesUpsideUp : "Rotate images so that upside is up if they are not already. This can be useful in case the robots don't have all same camera orientation but are using the same map, so that not rotation-invariant visual features can still be used across the fleet." Default value: false ( bool ).

+ +

Definition at line 252 of file Parameters.h.

+ +
+
+ +

◆ defaultMemRotateImagesUpsideUp()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMemRotateImagesUpsideUp ()
+
+inlinestatic
+
+ +

Default value of parameter Mem/RotateImagesUpsideUp : false .

+ +

Definition at line 252 of file Parameters.h.

+ +
+
+ +

◆ typeMemRotateImagesUpsideUp()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMemRotateImagesUpsideUp ()
+
+inlinestatic
+
+ +

Type of parameter Mem/RotateImagesUpsideUp , as a string: bool .

+ +

Definition at line 252 of file Parameters.h.

+ +
+
+ +

◆ kKpNNStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpNNStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Kp/NNStrategy : "FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, FLANN KdTree Single=5, NanoFLANN KdTree=6" Default value: 1 ( int ).

+ +

Definition at line 255 of file Parameters.h.

+ +
+
+ +

◆ defaultKpNNStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpNNStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/NNStrategy : 1 .

+ +

Definition at line 255 of file Parameters.h.

+ +
+
+ +

◆ typeKpNNStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpNNStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Kp/NNStrategy , as a string: int .

+ +

Definition at line 255 of file Parameters.h.

+ +
+
+ +

◆ kKpIncrementalDictionary()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpIncrementalDictionary ()
+
+inlinestatic
+
+ +

Key of parameter Kp/IncrementalDictionary : "" Default value: true ( bool ).

+ +

Definition at line 256 of file Parameters.h.

+ +
+
+ +

◆ defaultKpIncrementalDictionary()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpIncrementalDictionary ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/IncrementalDictionary : true .

+ +

Definition at line 256 of file Parameters.h.

+ +
+
+ +

◆ typeKpIncrementalDictionary()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpIncrementalDictionary ()
+
+inlinestatic
+
+ +

Type of parameter Kp/IncrementalDictionary , as a string: bool .

+ +

Definition at line 256 of file Parameters.h.

+ +
+
+ +

◆ kKpIncrementalFlann()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpIncrementalFlann ()
+
+inlinestatic
+
+ +

Key of parameter Kp/IncrementalFlann : uFormat("When using FLANN based strategy, add/remove points to its index without always rebuilding the index (the index is only rebuilt when too many of its features have been removed, see \"%s\").", kKpFlannRebalancingFactor().c_str()) Default value: true ( bool ).

+ +

Definition at line 257 of file Parameters.h.

+ +
+
+ +

◆ defaultKpIncrementalFlann()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpIncrementalFlann ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/IncrementalFlann : true .

+ +

Definition at line 257 of file Parameters.h.

+ +
+
+ +

◆ typeKpIncrementalFlann()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpIncrementalFlann ()
+
+inlinestatic
+
+ +

Type of parameter Kp/IncrementalFlann , as a string: bool .

+ +

Definition at line 257 of file Parameters.h.

+ +
+
+ +

◆ kKpFlannRebalancingFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpFlannRebalancingFactor ()
+
+inlinestatic
+
+ +

Key of parameter Kp/FlannRebalancingFactor : uFormat("Rebuild the incremental FLANN index (see \"%s\") once the ratio (factor-1)/factor of its features has been removed, e.g. half of them for a factor of 2. Rebuilding frees the memory of the removed features and speeds up the searches. Features are mostly removed when memory management is enabled (\"%s\" or \"%s\"). Set to 1 to never rebuild, which also uses less memory as the features don't have to be referenced one by one.", kKpIncrementalFlann().c_str(), kRtabmapTimeThr().c_str(), kRtabmapMemoryThr().c_str()) Default value: 2.0 ( float ).

+ +

Definition at line 258 of file Parameters.h.

+ +
+
+ +

◆ defaultKpFlannRebalancingFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultKpFlannRebalancingFactor ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/FlannRebalancingFactor : 2.0 .

+ +

Definition at line 258 of file Parameters.h.

+ +
+
+ +

◆ typeKpFlannRebalancingFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpFlannRebalancingFactor ()
+
+inlinestatic
+
+ +

Type of parameter Kp/FlannRebalancingFactor , as a string: float .

+ +

Definition at line 258 of file Parameters.h.

+ +
+
+ +

◆ kKpFlannThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpFlannThreads ()
+
+inlinestatic
+
+ +

Key of parameter Kp/FlannThreads : "Number of threads used for FLANN kNN search (batched queries). Set to 0 for all available." Default value: 1 ( int ).

+ +

Definition at line 259 of file Parameters.h.

+ +
+
+ +

◆ defaultKpFlannThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpFlannThreads ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/FlannThreads : 1 .

+ +

Definition at line 259 of file Parameters.h.

+ +
+
+ +

◆ typeKpFlannThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpFlannThreads ()
+
+inlinestatic
+
+ +

Type of parameter Kp/FlannThreads , as a string: int .

+ +

Definition at line 259 of file Parameters.h.

+ +
+
+ +

◆ kKpByteToFloat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpByteToFloat ()
+
+inlinestatic
+
+ +

Key of parameter Kp/ByteToFloat : uFormat("For %s=1, binary descriptors are converted to float by converting each byte to float instead of converting each bit to float. When converting bytes instead of bits, less memory is used and search is faster at the cost of slightly less accurate matching.", kKpNNStrategy().c_str()) Default value: false ( bool ).

+ +

Definition at line 260 of file Parameters.h.

+ +
+
+ +

◆ defaultKpByteToFloat()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpByteToFloat ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/ByteToFloat : false .

+ +

Definition at line 260 of file Parameters.h.

+ +
+
+ +

◆ typeKpByteToFloat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpByteToFloat ()
+
+inlinestatic
+
+ +

Type of parameter Kp/ByteToFloat , as a string: bool .

+ +

Definition at line 260 of file Parameters.h.

+ +
+
+ +

◆ kKpMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpMaxDepth ()
+
+inlinestatic
+
+ +

Key of parameter Kp/MaxDepth : "Filter extracted keypoints by depth (0=inf)." Default value: 0 ( float ).

+ +

Definition at line 261 of file Parameters.h.

+ +
+
+ +

◆ defaultKpMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultKpMaxDepth ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/MaxDepth : 0 .

+ +

Definition at line 261 of file Parameters.h.

+ +
+
+ +

◆ typeKpMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpMaxDepth ()
+
+inlinestatic
+
+ +

Type of parameter Kp/MaxDepth , as a string: float .

+ +

Definition at line 261 of file Parameters.h.

+ +
+
+ +

◆ kKpMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpMinDepth ()
+
+inlinestatic
+
+ +

Key of parameter Kp/MinDepth : "Filter extracted keypoints by depth." Default value: 0 ( float ).

+ +

Definition at line 262 of file Parameters.h.

+ +
+
+ +

◆ defaultKpMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultKpMinDepth ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/MinDepth : 0 .

+ +

Definition at line 262 of file Parameters.h.

+ +
+
+ +

◆ typeKpMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpMinDepth ()
+
+inlinestatic
+
+ +

Type of parameter Kp/MinDepth , as a string: float .

+ +

Definition at line 262 of file Parameters.h.

+ +
+
+ +

◆ kKpMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpMaxFeatures ()
+
+inlinestatic
+
+ +

Key of parameter Kp/MaxFeatures : "Maximum features extracted from the images (0 means not bounded, <0 means no extraction)." Default value: 500 ( int ).

+ +

Definition at line 263 of file Parameters.h.

+ +
+
+ +

◆ defaultKpMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpMaxFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/MaxFeatures : 500 .

+ +

Definition at line 263 of file Parameters.h.

+ +
+
+ +

◆ typeKpMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpMaxFeatures ()
+
+inlinestatic
+
+ +

Type of parameter Kp/MaxFeatures , as a string: int .

+ +

Definition at line 263 of file Parameters.h.

+ +
+
+ +

◆ kKpSSC()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpSSC ()
+
+inlinestatic
+
+ +

Key of parameter Kp/SSC : "If true, SSC (Suppression via Square Covering) is applied to limit keypoints." Default value: false ( bool ).

+ +

Definition at line 264 of file Parameters.h.

+ +
+
+ +

◆ defaultKpSSC()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpSSC ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/SSC : false .

+ +

Definition at line 264 of file Parameters.h.

+ +
+
+ +

◆ typeKpSSC()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpSSC ()
+
+inlinestatic
+
+ +

Type of parameter Kp/SSC , as a string: bool .

+ +

Definition at line 264 of file Parameters.h.

+ +
+
+ +

◆ kKpBadSignRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpBadSignRatio ()
+
+inlinestatic
+
+ +

Key of parameter Kp/BadSignRatio : uFormat("Bad signature ratio. If %s=0, the ratio is computed from the average number of words per signature (less than Ratio x AverageWordsPerImage = bad).", kKpMaxFeatures().c_str()) Default value: 0.5 ( float ).

+ +

Definition at line 265 of file Parameters.h.

+ +
+
+ +

◆ defaultKpBadSignRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultKpBadSignRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/BadSignRatio : 0.5 .

+ +

Definition at line 265 of file Parameters.h.

+ +
+
+ +

◆ typeKpBadSignRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpBadSignRatio ()
+
+inlinestatic
+
+ +

Type of parameter Kp/BadSignRatio , as a string: float .

+ +

Definition at line 265 of file Parameters.h.

+ +
+
+ +

◆ kKpNndrRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpNndrRatio ()
+
+inlinestatic
+
+ +

Key of parameter Kp/NndrRatio : "NNDR ratio (A matching pair is detected, if its distance is closer than X times the distance of the second nearest neighbor.)" Default value: 0.8 ( float ).

+ +

Definition at line 266 of file Parameters.h.

+ +
+
+ +

◆ defaultKpNndrRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultKpNndrRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/NndrRatio : 0.8 .

+ +

Definition at line 266 of file Parameters.h.

+ +
+
+ +

◆ typeKpNndrRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpNndrRatio ()
+
+inlinestatic
+
+ +

Type of parameter Kp/NndrRatio , as a string: float .

+ +

Definition at line 266 of file Parameters.h.

+ +
+
+ +

◆ kKpDetectorStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpDetectorStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Kp/DetectorStrategy : "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat" Default value: 6 ( int ).

+ +

Definition at line 271 of file Parameters.h.

+ +
+
+ +

◆ defaultKpDetectorStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpDetectorStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/DetectorStrategy : 6 .

+ +

Definition at line 271 of file Parameters.h.

+ +
+
+ +

◆ typeKpDetectorStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpDetectorStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Kp/DetectorStrategy , as a string: int .

+ +

Definition at line 271 of file Parameters.h.

+ +
+
+ +

◆ kKpTfIdfLikelihoodUsed()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpTfIdfLikelihoodUsed ()
+
+inlinestatic
+
+ +

Key of parameter Kp/TfIdfLikelihoodUsed : "Use of the td-idf strategy to compute the likelihood." Default value: true ( bool ).

+ +

Definition at line 273 of file Parameters.h.

+ +
+
+ +

◆ defaultKpTfIdfLikelihoodUsed()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpTfIdfLikelihoodUsed ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/TfIdfLikelihoodUsed : true .

+ +

Definition at line 273 of file Parameters.h.

+ +
+
+ +

◆ typeKpTfIdfLikelihoodUsed()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpTfIdfLikelihoodUsed ()
+
+inlinestatic
+
+ +

Type of parameter Kp/TfIdfLikelihoodUsed , as a string: bool .

+ +

Definition at line 273 of file Parameters.h.

+ +
+
+ +

◆ kKpParallelized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpParallelized ()
+
+inlinestatic
+
+ +

Key of parameter Kp/Parallelized : "If the dictionary update and signature creation were parallelized." Default value: true ( bool ).

+ +

Definition at line 274 of file Parameters.h.

+ +
+
+ +

◆ defaultKpParallelized()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpParallelized ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/Parallelized : true .

+ +

Definition at line 274 of file Parameters.h.

+ +
+
+ +

◆ typeKpParallelized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpParallelized ()
+
+inlinestatic
+
+ +

Type of parameter Kp/Parallelized , as a string: bool .

+ +

Definition at line 274 of file Parameters.h.

+ +
+
+ +

◆ kKpRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpRoiRatios ()
+
+inlinestatic
+
+ +

Key of parameter Kp/RoiRatios : "Region of interest ratios [left, right, top, bottom]." Default value: "0.0 0.0 0.0 0.0" (string).

+ +

Definition at line 275 of file Parameters.h.

+ +
+
+ +

◆ defaultKpRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultKpRoiRatios ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/RoiRatios : "0.0 0.0 0.0 0.0" .

+ +

Definition at line 275 of file Parameters.h.

+ +
+
+ +

◆ typeKpRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpRoiRatios ()
+
+inlinestatic
+
+ +

Type of parameter Kp/RoiRatios , as a string: string.

+ +

Definition at line 275 of file Parameters.h.

+ +
+
+ +

◆ kKpDictionaryPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpDictionaryPath ()
+
+inlinestatic
+
+ +

Key of parameter Kp/DictionaryPath : "Path of the pre-computed dictionary" Default value: "" (string).

+ +

Definition at line 276 of file Parameters.h.

+ +
+
+ +

◆ defaultKpDictionaryPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultKpDictionaryPath ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/DictionaryPath : "" .

+ +

Definition at line 276 of file Parameters.h.

+ +
+
+ +

◆ typeKpDictionaryPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpDictionaryPath ()
+
+inlinestatic
+
+ +

Type of parameter Kp/DictionaryPath , as a string: string.

+ +

Definition at line 276 of file Parameters.h.

+ +
+
+ +

◆ kKpNewWordsComparedTogether()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpNewWordsComparedTogether ()
+
+inlinestatic
+
+ +

Key of parameter Kp/NewWordsComparedTogether : "When adding new words to dictionary, they are compared also with each other (to detect same words in the same signature)." Default value: true ( bool ).

+ +

Definition at line 277 of file Parameters.h.

+ +
+
+ +

◆ defaultKpNewWordsComparedTogether()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpNewWordsComparedTogether ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/NewWordsComparedTogether : true .

+ +

Definition at line 277 of file Parameters.h.

+ +
+
+ +

◆ typeKpNewWordsComparedTogether()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpNewWordsComparedTogether ()
+
+inlinestatic
+
+ +

Type of parameter Kp/NewWordsComparedTogether , as a string: bool .

+ +

Definition at line 277 of file Parameters.h.

+ +
+
+ +

◆ kKpFlannIndexSaved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpFlannIndexSaved ()
+
+inlinestatic
+
+ +

Key of parameter Kp/FlannIndexSaved : uFormat("Save FLANN index during localization session (when %s=false). The FLANN index will be saved to database after the first time localization mode is used, then on next sessions, the index is reloaded from the database instead of being rebuilt again. This can save significant loading time when the visual word dictionary is big (>1M words). Note that if the dictionary is modified (parameters or data), the index will be rebuilt and saved again on the next session. Ignored on initialization if %s is enabled.", kMemIncrementalMemory().c_str(), kMemInitWMWithAllNodes().c_str()).c_str() Default value: false ( bool ).

+ +

Definition at line 278 of file Parameters.h.

+ +
+
+ +

◆ defaultKpFlannIndexSaved()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpFlannIndexSaved ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/FlannIndexSaved : false .

+ +

Definition at line 278 of file Parameters.h.

+ +
+
+ +

◆ typeKpFlannIndexSaved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpFlannIndexSaved ()
+
+inlinestatic
+
+ +

Type of parameter Kp/FlannIndexSaved , as a string: bool .

+ +

Definition at line 278 of file Parameters.h.

+ +
+
+ +

◆ kKpSerializeWithChecksum()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpSerializeWithChecksum ()
+
+inlinestatic
+
+ +

Key of parameter Kp/SerializeWithChecksum : "On serialization of the FLANN index, compute checksum of the data used by the FLANN index. This adds a slight overhead on serialization/deserialization to make sure that the dictionary data correspond to same data used when the index was built." Default value: true ( bool ).

+ +

Definition at line 279 of file Parameters.h.

+ +
+
+ +

◆ defaultKpSerializeWithChecksum()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKpSerializeWithChecksum ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/SerializeWithChecksum : true .

+ +

Definition at line 279 of file Parameters.h.

+ +
+
+ +

◆ typeKpSerializeWithChecksum()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpSerializeWithChecksum ()
+
+inlinestatic
+
+ +

Type of parameter Kp/SerializeWithChecksum , as a string: bool .

+ +

Definition at line 279 of file Parameters.h.

+ +
+
+ +

◆ kKpSubPixWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpSubPixWinSize ()
+
+inlinestatic
+
+ +

Key of parameter Kp/SubPixWinSize : "See cv::cornerSubPix()." Default value: 3 ( int ).

+ +

Definition at line 280 of file Parameters.h.

+ +
+
+ +

◆ defaultKpSubPixWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpSubPixWinSize ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/SubPixWinSize : 3 .

+ +

Definition at line 280 of file Parameters.h.

+ +
+
+ +

◆ typeKpSubPixWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpSubPixWinSize ()
+
+inlinestatic
+
+ +

Type of parameter Kp/SubPixWinSize , as a string: int .

+ +

Definition at line 280 of file Parameters.h.

+ +
+
+ +

◆ kKpSubPixIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpSubPixIterations ()
+
+inlinestatic
+
+ +

Key of parameter Kp/SubPixIterations : "See cv::cornerSubPix(). 0 disables sub pixel refining." Default value: 0 ( int ).

+ +

Definition at line 281 of file Parameters.h.

+ +
+
+ +

◆ defaultKpSubPixIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpSubPixIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/SubPixIterations : 0 .

+ +

Definition at line 281 of file Parameters.h.

+ +
+
+ +

◆ typeKpSubPixIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpSubPixIterations ()
+
+inlinestatic
+
+ +

Type of parameter Kp/SubPixIterations , as a string: int .

+ +

Definition at line 281 of file Parameters.h.

+ +
+
+ +

◆ kKpSubPixEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpSubPixEps ()
+
+inlinestatic
+
+ +

Key of parameter Kp/SubPixEps : "See cv::cornerSubPix()." Default value: 0.02 ( double ).

+ +

Definition at line 282 of file Parameters.h.

+ +
+
+ +

◆ defaultKpSubPixEps()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultKpSubPixEps ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/SubPixEps : 0.02 .

+ +

Definition at line 282 of file Parameters.h.

+ +
+
+ +

◆ typeKpSubPixEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpSubPixEps ()
+
+inlinestatic
+
+ +

Type of parameter Kp/SubPixEps , as a string: double .

+ +

Definition at line 282 of file Parameters.h.

+ +
+
+ +

◆ kKpGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpGridRows ()
+
+inlinestatic
+
+ +

Key of parameter Kp/GridRows : uFormat("Number of rows of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kKpMaxFeatures().c_str()) Default value: 1 ( int ).

+ +

Definition at line 283 of file Parameters.h.

+ +
+
+ +

◆ defaultKpGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpGridRows ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/GridRows : 1 .

+ +

Definition at line 283 of file Parameters.h.

+ +
+
+ +

◆ typeKpGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpGridRows ()
+
+inlinestatic
+
+ +

Type of parameter Kp/GridRows , as a string: int .

+ +

Definition at line 283 of file Parameters.h.

+ +
+
+ +

◆ kKpGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKpGridCols ()
+
+inlinestatic
+
+ +

Key of parameter Kp/GridCols : uFormat("Number of columns of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kKpMaxFeatures().c_str()) Default value: 1 ( int ).

+ +

Definition at line 284 of file Parameters.h.

+ +
+
+ +

◆ defaultKpGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKpGridCols ()
+
+inlinestatic
+
+ +

Default value of parameter Kp/GridCols : 1 .

+ +

Definition at line 284 of file Parameters.h.

+ +
+
+ +

◆ typeKpGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKpGridCols ()
+
+inlinestatic
+
+ +

Type of parameter Kp/GridCols , as a string: int .

+ +

Definition at line 284 of file Parameters.h.

+ +
+
+ +

◆ kDbSqlite3InMemory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kDbSqlite3InMemory ()
+
+inlinestatic
+
+ +

Key of parameter DbSqlite3/InMemory : "Using database in the memory instead of a file on the hard disk." Default value: false ( bool ).

+ +

Definition at line 287 of file Parameters.h.

+ +
+
+ +

◆ defaultDbSqlite3InMemory()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultDbSqlite3InMemory ()
+
+inlinestatic
+
+ +

Default value of parameter DbSqlite3/InMemory : false .

+ +

Definition at line 287 of file Parameters.h.

+ +
+
+ +

◆ typeDbSqlite3InMemory()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeDbSqlite3InMemory ()
+
+inlinestatic
+
+ +

Type of parameter DbSqlite3/InMemory , as a string: bool .

+ +

Definition at line 287 of file Parameters.h.

+ +
+
+ +

◆ kDbSqlite3CacheSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kDbSqlite3CacheSize ()
+
+inlinestatic
+
+ +

Key of parameter DbSqlite3/CacheSize : "PRAGMA cache_size: number of database pages kept in SQLite's page cache (approx. cacheSize * page_size bytes, often ~4 KiB per page). " "Larger values reduce disk I/O when the working set fits in RAM. SQLite built-in default is typically 2000 pages." Default value: 10000 ( unsigned int ).

+ +

Definition at line 290 of file Parameters.h.

+ +
+
+ +

◆ defaultDbSqlite3CacheSize()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultDbSqlite3CacheSize ()
+
+inlinestatic
+
+ +

Default value of parameter DbSqlite3/CacheSize : 10000 .

+ +

Definition at line 290 of file Parameters.h.

+ +
+
+ +

◆ typeDbSqlite3CacheSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeDbSqlite3CacheSize ()
+
+inlinestatic
+
+ +

Type of parameter DbSqlite3/CacheSize , as a string: unsigned int .

+ +

Definition at line 290 of file Parameters.h.

+ +
+
+ +

◆ kDbSqlite3JournalMode()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kDbSqlite3JournalMode ()
+
+inlinestatic
+
+ +

Key of parameter DbSqlite3/JournalMode : "PRAGMA journal_mode: rollback journal storage. See sqlite.org/pragma.html#pragma_journal_mode for more details. " "0=DELETE (SQLite default): journal file deleted after each commit. " "1=TRUNCATE: journal truncated to zero length. " "2=PERSIST: journal file kept, header zeroed after commit. " "3=MEMORY: journal in RAM only; faster, weaker crash safety. " "4=OFF: no journal; fastest, risk of corruption on crash." Default value: 3 ( int ).

+ +

Definition at line 297 of file Parameters.h.

+ +
+
+ +

◆ defaultDbSqlite3JournalMode()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultDbSqlite3JournalMode ()
+
+inlinestatic
+
+ +

Default value of parameter DbSqlite3/JournalMode : 3 .

+ +

Definition at line 297 of file Parameters.h.

+ +
+
+ +

◆ typeDbSqlite3JournalMode()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeDbSqlite3JournalMode ()
+
+inlinestatic
+
+ +

Type of parameter DbSqlite3/JournalMode , as a string: int .

+ +

Definition at line 297 of file Parameters.h.

+ +
+
+ +

◆ kDbSqlite3Synchronous()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kDbSqlite3Synchronous ()
+
+inlinestatic
+
+ +

Key of parameter DbSqlite3/Synchronous : "PRAGMA synchronous: how aggressively SQLite syncs the database to disk. See sqlite.org/pragma.html#pragma_synchronous for more details. " "0=OFF: no wait for persistent storage; fastest, corruption possible on power loss. " "1=NORMAL: sync at critical moments (common SQLite default with WAL). " "2=FULL (SQLite safest default): sync after every commit; slowest." Default value: 0 ( int ).

+ +

Definition at line 302 of file Parameters.h.

+ +
+
+ +

◆ defaultDbSqlite3Synchronous()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultDbSqlite3Synchronous ()
+
+inlinestatic
+
+ +

Default value of parameter DbSqlite3/Synchronous : 0 .

+ +

Definition at line 302 of file Parameters.h.

+ +
+
+ +

◆ typeDbSqlite3Synchronous()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeDbSqlite3Synchronous ()
+
+inlinestatic
+
+ +

Type of parameter DbSqlite3/Synchronous , as a string: int .

+ +

Definition at line 302 of file Parameters.h.

+ +
+
+ +

◆ kDbSqlite3TempStore()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kDbSqlite3TempStore ()
+
+inlinestatic
+
+ +

Key of parameter DbSqlite3/TempStore : "PRAGMA temp_store: where SQLite stores temporary tables and indices. See sqlite.org/pragma.html#pragma_temp_store for more details. " "0=DEFAULT: SQLite compile-time default (often on-disk temp files). " "1=FILE: temporary files in the system temp directory. " "2=MEMORY: temporary data in RAM when possible." Default value: 2 ( int ).

+ +

Definition at line 307 of file Parameters.h.

+ +
+
+ +

◆ defaultDbSqlite3TempStore()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultDbSqlite3TempStore ()
+
+inlinestatic
+
+ +

Default value of parameter DbSqlite3/TempStore : 2 .

+ +

Definition at line 307 of file Parameters.h.

+ +
+
+ +

◆ typeDbSqlite3TempStore()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeDbSqlite3TempStore ()
+
+inlinestatic
+
+ +

Type of parameter DbSqlite3/TempStore , as a string: int .

+ +

Definition at line 307 of file Parameters.h.

+ +
+
+ +

◆ kDbTargetVersion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kDbTargetVersion ()
+
+inlinestatic
+
+ +

Key of parameter Db/TargetVersion : "Target database version for backward compatibility purpose. Only Major and minor versions are used and should be set (e.g., 0.19 vs 0.20 or 1.0 vs 2.0). Patch version is ignored (e.g., 0.20.1 and 0.20.3 will generate a 0.20 database)." Default value: "" (string).

+ +

Definition at line 308 of file Parameters.h.

+ +
+
+ +

◆ defaultDbTargetVersion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultDbTargetVersion ()
+
+inlinestatic
+
+ +

Default value of parameter Db/TargetVersion : "" .

+ +

Definition at line 308 of file Parameters.h.

+ +
+
+ +

◆ typeDbTargetVersion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeDbTargetVersion ()
+
+inlinestatic
+
+ +

Type of parameter Db/TargetVersion , as a string: string.

+ +

Definition at line 308 of file Parameters.h.

+ +
+
+ +

◆ kSURFExtended()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSURFExtended ()
+
+inlinestatic
+
+ +

Key of parameter SURF/Extended : "Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors)." Default value: false ( bool ).

+ +

Definition at line 311 of file Parameters.h.

+ +
+
+ +

◆ defaultSURFExtended()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSURFExtended ()
+
+inlinestatic
+
+ +

Default value of parameter SURF/Extended : false .

+ +

Definition at line 311 of file Parameters.h.

+ +
+
+ +

◆ typeSURFExtended()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSURFExtended ()
+
+inlinestatic
+
+ +

Type of parameter SURF/Extended , as a string: bool .

+ +

Definition at line 311 of file Parameters.h.

+ +
+
+ +

◆ kSURFHessianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSURFHessianThreshold ()
+
+inlinestatic
+
+ +

Key of parameter SURF/HessianThreshold : "Threshold for hessian keypoint detector used in SURF." Default value: 500 ( float ).

+ +

Definition at line 312 of file Parameters.h.

+ +
+
+ +

◆ defaultSURFHessianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultSURFHessianThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter SURF/HessianThreshold : 500 .

+ +

Definition at line 312 of file Parameters.h.

+ +
+
+ +

◆ typeSURFHessianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSURFHessianThreshold ()
+
+inlinestatic
+
+ +

Type of parameter SURF/HessianThreshold , as a string: float .

+ +

Definition at line 312 of file Parameters.h.

+ +
+
+ +

◆ kSURFOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSURFOctaves ()
+
+inlinestatic
+
+ +

Key of parameter SURF/Octaves : "Number of pyramid octaves the keypoint detector will use." Default value: 4 ( int ).

+ +

Definition at line 313 of file Parameters.h.

+ +
+
+ +

◆ defaultSURFOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultSURFOctaves ()
+
+inlinestatic
+
+ +

Default value of parameter SURF/Octaves : 4 .

+ +

Definition at line 313 of file Parameters.h.

+ +
+
+ +

◆ typeSURFOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSURFOctaves ()
+
+inlinestatic
+
+ +

Type of parameter SURF/Octaves , as a string: int .

+ +

Definition at line 313 of file Parameters.h.

+ +
+
+ +

◆ kSURFOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSURFOctaveLayers ()
+
+inlinestatic
+
+ +

Key of parameter SURF/OctaveLayers : "Number of octave layers within each octave." Default value: 2 ( int ).

+ +

Definition at line 314 of file Parameters.h.

+ +
+
+ +

◆ defaultSURFOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultSURFOctaveLayers ()
+
+inlinestatic
+
+ +

Default value of parameter SURF/OctaveLayers : 2 .

+ +

Definition at line 314 of file Parameters.h.

+ +
+
+ +

◆ typeSURFOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSURFOctaveLayers ()
+
+inlinestatic
+
+ +

Type of parameter SURF/OctaveLayers , as a string: int .

+ +

Definition at line 314 of file Parameters.h.

+ +
+
+ +

◆ kSURFUpright()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSURFUpright ()
+
+inlinestatic
+
+ +

Key of parameter SURF/Upright : "Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation)." Default value: false ( bool ).

+ +

Definition at line 315 of file Parameters.h.

+ +
+
+ +

◆ defaultSURFUpright()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSURFUpright ()
+
+inlinestatic
+
+ +

Default value of parameter SURF/Upright : false .

+ +

Definition at line 315 of file Parameters.h.

+ +
+
+ +

◆ typeSURFUpright()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSURFUpright ()
+
+inlinestatic
+
+ +

Type of parameter SURF/Upright , as a string: bool .

+ +

Definition at line 315 of file Parameters.h.

+ +
+
+ +

◆ kSURFGpuVersion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSURFGpuVersion ()
+
+inlinestatic
+
+ +

Key of parameter SURF/GpuVersion : "GPU-SURF: Use GPU version of SURF. This option is enabled only if OpenCV is built with CUDA and GPUs are detected." Default value: false ( bool ).

+ +

Definition at line 316 of file Parameters.h.

+ +
+
+ +

◆ defaultSURFGpuVersion()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSURFGpuVersion ()
+
+inlinestatic
+
+ +

Default value of parameter SURF/GpuVersion : false .

+ +

Definition at line 316 of file Parameters.h.

+ +
+
+ +

◆ typeSURFGpuVersion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSURFGpuVersion ()
+
+inlinestatic
+
+ +

Type of parameter SURF/GpuVersion , as a string: bool .

+ +

Definition at line 316 of file Parameters.h.

+ +
+
+ +

◆ kSURFGpuKeypointsRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSURFGpuKeypointsRatio ()
+
+inlinestatic
+
+ +

Key of parameter SURF/GpuKeypointsRatio : "Used with SURF GPU." Default value: 0.01 ( float ).

+ +

Definition at line 317 of file Parameters.h.

+ +
+
+ +

◆ defaultSURFGpuKeypointsRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultSURFGpuKeypointsRatio ()
+
+inlinestatic
+
+ +

Default value of parameter SURF/GpuKeypointsRatio : 0.01 .

+ +

Definition at line 317 of file Parameters.h.

+ +
+
+ +

◆ typeSURFGpuKeypointsRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSURFGpuKeypointsRatio ()
+
+inlinestatic
+
+ +

Type of parameter SURF/GpuKeypointsRatio , as a string: float .

+ +

Definition at line 317 of file Parameters.h.

+ +
+
+ +

◆ kSIFTNOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTNOctaveLayers ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/NOctaveLayers : "The number of layers in each octave. 3 is the value used in D. Lowe paper. The number of octaves is computed automatically from the image resolution. Not used by CudaSift, the number of octaves is still computed automatically." Default value: 3 ( int ).

+ +

Definition at line 319 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTNOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultSIFTNOctaveLayers ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/NOctaveLayers : 3 .

+ +

Definition at line 319 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTNOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTNOctaveLayers ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/NOctaveLayers , as a string: int .

+ +

Definition at line 319 of file Parameters.h.

+ +
+
+ +

◆ kSIFTContrastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTContrastThreshold ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/ContrastThreshold : uFormat("The contrast threshold used to filter out weak features in semi-uniform (low-contrast) regions. The larger the threshold, the less features are produced by the detector. Not used by CudaSift (see %s instead).", kSIFTGaussianThreshold().c_str()) Default value: 0.04 ( double ).

+ +

Definition at line 320 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTContrastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultSIFTContrastThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/ContrastThreshold : 0.04 .

+ +

Definition at line 320 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTContrastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTContrastThreshold ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/ContrastThreshold , as a string: double .

+ +

Definition at line 320 of file Parameters.h.

+ +
+
+ +

◆ kSIFTEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTEdgeThreshold ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/EdgeThreshold : "The threshold used to filter out edge-like features. Note that the its meaning is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are filtered out (more features are retained)." Default value: 10 ( double ).

+ +

Definition at line 321 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultSIFTEdgeThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/EdgeThreshold : 10 .

+ +

Definition at line 321 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTEdgeThreshold ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/EdgeThreshold , as a string: double .

+ +

Definition at line 321 of file Parameters.h.

+ +
+
+ +

◆ kSIFTSigma()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTSigma ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/Sigma : "The sigma of the Gaussian applied to the input image at the octave #0. If your image is captured with a weak camera with soft lenses, you might want to reduce the number." Default value: 1.6 ( double ).

+ +

Definition at line 322 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTSigma()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultSIFTSigma ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/Sigma : 1.6 .

+ +

Definition at line 322 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTSigma()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTSigma ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/Sigma , as a string: double .

+ +

Definition at line 322 of file Parameters.h.

+ +
+
+ +

◆ kSIFTPreciseUpscale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTPreciseUpscale ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/PreciseUpscale : "Whether to enable precise upscaling in the scale pyramid (OpenCV >= 4.8)." Default value: false ( bool ).

+ +

Definition at line 323 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTPreciseUpscale()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSIFTPreciseUpscale ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/PreciseUpscale : false .

+ +

Definition at line 323 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTPreciseUpscale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTPreciseUpscale ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/PreciseUpscale , as a string: bool .

+ +

Definition at line 323 of file Parameters.h.

+ +
+
+ +

◆ kSIFTRootSIFT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTRootSIFT ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/RootSIFT : "Apply RootSIFT normalization of the descriptors." Default value: false ( bool ).

+ +

Definition at line 324 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTRootSIFT()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSIFTRootSIFT ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/RootSIFT : false .

+ +

Definition at line 324 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTRootSIFT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTRootSIFT ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/RootSIFT , as a string: bool .

+ +

Definition at line 324 of file Parameters.h.

+ +
+
+ +

◆ kSIFTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTGpu ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/Gpu : "CudaSift: Use GPU version of SIFT. This option is enabled only if RTAB-Map is built with CudaSift dependency and GPUs are detected." Default value: false ( bool ).

+ +

Definition at line 325 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSIFTGpu ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/Gpu : false .

+ +

Definition at line 325 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTGpu ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/Gpu , as a string: bool .

+ +

Definition at line 325 of file Parameters.h.

+ +
+
+ +

◆ kSIFTGaussianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTGaussianThreshold ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/GaussianThreshold : "CudaSift: Threshold on difference of Gaussians for feature pruning. The higher the threshold, the less features with low response/hessian are produced by the detector." Default value: 2.0 ( float ).

+ +

Definition at line 326 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTGaussianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultSIFTGaussianThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/GaussianThreshold : 2.0 .

+ +

Definition at line 326 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTGaussianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTGaussianThreshold ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/GaussianThreshold , as a string: float .

+ +

Definition at line 326 of file Parameters.h.

+ +
+
+ +

◆ kSIFTMaxGaussianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTMaxGaussianThreshold ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/MaxGaussianThreshold : uFormat("CudaSift: Maximum threshold on difference of Gaussians for feature pruning (ignored if smaller or equal than %s). The lower the threshold, the less features with high response/hessian are produced by the detector.", kSIFTGaussianThreshold().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 327 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTMaxGaussianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultSIFTMaxGaussianThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/MaxGaussianThreshold : 0.0 .

+ +

Definition at line 327 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTMaxGaussianThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTMaxGaussianThreshold ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/MaxGaussianThreshold , as a string: float .

+ +

Definition at line 327 of file Parameters.h.

+ +
+
+ +

◆ kSIFTUpscale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSIFTUpscale ()
+
+inlinestatic
+
+ +

Key of parameter SIFT/Upscale : "CudaSift: Whether to enable upscaling." Default value: false ( bool ).

+ +

Definition at line 328 of file Parameters.h.

+ +
+
+ +

◆ defaultSIFTUpscale()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSIFTUpscale ()
+
+inlinestatic
+
+ +

Default value of parameter SIFT/Upscale : false .

+ +

Definition at line 328 of file Parameters.h.

+ +
+
+ +

◆ typeSIFTUpscale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSIFTUpscale ()
+
+inlinestatic
+
+ +

Type of parameter SIFT/Upscale , as a string: bool .

+ +

Definition at line 328 of file Parameters.h.

+ +
+
+ +

◆ kBRIEFBytes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBRIEFBytes ()
+
+inlinestatic
+
+ +

Key of parameter BRIEF/Bytes : "Bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes." Default value: 32 ( int ).

+ +

Definition at line 330 of file Parameters.h.

+ +
+
+ +

◆ defaultBRIEFBytes()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultBRIEFBytes ()
+
+inlinestatic
+
+ +

Default value of parameter BRIEF/Bytes : 32 .

+ +

Definition at line 330 of file Parameters.h.

+ +
+
+ +

◆ typeBRIEFBytes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBRIEFBytes ()
+
+inlinestatic
+
+ +

Type of parameter BRIEF/Bytes , as a string: int .

+ +

Definition at line 330 of file Parameters.h.

+ +
+
+ +

◆ kFASTThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTThreshold ()
+
+inlinestatic
+
+ +

Key of parameter FAST/Threshold : "Threshold on difference between intensity of the central pixel and pixels of a circle around this pixel." Default value: 20 ( int ).

+ +

Definition at line 332 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultFASTThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/Threshold : 20 .

+ +

Definition at line 332 of file Parameters.h.

+ +
+
+ +

◆ typeFASTThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTThreshold ()
+
+inlinestatic
+
+ +

Type of parameter FAST/Threshold , as a string: int .

+ +

Definition at line 332 of file Parameters.h.

+ +
+
+ +

◆ kFASTNonmaxSuppression()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTNonmaxSuppression ()
+
+inlinestatic
+
+ +

Key of parameter FAST/NonmaxSuppression : "If true, non-maximum suppression is applied to detected corners (keypoints)." Default value: true ( bool ).

+ +

Definition at line 333 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTNonmaxSuppression()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultFASTNonmaxSuppression ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/NonmaxSuppression : true .

+ +

Definition at line 333 of file Parameters.h.

+ +
+
+ +

◆ typeFASTNonmaxSuppression()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTNonmaxSuppression ()
+
+inlinestatic
+
+ +

Type of parameter FAST/NonmaxSuppression , as a string: bool .

+ +

Definition at line 333 of file Parameters.h.

+ +
+
+ +

◆ kFASTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTGpu ()
+
+inlinestatic
+
+ +

Key of parameter FAST/Gpu : "GPU-FAST: Use GPU version of FAST. This option is enabled only if OpenCV is built with CUDA and GPUs are detected." Default value: false ( bool ).

+ +

Definition at line 334 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultFASTGpu ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/Gpu : false .

+ +

Definition at line 334 of file Parameters.h.

+ +
+
+ +

◆ typeFASTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTGpu ()
+
+inlinestatic
+
+ +

Type of parameter FAST/Gpu , as a string: bool .

+ +

Definition at line 334 of file Parameters.h.

+ +
+
+ +

◆ kFASTGpuKeypointsRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTGpuKeypointsRatio ()
+
+inlinestatic
+
+ +

Key of parameter FAST/GpuKeypointsRatio : "Used with FAST GPU." Default value: 0.05 ( double ).

+ +

Definition at line 335 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTGpuKeypointsRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultFASTGpuKeypointsRatio ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/GpuKeypointsRatio : 0.05 .

+ +

Definition at line 335 of file Parameters.h.

+ +
+
+ +

◆ typeFASTGpuKeypointsRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTGpuKeypointsRatio ()
+
+inlinestatic
+
+ +

Type of parameter FAST/GpuKeypointsRatio , as a string: double .

+ +

Definition at line 335 of file Parameters.h.

+ +
+
+ +

◆ kFASTMinThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTMinThreshold ()
+
+inlinestatic
+
+ +

Key of parameter FAST/MinThreshold : "Minimum threshold. Used only when FAST/GridRows and FAST/GridCols are set." Default value: 7 ( int ).

+ +

Definition at line 336 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTMinThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultFASTMinThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/MinThreshold : 7 .

+ +

Definition at line 336 of file Parameters.h.

+ +
+
+ +

◆ typeFASTMinThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTMinThreshold ()
+
+inlinestatic
+
+ +

Type of parameter FAST/MinThreshold , as a string: int .

+ +

Definition at line 336 of file Parameters.h.

+ +
+
+ +

◆ kFASTMaxThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTMaxThreshold ()
+
+inlinestatic
+
+ +

Key of parameter FAST/MaxThreshold : "Maximum threshold. Used only when FAST/GridRows and FAST/GridCols are set." Default value: 200 ( int ).

+ +

Definition at line 337 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTMaxThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultFASTMaxThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/MaxThreshold : 200 .

+ +

Definition at line 337 of file Parameters.h.

+ +
+
+ +

◆ typeFASTMaxThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTMaxThreshold ()
+
+inlinestatic
+
+ +

Type of parameter FAST/MaxThreshold , as a string: int .

+ +

Definition at line 337 of file Parameters.h.

+ +
+
+ +

◆ kFASTGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTGridRows ()
+
+inlinestatic
+
+ +

Key of parameter FAST/GridRows : "Grid rows (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell." Default value: 0 ( int ).

+ +

Definition at line 338 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultFASTGridRows ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/GridRows : 0 .

+ +

Definition at line 338 of file Parameters.h.

+ +
+
+ +

◆ typeFASTGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTGridRows ()
+
+inlinestatic
+
+ +

Type of parameter FAST/GridRows , as a string: int .

+ +

Definition at line 338 of file Parameters.h.

+ +
+
+ +

◆ kFASTGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTGridCols ()
+
+inlinestatic
+
+ +

Key of parameter FAST/GridCols : "Grid cols (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell." Default value: 0 ( int ).

+ +

Definition at line 339 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultFASTGridCols ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/GridCols : 0 .

+ +

Definition at line 339 of file Parameters.h.

+ +
+
+ +

◆ typeFASTGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTGridCols ()
+
+inlinestatic
+
+ +

Type of parameter FAST/GridCols , as a string: int .

+ +

Definition at line 339 of file Parameters.h.

+ +
+
+ +

◆ kFASTCV()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFASTCV ()
+
+inlinestatic
+
+ +

Key of parameter FAST/CV : "Enable FastCV implementation if non-zero (and RTAB-Map is built with FastCV support). Values should be 9 and 10." Default value: 0 ( int ).

+ +

Definition at line 340 of file Parameters.h.

+ +
+
+ +

◆ defaultFASTCV()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultFASTCV ()
+
+inlinestatic
+
+ +

Default value of parameter FAST/CV : 0 .

+ +

Definition at line 340 of file Parameters.h.

+ +
+
+ +

◆ typeFASTCV()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFASTCV ()
+
+inlinestatic
+
+ +

Type of parameter FAST/CV , as a string: int .

+ +

Definition at line 340 of file Parameters.h.

+ +
+
+ +

◆ kGFTTQualityLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGFTTQualityLevel ()
+
+inlinestatic
+
+ +

Key of parameter GFTT/QualityLevel : "" Default value: 0.001 ( double ).

+ +

Definition at line 342 of file Parameters.h.

+ +
+
+ +

◆ defaultGFTTQualityLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultGFTTQualityLevel ()
+
+inlinestatic
+
+ +

Default value of parameter GFTT/QualityLevel : 0.001 .

+ +

Definition at line 342 of file Parameters.h.

+ +
+
+ +

◆ typeGFTTQualityLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGFTTQualityLevel ()
+
+inlinestatic
+
+ +

Type of parameter GFTT/QualityLevel , as a string: double .

+ +

Definition at line 342 of file Parameters.h.

+ +
+
+ +

◆ kGFTTMinDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGFTTMinDistance ()
+
+inlinestatic
+
+ +

Key of parameter GFTT/MinDistance : "" Default value: 7 ( double ).

+ +

Definition at line 343 of file Parameters.h.

+ +
+
+ +

◆ defaultGFTTMinDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultGFTTMinDistance ()
+
+inlinestatic
+
+ +

Default value of parameter GFTT/MinDistance : 7 .

+ +

Definition at line 343 of file Parameters.h.

+ +
+
+ +

◆ typeGFTTMinDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGFTTMinDistance ()
+
+inlinestatic
+
+ +

Type of parameter GFTT/MinDistance , as a string: double .

+ +

Definition at line 343 of file Parameters.h.

+ +
+
+ +

◆ kGFTTBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGFTTBlockSize ()
+
+inlinestatic
+
+ +

Key of parameter GFTT/BlockSize : "" Default value: 3 ( int ).

+ +

Definition at line 344 of file Parameters.h.

+ +
+
+ +

◆ defaultGFTTBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGFTTBlockSize ()
+
+inlinestatic
+
+ +

Default value of parameter GFTT/BlockSize : 3 .

+ +

Definition at line 344 of file Parameters.h.

+ +
+
+ +

◆ typeGFTTBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGFTTBlockSize ()
+
+inlinestatic
+
+ +

Type of parameter GFTT/BlockSize , as a string: int .

+ +

Definition at line 344 of file Parameters.h.

+ +
+
+ +

◆ kGFTTUseHarrisDetector()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGFTTUseHarrisDetector ()
+
+inlinestatic
+
+ +

Key of parameter GFTT/UseHarrisDetector : "" Default value: false ( bool ).

+ +

Definition at line 345 of file Parameters.h.

+ +
+
+ +

◆ defaultGFTTUseHarrisDetector()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGFTTUseHarrisDetector ()
+
+inlinestatic
+
+ +

Default value of parameter GFTT/UseHarrisDetector : false .

+ +

Definition at line 345 of file Parameters.h.

+ +
+
+ +

◆ typeGFTTUseHarrisDetector()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGFTTUseHarrisDetector ()
+
+inlinestatic
+
+ +

Type of parameter GFTT/UseHarrisDetector , as a string: bool .

+ +

Definition at line 345 of file Parameters.h.

+ +
+
+ +

◆ kGFTTK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGFTTK ()
+
+inlinestatic
+
+ +

Key of parameter GFTT/K : "" Default value: 0.04 ( double ).

+ +

Definition at line 346 of file Parameters.h.

+ +
+
+ +

◆ defaultGFTTK()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultGFTTK ()
+
+inlinestatic
+
+ +

Default value of parameter GFTT/K : 0.04 .

+ +

Definition at line 346 of file Parameters.h.

+ +
+
+ +

◆ typeGFTTK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGFTTK ()
+
+inlinestatic
+
+ +

Type of parameter GFTT/K , as a string: double .

+ +

Definition at line 346 of file Parameters.h.

+ +
+
+ +

◆ kGFTTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGFTTGpu ()
+
+inlinestatic
+
+ +

Key of parameter GFTT/Gpu : "GPU-GFTT: Use GPU version of GFTT. This option is enabled only if OpenCV>=3 is built with CUDA and GPUs are detected." Default value: false ( bool ).

+ +

Definition at line 347 of file Parameters.h.

+ +
+
+ +

◆ defaultGFTTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGFTTGpu ()
+
+inlinestatic
+
+ +

Default value of parameter GFTT/Gpu : false .

+ +

Definition at line 347 of file Parameters.h.

+ +
+
+ +

◆ typeGFTTGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGFTTGpu ()
+
+inlinestatic
+
+ +

Type of parameter GFTT/Gpu , as a string: bool .

+ +

Definition at line 347 of file Parameters.h.

+ +
+
+ +

◆ kORBScaleFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBScaleFactor ()
+
+inlinestatic
+
+ +

Key of parameter ORB/ScaleFactor : "Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor will mean that to cover certain scale range you will need more pyramid levels and so the speed will suffer." Default value: 2 ( float ).

+ +

Definition at line 349 of file Parameters.h.

+ +
+
+ +

◆ defaultORBScaleFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultORBScaleFactor ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/ScaleFactor : 2 .

+ +

Definition at line 349 of file Parameters.h.

+ +
+
+ +

◆ typeORBScaleFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBScaleFactor ()
+
+inlinestatic
+
+ +

Type of parameter ORB/ScaleFactor , as a string: float .

+ +

Definition at line 349 of file Parameters.h.

+ +
+
+ +

◆ kORBNLevels()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBNLevels ()
+
+inlinestatic
+
+ +

Key of parameter ORB/NLevels : "The number of pyramid levels. The smallest level will have linear size equal to input_image_linear_size/pow(scaleFactor, nlevels)." Default value: 3 ( int ).

+ +

Definition at line 350 of file Parameters.h.

+ +
+
+ +

◆ defaultORBNLevels()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultORBNLevels ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/NLevels : 3 .

+ +

Definition at line 350 of file Parameters.h.

+ +
+
+ +

◆ typeORBNLevels()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBNLevels ()
+
+inlinestatic
+
+ +

Type of parameter ORB/NLevels , as a string: int .

+ +

Definition at line 350 of file Parameters.h.

+ +
+
+ +

◆ kORBEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBEdgeThreshold ()
+
+inlinestatic
+
+ +

Key of parameter ORB/EdgeThreshold : "This is size of the border where the features are not detected. It should roughly match the patchSize parameter." Default value: 19 ( int ).

+ +

Definition at line 351 of file Parameters.h.

+ +
+
+ +

◆ defaultORBEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultORBEdgeThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/EdgeThreshold : 19 .

+ +

Definition at line 351 of file Parameters.h.

+ +
+
+ +

◆ typeORBEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBEdgeThreshold ()
+
+inlinestatic
+
+ +

Type of parameter ORB/EdgeThreshold , as a string: int .

+ +

Definition at line 351 of file Parameters.h.

+ +
+
+ +

◆ kORBFirstLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBFirstLevel ()
+
+inlinestatic
+
+ +

Key of parameter ORB/FirstLevel : "It should be 0 in the current implementation." Default value: 0 ( int ).

+ +

Definition at line 352 of file Parameters.h.

+ +
+
+ +

◆ defaultORBFirstLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultORBFirstLevel ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/FirstLevel : 0 .

+ +

Definition at line 352 of file Parameters.h.

+ +
+
+ +

◆ typeORBFirstLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBFirstLevel ()
+
+inlinestatic
+
+ +

Type of parameter ORB/FirstLevel , as a string: int .

+ +

Definition at line 352 of file Parameters.h.

+ +
+
+ +

◆ kORBWTA_K()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBWTA_K ()
+
+inlinestatic
+
+ +

Key of parameter ORB/WTA_K : "The number of points that produce each element of the oriented BRIEF descriptor. The default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 random points (of course, those point coordinates are random, but they are generated from the pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3)." Default value: 2 ( int ).

+ +

Definition at line 353 of file Parameters.h.

+ +
+
+ +

◆ defaultORBWTA_K()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultORBWTA_K ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/WTA_K : 2 .

+ +

Definition at line 353 of file Parameters.h.

+ +
+
+ +

◆ typeORBWTA_K()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBWTA_K ()
+
+inlinestatic
+
+ +

Type of parameter ORB/WTA_K , as a string: int .

+ +

Definition at line 353 of file Parameters.h.

+ +
+
+ +

◆ kORBScoreType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBScoreType ()
+
+inlinestatic
+
+ +

Key of parameter ORB/ScoreType : "The default HARRIS_SCORE=0 means that Harris algorithm is used to rank features (the score is written to KeyPoint::score and is used to retain best nfeatures features); FAST_SCORE=1 is alternative value of the parameter that produces slightly less stable keypoints, but it is a little faster to compute." Default value: 0 ( int ).

+ +

Definition at line 354 of file Parameters.h.

+ +
+
+ +

◆ defaultORBScoreType()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultORBScoreType ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/ScoreType : 0 .

+ +

Definition at line 354 of file Parameters.h.

+ +
+
+ +

◆ typeORBScoreType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBScoreType ()
+
+inlinestatic
+
+ +

Type of parameter ORB/ScoreType , as a string: int .

+ +

Definition at line 354 of file Parameters.h.

+ +
+
+ +

◆ kORBPatchSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBPatchSize ()
+
+inlinestatic
+
+ +

Key of parameter ORB/PatchSize : "size of the patch used by the oriented BRIEF descriptor. Of course, on smaller pyramid layers the perceived image area covered by a feature will be larger." Default value: 31 ( int ).

+ +

Definition at line 355 of file Parameters.h.

+ +
+
+ +

◆ defaultORBPatchSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultORBPatchSize ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/PatchSize : 31 .

+ +

Definition at line 355 of file Parameters.h.

+ +
+
+ +

◆ typeORBPatchSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBPatchSize ()
+
+inlinestatic
+
+ +

Type of parameter ORB/PatchSize , as a string: int .

+ +

Definition at line 355 of file Parameters.h.

+ +
+
+ +

◆ kORBGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kORBGpu ()
+
+inlinestatic
+
+ +

Key of parameter ORB/Gpu : "GPU-ORB: Use GPU version of ORB. This option is enabled only if OpenCV is built with CUDA and GPUs are detected." Default value: false ( bool ).

+ +

Definition at line 356 of file Parameters.h.

+ +
+
+ +

◆ defaultORBGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultORBGpu ()
+
+inlinestatic
+
+ +

Default value of parameter ORB/Gpu : false .

+ +

Definition at line 356 of file Parameters.h.

+ +
+
+ +

◆ typeORBGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeORBGpu ()
+
+inlinestatic
+
+ +

Type of parameter ORB/Gpu , as a string: bool .

+ +

Definition at line 356 of file Parameters.h.

+ +
+
+ +

◆ kFREAKOrientationNormalized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFREAKOrientationNormalized ()
+
+inlinestatic
+
+ +

Key of parameter FREAK/OrientationNormalized : "Enable orientation normalization." Default value: true ( bool ).

+ +

Definition at line 358 of file Parameters.h.

+ +
+
+ +

◆ defaultFREAKOrientationNormalized()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultFREAKOrientationNormalized ()
+
+inlinestatic
+
+ +

Default value of parameter FREAK/OrientationNormalized : true .

+ +

Definition at line 358 of file Parameters.h.

+ +
+
+ +

◆ typeFREAKOrientationNormalized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFREAKOrientationNormalized ()
+
+inlinestatic
+
+ +

Type of parameter FREAK/OrientationNormalized , as a string: bool .

+ +

Definition at line 358 of file Parameters.h.

+ +
+
+ +

◆ kFREAKScaleNormalized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFREAKScaleNormalized ()
+
+inlinestatic
+
+ +

Key of parameter FREAK/ScaleNormalized : "Enable scale normalization." Default value: true ( bool ).

+ +

Definition at line 359 of file Parameters.h.

+ +
+
+ +

◆ defaultFREAKScaleNormalized()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultFREAKScaleNormalized ()
+
+inlinestatic
+
+ +

Default value of parameter FREAK/ScaleNormalized : true .

+ +

Definition at line 359 of file Parameters.h.

+ +
+
+ +

◆ typeFREAKScaleNormalized()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFREAKScaleNormalized ()
+
+inlinestatic
+
+ +

Type of parameter FREAK/ScaleNormalized , as a string: bool .

+ +

Definition at line 359 of file Parameters.h.

+ +
+
+ +

◆ kFREAKPatternScale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFREAKPatternScale ()
+
+inlinestatic
+
+ +

Key of parameter FREAK/PatternScale : "Scaling of the description pattern." Default value: 22 ( float ).

+ +

Definition at line 360 of file Parameters.h.

+ +
+
+ +

◆ defaultFREAKPatternScale()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultFREAKPatternScale ()
+
+inlinestatic
+
+ +

Default value of parameter FREAK/PatternScale : 22 .

+ +

Definition at line 360 of file Parameters.h.

+ +
+
+ +

◆ typeFREAKPatternScale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFREAKPatternScale ()
+
+inlinestatic
+
+ +

Type of parameter FREAK/PatternScale , as a string: float .

+ +

Definition at line 360 of file Parameters.h.

+ +
+
+ +

◆ kFREAKNOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kFREAKNOctaves ()
+
+inlinestatic
+
+ +

Key of parameter FREAK/NOctaves : "Number of octaves covered by the detected keypoints." Default value: 4 ( int ).

+ +

Definition at line 361 of file Parameters.h.

+ +
+
+ +

◆ defaultFREAKNOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultFREAKNOctaves ()
+
+inlinestatic
+
+ +

Default value of parameter FREAK/NOctaves : 4 .

+ +

Definition at line 361 of file Parameters.h.

+ +
+
+ +

◆ typeFREAKNOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeFREAKNOctaves ()
+
+inlinestatic
+
+ +

Type of parameter FREAK/NOctaves , as a string: int .

+ +

Definition at line 361 of file Parameters.h.

+ +
+
+ +

◆ kBRISKThresh()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBRISKThresh ()
+
+inlinestatic
+
+ +

Key of parameter BRISK/Thresh : "FAST/AGAST detection threshold score." Default value: 30 ( int ).

+ +

Definition at line 363 of file Parameters.h.

+ +
+
+ +

◆ defaultBRISKThresh()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultBRISKThresh ()
+
+inlinestatic
+
+ +

Default value of parameter BRISK/Thresh : 30 .

+ +

Definition at line 363 of file Parameters.h.

+ +
+
+ +

◆ typeBRISKThresh()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBRISKThresh ()
+
+inlinestatic
+
+ +

Type of parameter BRISK/Thresh , as a string: int .

+ +

Definition at line 363 of file Parameters.h.

+ +
+
+ +

◆ kBRISKOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBRISKOctaves ()
+
+inlinestatic
+
+ +

Key of parameter BRISK/Octaves : "Detection octaves. Use 0 to do single scale." Default value: 3 ( int ).

+ +

Definition at line 364 of file Parameters.h.

+ +
+
+ +

◆ defaultBRISKOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultBRISKOctaves ()
+
+inlinestatic
+
+ +

Default value of parameter BRISK/Octaves : 3 .

+ +

Definition at line 364 of file Parameters.h.

+ +
+
+ +

◆ typeBRISKOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBRISKOctaves ()
+
+inlinestatic
+
+ +

Type of parameter BRISK/Octaves , as a string: int .

+ +

Definition at line 364 of file Parameters.h.

+ +
+
+ +

◆ kBRISKPatternScale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBRISKPatternScale ()
+
+inlinestatic
+
+ +

Key of parameter BRISK/PatternScale : "Apply this scale to the pattern used for sampling the neighbourhood of a keypoint." Default value: 1 ( float ).

+ +

Definition at line 365 of file Parameters.h.

+ +
+
+ +

◆ defaultBRISKPatternScale()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultBRISKPatternScale ()
+
+inlinestatic
+
+ +

Default value of parameter BRISK/PatternScale : 1 .

+ +

Definition at line 365 of file Parameters.h.

+ +
+
+ +

◆ typeBRISKPatternScale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBRISKPatternScale ()
+
+inlinestatic
+
+ +

Type of parameter BRISK/PatternScale , as a string: float .

+ +

Definition at line 365 of file Parameters.h.

+ +
+
+ +

◆ kKAZEExtended()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKAZEExtended ()
+
+inlinestatic
+
+ +

Key of parameter KAZE/Extended : "Set to enable extraction of extended (128-byte) descriptor." Default value: false ( bool ).

+ +

Definition at line 367 of file Parameters.h.

+ +
+
+ +

◆ defaultKAZEExtended()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKAZEExtended ()
+
+inlinestatic
+
+ +

Default value of parameter KAZE/Extended : false .

+ +

Definition at line 367 of file Parameters.h.

+ +
+
+ +

◆ typeKAZEExtended()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKAZEExtended ()
+
+inlinestatic
+
+ +

Type of parameter KAZE/Extended , as a string: bool .

+ +

Definition at line 367 of file Parameters.h.

+ +
+
+ +

◆ kKAZEUpright()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKAZEUpright ()
+
+inlinestatic
+
+ +

Key of parameter KAZE/Upright : "Set to enable use of upright descriptors (non rotation-invariant)." Default value: false ( bool ).

+ +

Definition at line 368 of file Parameters.h.

+ +
+
+ +

◆ defaultKAZEUpright()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultKAZEUpright ()
+
+inlinestatic
+
+ +

Default value of parameter KAZE/Upright : false .

+ +

Definition at line 368 of file Parameters.h.

+ +
+
+ +

◆ typeKAZEUpright()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKAZEUpright ()
+
+inlinestatic
+
+ +

Type of parameter KAZE/Upright , as a string: bool .

+ +

Definition at line 368 of file Parameters.h.

+ +
+
+ +

◆ kKAZEThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKAZEThreshold ()
+
+inlinestatic
+
+ +

Key of parameter KAZE/Threshold : "Detector response threshold to accept keypoint." Default value: 0.001 ( float ).

+ +

Definition at line 369 of file Parameters.h.

+ +
+
+ +

◆ defaultKAZEThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultKAZEThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter KAZE/Threshold : 0.001 .

+ +

Definition at line 369 of file Parameters.h.

+ +
+
+ +

◆ typeKAZEThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKAZEThreshold ()
+
+inlinestatic
+
+ +

Type of parameter KAZE/Threshold , as a string: float .

+ +

Definition at line 369 of file Parameters.h.

+ +
+
+ +

◆ kKAZENOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKAZENOctaves ()
+
+inlinestatic
+
+ +

Key of parameter KAZE/NOctaves : "Maximum octave evolution of the image." Default value: 4 ( int ).

+ +

Definition at line 370 of file Parameters.h.

+ +
+
+ +

◆ defaultKAZENOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKAZENOctaves ()
+
+inlinestatic
+
+ +

Default value of parameter KAZE/NOctaves : 4 .

+ +

Definition at line 370 of file Parameters.h.

+ +
+
+ +

◆ typeKAZENOctaves()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKAZENOctaves ()
+
+inlinestatic
+
+ +

Type of parameter KAZE/NOctaves , as a string: int .

+ +

Definition at line 370 of file Parameters.h.

+ +
+
+ +

◆ kKAZENOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKAZENOctaveLayers ()
+
+inlinestatic
+
+ +

Key of parameter KAZE/NOctaveLayers : "Default number of sublevels per scale level." Default value: 4 ( int ).

+ +

Definition at line 371 of file Parameters.h.

+ +
+
+ +

◆ defaultKAZENOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKAZENOctaveLayers ()
+
+inlinestatic
+
+ +

Default value of parameter KAZE/NOctaveLayers : 4 .

+ +

Definition at line 371 of file Parameters.h.

+ +
+
+ +

◆ typeKAZENOctaveLayers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKAZENOctaveLayers ()
+
+inlinestatic
+
+ +

Type of parameter KAZE/NOctaveLayers , as a string: int .

+ +

Definition at line 371 of file Parameters.h.

+ +
+
+ +

◆ kKAZEDiffusivity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kKAZEDiffusivity ()
+
+inlinestatic
+
+ +

Key of parameter KAZE/Diffusivity : "Diffusivity type: 0=DIFF_PM_G1, 1=DIFF_PM_G2, 2=DIFF_WEICKERT or 3=DIFF_CHARBONNIER." Default value: 1 ( int ).

+ +

Definition at line 372 of file Parameters.h.

+ +
+
+ +

◆ defaultKAZEDiffusivity()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultKAZEDiffusivity ()
+
+inlinestatic
+
+ +

Default value of parameter KAZE/Diffusivity : 1 .

+ +

Definition at line 372 of file Parameters.h.

+ +
+
+ +

◆ typeKAZEDiffusivity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeKAZEDiffusivity ()
+
+inlinestatic
+
+ +

Type of parameter KAZE/Diffusivity , as a string: int .

+ +

Definition at line 372 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointModelPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointModelPath ()
+
+inlinestatic
+
+ +

Key of parameter SuperPoint/ModelPath : "[Required] Path to pre-trained weights Torch file of SuperPoint (*.pt)." Default value: "" (string).

+ +

Definition at line 374 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointModelPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultSuperPointModelPath ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPoint/ModelPath : "" .

+ +

Definition at line 374 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointModelPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointModelPath ()
+
+inlinestatic
+
+ +

Type of parameter SuperPoint/ModelPath , as a string: string.

+ +

Definition at line 374 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointThreshold ()
+
+inlinestatic
+
+ +

Key of parameter SuperPoint/Threshold : "Detector response threshold to accept keypoint." Default value: 0.010 ( float ).

+ +

Definition at line 375 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultSuperPointThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPoint/Threshold : 0.010 .

+ +

Definition at line 375 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointThreshold ()
+
+inlinestatic
+
+ +

Type of parameter SuperPoint/Threshold , as a string: float .

+ +

Definition at line 375 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointNMS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointNMS ()
+
+inlinestatic
+
+ +

Key of parameter SuperPoint/NMS : "If true, non-maximum suppression is applied to detected keypoints." Default value: true ( bool ).

+ +

Definition at line 376 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointNMS()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSuperPointNMS ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPoint/NMS : true .

+ +

Definition at line 376 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointNMS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointNMS ()
+
+inlinestatic
+
+ +

Type of parameter SuperPoint/NMS , as a string: bool .

+ +

Definition at line 376 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointNMSRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointNMSRadius ()
+
+inlinestatic
+
+ +

Key of parameter SuperPoint/NMSRadius : uFormat("[%s=true] Minimum distance (pixels) between keypoints.", kSuperPointNMS().c_str()) Default value: 4 ( int ).

+ +

Definition at line 377 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointNMSRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultSuperPointNMSRadius ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPoint/NMSRadius : 4 .

+ +

Definition at line 377 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointNMSRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointNMSRadius ()
+
+inlinestatic
+
+ +

Type of parameter SuperPoint/NMSRadius , as a string: int .

+ +

Definition at line 377 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointCuda ()
+
+inlinestatic
+
+ +

Key of parameter SuperPoint/Cuda : "Use Cuda device for Torch, otherwise CPU device is used by default." Default value: true ( bool ).

+ +

Definition at line 378 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSuperPointCuda ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPoint/Cuda : true .

+ +

Definition at line 378 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointCuda ()
+
+inlinestatic
+
+ +

Type of parameter SuperPoint/Cuda , as a string: bool .

+ +

Definition at line 378 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointRpautratWeightsPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointRpautratWeightsPath ()
+
+inlinestatic
+
+ +

Key of parameter SuperPointRpautrat/WeightsPath : "[Required] SuperPoint weights file (*.pth)." Default value: "" (string).

+ +

Definition at line 380 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointRpautratWeightsPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultSuperPointRpautratWeightsPath ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPointRpautrat/WeightsPath : "" .

+ +

Definition at line 380 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointRpautratWeightsPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointRpautratWeightsPath ()
+
+inlinestatic
+
+ +

Type of parameter SuperPointRpautrat/WeightsPath , as a string: string.

+ +

Definition at line 380 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointRpautratModelPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointRpautratModelPath ()
+
+inlinestatic
+
+ +

Key of parameter SuperPointRpautrat/ModelPath : "[Required] SuperPoint python model file (superpoint_pytorch.py)." Default value: "" (string).

+ +

Definition at line 381 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointRpautratModelPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultSuperPointRpautratModelPath ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPointRpautrat/ModelPath : "" .

+ +

Definition at line 381 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointRpautratModelPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointRpautratModelPath ()
+
+inlinestatic
+
+ +

Type of parameter SuperPointRpautrat/ModelPath , as a string: string.

+ +

Definition at line 381 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointRpautratThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointRpautratThreshold ()
+
+inlinestatic
+
+ +

Key of parameter SuperPointRpautrat/Threshold : "Detector response threshold to accept keypoint." Default value: 0.005 ( float ).

+ +

Definition at line 382 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointRpautratThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultSuperPointRpautratThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPointRpautrat/Threshold : 0.005 .

+ +

Definition at line 382 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointRpautratThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointRpautratThreshold ()
+
+inlinestatic
+
+ +

Type of parameter SuperPointRpautrat/Threshold , as a string: float .

+ +

Definition at line 382 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointRpautratNMS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointRpautratNMS ()
+
+inlinestatic
+
+ +

Key of parameter SuperPointRpautrat/NMS : "If true, non-maximum suppression is applied to detected keypoints." Default value: true ( bool ).

+ +

Definition at line 383 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointRpautratNMS()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSuperPointRpautratNMS ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPointRpautrat/NMS : true .

+ +

Definition at line 383 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointRpautratNMS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointRpautratNMS ()
+
+inlinestatic
+
+ +

Type of parameter SuperPointRpautrat/NMS , as a string: bool .

+ +

Definition at line 383 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointRpautratNMSRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointRpautratNMSRadius ()
+
+inlinestatic
+
+ +

Key of parameter SuperPointRpautrat/NMSRadius : uFormat("[%s=true] Minimum distance (pixels) between keypoints.", kSuperPointRpautratNMS().c_str()) Default value: 4 ( int ).

+ +

Definition at line 384 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointRpautratNMSRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultSuperPointRpautratNMSRadius ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPointRpautrat/NMSRadius : 4 .

+ +

Definition at line 384 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointRpautratNMSRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointRpautratNMSRadius ()
+
+inlinestatic
+
+ +

Type of parameter SuperPointRpautrat/NMSRadius , as a string: int .

+ +

Definition at line 384 of file Parameters.h.

+ +
+
+ +

◆ kSuperPointRpautratCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kSuperPointRpautratCuda ()
+
+inlinestatic
+
+ +

Key of parameter SuperPointRpautrat/Cuda : "Use Cuda device for Torch, otherwise CPU device is used by default." Default value: true ( bool ).

+ +

Definition at line 385 of file Parameters.h.

+ +
+
+ +

◆ defaultSuperPointRpautratCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultSuperPointRpautratCuda ()
+
+inlinestatic
+
+ +

Default value of parameter SuperPointRpautrat/Cuda : true .

+ +

Definition at line 385 of file Parameters.h.

+ +
+
+ +

◆ typeSuperPointRpautratCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeSuperPointRpautratCuda ()
+
+inlinestatic
+
+ +

Type of parameter SuperPointRpautrat/Cuda , as a string: bool .

+ +

Definition at line 385 of file Parameters.h.

+ +
+
+ +

◆ kPyDetectorPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyDetectorPath ()
+
+inlinestatic
+
+ +

Key of parameter PyDetector/Path : "Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied." Default value: "" (string).

+ +

Definition at line 387 of file Parameters.h.

+ +
+
+ +

◆ defaultPyDetectorPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultPyDetectorPath ()
+
+inlinestatic
+
+ +

Default value of parameter PyDetector/Path : "" .

+ +

Definition at line 387 of file Parameters.h.

+ +
+
+ +

◆ typePyDetectorPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyDetectorPath ()
+
+inlinestatic
+
+ +

Type of parameter PyDetector/Path , as a string: string.

+ +

Definition at line 387 of file Parameters.h.

+ +
+
+ +

◆ kPyDetectorCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyDetectorCuda ()
+
+inlinestatic
+
+ +

Key of parameter PyDetector/Cuda : "Use cuda." Default value: true ( bool ).

+ +

Definition at line 388 of file Parameters.h.

+ +
+
+ +

◆ defaultPyDetectorCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultPyDetectorCuda ()
+
+inlinestatic
+
+ +

Default value of parameter PyDetector/Cuda : true .

+ +

Definition at line 388 of file Parameters.h.

+ +
+
+ +

◆ typePyDetectorCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyDetectorCuda ()
+
+inlinestatic
+
+ +

Type of parameter PyDetector/Cuda , as a string: bool .

+ +

Definition at line 388 of file Parameters.h.

+ +
+
+ +

◆ kBayesVirtualPlacePriorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBayesVirtualPlacePriorThr ()
+
+inlinestatic
+
+ +

Key of parameter Bayes/VirtualPlacePriorThr : "Virtual place prior. Considering that we are at a new place, this is the prior probability to move again to a new place (unvisited location). The prior probability to move to a previously visited location is 1 - VirtualPlacePriorThr (split equally against all previously visited locations)." Default value: 0.9 ( float ).

+ +

Definition at line 391 of file Parameters.h.

+ +
+
+ +

◆ defaultBayesVirtualPlacePriorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultBayesVirtualPlacePriorThr ()
+
+inlinestatic
+
+ +

Default value of parameter Bayes/VirtualPlacePriorThr : 0.9 .

+ +

Definition at line 391 of file Parameters.h.

+ +
+
+ +

◆ typeBayesVirtualPlacePriorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBayesVirtualPlacePriorThr ()
+
+inlinestatic
+
+ +

Type of parameter Bayes/VirtualPlacePriorThr , as a string: float .

+ +

Definition at line 391 of file Parameters.h.

+ +
+
+ +

◆ kBayesPredictionLC()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBayesPredictionLC ()
+
+inlinestatic
+
+ +

Key of parameter Bayes/PredictionLC : "Prediction of loop closures (Gaussian-like, here with sigma=1.6) - Format: {VirtualPlaceProb, LoopClosureProb, NeighborLvl1, NeighborLvl2, ...}. Considering we are at a previously visited location, the first value is the probability to move to a new place (unvisited location), the second value is the probability to stay at the same location, the third value is the probability to move to a neighbor or loop closure at the first depth level, the fourth value is the probability to move to a neighbor or loop closure at the second depth level, etc. If the sum of the values is not 1, the difference is normalized against all remaining visited locations. Normally, the sum of these values should be 1." Default value: "0.1 0.36 0.30 0.16 0.062 0.0151 0.00255 0.000324 2.5e-05 1e-06 4.8e-08 1.2e-09 1.9e-11 2.2e-13 1.7e-15 8.5e-18 2.9e-20 6.9e-23" (string).

+ +

Definition at line 392 of file Parameters.h.

+ +
+
+ +

◆ defaultBayesPredictionLC()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultBayesPredictionLC ()
+
+inlinestatic
+
+ +

Default value of parameter Bayes/PredictionLC : "0.1 0.36 0.30 0.16 0.062 0.0151 0.00255 0.000324 2.5e-05 1e-06 4.8e-08 1.2e-09 1.9e-11 2.2e-13 1.7e-15 8.5e-18 2.9e-20 6.9e-23" .

+ +

Definition at line 392 of file Parameters.h.

+ +
+
+ +

◆ typeBayesPredictionLC()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBayesPredictionLC ()
+
+inlinestatic
+
+ +

Type of parameter Bayes/PredictionLC , as a string: string.

+ +

Definition at line 392 of file Parameters.h.

+ +
+
+ +

◆ kBayesFullPredictionUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBayesFullPredictionUpdate ()
+
+inlinestatic
+
+ +

Key of parameter Bayes/FullPredictionUpdate : "Regenerate all the prediction matrix on each iteration (otherwise only removed/added ids are updated)." Default value: false ( bool ).

+ +

Definition at line 393 of file Parameters.h.

+ +
+
+ +

◆ defaultBayesFullPredictionUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultBayesFullPredictionUpdate ()
+
+inlinestatic
+
+ +

Default value of parameter Bayes/FullPredictionUpdate : false .

+ +

Definition at line 393 of file Parameters.h.

+ +
+
+ +

◆ typeBayesFullPredictionUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBayesFullPredictionUpdate ()
+
+inlinestatic
+
+ +

Type of parameter Bayes/FullPredictionUpdate , as a string: bool .

+ +

Definition at line 393 of file Parameters.h.

+ +
+
+ +

◆ kBayesSparsePrediction()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kBayesSparsePrediction ()
+
+inlinestatic
+
+ +

Key of parameter Bayes/SparsePrediction : uFormat("Use a sparse representation of the prediction instead of a dense matrix, which significantly reduces memory usage and processing time on large maps. Ignored when the values of %s sum to less than 1, as the prediction is then not sparse.", kBayesPredictionLC().c_str()).c_str() Default value: true ( bool ).

+ +

Definition at line 394 of file Parameters.h.

+ +
+
+ +

◆ defaultBayesSparsePrediction()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultBayesSparsePrediction ()
+
+inlinestatic
+
+ +

Default value of parameter Bayes/SparsePrediction : true .

+ +

Definition at line 394 of file Parameters.h.

+ +
+
+ +

◆ typeBayesSparsePrediction()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeBayesSparsePrediction ()
+
+inlinestatic
+
+ +

Type of parameter Bayes/SparsePrediction , as a string: bool .

+ +

Definition at line 394 of file Parameters.h.

+ +
+
+ +

◆ kVhEpEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVhEpEnabled ()
+
+inlinestatic
+
+ +

Key of parameter VhEp/Enabled : uFormat("Verify visual loop closure hypothesis by computing a fundamental matrix. This is done prior to transformation computation when %s is enabled.", kRGBDEnabled().c_str()) Default value: false ( bool ).

+ +

Definition at line 397 of file Parameters.h.

+ +
+
+ +

◆ defaultVhEpEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultVhEpEnabled ()
+
+inlinestatic
+
+ +

Default value of parameter VhEp/Enabled : false .

+ +

Definition at line 397 of file Parameters.h.

+ +
+
+ +

◆ typeVhEpEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVhEpEnabled ()
+
+inlinestatic
+
+ +

Type of parameter VhEp/Enabled , as a string: bool .

+ +

Definition at line 397 of file Parameters.h.

+ +
+
+ +

◆ kVhEpMatchCountMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVhEpMatchCountMin ()
+
+inlinestatic
+
+ +

Key of parameter VhEp/MatchCountMin : "Minimum of matching visual words pairs to accept the loop hypothesis." Default value: 8 ( int ).

+ +

Definition at line 398 of file Parameters.h.

+ +
+
+ +

◆ defaultVhEpMatchCountMin()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVhEpMatchCountMin ()
+
+inlinestatic
+
+ +

Default value of parameter VhEp/MatchCountMin : 8 .

+ +

Definition at line 398 of file Parameters.h.

+ +
+
+ +

◆ typeVhEpMatchCountMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVhEpMatchCountMin ()
+
+inlinestatic
+
+ +

Type of parameter VhEp/MatchCountMin , as a string: int .

+ +

Definition at line 398 of file Parameters.h.

+ +
+
+ +

◆ kVhEpRansacParam1()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVhEpRansacParam1 ()
+
+inlinestatic
+
+ +

Key of parameter VhEp/RansacParam1 : "Fundamental matrix (see cvFindFundamentalMat()): Max distance (in pixels) from the epipolar line for a point to be inlier." Default value: 3 ( float ).

+ +

Definition at line 399 of file Parameters.h.

+ +
+
+ +

◆ defaultVhEpRansacParam1()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVhEpRansacParam1 ()
+
+inlinestatic
+
+ +

Default value of parameter VhEp/RansacParam1 : 3 .

+ +

Definition at line 399 of file Parameters.h.

+ +
+
+ +

◆ typeVhEpRansacParam1()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVhEpRansacParam1 ()
+
+inlinestatic
+
+ +

Type of parameter VhEp/RansacParam1 , as a string: float .

+ +

Definition at line 399 of file Parameters.h.

+ +
+
+ +

◆ kVhEpRansacParam2()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVhEpRansacParam2 ()
+
+inlinestatic
+
+ +

Key of parameter VhEp/RansacParam2 : "Fundamental matrix (see cvFindFundamentalMat()): Performance of RANSAC." Default value: 0.99 ( float ).

+ +

Definition at line 400 of file Parameters.h.

+ +
+
+ +

◆ defaultVhEpRansacParam2()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVhEpRansacParam2 ()
+
+inlinestatic
+
+ +

Default value of parameter VhEp/RansacParam2 : 0.99 .

+ +

Definition at line 400 of file Parameters.h.

+ +
+
+ +

◆ typeVhEpRansacParam2()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVhEpRansacParam2 ()
+
+inlinestatic
+
+ +

Type of parameter VhEp/RansacParam2 , as a string: float .

+ +

Definition at line 400 of file Parameters.h.

+ +
+
+ +

◆ kRGBDEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDEnabled ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/Enabled : "Activate metric SLAM. If set to false, classic RTAB-Map loop closure detection is done using only images and without any metric information." Default value: true ( bool ).

+ +

Definition at line 403 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDEnabled ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/Enabled : true .

+ +

Definition at line 403 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDEnabled ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/Enabled , as a string: bool .

+ +

Definition at line 403 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLinearUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLinearUpdate ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LinearUpdate : uFormat("Minimum linear displacement (m) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both %s and %s should be set to 0.", Parameters::kRGBDLinearUpdate().c_str(), Parameters::kRGBDAngularUpdate().c_str()) Default value: 0.1 ( float ).

+ +

Definition at line 404 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLinearUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDLinearUpdate ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LinearUpdate : 0.1 .

+ +

Definition at line 404 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLinearUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLinearUpdate ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LinearUpdate , as a string: float .

+ +

Definition at line 404 of file Parameters.h.

+ +
+
+ +

◆ kRGBDAngularUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDAngularUpdate ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/AngularUpdate : uFormat("Minimum angular displacement (rad) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both %s and %s should be set to 0.", Parameters::kRGBDLinearUpdate().c_str(), Parameters::kRGBDAngularUpdate().c_str()) Default value: 0.1 ( float ).

+ +

Definition at line 405 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDAngularUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDAngularUpdate ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/AngularUpdate : 0.1 .

+ +

Definition at line 405 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDAngularUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDAngularUpdate ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/AngularUpdate , as a string: float .

+ +

Definition at line 405 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLinearSpeedUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLinearSpeedUpdate ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LinearSpeedUpdate : "Maximum linear speed (m/s) to update the map (0 means not limit)." Default value: 0.0 ( float ).

+ +

Definition at line 406 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLinearSpeedUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDLinearSpeedUpdate ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LinearSpeedUpdate : 0.0 .

+ +

Definition at line 406 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLinearSpeedUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLinearSpeedUpdate ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LinearSpeedUpdate , as a string: float .

+ +

Definition at line 406 of file Parameters.h.

+ +
+
+ +

◆ kRGBDAngularSpeedUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDAngularSpeedUpdate ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/AngularSpeedUpdate : "Maximum angular speed (rad/s) to update the map (0 means not limit)." Default value: 0.0 ( float ).

+ +

Definition at line 407 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDAngularSpeedUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDAngularSpeedUpdate ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/AngularSpeedUpdate : 0.0 .

+ +

Definition at line 407 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDAngularSpeedUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDAngularSpeedUpdate ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/AngularSpeedUpdate , as a string: float .

+ +

Definition at line 407 of file Parameters.h.

+ +
+
+ +

◆ kRGBDAggressiveLoopThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDAggressiveLoopThr ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/AggressiveLoopThr : uFormat("Loop closure threshold used (overriding %s) when a new mapping session is not yet linked to a map of the highest loop closure hypothesis. In localization mode, this threshold is used when there are no loop closure constraints with any map in the cache (%s). In all cases, the goal is to aggressively loop on a previous map in the database. Only used when %s is enabled. Set 1 to disable.", kRtabmapLoopThr().c_str(), kRGBDMaxOdomCacheSize().c_str(), kRGBDEnabled().c_str()) Default value: 0.05 ( float ).

+ +

Definition at line 408 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDAggressiveLoopThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDAggressiveLoopThr ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/AggressiveLoopThr : 0.05 .

+ +

Definition at line 408 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDAggressiveLoopThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDAggressiveLoopThr ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/AggressiveLoopThr , as a string: float .

+ +

Definition at line 408 of file Parameters.h.

+ +
+
+ +

◆ kRGBDNewMapOdomChangeDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDNewMapOdomChangeDistance ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/NewMapOdomChangeDistance : "A new map is created if a change of odometry translation greater than X m is detected (0 m = disabled)." Default value: 0 ( float ).

+ +

Definition at line 409 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDNewMapOdomChangeDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDNewMapOdomChangeDistance ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/NewMapOdomChangeDistance : 0 .

+ +

Definition at line 409 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDNewMapOdomChangeDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDNewMapOdomChangeDistance ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/NewMapOdomChangeDistance , as a string: float .

+ +

Definition at line 409 of file Parameters.h.

+ +
+
+ +

◆ kRGBDOptimizeFromGraphEnd()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDOptimizeFromGraphEnd ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/OptimizeFromGraphEnd : "Optimize graph from the newest node. If false, the graph is optimized from the oldest node of the current graph (this adds an overhead computation to detect to oldest node of the current graph, but it can be useful to preserve the map referential from the oldest node). Warning when set to false: when some nodes are transferred, the first referential of the local map may change, resulting in momentary changes in robot/map position (which are annoying in teleoperation)." Default value: false ( bool ).

+ +

Definition at line 410 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDOptimizeFromGraphEnd()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDOptimizeFromGraphEnd ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/OptimizeFromGraphEnd : false .

+ +

Definition at line 410 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDOptimizeFromGraphEnd()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDOptimizeFromGraphEnd ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/OptimizeFromGraphEnd , as a string: bool .

+ +

Definition at line 410 of file Parameters.h.

+ +
+
+ +

◆ kRGBDOptimizeMaxError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDOptimizeMaxError ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/OptimizeMaxError : uFormat("Reject loop closures if optimization error ratio is greater than this value (0=disabled). Ratio is computed as absolute error over standard deviation of each link. This will help to detect when a wrong loop closure is added to the graph. If used with \"%s\", the disabled loop closure links will be removed.", kOptimizerRobust().c_str()) Default value: 3.0 ( float ).

+ +

Definition at line 411 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDOptimizeMaxError()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDOptimizeMaxError ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/OptimizeMaxError : 3.0 .

+ +

Definition at line 411 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDOptimizeMaxError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDOptimizeMaxError ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/OptimizeMaxError , as a string: float .

+ +

Definition at line 411 of file Parameters.h.

+ +
+
+ +

◆ kRGBDOptimizeMaxErrorRepairRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDOptimizeMaxErrorRepairRadius ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/OptimizeMaxErrorRepairRadius : uFormat("If two consecutive loop closures are rejected by %s on the same old loop closure link, we will remove that old link, and other old links under that radius if necessary, until optimization is accepted. When optimization is accepted, the old loop closure links are removed from the graph. This feature is useful to reject bad loop closures that were accepted previously. Set to 0 to disable this feature.", kRGBDOptimizeMaxError().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 412 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDOptimizeMaxErrorRepairRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDOptimizeMaxErrorRepairRadius ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/OptimizeMaxErrorRepairRadius : 0.0 .

+ +

Definition at line 412 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDOptimizeMaxErrorRepairRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDOptimizeMaxErrorRepairRadius ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/OptimizeMaxErrorRepairRadius , as a string: float .

+ +

Definition at line 412 of file Parameters.h.

+ +
+
+ +

◆ kRGBDMaxLoopClosureDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDMaxLoopClosureDistance ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/MaxLoopClosureDistance : "Reject loop closures/localizations if the distance from the map is over this distance (0=disabled)." Default value: 0.0 ( float ).

+ +

Definition at line 413 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDMaxLoopClosureDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDMaxLoopClosureDistance ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/MaxLoopClosureDistance : 0.0 .

+ +

Definition at line 413 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDMaxLoopClosureDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDMaxLoopClosureDistance ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/MaxLoopClosureDistance , as a string: float .

+ +

Definition at line 413 of file Parameters.h.

+ +
+
+ +

◆ kRGBDForceOdom3DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDForceOdom3DoF ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ForceOdom3DoF : uFormat("Force odometry pose to be 3DoF if %s=true.", kRegForce3DoF().c_str()) Default value: true ( bool ).

+ +

Definition at line 414 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDForceOdom3DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDForceOdom3DoF ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ForceOdom3DoF : true .

+ +

Definition at line 414 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDForceOdom3DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDForceOdom3DoF ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ForceOdom3DoF , as a string: bool .

+ +

Definition at line 414 of file Parameters.h.

+ +
+
+ +

◆ kRGBDStartAtOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDStartAtOrigin ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/StartAtOrigin : uFormat("If true, rtabmap will assume the robot is starting from origin of the map. If false, rtabmap will assume the robot is restarting from the last saved localization pose from previous session (the place where it shut down previously). Used only in localization mode (%s=false).", kMemIncrementalMemory().c_str()) Default value: false ( bool ).

+ +

Definition at line 415 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDStartAtOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDStartAtOrigin ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/StartAtOrigin : false .

+ +

Definition at line 415 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDStartAtOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDStartAtOrigin ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/StartAtOrigin , as a string: bool .

+ +

Definition at line 415 of file Parameters.h.

+ +
+
+ +

◆ kRGBDGoalReachedRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDGoalReachedRadius ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/GoalReachedRadius : "Goal reached radius (m)." Default value: 0.5 ( float ).

+ +

Definition at line 416 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDGoalReachedRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDGoalReachedRadius ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/GoalReachedRadius : 0.5 .

+ +

Definition at line 416 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDGoalReachedRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDGoalReachedRadius ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/GoalReachedRadius , as a string: float .

+ +

Definition at line 416 of file Parameters.h.

+ +
+
+ +

◆ kRGBDPlanStuckIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDPlanStuckIterations ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/PlanStuckIterations : "Mark the current goal node on the path as unreachable if it is not updated after X iterations (0=disabled). If all upcoming nodes on the path are unreachabled, the plan fails." Default value: 0 ( int ).

+ +

Definition at line 417 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDPlanStuckIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRGBDPlanStuckIterations ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/PlanStuckIterations : 0 .

+ +

Definition at line 417 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDPlanStuckIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDPlanStuckIterations ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/PlanStuckIterations , as a string: int .

+ +

Definition at line 417 of file Parameters.h.

+ +
+
+ +

◆ kRGBDPlanLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDPlanLinearVelocity ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/PlanLinearVelocity : "Linear velocity (m/sec) used to compute path weights." Default value: 0 ( float ).

+ +

Definition at line 418 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDPlanLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDPlanLinearVelocity ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/PlanLinearVelocity : 0 .

+ +

Definition at line 418 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDPlanLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDPlanLinearVelocity ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/PlanLinearVelocity , as a string: float .

+ +

Definition at line 418 of file Parameters.h.

+ +
+
+ +

◆ kRGBDPlanAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDPlanAngularVelocity ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/PlanAngularVelocity : "Angular velocity (rad/sec) used to compute path weights." Default value: 0 ( float ).

+ +

Definition at line 419 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDPlanAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDPlanAngularVelocity ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/PlanAngularVelocity : 0 .

+ +

Definition at line 419 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDPlanAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDPlanAngularVelocity ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/PlanAngularVelocity , as a string: float .

+ +

Definition at line 419 of file Parameters.h.

+ +
+
+ +

◆ kRGBDGoalsSavedInUserData()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDGoalsSavedInUserData ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/GoalsSavedInUserData : "When a goal is received and processed with success, it is saved in user data of the location with this format: \"GOAL:#\"." Default value: false ( bool ).

+ +

Definition at line 420 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDGoalsSavedInUserData()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDGoalsSavedInUserData ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/GoalsSavedInUserData : false .

+ +

Definition at line 420 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDGoalsSavedInUserData()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDGoalsSavedInUserData ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/GoalsSavedInUserData , as a string: bool .

+ +

Definition at line 420 of file Parameters.h.

+ +
+
+ +

◆ kRGBDMaxLocalRetrieved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDMaxLocalRetrieved ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/MaxLocalRetrieved : "Maximum local locations retrieved (0=disabled) near the current pose in the local map or on the current planned path (those on the planned path have priority)." Default value: 2 ( unsigned int ).

+ +

Definition at line 421 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDMaxLocalRetrieved()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultRGBDMaxLocalRetrieved ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/MaxLocalRetrieved : 2 .

+ +

Definition at line 421 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDMaxLocalRetrieved()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDMaxLocalRetrieved ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/MaxLocalRetrieved , as a string: unsigned int .

+ +

Definition at line 421 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLocalRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLocalRadius ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LocalRadius : "Local radius (m) for nodes selection in the local map. This parameter is used in some approaches about the local map management." Default value: 10 ( float ).

+ +

Definition at line 422 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLocalRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDLocalRadius ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LocalRadius : 10 .

+ +

Definition at line 422 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLocalRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLocalRadius ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LocalRadius , as a string: float .

+ +

Definition at line 422 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLocalImmunizationRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLocalImmunizationRatio ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LocalImmunizationRatio : "Ratio of working memory for which local nodes are immunized from transfer." Default value: 0.25 ( float ).

+ +

Definition at line 423 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLocalImmunizationRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDLocalImmunizationRatio ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LocalImmunizationRatio : 0.25 .

+ +

Definition at line 423 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLocalImmunizationRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLocalImmunizationRatio ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LocalImmunizationRatio , as a string: float .

+ +

Definition at line 423 of file Parameters.h.

+ +
+
+ +

◆ kRGBDScanMatchingIdsSavedInLinks()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDScanMatchingIdsSavedInLinks ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ScanMatchingIdsSavedInLinks : "Save scan matching IDs from one-to-many proximity detection in link's user data." Default value: true ( bool ).

+ +

Definition at line 424 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDScanMatchingIdsSavedInLinks()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDScanMatchingIdsSavedInLinks ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ScanMatchingIdsSavedInLinks : true .

+ +

Definition at line 424 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDScanMatchingIdsSavedInLinks()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDScanMatchingIdsSavedInLinks ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ScanMatchingIdsSavedInLinks , as a string: bool .

+ +

Definition at line 424 of file Parameters.h.

+ +
+
+ +

◆ kRGBDNeighborLinkRefining()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDNeighborLinkRefining ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/NeighborLinkRefining : uFormat("When a new node is added to the graph, the transformation of its neighbor link to the previous node is refined using registration approach selected (%s).", kRegStrategy().c_str()) Default value: false ( bool ).

+ +

Definition at line 425 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDNeighborLinkRefining()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDNeighborLinkRefining ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/NeighborLinkRefining : false .

+ +

Definition at line 425 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDNeighborLinkRefining()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDNeighborLinkRefining ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/NeighborLinkRefining , as a string: bool .

+ +

Definition at line 425 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLoopClosureIdentityGuess()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLoopClosureIdentityGuess ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LoopClosureIdentityGuess : uFormat("Use Identity matrix as guess when computing loop closure transform, otherwise no guess is used, thus assuming that registration strategy selected (%s) can deal with transformation estimation without guess.", kRegStrategy().c_str()) Default value: false ( bool ).

+ +

Definition at line 426 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLoopClosureIdentityGuess()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDLoopClosureIdentityGuess ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LoopClosureIdentityGuess : false .

+ +

Definition at line 426 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLoopClosureIdentityGuess()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLoopClosureIdentityGuess ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LoopClosureIdentityGuess , as a string: bool .

+ +

Definition at line 426 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLoopClosureReextractFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLoopClosureReextractFeatures ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LoopClosureReextractFeatures : "Extract features even if there are some already in the nodes. Raw features are not saved in database." Default value: false ( bool ).

+ +

Definition at line 427 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLoopClosureReextractFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDLoopClosureReextractFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LoopClosureReextractFeatures : false .

+ +

Definition at line 427 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLoopClosureReextractFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLoopClosureReextractFeatures ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LoopClosureReextractFeatures , as a string: bool .

+ +

Definition at line 427 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLocalBundleOnLoopClosure()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLocalBundleOnLoopClosure ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LocalBundleOnLoopClosure : "Do local bundle adjustment with neighborhood of the loop closure." Default value: false ( bool ).

+ +

Definition at line 428 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLocalBundleOnLoopClosure()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDLocalBundleOnLoopClosure ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LocalBundleOnLoopClosure : false .

+ +

Definition at line 428 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLocalBundleOnLoopClosure()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLocalBundleOnLoopClosure ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LocalBundleOnLoopClosure , as a string: bool .

+ +

Definition at line 428 of file Parameters.h.

+ +
+
+ +

◆ kRGBDInvertedReg()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDInvertedReg ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/InvertedReg : "On loop closure, do registration from the target to reference instead of reference to target." Default value: false ( bool ).

+ +

Definition at line 429 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDInvertedReg()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDInvertedReg ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/InvertedReg : false .

+ +

Definition at line 429 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDInvertedReg()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDInvertedReg ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/InvertedReg , as a string: bool .

+ +

Definition at line 429 of file Parameters.h.

+ +
+
+ +

◆ kRGBDCreateOccupancyGrid()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDCreateOccupancyGrid ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/CreateOccupancyGrid : "Create local occupancy grid maps. See \"Grid\" group for parameters." Default value: false ( bool ).

+ +

Definition at line 430 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDCreateOccupancyGrid()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDCreateOccupancyGrid ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/CreateOccupancyGrid : false .

+ +

Definition at line 430 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDCreateOccupancyGrid()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDCreateOccupancyGrid ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/CreateOccupancyGrid , as a string: bool .

+ +

Definition at line 430 of file Parameters.h.

+ +
+
+ +

◆ kRGBDMarkerDetection()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDMarkerDetection ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/MarkerDetection : "Detect static markers to be added as landmarks for graph optimization. If input data have already landmarks, this will be ignored. See \"Marker\" group for parameters." Default value: false ( bool ).

+ +

Definition at line 431 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDMarkerDetection()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDMarkerDetection ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/MarkerDetection : false .

+ +

Definition at line 431 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDMarkerDetection()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDMarkerDetection ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/MarkerDetection , as a string: bool .

+ +

Definition at line 431 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLoopCovLimited()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLoopCovLimited ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LoopCovLimited : "Limit covariance of non-neighbor links to minimum covariance of neighbor links. In other words, if covariance of a loop closure link is smaller than the minimum covariance of odometry links, its covariance is set to minimum covariance of odometry links." Default value: false ( bool ).

+ +

Definition at line 432 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLoopCovLimited()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDLoopCovLimited ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LoopCovLimited : false .

+ +

Definition at line 432 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLoopCovLimited()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLoopCovLimited ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LoopCovLimited , as a string: bool .

+ +

Definition at line 432 of file Parameters.h.

+ +
+
+ +

◆ kRGBDMaxOdomCacheSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDMaxOdomCacheSize ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/MaxOdomCacheSize : uFormat("Maximum odometry cache size. Used only in localization mode (when %s=false). This is used to get smoother localizations and to verify localization transforms (when %s!=0) to make sure we don't teleport to a location very similar to one we previously localized on. Set 0 to disable caching.", kMemIncrementalMemory().c_str(), kRGBDOptimizeMaxError().c_str()) Default value: 10 ( int ).

+ +

Definition at line 433 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDMaxOdomCacheSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRGBDMaxOdomCacheSize ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/MaxOdomCacheSize : 10 .

+ +

Definition at line 433 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDMaxOdomCacheSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDMaxOdomCacheSize ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/MaxOdomCacheSize , as a string: int .

+ +

Definition at line 433 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLocalizationSmoothing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLocalizationSmoothing ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LocalizationSmoothing : uFormat("Adjust localization constraints based on optimized odometry cache poses (when %s>0).", kRGBDMaxOdomCacheSize().c_str()) Default value: true ( bool ).

+ +

Definition at line 434 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLocalizationSmoothing()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDLocalizationSmoothing ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LocalizationSmoothing : true .

+ +

Definition at line 434 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLocalizationSmoothing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLocalizationSmoothing ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LocalizationSmoothing , as a string: bool .

+ +

Definition at line 434 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLocalizationPriorError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLocalizationPriorError ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LocalizationPriorError : uFormat("The corresponding variance (error x error) set to priors of the map's poses during localization (when %s>0).", kRGBDMaxOdomCacheSize().c_str()) Default value: 0.001 ( double ).

+ +

Definition at line 435 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLocalizationPriorError()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultRGBDLocalizationPriorError ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LocalizationPriorError : 0.001 .

+ +

Definition at line 435 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLocalizationPriorError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLocalizationPriorError ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LocalizationPriorError , as a string: double .

+ +

Definition at line 435 of file Parameters.h.

+ +
+
+ +

◆ kRGBDLocalizationSecondTryWithoutProximityLinks()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDLocalizationSecondTryWithoutProximityLinks ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/LocalizationSecondTryWithoutProximityLinks : uFormat("When localization is rejected by graph optimization validation, try a second time without proximity links if landmark or loop closure links are also present in odometry cache (see %s). If it succeeds, the proximity links are removed. This assumes that global loop closure and landmark links are more accurate than proximity links.", kRGBDMaxOdomCacheSize().c_str()) Default value: true ( bool ).

+ +

Definition at line 436 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDLocalizationSecondTryWithoutProximityLinks()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDLocalizationSecondTryWithoutProximityLinks ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/LocalizationSecondTryWithoutProximityLinks : true .

+ +

Definition at line 436 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDLocalizationSecondTryWithoutProximityLinks()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDLocalizationSecondTryWithoutProximityLinks ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/LocalizationSecondTryWithoutProximityLinks , as a string: bool .

+ +

Definition at line 436 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityByTime()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityByTime ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityByTime : "Detection over all locations in STM." Default value: false ( bool ).

+ +

Definition at line 439 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityByTime()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDProximityByTime ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityByTime : false .

+ +

Definition at line 439 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityByTime()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityByTime ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityByTime , as a string: bool .

+ +

Definition at line 439 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityBySpace()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityBySpace ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityBySpace : "Detection over locations (in Working Memory) near in space." Default value: true ( bool ).

+ +

Definition at line 440 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityBySpace()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDProximityBySpace ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityBySpace : true .

+ +

Definition at line 440 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityBySpace()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityBySpace ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityBySpace , as a string: bool .

+ +

Definition at line 440 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityMaxGraphDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityMaxGraphDepth ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityMaxGraphDepth : "Maximum depth from the current/last loop closure location and the local loop closure hypotheses. Set 0 to ignore." Default value: 50 ( int ).

+ +

Definition at line 441 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityMaxGraphDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRGBDProximityMaxGraphDepth ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityMaxGraphDepth : 50 .

+ +

Definition at line 441 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityMaxGraphDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityMaxGraphDepth ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityMaxGraphDepth , as a string: int .

+ +

Definition at line 441 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityMaxPaths()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityMaxPaths ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityMaxPaths : "Maximum paths compared (from the most recent) for proximity detection. 0 means no limit." Default value: 3 ( int ).

+ +

Definition at line 442 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityMaxPaths()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRGBDProximityMaxPaths ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityMaxPaths : 3 .

+ +

Definition at line 442 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityMaxPaths()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityMaxPaths ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityMaxPaths , as a string: int .

+ +

Definition at line 442 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityPathFilteringRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityPathFilteringRadius ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityPathFilteringRadius : "Path filtering radius to reduce the number of nodes to compare in a path in one-to-many proximity detection. The nearest node in a path should be inside that radius to be considered for one-to-one proximity detection." Default value: 1 ( float ).

+ +

Definition at line 443 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityPathFilteringRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDProximityPathFilteringRadius ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityPathFilteringRadius : 1 .

+ +

Definition at line 443 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityPathFilteringRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityPathFilteringRadius ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityPathFilteringRadius , as a string: float .

+ +

Definition at line 443 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityPathMaxNeighbors()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityPathMaxNeighbors ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityPathMaxNeighbors : "Maximum neighbor nodes compared on each path for one-to-many proximity detection. Set to 0 to disable one-to-many proximity detection (by merging the laser scans)." Default value: 0 ( int ).

+ +

Definition at line 444 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityPathMaxNeighbors()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRGBDProximityPathMaxNeighbors ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityPathMaxNeighbors : 0 .

+ +

Definition at line 444 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityPathMaxNeighbors()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityPathMaxNeighbors ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityPathMaxNeighbors , as a string: int .

+ +

Definition at line 444 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityPathRawPosesUsed()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityPathRawPosesUsed ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityPathRawPosesUsed : "When comparing to a local path for one-to-many proximity detection, merge the scans using the odometry poses (with neighbor link optimizations) instead of the ones in the optimized local graph." Default value: true ( bool ).

+ +

Definition at line 445 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityPathRawPosesUsed()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDProximityPathRawPosesUsed ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityPathRawPosesUsed : true .

+ +

Definition at line 445 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityPathRawPosesUsed()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityPathRawPosesUsed ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityPathRawPosesUsed , as a string: bool .

+ +

Definition at line 445 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityAngle ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityAngle : "Maximum angle (degrees) for one-to-one proximity detection." Default value: 45 ( float ).

+ +

Definition at line 446 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultRGBDProximityAngle ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityAngle : 45 .

+ +

Definition at line 446 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityAngle ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityAngle , as a string: float .

+ +

Definition at line 446 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityOdomGuess()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityOdomGuess ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityOdomGuess : "Use odometry as motion guess for one-to-one proximity detection." Default value: false ( bool ).

+ +

Definition at line 447 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityOdomGuess()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDProximityOdomGuess ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityOdomGuess : false .

+ +

Definition at line 447 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityOdomGuess()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityOdomGuess ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityOdomGuess , as a string: bool .

+ +

Definition at line 447 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityGlobalScanMap()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityGlobalScanMap ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityGlobalScanMap : uFormat("Create a global assembled map from laser scans for one-to-many proximity detection, replacing the original one-to-many proximity detection (i.e., detection against local paths). Only used in localization mode (%s=false), otherwise original one-to-many proximity detection is done. Note also that if graph is modified (i.e., memory management is enabled or robot jumps from one disjoint session to another in same database), the global scan map is cleared and one-to-many proximity detection is reverted to original approach.", kMemIncrementalMemory().c_str()) Default value: false ( bool ).

+ +

Definition at line 448 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityGlobalScanMap()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRGBDProximityGlobalScanMap ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityGlobalScanMap : false .

+ +

Definition at line 448 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityGlobalScanMap()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityGlobalScanMap ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityGlobalScanMap , as a string: bool .

+ +

Definition at line 448 of file Parameters.h.

+ +
+
+ +

◆ kRGBDProximityMergedScanCovFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRGBDProximityMergedScanCovFactor ()
+
+inlinestatic
+
+ +

Key of parameter RGBD/ProximityMergedScanCovFactor : uFormat("Covariance factor for one-to-many proximity detection (when %s>0 and scans are used).", kRGBDProximityPathMaxNeighbors().c_str()) Default value: 100.0 ( double ).

+ +

Definition at line 449 of file Parameters.h.

+ +
+
+ +

◆ defaultRGBDProximityMergedScanCovFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultRGBDProximityMergedScanCovFactor ()
+
+inlinestatic
+
+ +

Default value of parameter RGBD/ProximityMergedScanCovFactor : 100.0 .

+ +

Definition at line 449 of file Parameters.h.

+ +
+
+ +

◆ typeRGBDProximityMergedScanCovFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRGBDProximityMergedScanCovFactor ()
+
+inlinestatic
+
+ +

Type of parameter RGBD/ProximityMergedScanCovFactor , as a string: double .

+ +

Definition at line 449 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/Strategy : "Graph optimization strategy: 0=TORO, 1=g2o, 2=GTSAM and 3=Ceres." Default value: 0 ( int ).

+ +

Definition at line 467 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOptimizerStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/Strategy : 0 .

+ +

Definition at line 467 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/Strategy , as a string: int .

+ +

Definition at line 467 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerIterations ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/Iterations : "Optimization iterations." Default value: 100 ( int ).

+ +

Definition at line 468 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOptimizerIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/Iterations : 100 .

+ +

Definition at line 468 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerIterations ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/Iterations , as a string: int .

+ +

Definition at line 468 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerEpsilon ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/Epsilon : "Stop optimizing when the error improvement is less than this value." Default value: 0.00001 ( double ).

+ +

Definition at line 469 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOptimizerEpsilon ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/Epsilon : 0.00001 .

+ +

Definition at line 469 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerEpsilon ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/Epsilon , as a string: double .

+ +

Definition at line 469 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerVarianceIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerVarianceIgnored ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/VarianceIgnored : "Ignore constraints' variance. If checked, identity information matrix is used for each constraint. Otherwise, an information matrix is generated from the variance saved in the links." Default value: false ( bool ).

+ +

Definition at line 473 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerVarianceIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOptimizerVarianceIgnored ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/VarianceIgnored : false .

+ +

Definition at line 473 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerVarianceIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerVarianceIgnored ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/VarianceIgnored , as a string: bool .

+ +

Definition at line 473 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerRobust()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerRobust ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/Robust : "Robust graph optimization using Vertigo (only work for g2o and GTSAM optimization strategies)." Default value: false ( bool ).

+ +

Definition at line 474 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerRobust()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOptimizerRobust ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/Robust : false .

+ +

Definition at line 474 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerRobust()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerRobust ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/Robust , as a string: bool .

+ +

Definition at line 474 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerPriorsIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerPriorsIgnored ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/PriorsIgnored : "Ignore prior constraints (global pose or GPS) while optimizing. Currently only g2o and gtsam optimization supports this." Default value: true ( bool ).

+ +

Definition at line 475 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerPriorsIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOptimizerPriorsIgnored ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/PriorsIgnored : true .

+ +

Definition at line 475 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerPriorsIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerPriorsIgnored ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/PriorsIgnored , as a string: bool .

+ +

Definition at line 475 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerLandmarksIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerLandmarksIgnored ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/LandmarksIgnored : "Ignore landmark constraints while optimizing. Currently only g2o and gtsam optimization supports this." Default value: false ( bool ).

+ +

Definition at line 476 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerLandmarksIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOptimizerLandmarksIgnored ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/LandmarksIgnored : false .

+ +

Definition at line 476 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerLandmarksIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerLandmarksIgnored ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/LandmarksIgnored , as a string: bool .

+ +

Definition at line 476 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerGravitySigma()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerGravitySigma ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/GravitySigma : uFormat("Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see %s).", kOptimizerStrategy().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 480 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerGravitySigma()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOptimizerGravitySigma ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/GravitySigma : 0.0 .

+ +

Definition at line 480 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerGravitySigma()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerGravitySigma ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/GravitySigma , as a string: float .

+ +

Definition at line 480 of file Parameters.h.

+ +
+
+ +

◆ kg2oSolver()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kg2oSolver ()
+
+inlinestatic
+
+ +

Key of parameter g2o/Solver : "0=csparse 1=pcg 2=cholmod 3=Eigen" Default value: 0 ( int ).

+ +

Definition at line 486 of file Parameters.h.

+ +
+
+ +

◆ defaultg2oSolver()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultg2oSolver ()
+
+inlinestatic
+
+ +

Default value of parameter g2o/Solver : 0 .

+ +

Definition at line 486 of file Parameters.h.

+ +
+
+ +

◆ typeg2oSolver()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeg2oSolver ()
+
+inlinestatic
+
+ +

Type of parameter g2o/Solver , as a string: int .

+ +

Definition at line 486 of file Parameters.h.

+ +
+
+ +

◆ kg2oOptimizer()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kg2oOptimizer ()
+
+inlinestatic
+
+ +

Key of parameter g2o/Optimizer : "0=Levenberg 1=GaussNewton" Default value: 0 ( int ).

+ +

Definition at line 488 of file Parameters.h.

+ +
+
+ +

◆ defaultg2oOptimizer()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultg2oOptimizer ()
+
+inlinestatic
+
+ +

Default value of parameter g2o/Optimizer : 0 .

+ +

Definition at line 488 of file Parameters.h.

+ +
+
+ +

◆ typeg2oOptimizer()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeg2oOptimizer ()
+
+inlinestatic
+
+ +

Type of parameter g2o/Optimizer , as a string: int .

+ +

Definition at line 488 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerBaseline()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerBaseline ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/Baseline : "When doing bundle adjustment with RGB-D data (mono camera + depth), set a fake baseline (m) so the BA backend treats depth as stereo disparity. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Set to 0 to keep the problem mono (depth observations are ignored). For real stereo data the baseline in the calibration (Tx) is used directly." Default value: 0.075 ( double ).

+ +

Definition at line 490 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerBaseline()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOptimizerBaseline ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/Baseline : 0.075 .

+ +

Definition at line 490 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerBaseline()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerBaseline ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/Baseline , as a string: double .

+ +

Definition at line 490 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerPixelVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerPixelVariance ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/PixelVariance : "Pixel variance used on the u/v axes of every bundle adjustment reprojection edge. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Should approximate the squared 1-sigma keypoint localization error in pixels. Set higher (e.g. 4-9) if features are noisy (low texture, motion blur, low light, or large detector scale). Set lower (e.g. 0.01-0.1) if features are sub-pixel refined (Lucas-Kanade tracking, parabolic peak interpolation). Intuition: the lower the pixel variance, the more the optimizer trusts the keypoint positions." Default value: 1.0 ( double ).

+ +

Definition at line 491 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerPixelVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOptimizerPixelVariance ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/PixelVariance : 1.0 .

+ +

Definition at line 491 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerPixelVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerPixelVariance ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/PixelVariance , as a string: double .

+ +

Definition at line 491 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerDisparityVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerDisparityVariance ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/DisparityVariance : "Disparity variance used on the disparity axis (u - u_right) of stereo / RGB-D bundle adjustment edges. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Defaults to the same value as PixelVariance for backward compatibility. Set higher (e.g. 2-4) if your depth source is noisier than your feature detector's u/v precision (typical for stereo block matchers / SGM at long range). Set lower (e.g. 0.01-0.1) if your depth source is more accurate than the u/v detector (typical for ToF / LiDAR-fused depth where range is measured directly rather than triangulated). Intuition: the lower the disparity variance, the more the optimizer trusts the depth measurements. Geometric note: wider baseline and/or higher image resolution improve a block matcher's effective disparity precision (larger disparity magnitudes and finer sub-pixel refinement), so wide-baseline high-resolution stereo pairs can usually afford a lower disparity variance (e.g. 0.1-0.5); narrow-baseline low-resolution pairs should keep it higher (e.g. 1-4)." Default value: 1.0 ( double ).

+ +

Definition at line 492 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerDisparityVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOptimizerDisparityVariance ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/DisparityVariance : 1.0 .

+ +

Definition at line 492 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerDisparityVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerDisparityVariance ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/DisparityVariance , as a string: double .

+ +

Definition at line 492 of file Parameters.h.

+ +
+
+ +

◆ kOptimizerRobustKernelDelta()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOptimizerRobustKernelDelta ()
+
+inlinestatic
+
+ +

Key of parameter Optimizer/RobustKernelDelta : "Robust kernel delta used for bundle adjustment (0 means don't use robust kernel). Applies to all BA-capable backends (g2o, GTSAM, Ceres). Observations with chi2 over this threshold will be ignored in the second optimization pass." Default value: 8 ( double ).

+ +

Definition at line 493 of file Parameters.h.

+ +
+
+ +

◆ defaultOptimizerRobustKernelDelta()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOptimizerRobustKernelDelta ()
+
+inlinestatic
+
+ +

Default value of parameter Optimizer/RobustKernelDelta : 8 .

+ +

Definition at line 493 of file Parameters.h.

+ +
+
+ +

◆ typeOptimizerRobustKernelDelta()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOptimizerRobustKernelDelta ()
+
+inlinestatic
+
+ +

Type of parameter Optimizer/RobustKernelDelta , as a string: double .

+ +

Definition at line 493 of file Parameters.h.

+ +
+
+ +

◆ kGTSAMOptimizer()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGTSAMOptimizer ()
+
+inlinestatic
+
+ +

Key of parameter GTSAM/Optimizer : "0=Levenberg 1=GaussNewton 2=Dogleg" Default value: 1 ( int ).

+ +

Definition at line 495 of file Parameters.h.

+ +
+
+ +

◆ defaultGTSAMOptimizer()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGTSAMOptimizer ()
+
+inlinestatic
+
+ +

Default value of parameter GTSAM/Optimizer : 1 .

+ +

Definition at line 495 of file Parameters.h.

+ +
+
+ +

◆ typeGTSAMOptimizer()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGTSAMOptimizer ()
+
+inlinestatic
+
+ +

Type of parameter GTSAM/Optimizer , as a string: int .

+ +

Definition at line 495 of file Parameters.h.

+ +
+
+ +

◆ kGTSAMIncremental()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGTSAMIncremental ()
+
+inlinestatic
+
+ +

Key of parameter GTSAM/Incremental : uFormat("Do graph optimization incrementally (iSAM2) to increase optimization speed on loop closures. Note that only GaussNewton and Dogleg optimization algorithms are supported (%s) in this mode.", kGTSAMOptimizer().c_str()) Default value: false ( bool ).

+ +

Definition at line 496 of file Parameters.h.

+ +
+
+ +

◆ defaultGTSAMIncremental()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGTSAMIncremental ()
+
+inlinestatic
+
+ +

Default value of parameter GTSAM/Incremental : false .

+ +

Definition at line 496 of file Parameters.h.

+ +
+
+ +

◆ typeGTSAMIncremental()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGTSAMIncremental ()
+
+inlinestatic
+
+ +

Type of parameter GTSAM/Incremental , as a string: bool .

+ +

Definition at line 496 of file Parameters.h.

+ +
+
+ +

◆ kGTSAMIncRelinearizeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGTSAMIncRelinearizeThreshold ()
+
+inlinestatic
+
+ +

Key of parameter GTSAM/IncRelinearizeThreshold : "Only relinearize variables whose linear delta magnitude is greater than this threshold. See GTSAM::ISAM2 doc for more info." Default value: 0.01 ( double ).

+ +

Definition at line 497 of file Parameters.h.

+ +
+
+ +

◆ defaultGTSAMIncRelinearizeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultGTSAMIncRelinearizeThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter GTSAM/IncRelinearizeThreshold : 0.01 .

+ +

Definition at line 497 of file Parameters.h.

+ +
+
+ +

◆ typeGTSAMIncRelinearizeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGTSAMIncRelinearizeThreshold ()
+
+inlinestatic
+
+ +

Type of parameter GTSAM/IncRelinearizeThreshold , as a string: double .

+ +

Definition at line 497 of file Parameters.h.

+ +
+
+ +

◆ kGTSAMIncRelinearizeSkip()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGTSAMIncRelinearizeSkip ()
+
+inlinestatic
+
+ +

Key of parameter GTSAM/IncRelinearizeSkip : "Only relinearize any variables every X calls to ISAM2::update(). See GTSAM::ISAM2 doc for more info." Default value: 1 ( int ).

+ +

Definition at line 498 of file Parameters.h.

+ +
+
+ +

◆ defaultGTSAMIncRelinearizeSkip()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGTSAMIncRelinearizeSkip ()
+
+inlinestatic
+
+ +

Default value of parameter GTSAM/IncRelinearizeSkip : 1 .

+ +

Definition at line 498 of file Parameters.h.

+ +
+
+ +

◆ typeGTSAMIncRelinearizeSkip()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGTSAMIncRelinearizeSkip ()
+
+inlinestatic
+
+ +

Type of parameter GTSAM/IncRelinearizeSkip , as a string: int .

+ +

Definition at line 498 of file Parameters.h.

+ +
+
+ +

◆ kOdomStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Odom/Strategy : "0=Frame-to-Map (F2M) 1=Frame-to-Frame (F2F) 2=Fovis 3=viso2 4=DVO-SLAM 5=ORB_SLAM 6=OKVIS 7=LOAM 8=MSCKF_VIO 9=VINS-Fusion 10=OpenVINS 11=FLOAM 12=Open3D 13=cuVSLAM 14=LIO-SAM" Default value: 0 ( int ).

+ +

Definition at line 501 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/Strategy : 0 .

+ +

Definition at line 501 of file Parameters.h.

+ +
+
+ +

◆ typeOdomStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Odom/Strategy , as a string: int .

+ +

Definition at line 501 of file Parameters.h.

+ +
+
+ +

◆ kOdomResetCountdown()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomResetCountdown ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ResetCountdown : "Automatically reset odometry after X consecutive images where odometry cannot be computed (a value of 0 disables auto-reset). When a reset occurs, odometry resumes from the last successfully computed pose with large covariance to trigger a new map. If external odometry is used, it will also be reset based on the motion estimated relative to the last computed pose but no large covariance will be received, so that a new map won't be triggered." Default value: 0 ( int ).

+ +

Definition at line 502 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomResetCountdown()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomResetCountdown ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ResetCountdown : 0 .

+ +

Definition at line 502 of file Parameters.h.

+ +
+
+ +

◆ typeOdomResetCountdown()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomResetCountdown ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ResetCountdown , as a string: int .

+ +

Definition at line 502 of file Parameters.h.

+ +
+
+ +

◆ kOdomHolonomic()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomHolonomic ()
+
+inlinestatic
+
+ +

Key of parameter Odom/Holonomic : "If the robot is holonomic (strafing commands can be issued). If not, y value will be estimated from x and yaw values (y=x*tan(yaw))." Default value: true ( bool ).

+ +

Definition at line 503 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomHolonomic()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomHolonomic ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/Holonomic : true .

+ +

Definition at line 503 of file Parameters.h.

+ +
+
+ +

◆ typeOdomHolonomic()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomHolonomic ()
+
+inlinestatic
+
+ +

Type of parameter Odom/Holonomic , as a string: bool .

+ +

Definition at line 503 of file Parameters.h.

+ +
+
+ +

◆ kOdomFillInfoData()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFillInfoData ()
+
+inlinestatic
+
+ +

Key of parameter Odom/FillInfoData : "Fill info with data (inliers/outliers features)." Default value: true ( bool ).

+ +

Definition at line 504 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFillInfoData()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFillInfoData ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/FillInfoData : true .

+ +

Definition at line 504 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFillInfoData()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFillInfoData ()
+
+inlinestatic
+
+ +

Type of parameter Odom/FillInfoData , as a string: bool .

+ +

Definition at line 504 of file Parameters.h.

+ +
+
+ +

◆ kOdomImageBufferSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomImageBufferSize ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ImageBufferSize : "Data buffer size (0 min inf)." Default value: 1 ( unsigned int ).

+ +

Definition at line 505 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomImageBufferSize()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultOdomImageBufferSize ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ImageBufferSize : 1 .

+ +

Definition at line 505 of file Parameters.h.

+ +
+
+ +

◆ typeOdomImageBufferSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomImageBufferSize ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ImageBufferSize , as a string: unsigned int .

+ +

Definition at line 505 of file Parameters.h.

+ +
+
+ +

◆ kOdomFilteringStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFilteringStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Odom/FilteringStrategy : "0=No filtering 1=Kalman filtering 2=Particle filtering. This filter is used to smooth the odometry output." Default value: 0 ( int ).

+ +

Definition at line 506 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFilteringStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFilteringStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/FilteringStrategy : 0 .

+ +

Definition at line 506 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFilteringStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFilteringStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Odom/FilteringStrategy , as a string: int .

+ +

Definition at line 506 of file Parameters.h.

+ +
+
+ +

◆ kOdomParticleSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomParticleSize ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ParticleSize : "Number of particles of the filter." Default value: 400 ( unsigned int ).

+ +

Definition at line 507 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomParticleSize()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultOdomParticleSize ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ParticleSize : 400 .

+ +

Definition at line 507 of file Parameters.h.

+ +
+
+ +

◆ typeOdomParticleSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomParticleSize ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ParticleSize , as a string: unsigned int .

+ +

Definition at line 507 of file Parameters.h.

+ +
+
+ +

◆ kOdomParticleNoiseT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomParticleNoiseT ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ParticleNoiseT : "Noise (m) of translation components (x,y,z)." Default value: 0.002 ( float ).

+ +

Definition at line 508 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomParticleNoiseT()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomParticleNoiseT ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ParticleNoiseT : 0.002 .

+ +

Definition at line 508 of file Parameters.h.

+ +
+
+ +

◆ typeOdomParticleNoiseT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomParticleNoiseT ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ParticleNoiseT , as a string: float .

+ +

Definition at line 508 of file Parameters.h.

+ +
+
+ +

◆ kOdomParticleLambdaT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomParticleLambdaT ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ParticleLambdaT : "Lambda of translation components (x,y,z)." Default value: 100 ( float ).

+ +

Definition at line 509 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomParticleLambdaT()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomParticleLambdaT ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ParticleLambdaT : 100 .

+ +

Definition at line 509 of file Parameters.h.

+ +
+
+ +

◆ typeOdomParticleLambdaT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomParticleLambdaT ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ParticleLambdaT , as a string: float .

+ +

Definition at line 509 of file Parameters.h.

+ +
+
+ +

◆ kOdomParticleNoiseR()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomParticleNoiseR ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ParticleNoiseR : "Noise (rad) of rotational components (roll,pitch,yaw)." Default value: 0.002 ( float ).

+ +

Definition at line 510 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomParticleNoiseR()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomParticleNoiseR ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ParticleNoiseR : 0.002 .

+ +

Definition at line 510 of file Parameters.h.

+ +
+
+ +

◆ typeOdomParticleNoiseR()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomParticleNoiseR ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ParticleNoiseR , as a string: float .

+ +

Definition at line 510 of file Parameters.h.

+ +
+
+ +

◆ kOdomParticleLambdaR()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomParticleLambdaR ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ParticleLambdaR : "Lambda of rotational components (roll,pitch,yaw)." Default value: 100 ( float ).

+ +

Definition at line 511 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomParticleLambdaR()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomParticleLambdaR ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ParticleLambdaR : 100 .

+ +

Definition at line 511 of file Parameters.h.

+ +
+
+ +

◆ typeOdomParticleLambdaR()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomParticleLambdaR ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ParticleLambdaR , as a string: float .

+ +

Definition at line 511 of file Parameters.h.

+ +
+
+ +

◆ kOdomKalmanProcessNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomKalmanProcessNoise ()
+
+inlinestatic
+
+ +

Key of parameter Odom/KalmanProcessNoise : "Process noise covariance value." Default value: 0.001 ( float ).

+ +

Definition at line 512 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomKalmanProcessNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomKalmanProcessNoise ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/KalmanProcessNoise : 0.001 .

+ +

Definition at line 512 of file Parameters.h.

+ +
+
+ +

◆ typeOdomKalmanProcessNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomKalmanProcessNoise ()
+
+inlinestatic
+
+ +

Type of parameter Odom/KalmanProcessNoise , as a string: float .

+ +

Definition at line 512 of file Parameters.h.

+ +
+
+ +

◆ kOdomKalmanMeasurementNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomKalmanMeasurementNoise ()
+
+inlinestatic
+
+ +

Key of parameter Odom/KalmanMeasurementNoise : "Process measurement covariance value." Default value: 0.01 ( float ).

+ +

Definition at line 513 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomKalmanMeasurementNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomKalmanMeasurementNoise ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/KalmanMeasurementNoise : 0.01 .

+ +

Definition at line 513 of file Parameters.h.

+ +
+
+ +

◆ typeOdomKalmanMeasurementNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomKalmanMeasurementNoise ()
+
+inlinestatic
+
+ +

Type of parameter Odom/KalmanMeasurementNoise , as a string: float .

+ +

Definition at line 513 of file Parameters.h.

+ +
+
+ +

◆ kOdomGuessMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomGuessMotion ()
+
+inlinestatic
+
+ +

Key of parameter Odom/GuessMotion : "Guess next transformation from the last motion computed." Default value: true ( bool ).

+ +

Definition at line 514 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomGuessMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomGuessMotion ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/GuessMotion : true .

+ +

Definition at line 514 of file Parameters.h.

+ +
+
+ +

◆ typeOdomGuessMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomGuessMotion ()
+
+inlinestatic
+
+ +

Type of parameter Odom/GuessMotion , as a string: bool .

+ +

Definition at line 514 of file Parameters.h.

+ +
+
+ +

◆ kOdomGuessSmoothingDelay()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomGuessSmoothingDelay ()
+
+inlinestatic
+
+ +

Key of parameter Odom/GuessSmoothingDelay : uFormat("Guess smoothing delay (s). Estimated velocity is averaged based on last transforms up to this maximum delay. This can help to get smoother velocity prediction. Last velocity computed is used directly if \"%s\" is set or the delay is below the odometry rate.", kOdomFilteringStrategy().c_str()) Default value: 0 ( float ).

+ +

Definition at line 515 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomGuessSmoothingDelay()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomGuessSmoothingDelay ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/GuessSmoothingDelay : 0 .

+ +

Definition at line 515 of file Parameters.h.

+ +
+
+ +

◆ typeOdomGuessSmoothingDelay()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomGuessSmoothingDelay ()
+
+inlinestatic
+
+ +

Type of parameter Odom/GuessSmoothingDelay , as a string: float .

+ +

Definition at line 515 of file Parameters.h.

+ +
+
+ +

◆ kOdomKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomKeyFrameThr ()
+
+inlinestatic
+
+ +

Key of parameter Odom/KeyFrameThr : "[Visual] Create a new keyframe when the number of inliers drops under this ratio of features in last frame. Setting the value to 0 means that a keyframe is created for each processed frame." Default value: 0.3 ( float ).

+ +

Definition at line 516 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomKeyFrameThr ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/KeyFrameThr : 0.3 .

+ +

Definition at line 516 of file Parameters.h.

+ +
+
+ +

◆ typeOdomKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomKeyFrameThr ()
+
+inlinestatic
+
+ +

Type of parameter Odom/KeyFrameThr , as a string: float .

+ +

Definition at line 516 of file Parameters.h.

+ +
+
+ +

◆ kOdomVisKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomVisKeyFrameThr ()
+
+inlinestatic
+
+ +

Key of parameter Odom/VisKeyFrameThr : "[Visual] Create a new keyframe when the number of inliers drops under this threshold. Setting the value to 0 means that a keyframe is created for each processed frame." Default value: 150 ( int ).

+ +

Definition at line 517 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomVisKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomVisKeyFrameThr ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/VisKeyFrameThr : 150 .

+ +

Definition at line 517 of file Parameters.h.

+ +
+
+ +

◆ typeOdomVisKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomVisKeyFrameThr ()
+
+inlinestatic
+
+ +

Type of parameter Odom/VisKeyFrameThr , as a string: int .

+ +

Definition at line 517 of file Parameters.h.

+ +
+
+ +

◆ kOdomScanKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomScanKeyFrameThr ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ScanKeyFrameThr : "[Geometry] Create a new keyframe when the number of ICP inliers drops under this ratio of points in last frame's scan. Setting the value to 0 means that a keyframe is created for each processed frame." Default value: 0.9 ( float ).

+ +

Definition at line 518 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomScanKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomScanKeyFrameThr ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ScanKeyFrameThr : 0.9 .

+ +

Definition at line 518 of file Parameters.h.

+ +
+
+ +

◆ typeOdomScanKeyFrameThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomScanKeyFrameThr ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ScanKeyFrameThr , as a string: float .

+ +

Definition at line 518 of file Parameters.h.

+ +
+
+ +

◆ kOdomImageDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomImageDecimation ()
+
+inlinestatic
+
+ +

Key of parameter Odom/ImageDecimation : uFormat("Decimation of the RGB image before registration. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If %s is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.", kVisDepthAsMask().c_str()) Default value: 1 ( unsigned int ).

+ +

Definition at line 519 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomImageDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultOdomImageDecimation ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/ImageDecimation : 1 .

+ +

Definition at line 519 of file Parameters.h.

+ +
+
+ +

◆ typeOdomImageDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomImageDecimation ()
+
+inlinestatic
+
+ +

Type of parameter Odom/ImageDecimation , as a string: unsigned int .

+ +

Definition at line 519 of file Parameters.h.

+ +
+
+ +

◆ kOdomAlignWithGround()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomAlignWithGround ()
+
+inlinestatic
+
+ +

Key of parameter Odom/AlignWithGround : "Align odometry with the ground on initialization." Default value: false ( bool ).

+ +

Definition at line 520 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomAlignWithGround()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomAlignWithGround ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/AlignWithGround : false .

+ +

Definition at line 520 of file Parameters.h.

+ +
+
+ +

◆ typeOdomAlignWithGround()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomAlignWithGround ()
+
+inlinestatic
+
+ +

Type of parameter Odom/AlignWithGround , as a string: bool .

+ +

Definition at line 520 of file Parameters.h.

+ +
+
+ +

◆ kOdomDeskewing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomDeskewing ()
+
+inlinestatic
+
+ +

Key of parameter Odom/Deskewing : "Lidar deskewing. If input lidar has time channel, it will be deskewed with a constant motion model (with IMU orientation and/or guess if provided)." Default value: true ( bool ).

+ +

Definition at line 521 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomDeskewing()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomDeskewing ()
+
+inlinestatic
+
+ +

Default value of parameter Odom/Deskewing : true .

+ +

Definition at line 521 of file Parameters.h.

+ +
+
+ +

◆ typeOdomDeskewing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomDeskewing ()
+
+inlinestatic
+
+ +

Type of parameter Odom/Deskewing , as a string: bool .

+ +

Definition at line 521 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MMaxSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MMaxSize ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/MaxSize : "[Visual] Local map size: If > 0 (example 5000), the odometry will maintain a local map of X maximum words." Default value: 2000 ( int ).

+ +

Definition at line 524 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MMaxSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomF2MMaxSize ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/MaxSize : 2000 .

+ +

Definition at line 524 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MMaxSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MMaxSize ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/MaxSize , as a string: int .

+ +

Definition at line 524 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MMaxNewFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MMaxNewFeatures ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/MaxNewFeatures : "[Visual] Maximum features (sorted by keypoint response) added to local map from a new key-frame. 0 means no limit." Default value: 0 ( int ).

+ +

Definition at line 525 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MMaxNewFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomF2MMaxNewFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/MaxNewFeatures : 0 .

+ +

Definition at line 525 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MMaxNewFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MMaxNewFeatures ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/MaxNewFeatures , as a string: int .

+ +

Definition at line 525 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MInitDepthFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MInitDepthFactor ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/InitDepthFactor : "[Visual] Depth factor used to initialize depth of features without depth. Depth = Factor * fx." Default value: 0.05 ( float ).

+ +

Definition at line 526 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MInitDepthFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomF2MInitDepthFactor ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/InitDepthFactor : 0.05 .

+ +

Definition at line 526 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MInitDepthFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MInitDepthFactor ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/InitDepthFactor , as a string: float .

+ +

Definition at line 526 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MFloorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MFloorThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/FloorThreshold : "[Visual] Only track features in 3D feature map that are over this threshold (height in base frame). Can be useful to ignore reflections on the floor. 0 means disabled." Default value: 0.0 ( float ).

+ +

Definition at line 527 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MFloorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomF2MFloorThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/FloorThreshold : 0.0 .

+ +

Definition at line 527 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MFloorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MFloorThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/FloorThreshold , as a string: float .

+ +

Definition at line 527 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MScanMaxSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MScanMaxSize ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/ScanMaxSize : "[Geometry] Maximum local scan map size." Default value: 2000 ( int ).

+ +

Definition at line 528 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MScanMaxSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomF2MScanMaxSize ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/ScanMaxSize : 2000 .

+ +

Definition at line 528 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MScanMaxSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MScanMaxSize ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/ScanMaxSize , as a string: int .

+ +

Definition at line 528 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MScanSubtractRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MScanSubtractRadius ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/ScanSubtractRadius : "[Geometry] Radius used to filter points of a new added scan to local map. This could match the voxel size of the scans." Default value: 0.05 ( float ).

+ +

Definition at line 529 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MScanSubtractRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomF2MScanSubtractRadius ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/ScanSubtractRadius : 0.05 .

+ +

Definition at line 529 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MScanSubtractRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MScanSubtractRadius ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/ScanSubtractRadius , as a string: float .

+ +

Definition at line 529 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MScanSubtractAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MScanSubtractAngle ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/ScanSubtractAngle : uFormat("[Geometry] Max angle (degrees) used to filter points of a new added scan to local map (when \"%s\">0). 0 means any angle.", kOdomF2MScanSubtractRadius().c_str()).c_str() Default value: 45 ( float ).

+ +

Definition at line 530 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MScanSubtractAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomF2MScanSubtractAngle ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/ScanSubtractAngle : 45 .

+ +

Definition at line 530 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MScanSubtractAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MScanSubtractAngle ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/ScanSubtractAngle , as a string: float .

+ +

Definition at line 530 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MScanRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MScanRange ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/ScanRange : "[Geometry] Distance Range used to filter points of local map (when > 0). 0 means local map is updated using time and not range." Default value: 0 ( float ).

+ +

Definition at line 531 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MScanRange()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomF2MScanRange ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/ScanRange : 0 .

+ +

Definition at line 531 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MScanRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MScanRange ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/ScanRange , as a string: float .

+ +

Definition at line 531 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MValidDepthRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MValidDepthRatio ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/ValidDepthRatio : "If a new frame has points without valid depth, they are added to local feature map only if points with valid depth on total points is over this ratio. Setting to 1 means no points without valid depth are added to local feature map." Default value: 0.75 ( float ).

+ +

Definition at line 532 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MValidDepthRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomF2MValidDepthRatio ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/ValidDepthRatio : 0.75 .

+ +

Definition at line 532 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MValidDepthRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MValidDepthRatio ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/ValidDepthRatio , as a string: float .

+ +

Definition at line 532 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MBundleAdjustment()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MBundleAdjustment ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/BundleAdjustment : uFormat("Local bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()) Default value: 0 ( int ).

+ +

Definition at line 536 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MBundleAdjustment()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomF2MBundleAdjustment ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/BundleAdjustment : 0 .

+ +

Definition at line 536 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MBundleAdjustment()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MBundleAdjustment ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/BundleAdjustment , as a string: int .

+ +

Definition at line 536 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MBundleAdjustmentMaxFrames()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MBundleAdjustmentMaxFrames ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/BundleAdjustmentMaxFrames : "Maximum frames used for bundle adjustment (0=inf or all current frames in the local map)." Default value: 10 ( int ).

+ +

Definition at line 538 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MBundleAdjustmentMaxFrames()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomF2MBundleAdjustmentMaxFrames ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/BundleAdjustmentMaxFrames : 10 .

+ +

Definition at line 538 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MBundleAdjustmentMaxFrames()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MBundleAdjustmentMaxFrames ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/BundleAdjustmentMaxFrames , as a string: int .

+ +

Definition at line 538 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MBundleAdjustmentMinMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MBundleAdjustmentMinMotion ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/BundleAdjustmentMinMotion : "To create a new keyframe with bundle adjustment, a minimum motion (in pixels) can be required. The motion is computed by the average distance between inliers of the previous keyframe and new frame." Default value: 0.0 ( float ).

+ +

Definition at line 539 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MBundleAdjustmentMinMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomF2MBundleAdjustmentMinMotion ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/BundleAdjustmentMinMotion : 0.0 .

+ +

Definition at line 539 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MBundleAdjustmentMinMotion()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MBundleAdjustmentMinMotion ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/BundleAdjustmentMinMotion , as a string: float .

+ +

Definition at line 539 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MBundleAdjustmentMaxKeyFramesPerFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MBundleAdjustmentMaxKeyFramesPerFeature ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature : "Maximum keyframes per feature for bundle adjustment. 0 means not limit." Default value: 0 ( int ).

+ +

Definition at line 540 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MBundleAdjustmentMaxKeyFramesPerFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomF2MBundleAdjustmentMaxKeyFramesPerFeature ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature : 0 .

+ +

Definition at line 540 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MBundleAdjustmentMaxKeyFramesPerFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MBundleAdjustmentMaxKeyFramesPerFeature ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature , as a string: int .

+ +

Definition at line 540 of file Parameters.h.

+ +
+
+ +

◆ kOdomF2MBundleUpdateFeatureMapOnAllFrames()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomF2MBundleUpdateFeatureMapOnAllFrames ()
+
+inlinestatic
+
+ +

Key of parameter OdomF2M/BundleUpdateFeatureMapOnAllFrames : uFormat("Update 3D local feature map on every frame with bundle adjustment. Recommended if %s=false and %s=true so that features without depth are better triangulated on every frame (not only on keyframes). If disabled, the feature map is updated only when a new keyframe is added (legacy approach).", kVisDepthAsMask().c_str(), kMemUseOdomFeatures().c_str()) Default value: false ( bool ).

+ +

Definition at line 541 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomF2MBundleUpdateFeatureMapOnAllFrames()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomF2MBundleUpdateFeatureMapOnAllFrames ()
+
+inlinestatic
+
+ +

Default value of parameter OdomF2M/BundleUpdateFeatureMapOnAllFrames : false .

+ +

Definition at line 541 of file Parameters.h.

+ +
+
+ +

◆ typeOdomF2MBundleUpdateFeatureMapOnAllFrames()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomF2MBundleUpdateFeatureMapOnAllFrames ()
+
+inlinestatic
+
+ +

Type of parameter OdomF2M/BundleUpdateFeatureMapOnAllFrames , as a string: bool .

+ +

Definition at line 541 of file Parameters.h.

+ +
+
+ +

◆ kOdomMonoInitMinFlow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMonoInitMinFlow ()
+
+inlinestatic
+
+ +

Key of parameter OdomMono/InitMinFlow : "Minimum optical flow required for the initialization step." Default value: 100 ( float ).

+ +

Definition at line 544 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMonoInitMinFlow()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomMonoInitMinFlow ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMono/InitMinFlow : 100 .

+ +

Definition at line 544 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMonoInitMinFlow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMonoInitMinFlow ()
+
+inlinestatic
+
+ +

Type of parameter OdomMono/InitMinFlow , as a string: float .

+ +

Definition at line 544 of file Parameters.h.

+ +
+
+ +

◆ kOdomMonoInitMinTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMonoInitMinTranslation ()
+
+inlinestatic
+
+ +

Key of parameter OdomMono/InitMinTranslation : "Minimum translation required for the initialization step." Default value: 0.1 ( float ).

+ +

Definition at line 545 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMonoInitMinTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomMonoInitMinTranslation ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMono/InitMinTranslation : 0.1 .

+ +

Definition at line 545 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMonoInitMinTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMonoInitMinTranslation ()
+
+inlinestatic
+
+ +

Type of parameter OdomMono/InitMinTranslation , as a string: float .

+ +

Definition at line 545 of file Parameters.h.

+ +
+
+ +

◆ kOdomMonoMinTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMonoMinTranslation ()
+
+inlinestatic
+
+ +

Key of parameter OdomMono/MinTranslation : "Minimum translation to add new points to local map. On initialization, translation x 5 is used as the minimum." Default value: 0.02 ( float ).

+ +

Definition at line 546 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMonoMinTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomMonoMinTranslation ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMono/MinTranslation : 0.02 .

+ +

Definition at line 546 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMonoMinTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMonoMinTranslation ()
+
+inlinestatic
+
+ +

Type of parameter OdomMono/MinTranslation , as a string: float .

+ +

Definition at line 546 of file Parameters.h.

+ +
+
+ +

◆ kOdomMonoMaxVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMonoMaxVariance ()
+
+inlinestatic
+
+ +

Key of parameter OdomMono/MaxVariance : "Maximum variance to add new points to local map." Default value: 0.01 ( float ).

+ +

Definition at line 547 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMonoMaxVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomMonoMaxVariance ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMono/MaxVariance : 0.01 .

+ +

Definition at line 547 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMonoMaxVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMonoMaxVariance ()
+
+inlinestatic
+
+ +

Type of parameter OdomMono/MaxVariance , as a string: float .

+ +

Definition at line 547 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisFeatureWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisFeatureWindowSize ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/FeatureWindowSize : "The size of the n x n image patch surrounding each feature, used for keypoint matching." Default value: 9 ( int ).

+ +

Definition at line 550 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisFeatureWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisFeatureWindowSize ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/FeatureWindowSize : 9 .

+ +

Definition at line 550 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisFeatureWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisFeatureWindowSize ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/FeatureWindowSize , as a string: int .

+ +

Definition at line 550 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisMaxPyramidLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisMaxPyramidLevel ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/MaxPyramidLevel : "The maximum Gaussian pyramid level to process the image at. Pyramid level 1 corresponds to the original image." Default value: 3 ( int ).

+ +

Definition at line 551 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisMaxPyramidLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisMaxPyramidLevel ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/MaxPyramidLevel : 3 .

+ +

Definition at line 551 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisMaxPyramidLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisMaxPyramidLevel ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/MaxPyramidLevel , as a string: int .

+ +

Definition at line 551 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisMinPyramidLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisMinPyramidLevel ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/MinPyramidLevel : "The minimum pyramid level." Default value: 0 ( int ).

+ +

Definition at line 552 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisMinPyramidLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisMinPyramidLevel ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/MinPyramidLevel : 0 .

+ +

Definition at line 552 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisMinPyramidLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisMinPyramidLevel ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/MinPyramidLevel , as a string: int .

+ +

Definition at line 552 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisTargetPixelsPerFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisTargetPixelsPerFeature ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/TargetPixelsPerFeature : "Specifies the desired feature density as a ratio of input image pixels per feature detected. This number is used to control the adaptive feature thresholding." Default value: 250 ( int ).

+ +

Definition at line 553 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisTargetPixelsPerFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisTargetPixelsPerFeature ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/TargetPixelsPerFeature : 250 .

+ +

Definition at line 553 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisTargetPixelsPerFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisTargetPixelsPerFeature ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/TargetPixelsPerFeature , as a string: int .

+ +

Definition at line 553 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisFastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisFastThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/FastThreshold : "FAST threshold." Default value: 20 ( int ).

+ +

Definition at line 554 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisFastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisFastThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/FastThreshold : 20 .

+ +

Definition at line 554 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisFastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisFastThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/FastThreshold , as a string: int .

+ +

Definition at line 554 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisUseAdaptiveThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisUseAdaptiveThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/UseAdaptiveThreshold : "Use FAST adaptive threshold." Default value: true ( bool ).

+ +

Definition at line 555 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisUseAdaptiveThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFovisUseAdaptiveThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/UseAdaptiveThreshold : true .

+ +

Definition at line 555 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisUseAdaptiveThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisUseAdaptiveThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/UseAdaptiveThreshold , as a string: bool .

+ +

Definition at line 555 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisFastThresholdAdaptiveGain()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisFastThresholdAdaptiveGain ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/FastThresholdAdaptiveGain : "FAST threshold adaptive gain." Default value: 0.005 ( double ).

+ +

Definition at line 556 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisFastThresholdAdaptiveGain()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomFovisFastThresholdAdaptiveGain ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/FastThresholdAdaptiveGain : 0.005 .

+ +

Definition at line 556 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisFastThresholdAdaptiveGain()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisFastThresholdAdaptiveGain ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/FastThresholdAdaptiveGain , as a string: double .

+ +

Definition at line 556 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisUseHomographyInitialization()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisUseHomographyInitialization ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/UseHomographyInitialization : "Use homography initialization." Default value: true ( bool ).

+ +

Definition at line 557 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisUseHomographyInitialization()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFovisUseHomographyInitialization ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/UseHomographyInitialization : true .

+ +

Definition at line 557 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisUseHomographyInitialization()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisUseHomographyInitialization ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/UseHomographyInitialization , as a string: bool .

+ +

Definition at line 557 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisUseBucketing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisUseBucketing ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/UseBucketing : "" Default value: true ( bool ).

+ +

Definition at line 559 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisUseBucketing()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFovisUseBucketing ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/UseBucketing : true .

+ +

Definition at line 559 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisUseBucketing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisUseBucketing ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/UseBucketing , as a string: bool .

+ +

Definition at line 559 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisBucketWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisBucketWidth ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/BucketWidth : "" Default value: 80 ( int ).

+ +

Definition at line 560 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisBucketWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisBucketWidth ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/BucketWidth : 80 .

+ +

Definition at line 560 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisBucketWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisBucketWidth ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/BucketWidth , as a string: int .

+ +

Definition at line 560 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisBucketHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisBucketHeight ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/BucketHeight : "" Default value: 80 ( int ).

+ +

Definition at line 561 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisBucketHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisBucketHeight ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/BucketHeight : 80 .

+ +

Definition at line 561 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisBucketHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisBucketHeight ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/BucketHeight , as a string: int .

+ +

Definition at line 561 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisMaxKeypointsPerBucket()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisMaxKeypointsPerBucket ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/MaxKeypointsPerBucket : "" Default value: 25 ( int ).

+ +

Definition at line 562 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisMaxKeypointsPerBucket()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisMaxKeypointsPerBucket ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/MaxKeypointsPerBucket : 25 .

+ +

Definition at line 562 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisMaxKeypointsPerBucket()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisMaxKeypointsPerBucket ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/MaxKeypointsPerBucket , as a string: int .

+ +

Definition at line 562 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisUseImageNormalization()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisUseImageNormalization ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/UseImageNormalization : "" Default value: false ( bool ).

+ +

Definition at line 563 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisUseImageNormalization()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFovisUseImageNormalization ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/UseImageNormalization : false .

+ +

Definition at line 563 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisUseImageNormalization()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisUseImageNormalization ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/UseImageNormalization , as a string: bool .

+ +

Definition at line 563 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisInlierMaxReprojectionError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisInlierMaxReprojectionError ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/InlierMaxReprojectionError : "The maximum image-space reprojection error (in pixels) a feature match is allowed to have and still be considered an inlier in the set of features used for motion estimation." Default value: 1.5 ( double ).

+ +

Definition at line 565 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisInlierMaxReprojectionError()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomFovisInlierMaxReprojectionError ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/InlierMaxReprojectionError : 1.5 .

+ +

Definition at line 565 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisInlierMaxReprojectionError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisInlierMaxReprojectionError ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/InlierMaxReprojectionError , as a string: double .

+ +

Definition at line 565 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisCliqueInlierThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisCliqueInlierThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/CliqueInlierThreshold : "See Howard's greedy max-clique algorithm for determining the maximum set of mutually consisten feature matches. This specifies the compatibility threshold, in meters." Default value: 0.1 ( double ).

+ +

Definition at line 566 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisCliqueInlierThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomFovisCliqueInlierThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/CliqueInlierThreshold : 0.1 .

+ +

Definition at line 566 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisCliqueInlierThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisCliqueInlierThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/CliqueInlierThreshold , as a string: double .

+ +

Definition at line 566 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisMinFeaturesForEstimate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisMinFeaturesForEstimate ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/MinFeaturesForEstimate : "Minimum number of features in the inlier set for the motion estimate to be considered valid." Default value: 20 ( int ).

+ +

Definition at line 567 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisMinFeaturesForEstimate()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisMinFeaturesForEstimate ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/MinFeaturesForEstimate : 20 .

+ +

Definition at line 567 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisMinFeaturesForEstimate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisMinFeaturesForEstimate ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/MinFeaturesForEstimate , as a string: int .

+ +

Definition at line 567 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisMaxMeanReprojectionError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisMaxMeanReprojectionError ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/MaxMeanReprojectionError : "Maximum mean reprojection error over the inlier feature matches for the motion estimate to be considered valid." Default value: 10.0 ( double ).

+ +

Definition at line 568 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisMaxMeanReprojectionError()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomFovisMaxMeanReprojectionError ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/MaxMeanReprojectionError : 10.0 .

+ +

Definition at line 568 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisMaxMeanReprojectionError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisMaxMeanReprojectionError ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/MaxMeanReprojectionError , as a string: double .

+ +

Definition at line 568 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisUseSubpixelRefinement()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisUseSubpixelRefinement ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/UseSubpixelRefinement : "Specifies whether or not to refine feature matches to subpixel resolution." Default value: true ( bool ).

+ +

Definition at line 569 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisUseSubpixelRefinement()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFovisUseSubpixelRefinement ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/UseSubpixelRefinement : true .

+ +

Definition at line 569 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisUseSubpixelRefinement()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisUseSubpixelRefinement ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/UseSubpixelRefinement , as a string: bool .

+ +

Definition at line 569 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisFeatureSearchWindow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisFeatureSearchWindow ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/FeatureSearchWindow : "Specifies the size of the search window to apply when searching for feature matches across time frames. The search is conducted around the feature location predicted by the initial rotation estimate." Default value: 25 ( int ).

+ +

Definition at line 570 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisFeatureSearchWindow()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisFeatureSearchWindow ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/FeatureSearchWindow : 25 .

+ +

Definition at line 570 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisFeatureSearchWindow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisFeatureSearchWindow ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/FeatureSearchWindow , as a string: int .

+ +

Definition at line 570 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisUpdateTargetFeaturesWithRefined()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisUpdateTargetFeaturesWithRefined ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/UpdateTargetFeaturesWithRefined : "When subpixel refinement is enabled, the refined feature locations can be saved over the original feature locations. This has a slightly negative impact on frame-to-frame visual odometry, but is likely better when using this library as part of a visual SLAM algorithm." Default value: false ( bool ).

+ +

Definition at line 571 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisUpdateTargetFeaturesWithRefined()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFovisUpdateTargetFeaturesWithRefined ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/UpdateTargetFeaturesWithRefined : false .

+ +

Definition at line 571 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisUpdateTargetFeaturesWithRefined()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisUpdateTargetFeaturesWithRefined ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/UpdateTargetFeaturesWithRefined , as a string: bool .

+ +

Definition at line 571 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisStereoRequireMutualMatch()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisStereoRequireMutualMatch ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/StereoRequireMutualMatch : "" Default value: true ( bool ).

+ +

Definition at line 573 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisStereoRequireMutualMatch()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomFovisStereoRequireMutualMatch ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/StereoRequireMutualMatch : true .

+ +

Definition at line 573 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisStereoRequireMutualMatch()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisStereoRequireMutualMatch ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/StereoRequireMutualMatch , as a string: bool .

+ +

Definition at line 573 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisStereoMaxDistEpipolarLine()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisStereoMaxDistEpipolarLine ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/StereoMaxDistEpipolarLine : "" Default value: 1.5 ( double ).

+ +

Definition at line 574 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisStereoMaxDistEpipolarLine()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomFovisStereoMaxDistEpipolarLine ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/StereoMaxDistEpipolarLine : 1.5 .

+ +

Definition at line 574 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisStereoMaxDistEpipolarLine()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisStereoMaxDistEpipolarLine ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/StereoMaxDistEpipolarLine , as a string: double .

+ +

Definition at line 574 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisStereoMaxRefinementDisplacement()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisStereoMaxRefinementDisplacement ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/StereoMaxRefinementDisplacement : "" Default value: 1.0 ( double ).

+ +

Definition at line 575 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisStereoMaxRefinementDisplacement()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomFovisStereoMaxRefinementDisplacement ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/StereoMaxRefinementDisplacement : 1.0 .

+ +

Definition at line 575 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisStereoMaxRefinementDisplacement()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisStereoMaxRefinementDisplacement ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/StereoMaxRefinementDisplacement , as a string: double .

+ +

Definition at line 575 of file Parameters.h.

+ +
+
+ +

◆ kOdomFovisStereoMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomFovisStereoMaxDisparity ()
+
+inlinestatic
+
+ +

Key of parameter OdomFovis/StereoMaxDisparity : "" Default value: 128 ( int ).

+ +

Definition at line 576 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomFovisStereoMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomFovisStereoMaxDisparity ()
+
+inlinestatic
+
+ +

Default value of parameter OdomFovis/StereoMaxDisparity : 128 .

+ +

Definition at line 576 of file Parameters.h.

+ +
+
+ +

◆ typeOdomFovisStereoMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomFovisStereoMaxDisparity ()
+
+inlinestatic
+
+ +

Type of parameter OdomFovis/StereoMaxDisparity , as a string: int .

+ +

Definition at line 576 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2RansacIters()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2RansacIters ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/RansacIters : "Number of RANSAC iterations." Default value: 200 ( int ).

+ +

Definition at line 579 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2RansacIters()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2RansacIters ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/RansacIters : 200 .

+ +

Definition at line 579 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2RansacIters()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2RansacIters ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/RansacIters , as a string: int .

+ +

Definition at line 579 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2InlierThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2InlierThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/InlierThreshold : "Fundamental matrix inlier threshold." Default value: 2.0 ( double ).

+ +

Definition at line 580 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2InlierThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomViso2InlierThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/InlierThreshold : 2.0 .

+ +

Definition at line 580 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2InlierThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2InlierThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/InlierThreshold , as a string: double .

+ +

Definition at line 580 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2Reweighting()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2Reweighting ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/Reweighting : "Lower border weights (more robust to calibration errors)." Default value: true ( bool ).

+ +

Definition at line 581 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2Reweighting()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomViso2Reweighting ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/Reweighting : true .

+ +

Definition at line 581 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2Reweighting()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2Reweighting ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/Reweighting , as a string: bool .

+ +

Definition at line 581 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchNmsN()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchNmsN ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchNmsN : "Non-max-suppression: min. distance between maxima (in pixels)." Default value: 3 ( int ).

+ +

Definition at line 582 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchNmsN()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchNmsN ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchNmsN : 3 .

+ +

Definition at line 582 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchNmsN()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchNmsN ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchNmsN , as a string: int .

+ +

Definition at line 582 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchNmsTau()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchNmsTau ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchNmsTau : "Non-max-suppression: interest point peakiness threshold." Default value: 50 ( int ).

+ +

Definition at line 583 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchNmsTau()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchNmsTau ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchNmsTau : 50 .

+ +

Definition at line 583 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchNmsTau()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchNmsTau ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchNmsTau , as a string: int .

+ +

Definition at line 583 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchBinsize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchBinsize ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchBinsize : "Matching bin width/height (affects efficiency only)." Default value: 50 ( int ).

+ +

Definition at line 584 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchBinsize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchBinsize ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchBinsize : 50 .

+ +

Definition at line 584 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchBinsize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchBinsize ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchBinsize , as a string: int .

+ +

Definition at line 584 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchRadius ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchRadius : "Matching radius (du/dv in pixels)." Default value: 200 ( int ).

+ +

Definition at line 585 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchRadius ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchRadius : 200 .

+ +

Definition at line 585 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchRadius ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchRadius , as a string: int .

+ +

Definition at line 585 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchDispTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchDispTolerance ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchDispTolerance : "Disparity tolerance for stereo matches (in pixels)." Default value: 2 ( int ).

+ +

Definition at line 586 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchDispTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchDispTolerance ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchDispTolerance : 2 .

+ +

Definition at line 586 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchDispTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchDispTolerance ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchDispTolerance , as a string: int .

+ +

Definition at line 586 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchOutlierDispTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchOutlierDispTolerance ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchOutlierDispTolerance : "Outlier removal: disparity tolerance (in pixels)." Default value: 5 ( int ).

+ +

Definition at line 587 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchOutlierDispTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchOutlierDispTolerance ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchOutlierDispTolerance : 5 .

+ +

Definition at line 587 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchOutlierDispTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchOutlierDispTolerance ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchOutlierDispTolerance , as a string: int .

+ +

Definition at line 587 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchOutlierFlowTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchOutlierFlowTolerance ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchOutlierFlowTolerance : "Outlier removal: flow tolerance (in pixels)." Default value: 5 ( int ).

+ +

Definition at line 588 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchOutlierFlowTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchOutlierFlowTolerance ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchOutlierFlowTolerance : 5 .

+ +

Definition at line 588 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchOutlierFlowTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchOutlierFlowTolerance ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchOutlierFlowTolerance , as a string: int .

+ +

Definition at line 588 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchMultiStage()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchMultiStage ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchMultiStage : "Multistage matching (denser and faster)." Default value: true ( bool ).

+ +

Definition at line 589 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchMultiStage()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomViso2MatchMultiStage ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchMultiStage : true .

+ +

Definition at line 589 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchMultiStage()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchMultiStage ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchMultiStage , as a string: bool .

+ +

Definition at line 589 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchHalfResolution()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchHalfResolution ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchHalfResolution : "Match at half resolution, refine at full resolution." Default value: true ( bool ).

+ +

Definition at line 590 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchHalfResolution()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomViso2MatchHalfResolution ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchHalfResolution : true .

+ +

Definition at line 590 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchHalfResolution()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchHalfResolution ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchHalfResolution , as a string: bool .

+ +

Definition at line 590 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2MatchRefinement()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2MatchRefinement ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/MatchRefinement : "Refinement (0=none,1=pixel,2=subpixel)." Default value: 1 ( int ).

+ +

Definition at line 591 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2MatchRefinement()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2MatchRefinement ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/MatchRefinement : 1 .

+ +

Definition at line 591 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2MatchRefinement()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2MatchRefinement ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/MatchRefinement , as a string: int .

+ +

Definition at line 591 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2BucketMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2BucketMaxFeatures ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/BucketMaxFeatures : "Maximal number of features per bucket." Default value: 2 ( int ).

+ +

Definition at line 592 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2BucketMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomViso2BucketMaxFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/BucketMaxFeatures : 2 .

+ +

Definition at line 592 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2BucketMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2BucketMaxFeatures ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/BucketMaxFeatures , as a string: int .

+ +

Definition at line 592 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2BucketWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2BucketWidth ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/BucketWidth : "Width of bucket." Default value: 50 ( double ).

+ +

Definition at line 593 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2BucketWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomViso2BucketWidth ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/BucketWidth : 50 .

+ +

Definition at line 593 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2BucketWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2BucketWidth ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/BucketWidth , as a string: double .

+ +

Definition at line 593 of file Parameters.h.

+ +
+
+ +

◆ kOdomViso2BucketHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomViso2BucketHeight ()
+
+inlinestatic
+
+ +

Key of parameter OdomViso2/BucketHeight : "Height of bucket." Default value: 50 ( double ).

+ +

Definition at line 594 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomViso2BucketHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomViso2BucketHeight ()
+
+inlinestatic
+
+ +

Default value of parameter OdomViso2/BucketHeight : 50 .

+ +

Definition at line 594 of file Parameters.h.

+ +
+
+ +

◆ typeOdomViso2BucketHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomViso2BucketHeight ()
+
+inlinestatic
+
+ +

Type of parameter OdomViso2/BucketHeight , as a string: double .

+ +

Definition at line 594 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMVocPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMVocPath ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/VocPath : "Path to ORB vocabulary (*.txt)." Default value: "" (string).

+ +

Definition at line 597 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMVocPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultOdomORBSLAMVocPath ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/VocPath : "" .

+ +

Definition at line 597 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMVocPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMVocPath ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/VocPath , as a string: string.

+ +

Definition at line 597 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMBf()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMBf ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/Bf : "Fake IR projector baseline (m) used only when stereo is not used." Default value: 0.076 ( double ).

+ +

Definition at line 598 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMBf()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomORBSLAMBf ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/Bf : 0.076 .

+ +

Definition at line 598 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMBf()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMBf ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/Bf , as a string: double .

+ +

Definition at line 598 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMThDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMThDepth ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/ThDepth : "Close/Far threshold. Baseline times." Default value: 40.0 ( double ).

+ +

Definition at line 599 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMThDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomORBSLAMThDepth ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/ThDepth : 40.0 .

+ +

Definition at line 599 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMThDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMThDepth ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/ThDepth , as a string: double .

+ +

Definition at line 599 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMFps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMFps ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/Fps : "Camera FPS (0 to estimate from input data)." Default value: 0.0 ( float ).

+ +

Definition at line 600 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMFps()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomORBSLAMFps ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/Fps : 0.0 .

+ +

Definition at line 600 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMFps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMFps ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/Fps , as a string: float .

+ +

Definition at line 600 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMMaxFeatures ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/MaxFeatures : "Maximum ORB features extracted per frame." Default value: 1000 ( int ).

+ +

Definition at line 601 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomORBSLAMMaxFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/MaxFeatures : 1000 .

+ +

Definition at line 601 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMMaxFeatures ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/MaxFeatures , as a string: int .

+ +

Definition at line 601 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMMapSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMMapSize ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/MapSize : "Maximum size of the feature map (0 means infinite). Only supported with ORB_SLAM2." Default value: 3000 ( int ).

+ +

Definition at line 602 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMMapSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomORBSLAMMapSize ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/MapSize : 3000 .

+ +

Definition at line 602 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMMapSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMMapSize ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/MapSize , as a string: int .

+ +

Definition at line 602 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMInertial()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMInertial ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/Inertial : "Enable IMU. Only supported with ORB_SLAM3." Default value: false ( bool ).

+ +

Definition at line 603 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMInertial()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomORBSLAMInertial ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/Inertial : false .

+ +

Definition at line 603 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMInertial()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMInertial ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/Inertial , as a string: bool .

+ +

Definition at line 603 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMGyroNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMGyroNoise ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/GyroNoise : "IMU gyroscope \"white noise\"." Default value: 0.01 ( double ).

+ +

Definition at line 604 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMGyroNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomORBSLAMGyroNoise ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/GyroNoise : 0.01 .

+ +

Definition at line 604 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMGyroNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMGyroNoise ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/GyroNoise , as a string: double .

+ +

Definition at line 604 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMAccNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMAccNoise ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/AccNoise : "IMU accelerometer \"white noise\"." Default value: 0.1 ( double ).

+ +

Definition at line 605 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMAccNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomORBSLAMAccNoise ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/AccNoise : 0.1 .

+ +

Definition at line 605 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMAccNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMAccNoise ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/AccNoise , as a string: double .

+ +

Definition at line 605 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMGyroWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMGyroWalk ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/GyroWalk : "IMU gyroscope \"random walk\"." Default value: 0.000001 ( double ).

+ +

Definition at line 606 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMGyroWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomORBSLAMGyroWalk ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/GyroWalk : 0.000001 .

+ +

Definition at line 606 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMGyroWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMGyroWalk ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/GyroWalk , as a string: double .

+ +

Definition at line 606 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMAccWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMAccWalk ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/AccWalk : "IMU accelerometer \"random walk\"." Default value: 0.0001 ( double ).

+ +

Definition at line 607 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMAccWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomORBSLAMAccWalk ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/AccWalk : 0.0001 .

+ +

Definition at line 607 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMAccWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMAccWalk ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/AccWalk , as a string: double .

+ +

Definition at line 607 of file Parameters.h.

+ +
+
+ +

◆ kOdomORBSLAMSamplingRate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomORBSLAMSamplingRate ()
+
+inlinestatic
+
+ +

Key of parameter OdomORBSLAM/SamplingRate : "IMU sampling rate (0 to estimate from input data)." Default value: 0 ( double ).

+ +

Definition at line 608 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomORBSLAMSamplingRate()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomORBSLAMSamplingRate ()
+
+inlinestatic
+
+ +

Default value of parameter OdomORBSLAM/SamplingRate : 0 .

+ +

Definition at line 608 of file Parameters.h.

+ +
+
+ +

◆ typeOdomORBSLAMSamplingRate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomORBSLAMSamplingRate ()
+
+inlinestatic
+
+ +

Type of parameter OdomORBSLAM/SamplingRate , as a string: double .

+ +

Definition at line 608 of file Parameters.h.

+ +
+
+ +

◆ kOdomOKVISConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOKVISConfigPath ()
+
+inlinestatic
+
+ +

Key of parameter OdomOKVIS/ConfigPath : "Path of OKVIS config file." Default value: "" (string).

+ +

Definition at line 612 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOKVISConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultOdomOKVISConfigPath ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOKVIS/ConfigPath : "" .

+ +

Definition at line 612 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOKVISConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOKVISConfigPath ()
+
+inlinestatic
+
+ +

Type of parameter OdomOKVIS/ConfigPath , as a string: string.

+ +

Definition at line 612 of file Parameters.h.

+ +
+
+ +

◆ kOdomLOAMSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLOAMSensor ()
+
+inlinestatic
+
+ +

Key of parameter OdomLOAM/Sensor : "Velodyne sensor: 0=VLP-16, 1=HDL-32, 2=HDL-64E" Default value: 2 ( int ).

+ +

Definition at line 615 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLOAMSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomLOAMSensor ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLOAM/Sensor : 2 .

+ +

Definition at line 615 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLOAMSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLOAMSensor ()
+
+inlinestatic
+
+ +

Type of parameter OdomLOAM/Sensor , as a string: int .

+ +

Definition at line 615 of file Parameters.h.

+ +
+
+ +

◆ kOdomLOAMScanPeriod()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLOAMScanPeriod ()
+
+inlinestatic
+
+ +

Key of parameter OdomLOAM/ScanPeriod : "Scan period (s)" Default value: 0.1 ( float ).

+ +

Definition at line 616 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLOAMScanPeriod()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLOAMScanPeriod ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLOAM/ScanPeriod : 0.1 .

+ +

Definition at line 616 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLOAMScanPeriod()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLOAMScanPeriod ()
+
+inlinestatic
+
+ +

Type of parameter OdomLOAM/ScanPeriod , as a string: float .

+ +

Definition at line 616 of file Parameters.h.

+ +
+
+ +

◆ kOdomLOAMResolution()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLOAMResolution ()
+
+inlinestatic
+
+ +

Key of parameter OdomLOAM/Resolution : "Map resolution" Default value: 0.2 ( float ).

+ +

Definition at line 617 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLOAMResolution()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLOAMResolution ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLOAM/Resolution : 0.2 .

+ +

Definition at line 617 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLOAMResolution()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLOAMResolution ()
+
+inlinestatic
+
+ +

Type of parameter OdomLOAM/Resolution , as a string: float .

+ +

Definition at line 617 of file Parameters.h.

+ +
+
+ +

◆ kOdomLOAMLinVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLOAMLinVar ()
+
+inlinestatic
+
+ +

Key of parameter OdomLOAM/LinVar : "Linear output variance." Default value: 0.01 ( float ).

+ +

Definition at line 618 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLOAMLinVar()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLOAMLinVar ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLOAM/LinVar : 0.01 .

+ +

Definition at line 618 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLOAMLinVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLOAMLinVar ()
+
+inlinestatic
+
+ +

Type of parameter OdomLOAM/LinVar , as a string: float .

+ +

Definition at line 618 of file Parameters.h.

+ +
+
+ +

◆ kOdomLOAMAngVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLOAMAngVar ()
+
+inlinestatic
+
+ +

Key of parameter OdomLOAM/AngVar : "Angular output variance." Default value: 0.01 ( float ).

+ +

Definition at line 619 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLOAMAngVar()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLOAMAngVar ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLOAM/AngVar : 0.01 .

+ +

Definition at line 619 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLOAMAngVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLOAMAngVar ()
+
+inlinestatic
+
+ +

Type of parameter OdomLOAM/AngVar , as a string: float .

+ +

Definition at line 619 of file Parameters.h.

+ +
+
+ +

◆ kOdomLOAMLocalMapping()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLOAMLocalMapping ()
+
+inlinestatic
+
+ +

Key of parameter OdomLOAM/LocalMapping : "Local mapping. It adds more time to compute odometry, but accuracy is significantly improved." Default value: true ( bool ).

+ +

Definition at line 620 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLOAMLocalMapping()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomLOAMLocalMapping ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLOAM/LocalMapping : true .

+ +

Definition at line 620 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLOAMLocalMapping()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLOAMLocalMapping ()
+
+inlinestatic
+
+ +

Type of parameter OdomLOAM/LocalMapping , as a string: bool .

+ +

Definition at line 620 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFGridRow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFGridRow ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/GridRow : "" Default value: 4 ( int ).

+ +

Definition at line 623 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFGridRow()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFGridRow ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/GridRow : 4 .

+ +

Definition at line 623 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFGridRow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFGridRow ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/GridRow , as a string: int .

+ +

Definition at line 623 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFGridCol()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFGridCol ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/GridCol : "" Default value: 5 ( int ).

+ +

Definition at line 624 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFGridCol()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFGridCol ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/GridCol : 5 .

+ +

Definition at line 624 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFGridCol()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFGridCol ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/GridCol , as a string: int .

+ +

Definition at line 624 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFGridMinFeatureNum()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFGridMinFeatureNum ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/GridMinFeatureNum : "" Default value: 3 ( int ).

+ +

Definition at line 625 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFGridMinFeatureNum()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFGridMinFeatureNum ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/GridMinFeatureNum : 3 .

+ +

Definition at line 625 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFGridMinFeatureNum()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFGridMinFeatureNum ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/GridMinFeatureNum , as a string: int .

+ +

Definition at line 625 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFGridMaxFeatureNum()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFGridMaxFeatureNum ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/GridMaxFeatureNum : "" Default value: 4 ( int ).

+ +

Definition at line 626 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFGridMaxFeatureNum()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFGridMaxFeatureNum ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/GridMaxFeatureNum : 4 .

+ +

Definition at line 626 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFGridMaxFeatureNum()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFGridMaxFeatureNum ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/GridMaxFeatureNum , as a string: int .

+ +

Definition at line 626 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFPyramidLevels()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFPyramidLevels ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/PyramidLevels : "" Default value: 3 ( int ).

+ +

Definition at line 627 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFPyramidLevels()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFPyramidLevels ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/PyramidLevels : 3 .

+ +

Definition at line 627 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFPyramidLevels()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFPyramidLevels ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/PyramidLevels , as a string: int .

+ +

Definition at line 627 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFPatchSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFPatchSize ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/PatchSize : "" Default value: 15 ( int ).

+ +

Definition at line 628 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFPatchSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFPatchSize ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/PatchSize : 15 .

+ +

Definition at line 628 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFPatchSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFPatchSize ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/PatchSize , as a string: int .

+ +

Definition at line 628 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFFastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFFastThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/FastThreshold : "" Default value: 10 ( int ).

+ +

Definition at line 629 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFFastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFFastThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/FastThreshold : 10 .

+ +

Definition at line 629 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFFastThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFFastThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/FastThreshold , as a string: int .

+ +

Definition at line 629 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFMaxIteration()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFMaxIteration ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/MaxIteration : "" Default value: 30 ( int ).

+ +

Definition at line 630 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFMaxIteration()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFMaxIteration ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/MaxIteration : 30 .

+ +

Definition at line 630 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFMaxIteration()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFMaxIteration ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/MaxIteration , as a string: int .

+ +

Definition at line 630 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFTrackPrecision()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFTrackPrecision ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/TrackPrecision : "" Default value: 0.01 ( double ).

+ +

Definition at line 631 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFTrackPrecision()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFTrackPrecision ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/TrackPrecision : 0.01 .

+ +

Definition at line 631 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFTrackPrecision()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFTrackPrecision ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/TrackPrecision , as a string: double .

+ +

Definition at line 631 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFRansacThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFRansacThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/RansacThreshold : "" Default value: 3 ( double ).

+ +

Definition at line 632 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFRansacThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFRansacThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/RansacThreshold : 3 .

+ +

Definition at line 632 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFRansacThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFRansacThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/RansacThreshold , as a string: double .

+ +

Definition at line 632 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFStereoThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFStereoThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/StereoThreshold : "" Default value: 5 ( double ).

+ +

Definition at line 633 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFStereoThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFStereoThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/StereoThreshold : 5 .

+ +

Definition at line 633 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFStereoThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFStereoThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/StereoThreshold , as a string: double .

+ +

Definition at line 633 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFPositionStdThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFPositionStdThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/PositionStdThreshold : "" Default value: 8.0 ( double ).

+ +

Definition at line 634 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFPositionStdThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFPositionStdThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/PositionStdThreshold : 8.0 .

+ +

Definition at line 634 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFPositionStdThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFPositionStdThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/PositionStdThreshold , as a string: double .

+ +

Definition at line 634 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFRotationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFRotationThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/RotationThreshold : "" Default value: 0.2618 ( double ).

+ +

Definition at line 635 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFRotationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFRotationThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/RotationThreshold : 0.2618 .

+ +

Definition at line 635 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFRotationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFRotationThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/RotationThreshold , as a string: double .

+ +

Definition at line 635 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFTranslationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFTranslationThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/TranslationThreshold : "" Default value: 0.4 ( double ).

+ +

Definition at line 636 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFTranslationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFTranslationThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/TranslationThreshold : 0.4 .

+ +

Definition at line 636 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFTranslationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFTranslationThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/TranslationThreshold , as a string: double .

+ +

Definition at line 636 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFTrackingRateThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFTrackingRateThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/TrackingRateThreshold : "" Default value: 0.5 ( double ).

+ +

Definition at line 637 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFTrackingRateThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFTrackingRateThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/TrackingRateThreshold : 0.5 .

+ +

Definition at line 637 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFTrackingRateThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFTrackingRateThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/TrackingRateThreshold , as a string: double .

+ +

Definition at line 637 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFOptTranslationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFOptTranslationThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/OptTranslationThreshold : "" Default value: 0 ( double ).

+ +

Definition at line 638 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFOptTranslationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFOptTranslationThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/OptTranslationThreshold : 0 .

+ +

Definition at line 638 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFOptTranslationThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFOptTranslationThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/OptTranslationThreshold , as a string: double .

+ +

Definition at line 638 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFNoiseGyro()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFNoiseGyro ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/NoiseGyro : "" Default value: 0.005 ( double ).

+ +

Definition at line 639 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFNoiseGyro()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFNoiseGyro ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/NoiseGyro : 0.005 .

+ +

Definition at line 639 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFNoiseGyro()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFNoiseGyro ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/NoiseGyro , as a string: double .

+ +

Definition at line 639 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFNoiseAcc()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFNoiseAcc ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/NoiseAcc : "" Default value: 0.05 ( double ).

+ +

Definition at line 640 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFNoiseAcc()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFNoiseAcc ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/NoiseAcc : 0.05 .

+ +

Definition at line 640 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFNoiseAcc()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFNoiseAcc ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/NoiseAcc , as a string: double .

+ +

Definition at line 640 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFNoiseGyroBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFNoiseGyroBias ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/NoiseGyroBias : "" Default value: 0.001 ( double ).

+ +

Definition at line 641 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFNoiseGyroBias()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFNoiseGyroBias ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/NoiseGyroBias : 0.001 .

+ +

Definition at line 641 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFNoiseGyroBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFNoiseGyroBias ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/NoiseGyroBias , as a string: double .

+ +

Definition at line 641 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFNoiseAccBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFNoiseAccBias ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/NoiseAccBias : "" Default value: 0.01 ( double ).

+ +

Definition at line 642 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFNoiseAccBias()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFNoiseAccBias ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/NoiseAccBias : 0.01 .

+ +

Definition at line 642 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFNoiseAccBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFNoiseAccBias ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/NoiseAccBias , as a string: double .

+ +

Definition at line 642 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFNoiseFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFNoiseFeature ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/NoiseFeature : "" Default value: 0.035 ( double ).

+ +

Definition at line 643 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFNoiseFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFNoiseFeature ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/NoiseFeature : 0.035 .

+ +

Definition at line 643 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFNoiseFeature()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFNoiseFeature ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/NoiseFeature , as a string: double .

+ +

Definition at line 643 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFInitCovVel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFInitCovVel ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/InitCovVel : "" Default value: 0.25 ( double ).

+ +

Definition at line 644 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFInitCovVel()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFInitCovVel ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/InitCovVel : 0.25 .

+ +

Definition at line 644 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFInitCovVel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFInitCovVel ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/InitCovVel , as a string: double .

+ +

Definition at line 644 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFInitCovGyroBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFInitCovGyroBias ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/InitCovGyroBias : "" Default value: 0.01 ( double ).

+ +

Definition at line 645 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFInitCovGyroBias()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFInitCovGyroBias ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/InitCovGyroBias : 0.01 .

+ +

Definition at line 645 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFInitCovGyroBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFInitCovGyroBias ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/InitCovGyroBias , as a string: double .

+ +

Definition at line 645 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFInitCovAccBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFInitCovAccBias ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/InitCovAccBias : "" Default value: 0.01 ( double ).

+ +

Definition at line 646 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFInitCovAccBias()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFInitCovAccBias ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/InitCovAccBias : 0.01 .

+ +

Definition at line 646 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFInitCovAccBias()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFInitCovAccBias ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/InitCovAccBias , as a string: double .

+ +

Definition at line 646 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFInitCovExRot()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFInitCovExRot ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/InitCovExRot : "" Default value: 0.00030462 ( double ).

+ +

Definition at line 647 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFInitCovExRot()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFInitCovExRot ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/InitCovExRot : 0.00030462 .

+ +

Definition at line 647 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFInitCovExRot()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFInitCovExRot ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/InitCovExRot , as a string: double .

+ +

Definition at line 647 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFInitCovExTrans()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFInitCovExTrans ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/InitCovExTrans : "" Default value: 0.000025 ( double ).

+ +

Definition at line 648 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFInitCovExTrans()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomMSCKFInitCovExTrans ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/InitCovExTrans : 0.000025 .

+ +

Definition at line 648 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFInitCovExTrans()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFInitCovExTrans ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/InitCovExTrans , as a string: double .

+ +

Definition at line 648 of file Parameters.h.

+ +
+
+ +

◆ kOdomMSCKFMaxCamStateSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomMSCKFMaxCamStateSize ()
+
+inlinestatic
+
+ +

Key of parameter OdomMSCKF/MaxCamStateSize : "" Default value: 20 ( int ).

+ +

Definition at line 649 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomMSCKFMaxCamStateSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomMSCKFMaxCamStateSize ()
+
+inlinestatic
+
+ +

Default value of parameter OdomMSCKF/MaxCamStateSize : 20 .

+ +

Definition at line 649 of file Parameters.h.

+ +
+
+ +

◆ typeOdomMSCKFMaxCamStateSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomMSCKFMaxCamStateSize ()
+
+inlinestatic
+
+ +

Type of parameter OdomMSCKF/MaxCamStateSize , as a string: int .

+ +

Definition at line 649 of file Parameters.h.

+ +
+
+ +

◆ kOdomVINSFusionConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomVINSFusionConfigPath ()
+
+inlinestatic
+
+ +

Key of parameter OdomVINSFusion/ConfigPath : "Path of VINS-Fusion config file." Default value: "" (string).

+ +

Definition at line 652 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomVINSFusionConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultOdomVINSFusionConfigPath ()
+
+inlinestatic
+
+ +

Default value of parameter OdomVINSFusion/ConfigPath : "" .

+ +

Definition at line 652 of file Parameters.h.

+ +
+
+ +

◆ typeOdomVINSFusionConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomVINSFusionConfigPath ()
+
+inlinestatic
+
+ +

Type of parameter OdomVINSFusion/ConfigPath , as a string: string.

+ +

Definition at line 652 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSConfigPath ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/ConfigPath : "Path of OpenVINS config file (*.yaml). Same format used than OpenVINS library. Note that any parameter from that config file will overwrite the same parameter in OdomOpenVINS group." Default value: "" (string).

+ +

Definition at line 655 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultOdomOpenVINSConfigPath ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/ConfigPath : "" .

+ +

Definition at line 655 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSConfigPath ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/ConfigPath , as a string: string.

+ +

Definition at line 655 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSUseStereo()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSUseStereo ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/UseStereo : "If we have more than 1 camera, if we should try to track stereo constraints between pairs." Default value: true ( bool ).

+ +

Definition at line 656 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSUseStereo()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSUseStereo ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/UseStereo : true .

+ +

Definition at line 656 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSUseStereo()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSUseStereo ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/UseStereo , as a string: bool .

+ +

Definition at line 656 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSUseKLT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSUseKLT ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/UseKLT : "If true we will use KLT, otherwise use a ORB descriptor + robust matching." Default value: true ( bool ).

+ +

Definition at line 657 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSUseKLT()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSUseKLT ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/UseKLT : true .

+ +

Definition at line 657 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSUseKLT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSUseKLT ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/UseKLT , as a string: bool .

+ +

Definition at line 657 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSNumPts()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSNumPts ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/NumPts : "Number of points (per camera) we will extract and try to track." Default value: 200 ( int ).

+ +

Definition at line 658 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSNumPts()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSNumPts ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/NumPts : 200 .

+ +

Definition at line 658 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSNumPts()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSNumPts ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/NumPts , as a string: int .

+ +

Definition at line 658 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSMinPxDist()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSMinPxDist ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/MinPxDist : "Eistance between features (features near each other provide less information)." Default value: 15 ( int ).

+ +

Definition at line 659 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSMinPxDist()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSMinPxDist ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/MinPxDist : 15 .

+ +

Definition at line 659 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSMinPxDist()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSMinPxDist ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/MinPxDist , as a string: int .

+ +

Definition at line 659 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSFiTriangulate1d()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSFiTriangulate1d ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/FiTriangulate1d : "If we should perform 1d triangulation instead of 3d." Default value: false ( bool ).

+ +

Definition at line 660 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSFiTriangulate1d()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSFiTriangulate1d ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/FiTriangulate1d : false .

+ +

Definition at line 660 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSFiTriangulate1d()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSFiTriangulate1d ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/FiTriangulate1d , as a string: bool .

+ +

Definition at line 660 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSFiRefineFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSFiRefineFeatures ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/FiRefineFeatures : "If we should perform Levenberg-Marquardt refinement." Default value: true ( bool ).

+ +

Definition at line 661 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSFiRefineFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSFiRefineFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/FiRefineFeatures : true .

+ +

Definition at line 661 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSFiRefineFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSFiRefineFeatures ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/FiRefineFeatures , as a string: bool .

+ +

Definition at line 661 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSFiMaxRuns()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSFiMaxRuns ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/FiMaxRuns : "Max runs for Levenberg-Marquardt." Default value: 5 ( int ).

+ +

Definition at line 662 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSFiMaxRuns()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSFiMaxRuns ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/FiMaxRuns : 5 .

+ +

Definition at line 662 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSFiMaxRuns()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSFiMaxRuns ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/FiMaxRuns , as a string: int .

+ +

Definition at line 662 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSFiMaxBaseline()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSFiMaxBaseline ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/FiMaxBaseline : "Max baseline ratio to accept triangulated features." Default value: 40 ( double ).

+ +

Definition at line 663 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSFiMaxBaseline()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSFiMaxBaseline ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/FiMaxBaseline : 40 .

+ +

Definition at line 663 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSFiMaxBaseline()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSFiMaxBaseline ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/FiMaxBaseline , as a string: double .

+ +

Definition at line 663 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSFiMaxCondNumber()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSFiMaxCondNumber ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/FiMaxCondNumber : "Max condition number of linear triangulation matrix accept triangulated features." Default value: 10000 ( double ).

+ +

Definition at line 664 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSFiMaxCondNumber()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSFiMaxCondNumber ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/FiMaxCondNumber : 10000 .

+ +

Definition at line 664 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSFiMaxCondNumber()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSFiMaxCondNumber ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/FiMaxCondNumber , as a string: double .

+ +

Definition at line 664 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSUseFEJ()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSUseFEJ ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/UseFEJ : "If first-estimate Jacobians should be used (enable for good consistency)." Default value: true ( bool ).

+ +

Definition at line 666 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSUseFEJ()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSUseFEJ ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/UseFEJ : true .

+ +

Definition at line 666 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSUseFEJ()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSUseFEJ ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/UseFEJ , as a string: bool .

+ +

Definition at line 666 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSIntegration()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSIntegration ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/Integration : "0=discrete, 1=rk4, 2=analytical (if rk4 or analytical used then analytical covariance propagation is used)." Default value: 1 ( int ).

+ +

Definition at line 667 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSIntegration()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSIntegration ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/Integration : 1 .

+ +

Definition at line 667 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSIntegration()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSIntegration ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/Integration , as a string: int .

+ +

Definition at line 667 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSCalibCamExtrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSCalibCamExtrinsics ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/CalibCamExtrinsics : "Bool to determine whether or not to calibrate imu-to-camera pose." Default value: false ( bool ).

+ +

Definition at line 668 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSCalibCamExtrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSCalibCamExtrinsics ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/CalibCamExtrinsics : false .

+ +

Definition at line 668 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSCalibCamExtrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSCalibCamExtrinsics ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/CalibCamExtrinsics , as a string: bool .

+ +

Definition at line 668 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSCalibCamIntrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSCalibCamIntrinsics ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/CalibCamIntrinsics : "Bool to determine whether or not to calibrate camera intrinsics." Default value: false ( bool ).

+ +

Definition at line 669 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSCalibCamIntrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSCalibCamIntrinsics ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/CalibCamIntrinsics : false .

+ +

Definition at line 669 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSCalibCamIntrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSCalibCamIntrinsics ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/CalibCamIntrinsics , as a string: bool .

+ +

Definition at line 669 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSCalibCamTimeoffset()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSCalibCamTimeoffset ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/CalibCamTimeoffset : "Bool to determine whether or not to calibrate camera to IMU time offset." Default value: false ( bool ).

+ +

Definition at line 670 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSCalibCamTimeoffset()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSCalibCamTimeoffset ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/CalibCamTimeoffset : false .

+ +

Definition at line 670 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSCalibCamTimeoffset()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSCalibCamTimeoffset ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/CalibCamTimeoffset , as a string: bool .

+ +

Definition at line 670 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSCalibIMUIntrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSCalibIMUIntrinsics ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/CalibIMUIntrinsics : "Bool to determine whether or not to calibrate the IMU intrinsics." Default value: false ( bool ).

+ +

Definition at line 671 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSCalibIMUIntrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSCalibIMUIntrinsics ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/CalibIMUIntrinsics : false .

+ +

Definition at line 671 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSCalibIMUIntrinsics()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSCalibIMUIntrinsics ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/CalibIMUIntrinsics , as a string: bool .

+ +

Definition at line 671 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSCalibIMUGSensitivity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSCalibIMUGSensitivity ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/CalibIMUGSensitivity : "Bool to determine whether or not to calibrate the Gravity sensitivity." Default value: false ( bool ).

+ +

Definition at line 672 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSCalibIMUGSensitivity()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSCalibIMUGSensitivity ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/CalibIMUGSensitivity : false .

+ +

Definition at line 672 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSCalibIMUGSensitivity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSCalibIMUGSensitivity ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/CalibIMUGSensitivity , as a string: bool .

+ +

Definition at line 672 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSMaxClones()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSMaxClones ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/MaxClones : "Max clone size of sliding window." Default value: 11 ( int ).

+ +

Definition at line 673 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSMaxClones()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSMaxClones ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/MaxClones : 11 .

+ +

Definition at line 673 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSMaxClones()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSMaxClones ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/MaxClones , as a string: int .

+ +

Definition at line 673 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSMaxSLAM()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSMaxSLAM ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/MaxSLAM : "Max number of estimated SLAM features." Default value: 50 ( int ).

+ +

Definition at line 674 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSMaxSLAM()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSMaxSLAM ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/MaxSLAM : 50 .

+ +

Definition at line 674 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSMaxSLAM()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSMaxSLAM ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/MaxSLAM , as a string: int .

+ +

Definition at line 674 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSMaxSLAMInUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSMaxSLAMInUpdate ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/MaxSLAMInUpdate : "Max number of SLAM features we allow to be included in a single EKF update.." Default value: 25 ( int ).

+ +

Definition at line 675 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSMaxSLAMInUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSMaxSLAMInUpdate ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/MaxSLAMInUpdate : 25 .

+ +

Definition at line 675 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSMaxSLAMInUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSMaxSLAMInUpdate ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/MaxSLAMInUpdate , as a string: int .

+ +

Definition at line 675 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSMaxMSCKFInUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSMaxMSCKFInUpdate ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/MaxMSCKFInUpdate : "Max number of MSCKF features we will use at a given image timestep.." Default value: 50 ( int ).

+ +

Definition at line 676 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSMaxMSCKFInUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSMaxMSCKFInUpdate ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/MaxMSCKFInUpdate : 50 .

+ +

Definition at line 676 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSMaxMSCKFInUpdate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSMaxMSCKFInUpdate ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/MaxMSCKFInUpdate , as a string: int .

+ +

Definition at line 676 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSFeatRepMSCKF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSFeatRepMSCKF ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/FeatRepMSCKF : "What representation our features are in (msckf features)." Default value: 0 ( int ).

+ +

Definition at line 677 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSFeatRepMSCKF()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSFeatRepMSCKF ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/FeatRepMSCKF : 0 .

+ +

Definition at line 677 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSFeatRepMSCKF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSFeatRepMSCKF ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/FeatRepMSCKF , as a string: int .

+ +

Definition at line 677 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSFeatRepSLAM()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSFeatRepSLAM ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/FeatRepSLAM : "What representation our features are in (slam features)." Default value: 4 ( int ).

+ +

Definition at line 678 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSFeatRepSLAM()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSFeatRepSLAM ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/FeatRepSLAM : 4 .

+ +

Definition at line 678 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSFeatRepSLAM()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSFeatRepSLAM ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/FeatRepSLAM , as a string: int .

+ +

Definition at line 678 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSDtSLAMDelay()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSDtSLAMDelay ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/DtSLAMDelay : "Delay, in seconds, that we should wait from init before we start estimating SLAM features." Default value: 0.0 ( double ).

+ +

Definition at line 679 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSDtSLAMDelay()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSDtSLAMDelay ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/DtSLAMDelay : 0.0 .

+ +

Definition at line 679 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSDtSLAMDelay()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSDtSLAMDelay ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/DtSLAMDelay , as a string: double .

+ +

Definition at line 679 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSGravityMag()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSGravityMag ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/GravityMag : "Gravity magnitude in the global frame (i.e. should be 9.81 typically)." Default value: 9.81 ( double ).

+ +

Definition at line 680 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSGravityMag()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSGravityMag ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/GravityMag : 9.81 .

+ +

Definition at line 680 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSGravityMag()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSGravityMag ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/GravityMag , as a string: double .

+ +

Definition at line 680 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSLeftMaskPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSLeftMaskPath ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/LeftMaskPath : "Mask for left image." Default value: "" (string).

+ +

Definition at line 681 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSLeftMaskPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultOdomOpenVINSLeftMaskPath ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/LeftMaskPath : "" .

+ +

Definition at line 681 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSLeftMaskPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSLeftMaskPath ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/LeftMaskPath , as a string: string.

+ +

Definition at line 681 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSRightMaskPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSRightMaskPath ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/RightMaskPath : "Mask for right image." Default value: "" (string).

+ +

Definition at line 682 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSRightMaskPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultOdomOpenVINSRightMaskPath ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/RightMaskPath : "" .

+ +

Definition at line 682 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSRightMaskPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSRightMaskPath ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/RightMaskPath , as a string: string.

+ +

Definition at line 682 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitWindowTime()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitWindowTime ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitWindowTime : "Amount of time we will initialize over (seconds)." Default value: 2.0 ( double ).

+ +

Definition at line 684 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitWindowTime()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitWindowTime ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitWindowTime : 2.0 .

+ +

Definition at line 684 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitWindowTime()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitWindowTime ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitWindowTime , as a string: double .

+ +

Definition at line 684 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitIMUThresh()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitIMUThresh ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitIMUThresh : "Variance threshold on our acceleration to be classified as moving." Default value: 1.0 ( double ).

+ +

Definition at line 685 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitIMUThresh()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitIMUThresh ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitIMUThresh : 1.0 .

+ +

Definition at line 685 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitIMUThresh()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitIMUThresh ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitIMUThresh , as a string: double .

+ +

Definition at line 685 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitMaxDisparity ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitMaxDisparity : "Max disparity to consider the platform stationary (dependent on resolution)." Default value: 10.0 ( double ).

+ +

Definition at line 686 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitMaxDisparity ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitMaxDisparity : 10.0 .

+ +

Definition at line 686 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitMaxDisparity ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitMaxDisparity , as a string: double .

+ +

Definition at line 686 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitMaxFeatures ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitMaxFeatures : "How many features to track during initialization (saves on computation)." Default value: 50 ( int ).

+ +

Definition at line 687 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSInitMaxFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitMaxFeatures : 50 .

+ +

Definition at line 687 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitMaxFeatures ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitMaxFeatures , as a string: int .

+ +

Definition at line 687 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynUse()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynUse ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynUse : "If dynamic initialization should be used." Default value: false ( bool ).

+ +

Definition at line 688 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynUse()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSInitDynUse ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynUse : false .

+ +

Definition at line 688 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynUse()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynUse ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynUse , as a string: bool .

+ +

Definition at line 688 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynMLEOptCalib()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynMLEOptCalib ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynMLEOptCalib : "If we should optimize calibration during intialization (not recommended)." Default value: false ( bool ).

+ +

Definition at line 689 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynMLEOptCalib()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSInitDynMLEOptCalib ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynMLEOptCalib : false .

+ +

Definition at line 689 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynMLEOptCalib()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynMLEOptCalib ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynMLEOptCalib , as a string: bool .

+ +

Definition at line 689 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynMLEMaxIter()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynMLEMaxIter ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynMLEMaxIter : "How many iterations the MLE refinement should use (zero to skip the MLE)." Default value: 50 ( int ).

+ +

Definition at line 690 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynMLEMaxIter()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSInitDynMLEMaxIter ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynMLEMaxIter : 50 .

+ +

Definition at line 690 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynMLEMaxIter()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynMLEMaxIter ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynMLEMaxIter , as a string: int .

+ +

Definition at line 690 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynMLEMaxTime()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynMLEMaxTime ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynMLEMaxTime : "How many seconds the MLE should be completed in." Default value: 0.05 ( double ).

+ +

Definition at line 691 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynMLEMaxTime()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitDynMLEMaxTime ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynMLEMaxTime : 0.05 .

+ +

Definition at line 691 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynMLEMaxTime()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynMLEMaxTime ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynMLEMaxTime , as a string: double .

+ +

Definition at line 691 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynMLEMaxThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynMLEMaxThreads ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynMLEMaxThreads : "How many threads the MLE should use." Default value: 6 ( int ).

+ +

Definition at line 692 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynMLEMaxThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSInitDynMLEMaxThreads ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynMLEMaxThreads : 6 .

+ +

Definition at line 692 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynMLEMaxThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynMLEMaxThreads ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynMLEMaxThreads , as a string: int .

+ +

Definition at line 692 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynNumPose()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynNumPose ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynNumPose : "Number of poses to use within our window time (evenly spaced)." Default value: 6 ( int ).

+ +

Definition at line 693 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynNumPose()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpenVINSInitDynNumPose ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynNumPose : 6 .

+ +

Definition at line 693 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynNumPose()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynNumPose ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynNumPose , as a string: int .

+ +

Definition at line 693 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynMinDeg()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynMinDeg ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynMinDeg : "Orientation change needed to try to init." Default value: 10.0 ( double ).

+ +

Definition at line 694 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynMinDeg()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitDynMinDeg ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynMinDeg : 10.0 .

+ +

Definition at line 694 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynMinDeg()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynMinDeg ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynMinDeg , as a string: double .

+ +

Definition at line 694 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynInflationOri()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynInflationOri ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynInflationOri : "What to inflate the recovered q_GtoI covariance by." Default value: 10.0 ( double ).

+ +

Definition at line 695 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynInflationOri()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitDynInflationOri ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynInflationOri : 10.0 .

+ +

Definition at line 695 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynInflationOri()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynInflationOri ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynInflationOri , as a string: double .

+ +

Definition at line 695 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynInflationVel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynInflationVel ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynInflationVel : "What to inflate the recovered v_IinG covariance by." Default value: 100.0 ( double ).

+ +

Definition at line 696 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynInflationVel()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitDynInflationVel ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynInflationVel : 100.0 .

+ +

Definition at line 696 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynInflationVel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynInflationVel ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynInflationVel , as a string: double .

+ +

Definition at line 696 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynInflationBg()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynInflationBg ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynInflationBg : "What to inflate the recovered bias_g covariance by." Default value: 10.0 ( double ).

+ +

Definition at line 697 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynInflationBg()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitDynInflationBg ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynInflationBg : 10.0 .

+ +

Definition at line 697 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynInflationBg()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynInflationBg ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynInflationBg , as a string: double .

+ +

Definition at line 697 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynInflationBa()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynInflationBa ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynInflationBa : "What to inflate the recovered bias_a covariance by." Default value: 100.0 ( double ).

+ +

Definition at line 698 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynInflationBa()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitDynInflationBa ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynInflationBa : 100.0 .

+ +

Definition at line 698 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynInflationBa()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynInflationBa ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynInflationBa , as a string: double .

+ +

Definition at line 698 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSInitDynMinRecCond()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSInitDynMinRecCond ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/InitDynMinRecCond : "Reciprocal condition number thresh for info inversion." Default value: 1e-15 ( double ).

+ +

Definition at line 699 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSInitDynMinRecCond()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSInitDynMinRecCond ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/InitDynMinRecCond : 1e-15 .

+ +

Definition at line 699 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSInitDynMinRecCond()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSInitDynMinRecCond ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/InitDynMinRecCond , as a string: double .

+ +

Definition at line 699 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSTryZUPT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSTryZUPT ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/TryZUPT : "If we should try to use zero velocity update." Default value: true ( bool ).

+ +

Definition at line 701 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSTryZUPT()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSTryZUPT ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/TryZUPT : true .

+ +

Definition at line 701 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSTryZUPT()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSTryZUPT ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/TryZUPT , as a string: bool .

+ +

Definition at line 701 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSZUPTChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSZUPTChi2Multiplier ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/ZUPTChi2Multiplier : "Chi2 multiplier for zero velocity." Default value: 0.0 ( double ).

+ +

Definition at line 702 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSZUPTChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSZUPTChi2Multiplier ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/ZUPTChi2Multiplier : 0.0 .

+ +

Definition at line 702 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSZUPTChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSZUPTChi2Multiplier ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/ZUPTChi2Multiplier , as a string: double .

+ +

Definition at line 702 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSZUPTMaxVelodicy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSZUPTMaxVelodicy ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/ZUPTMaxVelodicy : "Max velocity we will consider to try to do a zupt (i.e. if above this, don't do zupt)." Default value: 0.1 ( double ).

+ +

Definition at line 703 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSZUPTMaxVelodicy()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSZUPTMaxVelodicy ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/ZUPTMaxVelodicy : 0.1 .

+ +

Definition at line 703 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSZUPTMaxVelodicy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSZUPTMaxVelodicy ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/ZUPTMaxVelodicy , as a string: double .

+ +

Definition at line 703 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSZUPTNoiseMultiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSZUPTNoiseMultiplier ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/ZUPTNoiseMultiplier : "Multiplier of our zupt measurement IMU noise matrix (default should be 1.0)." Default value: 10.0 ( double ).

+ +

Definition at line 704 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSZUPTNoiseMultiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSZUPTNoiseMultiplier ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/ZUPTNoiseMultiplier : 10.0 .

+ +

Definition at line 704 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSZUPTNoiseMultiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSZUPTNoiseMultiplier ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/ZUPTNoiseMultiplier , as a string: double .

+ +

Definition at line 704 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSZUPTMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSZUPTMaxDisparity ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/ZUPTMaxDisparity : "Max disparity we will consider to try to do a zupt (i.e. if above this, don't do zupt)." Default value: 0.5 ( double ).

+ +

Definition at line 705 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSZUPTMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSZUPTMaxDisparity ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/ZUPTMaxDisparity : 0.5 .

+ +

Definition at line 705 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSZUPTMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSZUPTMaxDisparity ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/ZUPTMaxDisparity , as a string: double .

+ +

Definition at line 705 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSZUPTOnlyAtBeginning()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSZUPTOnlyAtBeginning ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/ZUPTOnlyAtBeginning : "If we should only use the zupt at the very beginning static initialization phase." Default value: false ( bool ).

+ +

Definition at line 706 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSZUPTOnlyAtBeginning()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultOdomOpenVINSZUPTOnlyAtBeginning ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/ZUPTOnlyAtBeginning : false .

+ +

Definition at line 706 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSZUPTOnlyAtBeginning()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSZUPTOnlyAtBeginning ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/ZUPTOnlyAtBeginning , as a string: bool .

+ +

Definition at line 706 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSAccelerometerNoiseDensity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSAccelerometerNoiseDensity ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/AccelerometerNoiseDensity : "[m/s^2/sqrt(Hz)] (accel \"white noise\")." Default value: 0.01 ( double ).

+ +

Definition at line 708 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSAccelerometerNoiseDensity()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSAccelerometerNoiseDensity ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/AccelerometerNoiseDensity : 0.01 .

+ +

Definition at line 708 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSAccelerometerNoiseDensity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSAccelerometerNoiseDensity ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/AccelerometerNoiseDensity , as a string: double .

+ +

Definition at line 708 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSAccelerometerRandomWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSAccelerometerRandomWalk ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/AccelerometerRandomWalk : "[m/s^3/sqrt(Hz)] (accel bias diffusion)." Default value: 0.001 ( double ).

+ +

Definition at line 709 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSAccelerometerRandomWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSAccelerometerRandomWalk ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/AccelerometerRandomWalk : 0.001 .

+ +

Definition at line 709 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSAccelerometerRandomWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSAccelerometerRandomWalk ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/AccelerometerRandomWalk , as a string: double .

+ +

Definition at line 709 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSGyroscopeNoiseDensity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSGyroscopeNoiseDensity ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/GyroscopeNoiseDensity : "[rad/s/sqrt(Hz)] (gyro \"white noise\")." Default value: 0.001 ( double ).

+ +

Definition at line 710 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSGyroscopeNoiseDensity()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSGyroscopeNoiseDensity ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/GyroscopeNoiseDensity : 0.001 .

+ +

Definition at line 710 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSGyroscopeNoiseDensity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSGyroscopeNoiseDensity ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/GyroscopeNoiseDensity , as a string: double .

+ +

Definition at line 710 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSGyroscopeRandomWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSGyroscopeRandomWalk ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/GyroscopeRandomWalk : "[rad/s^2/sqrt(Hz)] (gyro bias diffusion)." Default value: 0.0001 ( double ).

+ +

Definition at line 711 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSGyroscopeRandomWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSGyroscopeRandomWalk ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/GyroscopeRandomWalk : 0.0001 .

+ +

Definition at line 711 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSGyroscopeRandomWalk()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSGyroscopeRandomWalk ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/GyroscopeRandomWalk , as a string: double .

+ +

Definition at line 711 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSUpMSCKFSigmaPx()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSUpMSCKFSigmaPx ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/UpMSCKFSigmaPx : "Pixel noise for MSCKF features." Default value: 1.0 ( double ).

+ +

Definition at line 712 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSUpMSCKFSigmaPx()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSUpMSCKFSigmaPx ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/UpMSCKFSigmaPx : 1.0 .

+ +

Definition at line 712 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSUpMSCKFSigmaPx()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSUpMSCKFSigmaPx ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/UpMSCKFSigmaPx , as a string: double .

+ +

Definition at line 712 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSUpMSCKFChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSUpMSCKFChi2Multiplier ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/UpMSCKFChi2Multiplier : "Chi2 multiplier for MSCKF features." Default value: 1.0 ( double ).

+ +

Definition at line 713 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSUpMSCKFChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSUpMSCKFChi2Multiplier ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/UpMSCKFChi2Multiplier : 1.0 .

+ +

Definition at line 713 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSUpMSCKFChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSUpMSCKFChi2Multiplier ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/UpMSCKFChi2Multiplier , as a string: double .

+ +

Definition at line 713 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSUpSLAMSigmaPx()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSUpSLAMSigmaPx ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/UpSLAMSigmaPx : "Pixel noise for SLAM features." Default value: 1.0 ( double ).

+ +

Definition at line 714 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSUpSLAMSigmaPx()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSUpSLAMSigmaPx ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/UpSLAMSigmaPx : 1.0 .

+ +

Definition at line 714 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSUpSLAMSigmaPx()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSUpSLAMSigmaPx ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/UpSLAMSigmaPx , as a string: double .

+ +

Definition at line 714 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpenVINSUpSLAMChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpenVINSUpSLAMChi2Multiplier ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpenVINS/UpSLAMChi2Multiplier : "Chi2 multiplier for SLAM features." Default value: 1.0 ( double ).

+ +

Definition at line 715 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpenVINSUpSLAMChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultOdomOpenVINSUpSLAMChi2Multiplier ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpenVINS/UpSLAMChi2Multiplier : 1.0 .

+ +

Definition at line 715 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpenVINSUpSLAMChi2Multiplier()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpenVINSUpSLAMChi2Multiplier ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpenVINS/UpSLAMChi2Multiplier , as a string: double .

+ +

Definition at line 715 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpen3DMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpen3DMaxDepth ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpen3D/MaxDepth : "Maximum depth." Default value: 3.0 ( float ).

+ +

Definition at line 718 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpen3DMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomOpen3DMaxDepth ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpen3D/MaxDepth : 3.0 .

+ +

Definition at line 718 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpen3DMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpen3DMaxDepth ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpen3D/MaxDepth , as a string: float .

+ +

Definition at line 718 of file Parameters.h.

+ +
+
+ +

◆ kOdomOpen3DMethod()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomOpen3DMethod ()
+
+inlinestatic
+
+ +

Key of parameter OdomOpen3D/Method : "Registration method: 0=PointToPlane, 1=Intensity, 2=Hybrid." Default value: 0 ( int ).

+ +

Definition at line 719 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomOpen3DMethod()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomOpen3DMethod ()
+
+inlinestatic
+
+ +

Default value of parameter OdomOpen3D/Method : 0 .

+ +

Definition at line 719 of file Parameters.h.

+ +
+
+ +

◆ typeOdomOpen3DMethod()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomOpen3DMethod ()
+
+inlinestatic
+
+ +

Type of parameter OdomOpen3D/Method , as a string: int .

+ +

Definition at line 719 of file Parameters.h.

+ +
+
+ +

◆ kOdomCuVSLAMMulticamMode()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomCuVSLAMMulticamMode ()
+
+inlinestatic
+
+ +

Key of parameter OdomCuVSLAM/MulticamMode : "cuVSLAM multicam_mode setting: 0=moderate, 1=performance, 2=precision." Default value: 0 ( int ).

+ +

Definition at line 722 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomCuVSLAMMulticamMode()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomCuVSLAMMulticamMode ()
+
+inlinestatic
+
+ +

Default value of parameter OdomCuVSLAM/MulticamMode : 0 .

+ +

Definition at line 722 of file Parameters.h.

+ +
+
+ +

◆ typeOdomCuVSLAMMulticamMode()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomCuVSLAMMulticamMode ()
+
+inlinestatic
+
+ +

Type of parameter OdomCuVSLAM/MulticamMode , as a string: int .

+ +

Definition at line 722 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMConfigPath ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/ConfigPath : "Path to LIO-SAM params.yaml config file. When set, sensor/IMU/feature parameters are loaded from the file and the individual parameters below are ignored." Default value: "" (string).

+ +

Definition at line 725 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultOdomLIOSAMConfigPath ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/ConfigPath : "" .

+ +

Definition at line 725 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMConfigPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMConfigPath ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/ConfigPath , as a string: string.

+ +

Definition at line 725 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMSensor ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/Sensor : "LiDAR sensor: 0=Velodyne, 1=Ouster, 2=Livox" Default value: 0 ( int ).

+ +

Definition at line 726 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomLIOSAMSensor ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/Sensor : 0 .

+ +

Definition at line 726 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMSensor ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/Sensor , as a string: int .

+ +

Definition at line 726 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMNScan()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMNScan ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/NScan : "Number of LiDAR channels (16, 32, 64, 128)." Default value: 16 ( int ).

+ +

Definition at line 727 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMNScan()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomLIOSAMNScan ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/NScan : 16 .

+ +

Definition at line 727 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMNScan()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMNScan ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/NScan , as a string: int .

+ +

Definition at line 727 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMHorizonScan()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMHorizonScan ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/HorizonScan : "Horizontal resolution (Velodyne:1800, Ouster:512/1024/2048)." Default value: 1800 ( int ).

+ +

Definition at line 728 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMHorizonScan()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultOdomLIOSAMHorizonScan ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/HorizonScan : 1800 .

+ +

Definition at line 728 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMHorizonScan()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMHorizonScan ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/HorizonScan , as a string: int .

+ +

Definition at line 728 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMImuAccNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMImuAccNoise ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/ImuAccNoise : "IMU accelerometer white noise." Default value: 0.01 ( float ).

+ +

Definition at line 729 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMImuAccNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMImuAccNoise ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/ImuAccNoise : 0.01 .

+ +

Definition at line 729 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMImuAccNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMImuAccNoise ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/ImuAccNoise , as a string: float .

+ +

Definition at line 729 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMImuGyrNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMImuGyrNoise ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/ImuGyrNoise : "IMU gyroscope white noise." Default value: 0.001 ( float ).

+ +

Definition at line 730 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMImuGyrNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMImuGyrNoise ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/ImuGyrNoise : 0.001 .

+ +

Definition at line 730 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMImuGyrNoise()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMImuGyrNoise ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/ImuGyrNoise , as a string: float .

+ +

Definition at line 730 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMImuAccBiasN()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMImuAccBiasN ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/ImuAccBiasN : "IMU accelerometer bias noise." Default value: 0.0002 ( float ).

+ +

Definition at line 731 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMImuAccBiasN()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMImuAccBiasN ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/ImuAccBiasN : 0.0002 .

+ +

Definition at line 731 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMImuAccBiasN()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMImuAccBiasN ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/ImuAccBiasN , as a string: float .

+ +

Definition at line 731 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMImuGyrBiasN()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMImuGyrBiasN ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/ImuGyrBiasN : "IMU gyroscope bias noise." Default value: 0.00003 ( float ).

+ +

Definition at line 732 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMImuGyrBiasN()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMImuGyrBiasN ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/ImuGyrBiasN : 0.00003 .

+ +

Definition at line 732 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMImuGyrBiasN()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMImuGyrBiasN ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/ImuGyrBiasN , as a string: float .

+ +

Definition at line 732 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMImuGravity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMImuGravity ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/ImuGravity : "Gravity magnitude." Default value: 9.80511 ( float ).

+ +

Definition at line 733 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMImuGravity()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMImuGravity ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/ImuGravity : 9.80511 .

+ +

Definition at line 733 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMImuGravity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMImuGravity ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/ImuGravity , as a string: float .

+ +

Definition at line 733 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMEdgeThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/EdgeThreshold : "Edge feature curvature threshold." Default value: 1.0 ( float ).

+ +

Definition at line 734 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMEdgeThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/EdgeThreshold : 1.0 .

+ +

Definition at line 734 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMEdgeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMEdgeThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/EdgeThreshold , as a string: float .

+ +

Definition at line 734 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMSurfThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMSurfThreshold ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/SurfThreshold : "Surface feature curvature threshold." Default value: 0.1 ( float ).

+ +

Definition at line 735 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMSurfThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMSurfThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/SurfThreshold : 0.1 .

+ +

Definition at line 735 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMSurfThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMSurfThreshold ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/SurfThreshold , as a string: float .

+ +

Definition at line 735 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMLinVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMLinVar ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/LinVar : "Linear output variance." Default value: 0.01 ( float ).

+ +

Definition at line 736 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMLinVar()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMLinVar ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/LinVar : 0.01 .

+ +

Definition at line 736 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMLinVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMLinVar ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/LinVar , as a string: float .

+ +

Definition at line 736 of file Parameters.h.

+ +
+
+ +

◆ kOdomLIOSAMAngVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kOdomLIOSAMAngVar ()
+
+inlinestatic
+
+ +

Key of parameter OdomLIOSAM/AngVar : "Angular output variance." Default value: 0.01 ( float ).

+ +

Definition at line 737 of file Parameters.h.

+ +
+
+ +

◆ defaultOdomLIOSAMAngVar()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultOdomLIOSAMAngVar ()
+
+inlinestatic
+
+ +

Default value of parameter OdomLIOSAM/AngVar : 0.01 .

+ +

Definition at line 737 of file Parameters.h.

+ +
+
+ +

◆ typeOdomLIOSAMAngVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeOdomLIOSAMAngVar ()
+
+inlinestatic
+
+ +

Type of parameter OdomLIOSAM/AngVar , as a string: float .

+ +

Definition at line 737 of file Parameters.h.

+ +
+
+ +

◆ kRegRepeatOnce()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRegRepeatOnce ()
+
+inlinestatic
+
+ +

Key of parameter Reg/RepeatOnce : "Do a second registration with the output of the first registration as guess. Only done if no guess was provided for the first registration (like on loop closure). It can be useful if the registration approach used can use a guess to get better matches." Default value: true ( bool ).

+ +

Definition at line 740 of file Parameters.h.

+ +
+
+ +

◆ defaultRegRepeatOnce()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRegRepeatOnce ()
+
+inlinestatic
+
+ +

Default value of parameter Reg/RepeatOnce : true .

+ +

Definition at line 740 of file Parameters.h.

+ +
+
+ +

◆ typeRegRepeatOnce()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRegRepeatOnce ()
+
+inlinestatic
+
+ +

Type of parameter Reg/RepeatOnce , as a string: bool .

+ +

Definition at line 740 of file Parameters.h.

+ +
+
+ +

◆ kRegStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRegStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Reg/Strategy : "0=Vis, 1=Icp, 2=VisIcp" Default value: 0 ( int ).

+ +

Definition at line 741 of file Parameters.h.

+ +
+
+ +

◆ defaultRegStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultRegStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Reg/Strategy : 0 .

+ +

Definition at line 741 of file Parameters.h.

+ +
+
+ +

◆ typeRegStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRegStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Reg/Strategy , as a string: int .

+ +

Definition at line 741 of file Parameters.h.

+ +
+
+ +

◆ kRegForce3DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kRegForce3DoF ()
+
+inlinestatic
+
+ +

Key of parameter Reg/Force3DoF : "Force 3 degrees-of-freedom transform (3Dof: x,y and yaw). Parameters z, roll and pitch will be set to 0." Default value: false ( bool ).

+ +

Definition at line 742 of file Parameters.h.

+ +
+
+ +

◆ defaultRegForce3DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultRegForce3DoF ()
+
+inlinestatic
+
+ +

Default value of parameter Reg/Force3DoF : false .

+ +

Definition at line 742 of file Parameters.h.

+ +
+
+ +

◆ typeRegForce3DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeRegForce3DoF ()
+
+inlinestatic
+
+ +

Type of parameter Reg/Force3DoF , as a string: bool .

+ +

Definition at line 742 of file Parameters.h.

+ +
+
+ +

◆ kVisEstimationType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisEstimationType ()
+
+inlinestatic
+
+ +

Key of parameter Vis/EstimationType : "Motion estimation approach: 0:3D->3D, 1:3D->2D (PnP), 2:2D->2D (Epipolar Geometry)" Default value: 1 ( int ).

+ +

Definition at line 745 of file Parameters.h.

+ +
+
+ +

◆ defaultVisEstimationType()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisEstimationType ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/EstimationType : 1 .

+ +

Definition at line 745 of file Parameters.h.

+ +
+
+ +

◆ typeVisEstimationType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisEstimationType ()
+
+inlinestatic
+
+ +

Type of parameter Vis/EstimationType , as a string: int .

+ +

Definition at line 745 of file Parameters.h.

+ +
+
+ +

◆ kVisInlierDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisInlierDistance ()
+
+inlinestatic
+
+ +

Key of parameter Vis/InlierDistance : uFormat("[%s = 0] Maximum distance for feature correspondences. Used by 3D->3D estimation approach.", kVisEstimationType().c_str()) Default value: 0.1 ( float ).

+ +

Definition at line 746 of file Parameters.h.

+ +
+
+ +

◆ defaultVisInlierDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisInlierDistance ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/InlierDistance : 0.1 .

+ +

Definition at line 746 of file Parameters.h.

+ +
+
+ +

◆ typeVisInlierDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisInlierDistance ()
+
+inlinestatic
+
+ +

Type of parameter Vis/InlierDistance , as a string: float .

+ +

Definition at line 746 of file Parameters.h.

+ +
+
+ +

◆ kVisRefineIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisRefineIterations ()
+
+inlinestatic
+
+ +

Key of parameter Vis/RefineIterations : uFormat("[%s = 0] Number of iterations used to refine the transformation found by RANSAC. 0 means that the transformation is not refined.", kVisEstimationType().c_str()) Default value: 5 ( int ).

+ +

Definition at line 747 of file Parameters.h.

+ +
+
+ +

◆ defaultVisRefineIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisRefineIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/RefineIterations : 5 .

+ +

Definition at line 747 of file Parameters.h.

+ +
+
+ +

◆ typeVisRefineIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisRefineIterations ()
+
+inlinestatic
+
+ +

Type of parameter Vis/RefineIterations , as a string: int .

+ +

Definition at line 747 of file Parameters.h.

+ +
+
+ +

◆ kVisPnPReprojError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisPnPReprojError ()
+
+inlinestatic
+
+ +

Key of parameter Vis/PnPReprojError : uFormat("[%s = 1] PnP reprojection error.", kVisEstimationType().c_str()) Default value: 2 ( float ).

+ +

Definition at line 748 of file Parameters.h.

+ +
+
+ +

◆ defaultVisPnPReprojError()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisPnPReprojError ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/PnPReprojError : 2 .

+ +

Definition at line 748 of file Parameters.h.

+ +
+
+ +

◆ typeVisPnPReprojError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisPnPReprojError ()
+
+inlinestatic
+
+ +

Type of parameter Vis/PnPReprojError , as a string: float .

+ +

Definition at line 748 of file Parameters.h.

+ +
+
+ +

◆ kVisPnPFlags()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisPnPFlags ()
+
+inlinestatic
+
+ +

Key of parameter Vis/PnPFlags : uFormat("[%s = 1] PnP flags: 0=Iterative, 1=EPNP, 2=P3P", kVisEstimationType().c_str()) Default value: 0 ( int ).

+ +

Definition at line 749 of file Parameters.h.

+ +
+
+ +

◆ defaultVisPnPFlags()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisPnPFlags ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/PnPFlags : 0 .

+ +

Definition at line 749 of file Parameters.h.

+ +
+
+ +

◆ typeVisPnPFlags()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisPnPFlags ()
+
+inlinestatic
+
+ +

Type of parameter Vis/PnPFlags , as a string: int .

+ +

Definition at line 749 of file Parameters.h.

+ +
+
+ +

◆ kVisPnPRefineIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisPnPRefineIterations ()
+
+inlinestatic
+
+ +

Key of parameter Vis/PnPRefineIterations : uFormat("[%s = 1] Refine iterations. Set to 0 if \"%s\" is also used.", kVisEstimationType().c_str(), kVisBundleAdjustment().c_str()) Default value: 1 ( int ).

+ +

Definition at line 753 of file Parameters.h.

+ +
+
+ +

◆ defaultVisPnPRefineIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisPnPRefineIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/PnPRefineIterations : 1 .

+ +

Definition at line 753 of file Parameters.h.

+ +
+
+ +

◆ typeVisPnPRefineIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisPnPRefineIterations ()
+
+inlinestatic
+
+ +

Type of parameter Vis/PnPRefineIterations , as a string: int .

+ +

Definition at line 753 of file Parameters.h.

+ +
+
+ +

◆ kVisPnPVarianceMedianRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisPnPVarianceMedianRatio ()
+
+inlinestatic
+
+ +

Key of parameter Vis/PnPVarianceMedianRatio : uFormat("[%s = 1] Ratio used to compute variance of the estimated transformation if 3D correspondences are provided (should be > 1). The higher it is, the smaller the covariance will be. With accurate depth estimation, this could be set to 2. For depth estimated by stereo, 4 or more maybe used to ignore large errors of very far points.", kVisEstimationType().c_str()) Default value: 4 ( int ).

+ +

Definition at line 755 of file Parameters.h.

+ +
+
+ +

◆ defaultVisPnPVarianceMedianRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisPnPVarianceMedianRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/PnPVarianceMedianRatio : 4 .

+ +

Definition at line 755 of file Parameters.h.

+ +
+
+ +

◆ typeVisPnPVarianceMedianRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisPnPVarianceMedianRatio ()
+
+inlinestatic
+
+ +

Type of parameter Vis/PnPVarianceMedianRatio , as a string: int .

+ +

Definition at line 755 of file Parameters.h.

+ +
+
+ +

◆ kVisPnPMaxVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisPnPMaxVariance ()
+
+inlinestatic
+
+ +

Key of parameter Vis/PnPMaxVariance : uFormat("[%s = 1] Max linear variance between 3D point correspondences after PnP. 0 means disabled.", kVisEstimationType().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 756 of file Parameters.h.

+ +
+
+ +

◆ defaultVisPnPMaxVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisPnPMaxVariance ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/PnPMaxVariance : 0.0 .

+ +

Definition at line 756 of file Parameters.h.

+ +
+
+ +

◆ typeVisPnPMaxVariance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisPnPMaxVariance ()
+
+inlinestatic
+
+ +

Type of parameter Vis/PnPMaxVariance , as a string: float .

+ +

Definition at line 756 of file Parameters.h.

+ +
+
+ +

◆ kVisPnPSamplingPolicy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisPnPSamplingPolicy ()
+
+inlinestatic
+
+ +

Key of parameter Vis/PnPSamplingPolicy : uFormat("[%s = 1] Multi-camera random sampling policy: 0=AUTO, 1=ANY, 2=HOMOGENEOUS. With HOMOGENEOUS policy, RANSAC will be done uniformly against all cameras, so at least 2 matches per camera are required. With ANY policy, RANSAC is not constraint to sample on all cameras at the same time. AUTO policy will use HOMOGENEOUS if there are at least 2 matches per camera, otherwise it will fallback to ANY policy.", kVisEstimationType().c_str()).c_str() Default value: 1 ( unsigned int ).

+ +

Definition at line 757 of file Parameters.h.

+ +
+
+ +

◆ defaultVisPnPSamplingPolicy()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultVisPnPSamplingPolicy ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/PnPSamplingPolicy : 1 .

+ +

Definition at line 757 of file Parameters.h.

+ +
+
+ +

◆ typeVisPnPSamplingPolicy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisPnPSamplingPolicy ()
+
+inlinestatic
+
+ +

Type of parameter Vis/PnPSamplingPolicy , as a string: unsigned int .

+ +

Definition at line 757 of file Parameters.h.

+ +
+
+ +

◆ kVisPnPSplitLinearCovComponents()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisPnPSplitLinearCovComponents ()
+
+inlinestatic
+
+ +

Key of parameter Vis/PnPSplitLinearCovComponents : uFormat("[%s = 1] Compute variance for each linear component instead of using the combined XYZ variance for all linear components.", kVisEstimationType().c_str()).c_str() Default value: false ( bool ).

+ +

Definition at line 758 of file Parameters.h.

+ +
+
+ +

◆ defaultVisPnPSplitLinearCovComponents()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultVisPnPSplitLinearCovComponents ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/PnPSplitLinearCovComponents : false .

+ +

Definition at line 758 of file Parameters.h.

+ +
+
+ +

◆ typeVisPnPSplitLinearCovComponents()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisPnPSplitLinearCovComponents ()
+
+inlinestatic
+
+ +

Type of parameter Vis/PnPSplitLinearCovComponents , as a string: bool .

+ +

Definition at line 758 of file Parameters.h.

+ +
+
+ +

◆ kVisEpipolarGeometryVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisEpipolarGeometryVar ()
+
+inlinestatic
+
+ +

Key of parameter Vis/EpipolarGeometryVar : uFormat("[%s = 2] Epipolar geometry maximum variance to accept the transformation.", kVisEstimationType().c_str()) Default value: 0.1 ( float ).

+ +

Definition at line 760 of file Parameters.h.

+ +
+
+ +

◆ defaultVisEpipolarGeometryVar()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisEpipolarGeometryVar ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/EpipolarGeometryVar : 0.1 .

+ +

Definition at line 760 of file Parameters.h.

+ +
+
+ +

◆ typeVisEpipolarGeometryVar()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisEpipolarGeometryVar ()
+
+inlinestatic
+
+ +

Type of parameter Vis/EpipolarGeometryVar , as a string: float .

+ +

Definition at line 760 of file Parameters.h.

+ +
+
+ +

◆ kVisMinInliers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisMinInliers ()
+
+inlinestatic
+
+ +

Key of parameter Vis/MinInliers : "Minimum feature correspondences to compute/accept the transformation." Default value: 20 ( int ).

+ +

Definition at line 761 of file Parameters.h.

+ +
+
+ +

◆ defaultVisMinInliers()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisMinInliers ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/MinInliers : 20 .

+ +

Definition at line 761 of file Parameters.h.

+ +
+
+ +

◆ typeVisMinInliers()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisMinInliers ()
+
+inlinestatic
+
+ +

Type of parameter Vis/MinInliers , as a string: int .

+ +

Definition at line 761 of file Parameters.h.

+ +
+
+ +

◆ kVisMeanInliersDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisMeanInliersDistance ()
+
+inlinestatic
+
+ +

Key of parameter Vis/MeanInliersDistance : "Maximum distance (m) of the mean distance of inliers from the camera to accept the transformation. 0 means disabled." Default value: 0.0 ( float ).

+ +

Definition at line 762 of file Parameters.h.

+ +
+
+ +

◆ defaultVisMeanInliersDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisMeanInliersDistance ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/MeanInliersDistance : 0.0 .

+ +

Definition at line 762 of file Parameters.h.

+ +
+
+ +

◆ typeVisMeanInliersDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisMeanInliersDistance ()
+
+inlinestatic
+
+ +

Type of parameter Vis/MeanInliersDistance , as a string: float .

+ +

Definition at line 762 of file Parameters.h.

+ +
+
+ +

◆ kVisMinInliersDistribution()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisMinInliersDistribution ()
+
+inlinestatic
+
+ +

Key of parameter Vis/MinInliersDistribution : "Minimum distribution value of the inliers in the image to accept the transformation. The distribution is the second eigen value of the PCA (Principal Component Analysis) on the keypoints of the normalized image [-0.5, 0.5]. The value would be between 0 and 0.5. 0 means disabled." Default value: 0.0 ( float ).

+ +

Definition at line 763 of file Parameters.h.

+ +
+
+ +

◆ defaultVisMinInliersDistribution()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisMinInliersDistribution ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/MinInliersDistribution : 0.0 .

+ +

Definition at line 763 of file Parameters.h.

+ +
+
+ +

◆ typeVisMinInliersDistribution()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisMinInliersDistribution ()
+
+inlinestatic
+
+ +

Type of parameter Vis/MinInliersDistribution , as a string: float .

+ +

Definition at line 763 of file Parameters.h.

+ +
+
+ +

◆ kVisIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisIterations ()
+
+inlinestatic
+
+ +

Key of parameter Vis/Iterations : "Maximum iterations to compute the transform." Default value: 300 ( int ).

+ +

Definition at line 765 of file Parameters.h.

+ +
+
+ +

◆ defaultVisIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/Iterations : 300 .

+ +

Definition at line 765 of file Parameters.h.

+ +
+
+ +

◆ typeVisIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisIterations ()
+
+inlinestatic
+
+ +

Type of parameter Vis/Iterations , as a string: int .

+ +

Definition at line 765 of file Parameters.h.

+ +
+
+ +

◆ kVisFeatureType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisFeatureType ()
+
+inlinestatic
+
+ +

Key of parameter Vis/FeatureType : "0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat" Default value: 6 ( int ).

+ +

Definition at line 770 of file Parameters.h.

+ +
+
+ +

◆ defaultVisFeatureType()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisFeatureType ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/FeatureType : 6 .

+ +

Definition at line 770 of file Parameters.h.

+ +
+
+ +

◆ typeVisFeatureType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisFeatureType ()
+
+inlinestatic
+
+ +

Type of parameter Vis/FeatureType , as a string: int .

+ +

Definition at line 770 of file Parameters.h.

+ +
+
+ +

◆ kVisMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisMaxFeatures ()
+
+inlinestatic
+
+ +

Key of parameter Vis/MaxFeatures : "0 no limits." Default value: 1000 ( int ).

+ +

Definition at line 772 of file Parameters.h.

+ +
+
+ +

◆ defaultVisMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisMaxFeatures ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/MaxFeatures : 1000 .

+ +

Definition at line 772 of file Parameters.h.

+ +
+
+ +

◆ typeVisMaxFeatures()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisMaxFeatures ()
+
+inlinestatic
+
+ +

Type of parameter Vis/MaxFeatures , as a string: int .

+ +

Definition at line 772 of file Parameters.h.

+ +
+
+ +

◆ kVisSSC()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisSSC ()
+
+inlinestatic
+
+ +

Key of parameter Vis/SSC : "If true, SSC (Suppression via Square Covering) is applied to limit keypoints." Default value: false ( bool ).

+ +

Definition at line 773 of file Parameters.h.

+ +
+
+ +

◆ defaultVisSSC()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultVisSSC ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/SSC : false .

+ +

Definition at line 773 of file Parameters.h.

+ +
+
+ +

◆ typeVisSSC()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisSSC ()
+
+inlinestatic
+
+ +

Type of parameter Vis/SSC , as a string: bool .

+ +

Definition at line 773 of file Parameters.h.

+ +
+
+ +

◆ kVisMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisMaxDepth ()
+
+inlinestatic
+
+ +

Key of parameter Vis/MaxDepth : "Max depth of the features (0 means no limit)." Default value: 0 ( float ).

+ +

Definition at line 774 of file Parameters.h.

+ +
+
+ +

◆ defaultVisMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisMaxDepth ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/MaxDepth : 0 .

+ +

Definition at line 774 of file Parameters.h.

+ +
+
+ +

◆ typeVisMaxDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisMaxDepth ()
+
+inlinestatic
+
+ +

Type of parameter Vis/MaxDepth , as a string: float .

+ +

Definition at line 774 of file Parameters.h.

+ +
+
+ +

◆ kVisMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisMinDepth ()
+
+inlinestatic
+
+ +

Key of parameter Vis/MinDepth : "Min depth of the features (0 means no limit)." Default value: 0 ( float ).

+ +

Definition at line 775 of file Parameters.h.

+ +
+
+ +

◆ defaultVisMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisMinDepth ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/MinDepth : 0 .

+ +

Definition at line 775 of file Parameters.h.

+ +
+
+ +

◆ typeVisMinDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisMinDepth ()
+
+inlinestatic
+
+ +

Type of parameter Vis/MinDepth , as a string: float .

+ +

Definition at line 775 of file Parameters.h.

+ +
+
+ +

◆ kVisDepthAsMask()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisDepthAsMask ()
+
+inlinestatic
+
+ +

Key of parameter Vis/DepthAsMask : "Use depth image as mask when extracting features." Default value: true ( bool ).

+ +

Definition at line 776 of file Parameters.h.

+ +
+
+ +

◆ defaultVisDepthAsMask()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultVisDepthAsMask ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/DepthAsMask : true .

+ +

Definition at line 776 of file Parameters.h.

+ +
+
+ +

◆ typeVisDepthAsMask()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisDepthAsMask ()
+
+inlinestatic
+
+ +

Type of parameter Vis/DepthAsMask , as a string: bool .

+ +

Definition at line 776 of file Parameters.h.

+ +
+
+ +

◆ kVisDepthMaskFloorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisDepthMaskFloorThr ()
+
+inlinestatic
+
+ +

Key of parameter Vis/DepthMaskFloorThr : uFormat("Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if %s is false.", kVisDepthAsMask().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 777 of file Parameters.h.

+ +
+
+ +

◆ defaultVisDepthMaskFloorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisDepthMaskFloorThr ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/DepthMaskFloorThr : 0.0 .

+ +

Definition at line 777 of file Parameters.h.

+ +
+
+ +

◆ typeVisDepthMaskFloorThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisDepthMaskFloorThr ()
+
+inlinestatic
+
+ +

Type of parameter Vis/DepthMaskFloorThr , as a string: float .

+ +

Definition at line 777 of file Parameters.h.

+ +
+
+ +

◆ kVisRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisRoiRatios ()
+
+inlinestatic
+
+ +

Key of parameter Vis/RoiRatios : "Region of interest ratios [left, right, top, bottom]." Default value: "0.0 0.0 0.0 0.0" (string).

+ +

Definition at line 778 of file Parameters.h.

+ +
+
+ +

◆ defaultVisRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultVisRoiRatios ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/RoiRatios : "0.0 0.0 0.0 0.0" .

+ +

Definition at line 778 of file Parameters.h.

+ +
+
+ +

◆ typeVisRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisRoiRatios ()
+
+inlinestatic
+
+ +

Type of parameter Vis/RoiRatios , as a string: string.

+ +

Definition at line 778 of file Parameters.h.

+ +
+
+ +

◆ kVisSubPixWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisSubPixWinSize ()
+
+inlinestatic
+
+ +

Key of parameter Vis/SubPixWinSize : "See cv::cornerSubPix()." Default value: 3 ( int ).

+ +

Definition at line 779 of file Parameters.h.

+ +
+
+ +

◆ defaultVisSubPixWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisSubPixWinSize ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/SubPixWinSize : 3 .

+ +

Definition at line 779 of file Parameters.h.

+ +
+
+ +

◆ typeVisSubPixWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisSubPixWinSize ()
+
+inlinestatic
+
+ +

Type of parameter Vis/SubPixWinSize , as a string: int .

+ +

Definition at line 779 of file Parameters.h.

+ +
+
+ +

◆ kVisSubPixIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisSubPixIterations ()
+
+inlinestatic
+
+ +

Key of parameter Vis/SubPixIterations : "See cv::cornerSubPix(). 0 disables sub pixel refining." Default value: 0 ( int ).

+ +

Definition at line 780 of file Parameters.h.

+ +
+
+ +

◆ defaultVisSubPixIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisSubPixIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/SubPixIterations : 0 .

+ +

Definition at line 780 of file Parameters.h.

+ +
+
+ +

◆ typeVisSubPixIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisSubPixIterations ()
+
+inlinestatic
+
+ +

Type of parameter Vis/SubPixIterations , as a string: int .

+ +

Definition at line 780 of file Parameters.h.

+ +
+
+ +

◆ kVisSubPixEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisSubPixEps ()
+
+inlinestatic
+
+ +

Key of parameter Vis/SubPixEps : "See cv::cornerSubPix()." Default value: 0.02 ( float ).

+ +

Definition at line 781 of file Parameters.h.

+ +
+
+ +

◆ defaultVisSubPixEps()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisSubPixEps ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/SubPixEps : 0.02 .

+ +

Definition at line 781 of file Parameters.h.

+ +
+
+ +

◆ typeVisSubPixEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisSubPixEps ()
+
+inlinestatic
+
+ +

Type of parameter Vis/SubPixEps , as a string: float .

+ +

Definition at line 781 of file Parameters.h.

+ +
+
+ +

◆ kVisGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisGridRows ()
+
+inlinestatic
+
+ +

Key of parameter Vis/GridRows : uFormat("Number of rows of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kVisMaxFeatures().c_str()) Default value: 1 ( int ).

+ +

Definition at line 782 of file Parameters.h.

+ +
+
+ +

◆ defaultVisGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisGridRows ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/GridRows : 1 .

+ +

Definition at line 782 of file Parameters.h.

+ +
+
+ +

◆ typeVisGridRows()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisGridRows ()
+
+inlinestatic
+
+ +

Type of parameter Vis/GridRows , as a string: int .

+ +

Definition at line 782 of file Parameters.h.

+ +
+
+ +

◆ kVisGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisGridCols ()
+
+inlinestatic
+
+ +

Key of parameter Vis/GridCols : uFormat("Number of columns of the grid used to extract uniformly \"%s / grid cells\" features from each cell.", kVisMaxFeatures().c_str()) Default value: 1 ( int ).

+ +

Definition at line 783 of file Parameters.h.

+ +
+
+ +

◆ defaultVisGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisGridCols ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/GridCols : 1 .

+ +

Definition at line 783 of file Parameters.h.

+ +
+
+ +

◆ typeVisGridCols()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisGridCols ()
+
+inlinestatic
+
+ +

Type of parameter Vis/GridCols , as a string: int .

+ +

Definition at line 783 of file Parameters.h.

+ +
+
+ +

◆ kVisCorType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorType ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorType : "Correspondences computation approach: 0=Features Matching, 1=Optical Flow" Default value: 0 ( int ).

+ +

Definition at line 784 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorType()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisCorType ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorType : 0 .

+ +

Definition at line 784 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorType ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorType , as a string: int .

+ +

Definition at line 784 of file Parameters.h.

+ +
+
+ +

◆ kVisCorNNType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorNNType ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorNNType : uFormat("[%s=0] FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, Brute Force Cross Check=5, SuperGlue=6, GMS=7, FLANN KdTree Single=8, NanoFLANN KdTree=9. Used for features matching approach.", kVisCorType().c_str()) Default value: 1 ( int ).

+ +

Definition at line 785 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorNNType()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisCorNNType ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorNNType : 1 .

+ +

Definition at line 785 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorNNType()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorNNType ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorNNType , as a string: int .

+ +

Definition at line 785 of file Parameters.h.

+ +
+
+ +

◆ kVisCorNNDR()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorNNDR ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorNNDR : uFormat("[%s=0] NNDR: nearest neighbor distance ratio. Used for knn features matching approach.", kVisCorType().c_str()) Default value: 0.8 ( float ).

+ +

Definition at line 786 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorNNDR()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisCorNNDR ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorNNDR : 0.8 .

+ +

Definition at line 786 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorNNDR()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorNNDR ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorNNDR , as a string: float .

+ +

Definition at line 786 of file Parameters.h.

+ +
+
+ +

◆ kVisCorGuessWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorGuessWinSize ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorGuessWinSize : uFormat("[%s=0] Matching window size (pixels) around projected points when a guess transform is provided to find correspondences. 0 means disabled.", kVisCorType().c_str()) Default value: 40 ( int ).

+ +

Definition at line 787 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorGuessWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisCorGuessWinSize ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorGuessWinSize : 40 .

+ +

Definition at line 787 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorGuessWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorGuessWinSize ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorGuessWinSize , as a string: int .

+ +

Definition at line 787 of file Parameters.h.

+ +
+
+ +

◆ kVisCorGuessMatchToProjection()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorGuessMatchToProjection ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorGuessMatchToProjection : uFormat("[%s=0] Match frame's corners to source's projected points (when guess transform is provided) instead of projected points to frame's corners.", kVisCorType().c_str()) Default value: false ( bool ).

+ +

Definition at line 788 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorGuessMatchToProjection()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultVisCorGuessMatchToProjection ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorGuessMatchToProjection : false .

+ +

Definition at line 788 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorGuessMatchToProjection()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorGuessMatchToProjection ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorGuessMatchToProjection , as a string: bool .

+ +

Definition at line 788 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowWinSize ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowWinSize : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 16 ( int ).

+ +

Definition at line 789 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisCorFlowWinSize ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowWinSize : 16 .

+ +

Definition at line 789 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowWinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowWinSize ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowWinSize , as a string: int .

+ +

Definition at line 789 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowIterations ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowIterations : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 30 ( int ).

+ +

Definition at line 790 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisCorFlowIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowIterations : 30 .

+ +

Definition at line 790 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowIterations ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowIterations , as a string: int .

+ +

Definition at line 790 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowEps ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowEps : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 0.01 ( float ).

+ +

Definition at line 791 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowEps()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisCorFlowEps ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowEps : 0.01 .

+ +

Definition at line 791 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowEps ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowEps , as a string: float .

+ +

Definition at line 791 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowMaxLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowMaxLevel ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowMaxLevel : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.", kVisCorType().c_str()) Default value: 3 ( int ).

+ +

Definition at line 792 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowMaxLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisCorFlowMaxLevel ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowMaxLevel : 3 .

+ +

Definition at line 792 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowMaxLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowMaxLevel ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowMaxLevel , as a string: int .

+ +

Definition at line 792 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowUseMinEigenVals()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowUseMinEigenVals ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowUseMinEigenVals : uFormat("[%s=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach. Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.", kVisCorType().c_str()) Default value: true ( bool ).

+ +

Definition at line 793 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowUseMinEigenVals()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultVisCorFlowUseMinEigenVals ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowUseMinEigenVals : true .

+ +

Definition at line 793 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowUseMinEigenVals()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowUseMinEigenVals ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowUseMinEigenVals , as a string: bool .

+ +

Definition at line 793 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowMinEigThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowMinEigThreshold ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowMinEigThreshold : uFormat("[%s=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.", kVisCorFlowUseMinEigenVals().c_str()) Default value: 1e-4 ( float ).

+ +

Definition at line 794 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowMinEigThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisCorFlowMinEigThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowMinEigThreshold : 1e-4 .

+ +

Definition at line 794 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowMinEigThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowMinEigThreshold ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowMinEigThreshold , as a string: float .

+ +

Definition at line 794 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowErrorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowErrorThreshold ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowErrorThreshold : uFormat("[%s=false] Filter out features with error greater than this threshold.", kVisCorFlowUseMinEigenVals().c_str()) Default value: 20 ( float ).

+ +

Definition at line 795 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowErrorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultVisCorFlowErrorThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowErrorThreshold : 20 .

+ +

Definition at line 795 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowErrorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowErrorThreshold ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowErrorThreshold , as a string: float .

+ +

Definition at line 795 of file Parameters.h.

+ +
+
+ +

◆ kVisCorFlowGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisCorFlowGpu ()
+
+inlinestatic
+
+ +

Key of parameter Vis/CorFlowGpu : uFormat("[%s=1] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that %s is not used in the GPU implementation.", kVisCorType().c_str(), kVisCorFlowUseMinEigenVals().c_str()) Default value: false ( bool ).

+ +

Definition at line 796 of file Parameters.h.

+ +
+
+ +

◆ defaultVisCorFlowGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultVisCorFlowGpu ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/CorFlowGpu : false .

+ +

Definition at line 796 of file Parameters.h.

+ +
+
+ +

◆ typeVisCorFlowGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisCorFlowGpu ()
+
+inlinestatic
+
+ +

Type of parameter Vis/CorFlowGpu , as a string: bool .

+ +

Definition at line 796 of file Parameters.h.

+ +
+
+ +

◆ kVisBundleAdjustment()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kVisBundleAdjustment ()
+
+inlinestatic
+
+ +

Key of parameter Vis/BundleAdjustment : uFormat("Optimization with bundle adjustment. Value matches the %s parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.", kOptimizerStrategy().c_str()) Default value: 0 ( int ).

+ +

Definition at line 800 of file Parameters.h.

+ +
+
+ +

◆ defaultVisBundleAdjustment()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultVisBundleAdjustment ()
+
+inlinestatic
+
+ +

Default value of parameter Vis/BundleAdjustment : 0 .

+ +

Definition at line 800 of file Parameters.h.

+ +
+
+ +

◆ typeVisBundleAdjustment()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeVisBundleAdjustment ()
+
+inlinestatic
+
+ +

Type of parameter Vis/BundleAdjustment , as a string: int .

+ +

Definition at line 800 of file Parameters.h.

+ +
+
+ +

◆ kPyMatcherPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyMatcherPath ()
+
+inlinestatic
+
+ +

Key of parameter PyMatcher/Path : "Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied." Default value: "" (string).

+ +

Definition at line 804 of file Parameters.h.

+ +
+
+ +

◆ defaultPyMatcherPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultPyMatcherPath ()
+
+inlinestatic
+
+ +

Default value of parameter PyMatcher/Path : "" .

+ +

Definition at line 804 of file Parameters.h.

+ +
+
+ +

◆ typePyMatcherPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyMatcherPath ()
+
+inlinestatic
+
+ +

Type of parameter PyMatcher/Path , as a string: string.

+ +

Definition at line 804 of file Parameters.h.

+ +
+
+ +

◆ kPyMatcherIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyMatcherIterations ()
+
+inlinestatic
+
+ +

Key of parameter PyMatcher/Iterations : "Sinkhorn iterations. Used by SuperGlue." Default value: 20 ( int ).

+ +

Definition at line 805 of file Parameters.h.

+ +
+
+ +

◆ defaultPyMatcherIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultPyMatcherIterations ()
+
+inlinestatic
+
+ +

Default value of parameter PyMatcher/Iterations : 20 .

+ +

Definition at line 805 of file Parameters.h.

+ +
+
+ +

◆ typePyMatcherIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyMatcherIterations ()
+
+inlinestatic
+
+ +

Type of parameter PyMatcher/Iterations , as a string: int .

+ +

Definition at line 805 of file Parameters.h.

+ +
+
+ +

◆ kPyMatcherThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyMatcherThreshold ()
+
+inlinestatic
+
+ +

Key of parameter PyMatcher/Threshold : "Used by SuperGlue." Default value: 0.2 ( float ).

+ +

Definition at line 806 of file Parameters.h.

+ +
+
+ +

◆ defaultPyMatcherThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultPyMatcherThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter PyMatcher/Threshold : 0.2 .

+ +

Definition at line 806 of file Parameters.h.

+ +
+
+ +

◆ typePyMatcherThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyMatcherThreshold ()
+
+inlinestatic
+
+ +

Type of parameter PyMatcher/Threshold , as a string: float .

+ +

Definition at line 806 of file Parameters.h.

+ +
+
+ +

◆ kPyMatcherCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyMatcherCuda ()
+
+inlinestatic
+
+ +

Key of parameter PyMatcher/Cuda : "Used by SuperGlue." Default value: true ( bool ).

+ +

Definition at line 807 of file Parameters.h.

+ +
+
+ +

◆ defaultPyMatcherCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultPyMatcherCuda ()
+
+inlinestatic
+
+ +

Default value of parameter PyMatcher/Cuda : true .

+ +

Definition at line 807 of file Parameters.h.

+ +
+
+ +

◆ typePyMatcherCuda()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyMatcherCuda ()
+
+inlinestatic
+
+ +

Type of parameter PyMatcher/Cuda , as a string: bool .

+ +

Definition at line 807 of file Parameters.h.

+ +
+
+ +

◆ kPyMatcherModel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyMatcherModel ()
+
+inlinestatic
+
+ +

Key of parameter PyMatcher/Model : "For SuperGlue, set only \"indoor\" or \"outdoor\". For OANet, set path to one of the pth file (e.g., \"OANet/model/gl3d/sift-4000/model_best.pth\")." Default value: "indoor" (string).

+ +

Definition at line 808 of file Parameters.h.

+ +
+
+ +

◆ defaultPyMatcherModel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultPyMatcherModel ()
+
+inlinestatic
+
+ +

Default value of parameter PyMatcher/Model : "indoor" .

+ +

Definition at line 808 of file Parameters.h.

+ +
+
+ +

◆ typePyMatcherModel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyMatcherModel ()
+
+inlinestatic
+
+ +

Type of parameter PyMatcher/Model , as a string: string.

+ +

Definition at line 808 of file Parameters.h.

+ +
+
+ +

◆ kGMSWithRotation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGMSWithRotation ()
+
+inlinestatic
+
+ +

Key of parameter GMS/WithRotation : "Take rotation transformation into account." Default value: false ( bool ).

+ +

Definition at line 810 of file Parameters.h.

+ +
+
+ +

◆ defaultGMSWithRotation()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGMSWithRotation ()
+
+inlinestatic
+
+ +

Default value of parameter GMS/WithRotation : false .

+ +

Definition at line 810 of file Parameters.h.

+ +
+
+ +

◆ typeGMSWithRotation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGMSWithRotation ()
+
+inlinestatic
+
+ +

Type of parameter GMS/WithRotation , as a string: bool .

+ +

Definition at line 810 of file Parameters.h.

+ +
+
+ +

◆ kGMSWithScale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGMSWithScale ()
+
+inlinestatic
+
+ +

Key of parameter GMS/WithScale : "Take scale transformation into account." Default value: false ( bool ).

+ +

Definition at line 811 of file Parameters.h.

+ +
+
+ +

◆ defaultGMSWithScale()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGMSWithScale ()
+
+inlinestatic
+
+ +

Default value of parameter GMS/WithScale : false .

+ +

Definition at line 811 of file Parameters.h.

+ +
+
+ +

◆ typeGMSWithScale()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGMSWithScale ()
+
+inlinestatic
+
+ +

Type of parameter GMS/WithScale , as a string: bool .

+ +

Definition at line 811 of file Parameters.h.

+ +
+
+ +

◆ kGMSThresholdFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGMSThresholdFactor ()
+
+inlinestatic
+
+ +

Key of parameter GMS/ThresholdFactor : "The higher, the less matches." Default value: 6.0 ( double ).

+ +

Definition at line 812 of file Parameters.h.

+ +
+
+ +

◆ defaultGMSThresholdFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultGMSThresholdFactor ()
+
+inlinestatic
+
+ +

Default value of parameter GMS/ThresholdFactor : 6.0 .

+ +

Definition at line 812 of file Parameters.h.

+ +
+
+ +

◆ typeGMSThresholdFactor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGMSThresholdFactor ()
+
+inlinestatic
+
+ +

Type of parameter GMS/ThresholdFactor , as a string: double .

+ +

Definition at line 812 of file Parameters.h.

+ +
+
+ +

◆ kPyDescriptorPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyDescriptorPath ()
+
+inlinestatic
+
+ +

Key of parameter PyDescriptor/Path : "Path to python script file (see available ones in rtabmap/corelib/src/pydescriptor/*). See the header to see where the script should be used." Default value: "" (string).

+ +

Definition at line 815 of file Parameters.h.

+ +
+
+ +

◆ defaultPyDescriptorPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultPyDescriptorPath ()
+
+inlinestatic
+
+ +

Default value of parameter PyDescriptor/Path : "" .

+ +

Definition at line 815 of file Parameters.h.

+ +
+
+ +

◆ typePyDescriptorPath()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyDescriptorPath ()
+
+inlinestatic
+
+ +

Type of parameter PyDescriptor/Path , as a string: string.

+ +

Definition at line 815 of file Parameters.h.

+ +
+
+ +

◆ kPyDescriptorDim()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kPyDescriptorDim ()
+
+inlinestatic
+
+ +

Key of parameter PyDescriptor/Dim : "Descriptor dimension." Default value: 4096 ( int ).

+ +

Definition at line 816 of file Parameters.h.

+ +
+
+ +

◆ defaultPyDescriptorDim()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultPyDescriptorDim ()
+
+inlinestatic
+
+ +

Default value of parameter PyDescriptor/Dim : 4096 .

+ +

Definition at line 816 of file Parameters.h.

+ +
+
+ +

◆ typePyDescriptorDim()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typePyDescriptorDim ()
+
+inlinestatic
+
+ +

Type of parameter PyDescriptor/Dim , as a string: int .

+ +

Definition at line 816 of file Parameters.h.

+ +
+
+ +

◆ kIcpStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Icp/Strategy : "ICP implementation: 0=Point Cloud Library, 1=libpointmatcher, 2=CCCoreLib (CloudCompare)." Default value: 0 ( int ).

+ +

Definition at line 822 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultIcpStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/Strategy : 0 .

+ +

Definition at line 822 of file Parameters.h.

+ +
+
+ +

◆ typeIcpStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Icp/Strategy , as a string: int .

+ +

Definition at line 822 of file Parameters.h.

+ +
+
+ +

◆ kIcpMaxTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpMaxTranslation ()
+
+inlinestatic
+
+ +

Key of parameter Icp/MaxTranslation : "Maximum ICP translation correction accepted (m)." Default value: 0.2 ( float ).

+ +

Definition at line 824 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpMaxTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpMaxTranslation ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/MaxTranslation : 0.2 .

+ +

Definition at line 824 of file Parameters.h.

+ +
+
+ +

◆ typeIcpMaxTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpMaxTranslation ()
+
+inlinestatic
+
+ +

Type of parameter Icp/MaxTranslation , as a string: float .

+ +

Definition at line 824 of file Parameters.h.

+ +
+
+ +

◆ kIcpMaxRotation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpMaxRotation ()
+
+inlinestatic
+
+ +

Key of parameter Icp/MaxRotation : "Maximum ICP rotation correction accepted (rad)." Default value: 0.78 ( float ).

+ +

Definition at line 825 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpMaxRotation()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpMaxRotation ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/MaxRotation : 0.78 .

+ +

Definition at line 825 of file Parameters.h.

+ +
+
+ +

◆ typeIcpMaxRotation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpMaxRotation ()
+
+inlinestatic
+
+ +

Type of parameter Icp/MaxRotation , as a string: float .

+ +

Definition at line 825 of file Parameters.h.

+ +
+
+ +

◆ kIcpVoxelSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpVoxelSize ()
+
+inlinestatic
+
+ +

Key of parameter Icp/VoxelSize : "Uniform sampling voxel size (0=disabled)." Default value: 0.05 ( float ).

+ +

Definition at line 826 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpVoxelSize()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpVoxelSize ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/VoxelSize : 0.05 .

+ +

Definition at line 826 of file Parameters.h.

+ +
+
+ +

◆ typeIcpVoxelSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpVoxelSize ()
+
+inlinestatic
+
+ +

Type of parameter Icp/VoxelSize , as a string: float .

+ +

Definition at line 826 of file Parameters.h.

+ +
+
+ +

◆ kIcpDownsamplingStep()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpDownsamplingStep ()
+
+inlinestatic
+
+ +

Key of parameter Icp/DownsamplingStep : "Downsampling step size (1=no sampling). This is done before uniform sampling." Default value: 1 ( int ).

+ +

Definition at line 827 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpDownsamplingStep()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultIcpDownsamplingStep ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/DownsamplingStep : 1 .

+ +

Definition at line 827 of file Parameters.h.

+ +
+
+ +

◆ typeIcpDownsamplingStep()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpDownsamplingStep ()
+
+inlinestatic
+
+ +

Type of parameter Icp/DownsamplingStep , as a string: int .

+ +

Definition at line 827 of file Parameters.h.

+ +
+
+ +

◆ kIcpRangeMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpRangeMin ()
+
+inlinestatic
+
+ +

Key of parameter Icp/RangeMin : "Minimum range filtering (0=disabled)." Default value: 0 ( float ).

+ +

Definition at line 828 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpRangeMin()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpRangeMin ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/RangeMin : 0 .

+ +

Definition at line 828 of file Parameters.h.

+ +
+
+ +

◆ typeIcpRangeMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpRangeMin ()
+
+inlinestatic
+
+ +

Type of parameter Icp/RangeMin , as a string: float .

+ +

Definition at line 828 of file Parameters.h.

+ +
+
+ +

◆ kIcpRangeMax()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpRangeMax ()
+
+inlinestatic
+
+ +

Key of parameter Icp/RangeMax : "Maximum range filtering (0=disabled)." Default value: 0 ( float ).

+ +

Definition at line 829 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpRangeMax()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpRangeMax ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/RangeMax : 0 .

+ +

Definition at line 829 of file Parameters.h.

+ +
+
+ +

◆ typeIcpRangeMax()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpRangeMax ()
+
+inlinestatic
+
+ +

Type of parameter Icp/RangeMax , as a string: float .

+ +

Definition at line 829 of file Parameters.h.

+ +
+
+ +

◆ kIcpMaxCorrespondenceDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpMaxCorrespondenceDistance ()
+
+inlinestatic
+
+ +

Key of parameter Icp/MaxCorrespondenceDistance : "Max distance for point correspondences." Default value: 0.05 ( float ).

+ +

Definition at line 833 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpMaxCorrespondenceDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpMaxCorrespondenceDistance ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/MaxCorrespondenceDistance : 0.05 .

+ +

Definition at line 833 of file Parameters.h.

+ +
+
+ +

◆ typeIcpMaxCorrespondenceDistance()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpMaxCorrespondenceDistance ()
+
+inlinestatic
+
+ +

Type of parameter Icp/MaxCorrespondenceDistance , as a string: float .

+ +

Definition at line 833 of file Parameters.h.

+ +
+
+ +

◆ kIcpReciprocalCorrespondences()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpReciprocalCorrespondences ()
+
+inlinestatic
+
+ +

Key of parameter Icp/ReciprocalCorrespondences : "To be a valid correspondence, the corresponding point in target cloud to point in source cloud should be both their closest closest correspondence." Default value: true ( bool ).

+ +

Definition at line 835 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpReciprocalCorrespondences()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultIcpReciprocalCorrespondences ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/ReciprocalCorrespondences : true .

+ +

Definition at line 835 of file Parameters.h.

+ +
+
+ +

◆ typeIcpReciprocalCorrespondences()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpReciprocalCorrespondences ()
+
+inlinestatic
+
+ +

Type of parameter Icp/ReciprocalCorrespondences , as a string: bool .

+ +

Definition at line 835 of file Parameters.h.

+ +
+
+ +

◆ kIcpIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpIterations ()
+
+inlinestatic
+
+ +

Key of parameter Icp/Iterations : "Max iterations." Default value: 30 ( int ).

+ +

Definition at line 836 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultIcpIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/Iterations : 30 .

+ +

Definition at line 836 of file Parameters.h.

+ +
+
+ +

◆ typeIcpIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpIterations ()
+
+inlinestatic
+
+ +

Type of parameter Icp/Iterations , as a string: int .

+ +

Definition at line 836 of file Parameters.h.

+ +
+
+ +

◆ kIcpEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpEpsilon ()
+
+inlinestatic
+
+ +

Key of parameter Icp/Epsilon : "Set the transformation epsilon (maximum allowable difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution." Default value: 0 ( float ).

+ +

Definition at line 837 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpEpsilon ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/Epsilon : 0 .

+ +

Definition at line 837 of file Parameters.h.

+ +
+
+ +

◆ typeIcpEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpEpsilon ()
+
+inlinestatic
+
+ +

Type of parameter Icp/Epsilon , as a string: float .

+ +

Definition at line 837 of file Parameters.h.

+ +
+
+ +

◆ kIcpCorrespondenceRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpCorrespondenceRatio ()
+
+inlinestatic
+
+ +

Key of parameter Icp/CorrespondenceRatio : "Ratio of matching correspondences to accept the transform." Default value: 0.1 ( float ).

+ +

Definition at line 838 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpCorrespondenceRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpCorrespondenceRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/CorrespondenceRatio : 0.1 .

+ +

Definition at line 838 of file Parameters.h.

+ +
+
+ +

◆ typeIcpCorrespondenceRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpCorrespondenceRatio ()
+
+inlinestatic
+
+ +

Type of parameter Icp/CorrespondenceRatio , as a string: float .

+ +

Definition at line 838 of file Parameters.h.

+ +
+
+ +

◆ kIcpForce4DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpForce4DoF ()
+
+inlinestatic
+
+ +

Key of parameter Icp/Force4DoF : uFormat("Limit ICP to x, y, z and yaw DoF. Available if %s > 0.", kIcpStrategy().c_str()) Default value: false ( bool ).

+ +

Definition at line 839 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpForce4DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultIcpForce4DoF ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/Force4DoF : false .

+ +

Definition at line 839 of file Parameters.h.

+ +
+
+ +

◆ typeIcpForce4DoF()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpForce4DoF ()
+
+inlinestatic
+
+ +

Type of parameter Icp/Force4DoF , as a string: bool .

+ +

Definition at line 839 of file Parameters.h.

+ +
+
+ +

◆ kIcpFiltersEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpFiltersEnabled ()
+
+inlinestatic
+
+ +

Key of parameter Icp/FiltersEnabled : "Flag to enable filters: 1=\"from\" cloud only, 2=\"to\" cloud only, 3=both." Default value: 3 ( int ).

+ +

Definition at line 840 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpFiltersEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultIcpFiltersEnabled ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/FiltersEnabled : 3 .

+ +

Definition at line 840 of file Parameters.h.

+ +
+
+ +

◆ typeIcpFiltersEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpFiltersEnabled ()
+
+inlinestatic
+
+ +

Type of parameter Icp/FiltersEnabled , as a string: int .

+ +

Definition at line 840 of file Parameters.h.

+ +
+
+ +

◆ kIcpPointToPlane()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPointToPlane ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PointToPlane : "Use point to plane ICP." Default value: false ( bool ).

+ +

Definition at line 844 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPointToPlane()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultIcpPointToPlane ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PointToPlane : false .

+ +

Definition at line 844 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPointToPlane()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPointToPlane ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PointToPlane , as a string: bool .

+ +

Definition at line 844 of file Parameters.h.

+ +
+
+ +

◆ kIcpPointToPlaneK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPointToPlaneK ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PointToPlaneK : "Number of neighbors to compute normals for point to plane if the cloud doesn't have already normals." Default value: 5 ( int ).

+ +

Definition at line 846 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPointToPlaneK()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultIcpPointToPlaneK ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PointToPlaneK : 5 .

+ +

Definition at line 846 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPointToPlaneK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPointToPlaneK ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PointToPlaneK , as a string: int .

+ +

Definition at line 846 of file Parameters.h.

+ +
+
+ +

◆ kIcpPointToPlaneRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPointToPlaneRadius ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PointToPlaneRadius : "Search radius to compute normals for point to plane if the cloud doesn't have already normals." Default value: 0.0 ( float ).

+ +

Definition at line 847 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPointToPlaneRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpPointToPlaneRadius ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PointToPlaneRadius : 0.0 .

+ +

Definition at line 847 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPointToPlaneRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPointToPlaneRadius ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PointToPlaneRadius , as a string: float .

+ +

Definition at line 847 of file Parameters.h.

+ +
+
+ +

◆ kIcpPointToPlaneGroundNormalsUp()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPointToPlaneGroundNormalsUp ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PointToPlaneGroundNormalsUp : "Invert normals on ground if they are pointing down (useful for ring-like 3D LiDARs). 0 means disabled, 1 means only normals perfectly aligned with -z axis. This is only done with 3D scans." Default value: 0.0 ( float ).

+ +

Definition at line 848 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPointToPlaneGroundNormalsUp()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpPointToPlaneGroundNormalsUp ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PointToPlaneGroundNormalsUp : 0.0 .

+ +

Definition at line 848 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPointToPlaneGroundNormalsUp()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPointToPlaneGroundNormalsUp ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PointToPlaneGroundNormalsUp , as a string: float .

+ +

Definition at line 848 of file Parameters.h.

+ +
+
+ +

◆ kIcpPointToPlaneMinComplexity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPointToPlaneMinComplexity ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PointToPlaneMinComplexity : uFormat("Minimum structural complexity (0.0=low, 1.0=high) of the scan to do PointToPlane registration, otherwise PointToPoint registration is done instead and strategy from %s is used. This check is done only when %s=true.", kIcpPointToPlaneLowComplexityStrategy().c_str(), kIcpPointToPlane().c_str()) Default value: 0.02 ( float ).

+ +

Definition at line 849 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPointToPlaneMinComplexity()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpPointToPlaneMinComplexity ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PointToPlaneMinComplexity : 0.02 .

+ +

Definition at line 849 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPointToPlaneMinComplexity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPointToPlaneMinComplexity ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PointToPlaneMinComplexity , as a string: float .

+ +

Definition at line 849 of file Parameters.h.

+ +
+
+ +

◆ kIcpPointToPlaneComplexityCentered()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPointToPlaneComplexityCentered ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PointToPlaneComplexityCentered : uFormat("If false (default), the complexity metric uses the uncentered second-moment matrix (1/N) * sum(n_i * n_i^T), whose smallest eigenvalue directly measures how well the surface normals span R^N. If true, uses centered PCA (cv::PCA covariance) for backwards compatibility -- but the centered metric is known to mis-classify perpendicular-surface scenes as degenerate when normals are consistently viewpoint-flipped (only N distinct directions in N-D collapse to rank N-1 after centering). For true degeneracies (parallel surfaces, e.g. corridors) the two metrics agree because the normal mean is zero. The %s threshold of 0.02 works under either setting.", kIcpPointToPlaneMinComplexity().c_str()) Default value: false ( bool ).

+ +

Definition at line 850 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPointToPlaneComplexityCentered()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultIcpPointToPlaneComplexityCentered ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PointToPlaneComplexityCentered : false .

+ +

Definition at line 850 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPointToPlaneComplexityCentered()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPointToPlaneComplexityCentered ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PointToPlaneComplexityCentered , as a string: bool .

+ +

Definition at line 850 of file Parameters.h.

+ +
+
+ +

◆ kIcpPointToPlaneLowComplexityStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPointToPlaneLowComplexityStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PointToPlaneLowComplexityStrategy : uFormat("If structural complexity is below %s: set to 0 so that the transform is automatically rejected, set to 1 (default, legacy) to recompute the transform with PointToPoint and limit its correction in axes with most constraints (e.g., for a corridor-like environment, the resulting transform will be limited in y and yaw, x will taken from the guess), set to 2 to recompute the transform with PointToPoint and accept it \"as is\", set to 3 to keep the PointToPlane transform and apply the same axis-constrained projection as strategy 1.", kIcpPointToPlaneMinComplexity().c_str()) Default value: 1 ( int ).

+ +

Definition at line 851 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPointToPlaneLowComplexityStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultIcpPointToPlaneLowComplexityStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PointToPlaneLowComplexityStrategy : 1 .

+ +

Definition at line 851 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPointToPlaneLowComplexityStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPointToPlaneLowComplexityStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PointToPlaneLowComplexityStrategy , as a string: int .

+ +

Definition at line 851 of file Parameters.h.

+ +
+
+ +

◆ kIcpOutlierRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpOutlierRatio ()
+
+inlinestatic
+
+ +

Key of parameter Icp/OutlierRatio : uFormat("Outlier ratio. For libpointmatcher (%s=1), sets TrimmedDistOutlierFilter/ratio for convenience when configuration file is not set. For CCCoreLib (%s=2), sets \"finalOverlapRatio\". For PCL (%s=0), if 0<value<1, installs a RANSAC correspondence rejector with inlier threshold = value * %s. The value should be between 0 and 1.", kIcpStrategy().c_str(), kIcpStrategy().c_str(), kIcpStrategy().c_str(), kIcpMaxCorrespondenceDistance().c_str()) Default value: 0.85 ( float ).

+ +

Definition at line 852 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpOutlierRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpOutlierRatio ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/OutlierRatio : 0.85 .

+ +

Definition at line 852 of file Parameters.h.

+ +
+
+ +

◆ typeIcpOutlierRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpOutlierRatio ()
+
+inlinestatic
+
+ +

Type of parameter Icp/OutlierRatio , as a string: float .

+ +

Definition at line 852 of file Parameters.h.

+ +
+
+ +

◆ kIcpDebugExportFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpDebugExportFormat ()
+
+inlinestatic
+
+ +

Key of parameter Icp/DebugExportFormat : "Export scans used for ICP in the specified format (a warning on terminal will be shown with the file paths used). Supported formats are \"pcd\", \"ply\" or \"vtk\". If logger level is debug, from and to scans will stamped, so previous files won't be overwritten." Default value: "" (string).

+ +

Definition at line 853 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpDebugExportFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultIcpDebugExportFormat ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/DebugExportFormat : "" .

+ +

Definition at line 853 of file Parameters.h.

+ +
+
+ +

◆ typeIcpDebugExportFormat()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpDebugExportFormat ()
+
+inlinestatic
+
+ +

Type of parameter Icp/DebugExportFormat , as a string: string.

+ +

Definition at line 853 of file Parameters.h.

+ +
+
+ +

◆ kIcpPMConfig()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPMConfig ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PMConfig : uFormat("Configuration file (*.yaml) used by libpointmatcher. Note that data filters set for libpointmatcher are done after filtering done by rtabmap (i.e., %s, %s), so make sure to disable those in rtabmap if you want to use only those from libpointmatcher. Parameters %s, %s and %s are also ignored if configuration file is set.", kIcpVoxelSize().c_str(), kIcpDownsamplingStep().c_str(), kIcpIterations().c_str(), kIcpEpsilon().c_str(), kIcpMaxCorrespondenceDistance().c_str()).c_str() Default value: "" (string).

+ +

Definition at line 856 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPMConfig()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultIcpPMConfig ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PMConfig : "" .

+ +

Definition at line 856 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPMConfig()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPMConfig ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PMConfig , as a string: string.

+ +

Definition at line 856 of file Parameters.h.

+ +
+
+ +

◆ kIcpPMMatcherKnn()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPMMatcherKnn ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PMMatcherKnn : "KDTreeMatcher/knn: number of nearest neighbors to consider it the reference. For convenience when configuration file is not set." Default value: 1 ( int ).

+ +

Definition at line 857 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPMMatcherKnn()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultIcpPMMatcherKnn ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PMMatcherKnn : 1 .

+ +

Definition at line 857 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPMMatcherKnn()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPMMatcherKnn ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PMMatcherKnn , as a string: int .

+ +

Definition at line 857 of file Parameters.h.

+ +
+
+ +

◆ kIcpPMMatcherEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPMMatcherEpsilon ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PMMatcherEpsilon : "KDTreeMatcher/epsilon: approximation to use for the nearest-neighbor search. For convenience when configuration file is not set." Default value: 0.0 ( float ).

+ +

Definition at line 858 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPMMatcherEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpPMMatcherEpsilon ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PMMatcherEpsilon : 0.0 .

+ +

Definition at line 858 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPMMatcherEpsilon()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPMMatcherEpsilon ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PMMatcherEpsilon , as a string: float .

+ +

Definition at line 858 of file Parameters.h.

+ +
+
+ +

◆ kIcpPMMatcherIntensity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpPMMatcherIntensity ()
+
+inlinestatic
+
+ +

Key of parameter Icp/PMMatcherIntensity : uFormat("KDTreeMatcher: among nearest neighbors, keep only the one with the most similar intensity. This only work with %s>1.", kIcpPMMatcherKnn().c_str()) Default value: false ( bool ).

+ +

Definition at line 859 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpPMMatcherIntensity()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultIcpPMMatcherIntensity ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/PMMatcherIntensity : false .

+ +

Definition at line 859 of file Parameters.h.

+ +
+
+ +

◆ typeIcpPMMatcherIntensity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpPMMatcherIntensity ()
+
+inlinestatic
+
+ +

Type of parameter Icp/PMMatcherIntensity , as a string: bool .

+ +

Definition at line 859 of file Parameters.h.

+ +
+
+ +

◆ kIcpCCSamplingLimit()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpCCSamplingLimit ()
+
+inlinestatic
+
+ +

Key of parameter Icp/CCSamplingLimit : "Maximum number of points per cloud (they are randomly resampled below this limit otherwise)." Default value: 50000 ( unsigned int ).

+ +

Definition at line 861 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpCCSamplingLimit()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultIcpCCSamplingLimit ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/CCSamplingLimit : 50000 .

+ +

Definition at line 861 of file Parameters.h.

+ +
+
+ +

◆ typeIcpCCSamplingLimit()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpCCSamplingLimit ()
+
+inlinestatic
+
+ +

Type of parameter Icp/CCSamplingLimit , as a string: unsigned int .

+ +

Definition at line 861 of file Parameters.h.

+ +
+
+ +

◆ kIcpCCFilterOutFarthestPoints()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpCCFilterOutFarthestPoints ()
+
+inlinestatic
+
+ +

Key of parameter Icp/CCFilterOutFarthestPoints : "If true, the algorithm will automatically ignore farthest points from the reference, for better convergence." Default value: false ( bool ).

+ +

Definition at line 862 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpCCFilterOutFarthestPoints()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultIcpCCFilterOutFarthestPoints ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/CCFilterOutFarthestPoints : false .

+ +

Definition at line 862 of file Parameters.h.

+ +
+
+ +

◆ typeIcpCCFilterOutFarthestPoints()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpCCFilterOutFarthestPoints ()
+
+inlinestatic
+
+ +

Type of parameter Icp/CCFilterOutFarthestPoints , as a string: bool .

+ +

Definition at line 862 of file Parameters.h.

+ +
+
+ +

◆ kIcpCCMaxFinalRMS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kIcpCCMaxFinalRMS ()
+
+inlinestatic
+
+ +

Key of parameter Icp/CCMaxFinalRMS : "Maximum final RMS error." Default value: 0.2 ( float ).

+ +

Definition at line 863 of file Parameters.h.

+ +
+
+ +

◆ defaultIcpCCMaxFinalRMS()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultIcpCCMaxFinalRMS ()
+
+inlinestatic
+
+ +

Default value of parameter Icp/CCMaxFinalRMS : 0.2 .

+ +

Definition at line 863 of file Parameters.h.

+ +
+
+ +

◆ typeIcpCCMaxFinalRMS()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeIcpCCMaxFinalRMS ()
+
+inlinestatic
+
+ +

Type of parameter Icp/CCMaxFinalRMS , as a string: float .

+ +

Definition at line 863 of file Parameters.h.

+ +
+
+ +

◆ kStereoWinWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoWinWidth ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/WinWidth : "Window width." Default value: 15 ( int ).

+ +

Definition at line 866 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoWinWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoWinWidth ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/WinWidth : 15 .

+ +

Definition at line 866 of file Parameters.h.

+ +
+
+ +

◆ typeStereoWinWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoWinWidth ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/WinWidth , as a string: int .

+ +

Definition at line 866 of file Parameters.h.

+ +
+
+ +

◆ kStereoWinHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoWinHeight ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/WinHeight : "Window height." Default value: 3 ( int ).

+ +

Definition at line 867 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoWinHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoWinHeight ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/WinHeight : 3 .

+ +

Definition at line 867 of file Parameters.h.

+ +
+
+ +

◆ typeStereoWinHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoWinHeight ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/WinHeight , as a string: int .

+ +

Definition at line 867 of file Parameters.h.

+ +
+
+ +

◆ kStereoIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoIterations ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/Iterations : "Maximum iterations." Default value: 30 ( int ).

+ +

Definition at line 868 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoIterations ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/Iterations : 30 .

+ +

Definition at line 868 of file Parameters.h.

+ +
+
+ +

◆ typeStereoIterations()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoIterations ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/Iterations , as a string: int .

+ +

Definition at line 868 of file Parameters.h.

+ +
+
+ +

◆ kStereoMaxLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoMaxLevel ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/MaxLevel : "Maximum pyramid level." Default value: 5 ( int ).

+ +

Definition at line 869 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoMaxLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoMaxLevel ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/MaxLevel : 5 .

+ +

Definition at line 869 of file Parameters.h.

+ +
+
+ +

◆ typeStereoMaxLevel()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoMaxLevel ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/MaxLevel , as a string: int .

+ +

Definition at line 869 of file Parameters.h.

+ +
+
+ +

◆ kStereoMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoMinDisparity ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/MinDisparity : "Minimum disparity." Default value: 0.5 ( float ).

+ +

Definition at line 870 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultStereoMinDisparity ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/MinDisparity : 0.5 .

+ +

Definition at line 870 of file Parameters.h.

+ +
+
+ +

◆ typeStereoMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoMinDisparity ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/MinDisparity , as a string: float .

+ +

Definition at line 870 of file Parameters.h.

+ +
+
+ +

◆ kStereoMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoMaxDisparity ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/MaxDisparity : "Maximum disparity." Default value: 128.0 ( float ).

+ +

Definition at line 871 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultStereoMaxDisparity ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/MaxDisparity : 128.0 .

+ +

Definition at line 871 of file Parameters.h.

+ +
+
+ +

◆ typeStereoMaxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoMaxDisparity ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/MaxDisparity , as a string: float .

+ +

Definition at line 871 of file Parameters.h.

+ +
+
+ +

◆ kStereoOpticalFlow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoOpticalFlow ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/OpticalFlow : "Use optical flow to find stereo correspondences, otherwise a simple block matching approach is used." Default value: true ( bool ).

+ +

Definition at line 872 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoOpticalFlow()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultStereoOpticalFlow ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/OpticalFlow : true .

+ +

Definition at line 872 of file Parameters.h.

+ +
+
+ +

◆ typeStereoOpticalFlow()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoOpticalFlow ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/OpticalFlow , as a string: bool .

+ +

Definition at line 872 of file Parameters.h.

+ +
+
+ +

◆ kStereoSSD()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSSD ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/SSD : uFormat("[%s=false] Use Sum of Squared Differences (SSD) window, otherwise Sum of Absolute Differences (SAD) window is used.", kStereoOpticalFlow().c_str()) Default value: true ( bool ).

+ +

Definition at line 873 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSSD()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultStereoSSD ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/SSD : true .

+ +

Definition at line 873 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSSD()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSSD ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/SSD , as a string: bool .

+ +

Definition at line 873 of file Parameters.h.

+ +
+
+ +

◆ kStereoEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoEps ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/Eps : uFormat("[%s=true] Epsilon stop criterion.", kStereoOpticalFlow().c_str()) Default value: 0.01 ( double ).

+ +

Definition at line 874 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoEps()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultStereoEps ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/Eps : 0.01 .

+ +

Definition at line 874 of file Parameters.h.

+ +
+
+ +

◆ typeStereoEps()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoEps ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/Eps , as a string: double .

+ +

Definition at line 874 of file Parameters.h.

+ +
+
+ +

◆ kStereoUseMinEigenVals()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoUseMinEigenVals ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/UseMinEigenVals : uFormat("[%s=true] Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.", kStereoOpticalFlow().c_str()) Default value: true ( bool ).

+ +

Definition at line 875 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoUseMinEigenVals()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultStereoUseMinEigenVals ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/UseMinEigenVals : true .

+ +

Definition at line 875 of file Parameters.h.

+ +
+
+ +

◆ typeStereoUseMinEigenVals()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoUseMinEigenVals ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/UseMinEigenVals , as a string: bool .

+ +

Definition at line 875 of file Parameters.h.

+ +
+
+ +

◆ kStereoMinEigThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoMinEigThreshold ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/MinEigThreshold : uFormat("[%s=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.", kStereoUseMinEigenVals().c_str()) Default value: 1e-4 ( double ).

+ +

Definition at line 876 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoMinEigThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultStereoMinEigThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/MinEigThreshold : 1e-4 .

+ +

Definition at line 876 of file Parameters.h.

+ +
+
+ +

◆ typeStereoMinEigThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoMinEigThreshold ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/MinEigThreshold , as a string: double .

+ +

Definition at line 876 of file Parameters.h.

+ +
+
+ +

◆ kStereoErrorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoErrorThreshold ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/ErrorThreshold : uFormat("[%s=false] Filter out features with error greater than this threshold.", kStereoUseMinEigenVals().c_str()) Default value: 50 ( double ).

+ +

Definition at line 877 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoErrorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultStereoErrorThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/ErrorThreshold : 50 .

+ +

Definition at line 877 of file Parameters.h.

+ +
+
+ +

◆ typeStereoErrorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoErrorThreshold ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/ErrorThreshold , as a string: double .

+ +

Definition at line 877 of file Parameters.h.

+ +
+
+ +

◆ kStereoGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoGpu ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/Gpu : uFormat("[%s=true] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that %s is not used in the GPU implementation.", kStereoOpticalFlow().c_str(), kStereoUseMinEigenVals().c_str()) Default value: false ( bool ).

+ +

Definition at line 878 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultStereoGpu ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/Gpu : false .

+ +

Definition at line 878 of file Parameters.h.

+ +
+
+ +

◆ typeStereoGpu()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoGpu ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/Gpu , as a string: bool .

+ +

Definition at line 878 of file Parameters.h.

+ +
+
+ +

◆ kStereoDenseStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoDenseStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Stereo/DenseStrategy : "0=cv::StereoBM, 1=cv::StereoSGBM" Default value: 0 ( int ).

+ +

Definition at line 880 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoDenseStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoDenseStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Stereo/DenseStrategy : 0 .

+ +

Definition at line 880 of file Parameters.h.

+ +
+
+ +

◆ typeStereoDenseStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoDenseStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Stereo/DenseStrategy , as a string: int .

+ +

Definition at line 880 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMBlockSize ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/BlockSize : "See cv::StereoBM" Default value: 15 ( int ).

+ +

Definition at line 882 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMBlockSize ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/BlockSize : 15 .

+ +

Definition at line 882 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMBlockSize ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/BlockSize , as a string: int .

+ +

Definition at line 882 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMMinDisparity ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/MinDisparity : "See cv::StereoBM" Default value: 0 ( int ).

+ +

Definition at line 883 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMMinDisparity ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/MinDisparity : 0 .

+ +

Definition at line 883 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMMinDisparity ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/MinDisparity , as a string: int .

+ +

Definition at line 883 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMNumDisparities()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMNumDisparities ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/NumDisparities : "See cv::StereoBM" Default value: 128 ( int ).

+ +

Definition at line 884 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMNumDisparities()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMNumDisparities ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/NumDisparities : 128 .

+ +

Definition at line 884 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMNumDisparities()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMNumDisparities ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/NumDisparities , as a string: int .

+ +

Definition at line 884 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMPreFilterSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMPreFilterSize ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/PreFilterSize : "See cv::StereoBM" Default value: 9 ( int ).

+ +

Definition at line 885 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMPreFilterSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMPreFilterSize ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/PreFilterSize : 9 .

+ +

Definition at line 885 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMPreFilterSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMPreFilterSize ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/PreFilterSize , as a string: int .

+ +

Definition at line 885 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMPreFilterCap()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMPreFilterCap ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/PreFilterCap : "See cv::StereoBM" Default value: 31 ( int ).

+ +

Definition at line 886 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMPreFilterCap()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMPreFilterCap ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/PreFilterCap : 31 .

+ +

Definition at line 886 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMPreFilterCap()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMPreFilterCap ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/PreFilterCap , as a string: int .

+ +

Definition at line 886 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMUniquenessRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMUniquenessRatio ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/UniquenessRatio : "See cv::StereoBM" Default value: 15 ( int ).

+ +

Definition at line 887 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMUniquenessRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMUniquenessRatio ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/UniquenessRatio : 15 .

+ +

Definition at line 887 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMUniquenessRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMUniquenessRatio ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/UniquenessRatio , as a string: int .

+ +

Definition at line 887 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMTextureThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMTextureThreshold ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/TextureThreshold : "See cv::StereoBM" Default value: 10 ( int ).

+ +

Definition at line 888 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMTextureThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMTextureThreshold ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/TextureThreshold : 10 .

+ +

Definition at line 888 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMTextureThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMTextureThreshold ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/TextureThreshold , as a string: int .

+ +

Definition at line 888 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMSpeckleWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMSpeckleWindowSize ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/SpeckleWindowSize : "See cv::StereoBM" Default value: 100 ( int ).

+ +

Definition at line 889 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMSpeckleWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMSpeckleWindowSize ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/SpeckleWindowSize : 100 .

+ +

Definition at line 889 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMSpeckleWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMSpeckleWindowSize ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/SpeckleWindowSize , as a string: int .

+ +

Definition at line 889 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMSpeckleRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMSpeckleRange ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/SpeckleRange : "See cv::StereoBM" Default value: 4 ( int ).

+ +

Definition at line 890 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMSpeckleRange()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMSpeckleRange ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/SpeckleRange : 4 .

+ +

Definition at line 890 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMSpeckleRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMSpeckleRange ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/SpeckleRange , as a string: int .

+ +

Definition at line 890 of file Parameters.h.

+ +
+
+ +

◆ kStereoBMDisp12MaxDiff()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoBMDisp12MaxDiff ()
+
+inlinestatic
+
+ +

Key of parameter StereoBM/Disp12MaxDiff : "See cv::StereoBM" Default value: -1 ( int ).

+ +

Definition at line 891 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoBMDisp12MaxDiff()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoBMDisp12MaxDiff ()
+
+inlinestatic
+
+ +

Default value of parameter StereoBM/Disp12MaxDiff : -1 .

+ +

Definition at line 891 of file Parameters.h.

+ +
+
+ +

◆ typeStereoBMDisp12MaxDiff()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoBMDisp12MaxDiff ()
+
+inlinestatic
+
+ +

Type of parameter StereoBM/Disp12MaxDiff , as a string: int .

+ +

Definition at line 891 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMBlockSize ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/BlockSize : "See cv::StereoSGBM" Default value: 15 ( int ).

+ +

Definition at line 893 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMBlockSize ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/BlockSize : 15 .

+ +

Definition at line 893 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMBlockSize ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/BlockSize , as a string: int .

+ +

Definition at line 893 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMMinDisparity ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/MinDisparity : "See cv::StereoSGBM" Default value: 0 ( int ).

+ +

Definition at line 894 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMMinDisparity ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/MinDisparity : 0 .

+ +

Definition at line 894 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMMinDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMMinDisparity ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/MinDisparity , as a string: int .

+ +

Definition at line 894 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMNumDisparities()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMNumDisparities ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/NumDisparities : "See cv::StereoSGBM" Default value: 128 ( int ).

+ +

Definition at line 895 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMNumDisparities()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMNumDisparities ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/NumDisparities : 128 .

+ +

Definition at line 895 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMNumDisparities()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMNumDisparities ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/NumDisparities , as a string: int .

+ +

Definition at line 895 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMPreFilterCap()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMPreFilterCap ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/PreFilterCap : "See cv::StereoSGBM" Default value: 31 ( int ).

+ +

Definition at line 896 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMPreFilterCap()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMPreFilterCap ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/PreFilterCap : 31 .

+ +

Definition at line 896 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMPreFilterCap()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMPreFilterCap ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/PreFilterCap , as a string: int .

+ +

Definition at line 896 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMUniquenessRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMUniquenessRatio ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/UniquenessRatio : "See cv::StereoSGBM" Default value: 20 ( int ).

+ +

Definition at line 897 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMUniquenessRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMUniquenessRatio ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/UniquenessRatio : 20 .

+ +

Definition at line 897 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMUniquenessRatio()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMUniquenessRatio ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/UniquenessRatio , as a string: int .

+ +

Definition at line 897 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMSpeckleWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMSpeckleWindowSize ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/SpeckleWindowSize : "See cv::StereoSGBM" Default value: 100 ( int ).

+ +

Definition at line 898 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMSpeckleWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMSpeckleWindowSize ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/SpeckleWindowSize : 100 .

+ +

Definition at line 898 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMSpeckleWindowSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMSpeckleWindowSize ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/SpeckleWindowSize , as a string: int .

+ +

Definition at line 898 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMSpeckleRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMSpeckleRange ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/SpeckleRange : "See cv::StereoSGBM" Default value: 4 ( int ).

+ +

Definition at line 899 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMSpeckleRange()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMSpeckleRange ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/SpeckleRange : 4 .

+ +

Definition at line 899 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMSpeckleRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMSpeckleRange ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/SpeckleRange , as a string: int .

+ +

Definition at line 899 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMDisp12MaxDiff()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMDisp12MaxDiff ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/Disp12MaxDiff : "See cv::StereoSGBM" Default value: 1 ( int ).

+ +

Definition at line 900 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMDisp12MaxDiff()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMDisp12MaxDiff ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/Disp12MaxDiff : 1 .

+ +

Definition at line 900 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMDisp12MaxDiff()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMDisp12MaxDiff ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/Disp12MaxDiff , as a string: int .

+ +

Definition at line 900 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMP1()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMP1 ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/P1 : "See cv::StereoSGBM" Default value: 2 ( int ).

+ +

Definition at line 901 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMP1()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMP1 ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/P1 : 2 .

+ +

Definition at line 901 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMP1()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMP1 ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/P1 , as a string: int .

+ +

Definition at line 901 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMP2()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMP2 ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/P2 : "See cv::StereoSGBM" Default value: 5 ( int ).

+ +

Definition at line 902 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMP2()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMP2 ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/P2 : 5 .

+ +

Definition at line 902 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMP2()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMP2 ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/P2 , as a string: int .

+ +

Definition at line 902 of file Parameters.h.

+ +
+
+ +

◆ kStereoSGBMMode()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kStereoSGBMMode ()
+
+inlinestatic
+
+ +

Key of parameter StereoSGBM/Mode : "See cv::StereoSGBM" Default value: 0 ( int ).

+ +

Definition at line 904 of file Parameters.h.

+ +
+
+ +

◆ defaultStereoSGBMMode()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultStereoSGBMMode ()
+
+inlinestatic
+
+ +

Default value of parameter StereoSGBM/Mode : 0 .

+ +

Definition at line 904 of file Parameters.h.

+ +
+
+ +

◆ typeStereoSGBMMode()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeStereoSGBMMode ()
+
+inlinestatic
+
+ +

Type of parameter StereoSGBM/Mode , as a string: int .

+ +

Definition at line 904 of file Parameters.h.

+ +
+
+ +

◆ kGridSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridSensor ()
+
+inlinestatic
+
+ +

Key of parameter Grid/Sensor : "Create occupancy grid from selected sensor: 0=laser scan, 1=depth image(s) or 2=both laser scan and depth image(s)." Default value: 1 ( int ).

+ +

Definition at line 910 of file Parameters.h.

+ +
+
+ +

◆ defaultGridSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGridSensor ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/Sensor : 1 .

+ +

Definition at line 910 of file Parameters.h.

+ +
+
+ +

◆ typeGridSensor()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridSensor ()
+
+inlinestatic
+
+ +

Type of parameter Grid/Sensor , as a string: int .

+ +

Definition at line 910 of file Parameters.h.

+ +
+
+ +

◆ kGridDepthDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridDepthDecimation ()
+
+inlinestatic
+
+ +

Key of parameter Grid/DepthDecimation : uFormat("[%s=true] Decimation of the depth image before creating cloud.", kGridDepthDecimation().c_str()) Default value: 4 ( unsigned int ).

+ +

Definition at line 911 of file Parameters.h.

+ +
+
+ +

◆ defaultGridDepthDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultGridDepthDecimation ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/DepthDecimation : 4 .

+ +

Definition at line 911 of file Parameters.h.

+ +
+
+ +

◆ typeGridDepthDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridDepthDecimation ()
+
+inlinestatic
+
+ +

Type of parameter Grid/DepthDecimation , as a string: unsigned int .

+ +

Definition at line 911 of file Parameters.h.

+ +
+
+ +

◆ kGridRangeMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridRangeMin ()
+
+inlinestatic
+
+ +

Key of parameter Grid/RangeMin : "Minimum range from sensor." Default value: 0.0 ( float ).

+ +

Definition at line 912 of file Parameters.h.

+ +
+
+ +

◆ defaultGridRangeMin()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridRangeMin ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/RangeMin : 0.0 .

+ +

Definition at line 912 of file Parameters.h.

+ +
+
+ +

◆ typeGridRangeMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridRangeMin ()
+
+inlinestatic
+
+ +

Type of parameter Grid/RangeMin , as a string: float .

+ +

Definition at line 912 of file Parameters.h.

+ +
+
+ +

◆ kGridRangeMax()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridRangeMax ()
+
+inlinestatic
+
+ +

Key of parameter Grid/RangeMax : "Maximum range from sensor. 0=inf." Default value: 5.0 ( float ).

+ +

Definition at line 913 of file Parameters.h.

+ +
+
+ +

◆ defaultGridRangeMax()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridRangeMax ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/RangeMax : 5.0 .

+ +

Definition at line 913 of file Parameters.h.

+ +
+
+ +

◆ typeGridRangeMax()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridRangeMax ()
+
+inlinestatic
+
+ +

Type of parameter Grid/RangeMax , as a string: float .

+ +

Definition at line 913 of file Parameters.h.

+ +
+
+ +

◆ kGridDepthRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridDepthRoiRatios ()
+
+inlinestatic
+
+ +

Key of parameter Grid/DepthRoiRatios : uFormat("[%s>=1] Region of interest ratios [left, right, top, bottom].", kGridSensor().c_str()) Default value: "0.0 0.0 0.0 0.0" (string).

+ +

Definition at line 914 of file Parameters.h.

+ +
+
+ +

◆ defaultGridDepthRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultGridDepthRoiRatios ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/DepthRoiRatios : "0.0 0.0 0.0 0.0" .

+ +

Definition at line 914 of file Parameters.h.

+ +
+
+ +

◆ typeGridDepthRoiRatios()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridDepthRoiRatios ()
+
+inlinestatic
+
+ +

Type of parameter Grid/DepthRoiRatios , as a string: string.

+ +

Definition at line 914 of file Parameters.h.

+ +
+
+ +

◆ kGridFootprintLength()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridFootprintLength ()
+
+inlinestatic
+
+ +

Key of parameter Grid/FootprintLength : "Footprint length used to filter points over the footprint of the robot." Default value: 0.0 ( float ).

+ +

Definition at line 915 of file Parameters.h.

+ +
+
+ +

◆ defaultGridFootprintLength()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridFootprintLength ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/FootprintLength : 0.0 .

+ +

Definition at line 915 of file Parameters.h.

+ +
+
+ +

◆ typeGridFootprintLength()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridFootprintLength ()
+
+inlinestatic
+
+ +

Type of parameter Grid/FootprintLength , as a string: float .

+ +

Definition at line 915 of file Parameters.h.

+ +
+
+ +

◆ kGridFootprintWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridFootprintWidth ()
+
+inlinestatic
+
+ +

Key of parameter Grid/FootprintWidth : "Footprint width used to filter points over the footprint of the robot. Footprint length should be set." Default value: 0.0 ( float ).

+ +

Definition at line 916 of file Parameters.h.

+ +
+
+ +

◆ defaultGridFootprintWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridFootprintWidth ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/FootprintWidth : 0.0 .

+ +

Definition at line 916 of file Parameters.h.

+ +
+
+ +

◆ typeGridFootprintWidth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridFootprintWidth ()
+
+inlinestatic
+
+ +

Type of parameter Grid/FootprintWidth , as a string: float .

+ +

Definition at line 916 of file Parameters.h.

+ +
+
+ +

◆ kGridFootprintHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridFootprintHeight ()
+
+inlinestatic
+
+ +

Key of parameter Grid/FootprintHeight : "Footprint height used to filter points over the footprint of the robot. Footprint length and width should be set." Default value: 0.0 ( float ).

+ +

Definition at line 917 of file Parameters.h.

+ +
+
+ +

◆ defaultGridFootprintHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridFootprintHeight ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/FootprintHeight : 0.0 .

+ +

Definition at line 917 of file Parameters.h.

+ +
+
+ +

◆ typeGridFootprintHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridFootprintHeight ()
+
+inlinestatic
+
+ +

Type of parameter Grid/FootprintHeight , as a string: float .

+ +

Definition at line 917 of file Parameters.h.

+ +
+
+ +

◆ kGridScanDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridScanDecimation ()
+
+inlinestatic
+
+ +

Key of parameter Grid/ScanDecimation : uFormat("[%s=0 or 2] Decimation of the laser scan before creating cloud.", kGridSensor().c_str()) Default value: 1 ( int ).

+ +

Definition at line 918 of file Parameters.h.

+ +
+
+ +

◆ defaultGridScanDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGridScanDecimation ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/ScanDecimation : 1 .

+ +

Definition at line 918 of file Parameters.h.

+ +
+
+ +

◆ typeGridScanDecimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridScanDecimation ()
+
+inlinestatic
+
+ +

Type of parameter Grid/ScanDecimation , as a string: int .

+ +

Definition at line 918 of file Parameters.h.

+ +
+
+ +

◆ kGridCellSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridCellSize ()
+
+inlinestatic
+
+ +

Key of parameter Grid/CellSize : "Resolution of the occupancy grid." Default value: 0.05 ( float ).

+ +

Definition at line 919 of file Parameters.h.

+ +
+
+ +

◆ defaultGridCellSize()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridCellSize ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/CellSize : 0.05 .

+ +

Definition at line 919 of file Parameters.h.

+ +
+
+ +

◆ typeGridCellSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridCellSize ()
+
+inlinestatic
+
+ +

Type of parameter Grid/CellSize , as a string: float .

+ +

Definition at line 919 of file Parameters.h.

+ +
+
+ +

◆ kGridPreVoxelFiltering()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridPreVoxelFiltering ()
+
+inlinestatic
+
+ +

Key of parameter Grid/PreVoxelFiltering : uFormat("Input cloud is downsampled by voxel filter (voxel size is \"%s\") before doing segmentation of obstacles and ground.", kGridCellSize().c_str()) Default value: true ( bool ).

+ +

Definition at line 920 of file Parameters.h.

+ +
+
+ +

◆ defaultGridPreVoxelFiltering()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridPreVoxelFiltering ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/PreVoxelFiltering : true .

+ +

Definition at line 920 of file Parameters.h.

+ +
+
+ +

◆ typeGridPreVoxelFiltering()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridPreVoxelFiltering ()
+
+inlinestatic
+
+ +

Type of parameter Grid/PreVoxelFiltering , as a string: bool .

+ +

Definition at line 920 of file Parameters.h.

+ +
+
+ +

◆ kGridMapFrameProjection()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridMapFrameProjection ()
+
+inlinestatic
+
+ +

Key of parameter Grid/MapFrameProjection : "Projection in map frame. On a 3D terrain and a fixed local camera transform (the cloud is created relative to ground), you may want to disable this to do the projection in robot frame instead." Default value: false ( bool ).

+ +

Definition at line 921 of file Parameters.h.

+ +
+
+ +

◆ defaultGridMapFrameProjection()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridMapFrameProjection ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/MapFrameProjection : false .

+ +

Definition at line 921 of file Parameters.h.

+ +
+
+ +

◆ typeGridMapFrameProjection()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridMapFrameProjection ()
+
+inlinestatic
+
+ +

Type of parameter Grid/MapFrameProjection , as a string: bool .

+ +

Definition at line 921 of file Parameters.h.

+ +
+
+ +

◆ kGridNormalsSegmentation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridNormalsSegmentation ()
+
+inlinestatic
+
+ +

Key of parameter Grid/NormalsSegmentation : "Segment ground from obstacles using point normals, otherwise a fast passthrough is used." Default value: true ( bool ).

+ +

Definition at line 922 of file Parameters.h.

+ +
+
+ +

◆ defaultGridNormalsSegmentation()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridNormalsSegmentation ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/NormalsSegmentation : true .

+ +

Definition at line 922 of file Parameters.h.

+ +
+
+ +

◆ typeGridNormalsSegmentation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridNormalsSegmentation ()
+
+inlinestatic
+
+ +

Type of parameter Grid/NormalsSegmentation , as a string: bool .

+ +

Definition at line 922 of file Parameters.h.

+ +
+
+ +

◆ kGridMaxObstacleHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridMaxObstacleHeight ()
+
+inlinestatic
+
+ +

Key of parameter Grid/MaxObstacleHeight : "Maximum obstacles height (0=disabled)." Default value: 0.0 ( float ).

+ +

Definition at line 923 of file Parameters.h.

+ +
+
+ +

◆ defaultGridMaxObstacleHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridMaxObstacleHeight ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/MaxObstacleHeight : 0.0 .

+ +

Definition at line 923 of file Parameters.h.

+ +
+
+ +

◆ typeGridMaxObstacleHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridMaxObstacleHeight ()
+
+inlinestatic
+
+ +

Type of parameter Grid/MaxObstacleHeight , as a string: float .

+ +

Definition at line 923 of file Parameters.h.

+ +
+
+ +

◆ kGridMinGroundHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridMinGroundHeight ()
+
+inlinestatic
+
+ +

Key of parameter Grid/MinGroundHeight : "Minimum ground height (0=disabled)." Default value: 0.0 ( float ).

+ +

Definition at line 924 of file Parameters.h.

+ +
+
+ +

◆ defaultGridMinGroundHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridMinGroundHeight ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/MinGroundHeight : 0.0 .

+ +

Definition at line 924 of file Parameters.h.

+ +
+
+ +

◆ typeGridMinGroundHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridMinGroundHeight ()
+
+inlinestatic
+
+ +

Type of parameter Grid/MinGroundHeight , as a string: float .

+ +

Definition at line 924 of file Parameters.h.

+ +
+
+ +

◆ kGridMaxGroundHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridMaxGroundHeight ()
+
+inlinestatic
+
+ +

Key of parameter Grid/MaxGroundHeight : uFormat("Maximum ground height (0=disabled). Should be set if \"%s\" is false.", kGridNormalsSegmentation().c_str()) Default value: 0.0 ( float ).

+ +

Definition at line 925 of file Parameters.h.

+ +
+
+ +

◆ defaultGridMaxGroundHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridMaxGroundHeight ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/MaxGroundHeight : 0.0 .

+ +

Definition at line 925 of file Parameters.h.

+ +
+
+ +

◆ typeGridMaxGroundHeight()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridMaxGroundHeight ()
+
+inlinestatic
+
+ +

Type of parameter Grid/MaxGroundHeight , as a string: float .

+ +

Definition at line 925 of file Parameters.h.

+ +
+
+ +

◆ kGridMaxGroundAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridMaxGroundAngle ()
+
+inlinestatic
+
+ +

Key of parameter Grid/MaxGroundAngle : uFormat("[%s=true] Maximum angle (degrees) between point's normal to ground's normal to label it as ground. Points with higher angle difference are considered as obstacles.", kGridNormalsSegmentation().c_str()) Default value: 45 ( float ).

+ +

Definition at line 926 of file Parameters.h.

+ +
+
+ +

◆ defaultGridMaxGroundAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridMaxGroundAngle ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/MaxGroundAngle : 45 .

+ +

Definition at line 926 of file Parameters.h.

+ +
+
+ +

◆ typeGridMaxGroundAngle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridMaxGroundAngle ()
+
+inlinestatic
+
+ +

Type of parameter Grid/MaxGroundAngle , as a string: float .

+ +

Definition at line 926 of file Parameters.h.

+ +
+
+ +

◆ kGridNormalK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridNormalK ()
+
+inlinestatic
+
+ +

Key of parameter Grid/NormalK : uFormat("[%s=true] K neighbors to compute normals.", kGridNormalsSegmentation().c_str()) Default value: 20 ( int ).

+ +

Definition at line 927 of file Parameters.h.

+ +
+
+ +

◆ defaultGridNormalK()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGridNormalK ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/NormalK : 20 .

+ +

Definition at line 927 of file Parameters.h.

+ +
+
+ +

◆ typeGridNormalK()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridNormalK ()
+
+inlinestatic
+
+ +

Type of parameter Grid/NormalK , as a string: int .

+ +

Definition at line 927 of file Parameters.h.

+ +
+
+ +

◆ kGridClusterRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridClusterRadius ()
+
+inlinestatic
+
+ +

Key of parameter Grid/ClusterRadius : uFormat("[%s=true] Cluster maximum radius.", kGridNormalsSegmentation().c_str()) Default value: 0.1 ( float ).

+ +

Definition at line 928 of file Parameters.h.

+ +
+
+ +

◆ defaultGridClusterRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridClusterRadius ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/ClusterRadius : 0.1 .

+ +

Definition at line 928 of file Parameters.h.

+ +
+
+ +

◆ typeGridClusterRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridClusterRadius ()
+
+inlinestatic
+
+ +

Type of parameter Grid/ClusterRadius , as a string: float .

+ +

Definition at line 928 of file Parameters.h.

+ +
+
+ +

◆ kGridMinClusterSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridMinClusterSize ()
+
+inlinestatic
+
+ +

Key of parameter Grid/MinClusterSize : uFormat("[%s=true] Minimum cluster size to project the points.", kGridNormalsSegmentation().c_str()) Default value: 10 ( int ).

+ +

Definition at line 929 of file Parameters.h.

+ +
+
+ +

◆ defaultGridMinClusterSize()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGridMinClusterSize ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/MinClusterSize : 10 .

+ +

Definition at line 929 of file Parameters.h.

+ +
+
+ +

◆ typeGridMinClusterSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridMinClusterSize ()
+
+inlinestatic
+
+ +

Type of parameter Grid/MinClusterSize , as a string: int .

+ +

Definition at line 929 of file Parameters.h.

+ +
+
+ +

◆ kGridFlatObstacleDetected()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridFlatObstacleDetected ()
+
+inlinestatic
+
+ +

Key of parameter Grid/FlatObstacleDetected : uFormat("[%s=true] Flat obstacles detected.", kGridNormalsSegmentation().c_str()) Default value: true ( bool ).

+ +

Definition at line 930 of file Parameters.h.

+ +
+
+ +

◆ defaultGridFlatObstacleDetected()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridFlatObstacleDetected ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/FlatObstacleDetected : true .

+ +

Definition at line 930 of file Parameters.h.

+ +
+
+ +

◆ typeGridFlatObstacleDetected()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridFlatObstacleDetected ()
+
+inlinestatic
+
+ +

Type of parameter Grid/FlatObstacleDetected , as a string: bool .

+ +

Definition at line 930 of file Parameters.h.

+ +
+
+ +

◆ kGrid3D()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGrid3D ()
+
+inlinestatic
+
+ +

Key of parameter Grid/3D : uFormat("A 3D occupancy grid is required if you want an OctoMap (3D ray tracing). Set to false if you want only a 2D map, the cloud will be projected on xy plane. A 2D map can be still generated if checked, but it requires more memory and time to generate it. Ignored if laser scan is 2D and \"%s\" is 0.", kGridSensor().c_str()) Default value: false ( bool ).

+ +

Definition at line 934 of file Parameters.h.

+ +
+
+ +

◆ defaultGrid3D()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGrid3D ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/3D : false .

+ +

Definition at line 934 of file Parameters.h.

+ +
+
+ +

◆ typeGrid3D()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGrid3D ()
+
+inlinestatic
+
+ +

Type of parameter Grid/3D , as a string: bool .

+ +

Definition at line 934 of file Parameters.h.

+ +
+
+ +

◆ kGridGroundIsObstacle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGroundIsObstacle ()
+
+inlinestatic
+
+ +

Key of parameter Grid/GroundIsObstacle : uFormat("[%s=true] Ground segmentation (%s) is ignored, all points are obstacles. Use this only if you want an OctoMap with ground identified as an obstacle (e.g., with an UAV).", kGrid3D().c_str(), kGridNormalsSegmentation().c_str()) Default value: false ( bool ).

+ +

Definition at line 936 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGroundIsObstacle()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridGroundIsObstacle ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/GroundIsObstacle : false .

+ +

Definition at line 936 of file Parameters.h.

+ +
+
+ +

◆ typeGridGroundIsObstacle()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGroundIsObstacle ()
+
+inlinestatic
+
+ +

Type of parameter Grid/GroundIsObstacle , as a string: bool .

+ +

Definition at line 936 of file Parameters.h.

+ +
+
+ +

◆ kGridNoiseFilteringRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridNoiseFilteringRadius ()
+
+inlinestatic
+
+ +

Key of parameter Grid/NoiseFilteringRadius : "Noise filtering radius (0=disabled). Done after segmentation." Default value: 0.0 ( float ).

+ +

Definition at line 937 of file Parameters.h.

+ +
+
+ +

◆ defaultGridNoiseFilteringRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridNoiseFilteringRadius ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/NoiseFilteringRadius : 0.0 .

+ +

Definition at line 937 of file Parameters.h.

+ +
+
+ +

◆ typeGridNoiseFilteringRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridNoiseFilteringRadius ()
+
+inlinestatic
+
+ +

Type of parameter Grid/NoiseFilteringRadius , as a string: float .

+ +

Definition at line 937 of file Parameters.h.

+ +
+
+ +

◆ kGridNoiseFilteringMinNeighbors()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridNoiseFilteringMinNeighbors ()
+
+inlinestatic
+
+ +

Key of parameter Grid/NoiseFilteringMinNeighbors : "Noise filtering minimum neighbors." Default value: 5 ( int ).

+ +

Definition at line 938 of file Parameters.h.

+ +
+
+ +

◆ defaultGridNoiseFilteringMinNeighbors()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGridNoiseFilteringMinNeighbors ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/NoiseFilteringMinNeighbors : 5 .

+ +

Definition at line 938 of file Parameters.h.

+ +
+
+ +

◆ typeGridNoiseFilteringMinNeighbors()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridNoiseFilteringMinNeighbors ()
+
+inlinestatic
+
+ +

Type of parameter Grid/NoiseFilteringMinNeighbors , as a string: int .

+ +

Definition at line 938 of file Parameters.h.

+ +
+
+ +

◆ kGridScan2dUnknownSpaceFilled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridScan2dUnknownSpaceFilled ()
+
+inlinestatic
+
+ +

Key of parameter Grid/Scan2dUnknownSpaceFilled : uFormat("Unknown space filled. Only used with 2D laser scans. Use %s to set maximum range if laser scan max range is to set.", kGridRangeMax().c_str()) Default value: false ( bool ).

+ +

Definition at line 939 of file Parameters.h.

+ +
+
+ +

◆ defaultGridScan2dUnknownSpaceFilled()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridScan2dUnknownSpaceFilled ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/Scan2dUnknownSpaceFilled : false .

+ +

Definition at line 939 of file Parameters.h.

+ +
+
+ +

◆ typeGridScan2dUnknownSpaceFilled()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridScan2dUnknownSpaceFilled ()
+
+inlinestatic
+
+ +

Type of parameter Grid/Scan2dUnknownSpaceFilled , as a string: bool .

+ +

Definition at line 939 of file Parameters.h.

+ +
+
+ +

◆ kGridRayTracing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridRayTracing ()
+
+inlinestatic
+
+ +

Key of parameter Grid/RayTracing : uFormat("Ray tracing is done for each occupied cell, filling unknown space between the sensor and occupied cells. If %s=true, RTAB-Map should be built with OctoMap support, otherwise 3D ray tracing is ignored.", kGrid3D().c_str()) Default value: false ( bool ).

+ +

Definition at line 940 of file Parameters.h.

+ +
+
+ +

◆ defaultGridRayTracing()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridRayTracing ()
+
+inlinestatic
+
+ +

Default value of parameter Grid/RayTracing : false .

+ +

Definition at line 940 of file Parameters.h.

+ +
+
+ +

◆ typeGridRayTracing()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridRayTracing ()
+
+inlinestatic
+
+ +

Type of parameter Grid/RayTracing , as a string: bool .

+ +

Definition at line 940 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalUpdateError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalUpdateError ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/UpdateError : "Graph changed detection error (m). Update map only if poses in new optimized graph have moved more than this value." Default value: 0.01 ( float ).

+ +

Definition at line 941 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalUpdateError()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalUpdateError ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/UpdateError : 0.01 .

+ +

Definition at line 941 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalUpdateError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalUpdateError ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/UpdateError , as a string: float .

+ +

Definition at line 941 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalFootprintRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalFootprintRadius ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/FootprintRadius : "Footprint radius (m) used to clear all obstacles under the graph." Default value: 0.0 ( float ).

+ +

Definition at line 942 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalFootprintRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalFootprintRadius ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/FootprintRadius : 0.0 .

+ +

Definition at line 942 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalFootprintRadius()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalFootprintRadius ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/FootprintRadius , as a string: float .

+ +

Definition at line 942 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalMinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalMinSize ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/MinSize : "Minimum map size (m)." Default value: 0.0 ( float ).

+ +

Definition at line 943 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalMinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalMinSize ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/MinSize : 0.0 .

+ +

Definition at line 943 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalMinSize()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalMinSize ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/MinSize , as a string: float .

+ +

Definition at line 943 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalEroded()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalEroded ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/Eroded : "Erode obstacle cells." Default value: false ( bool ).

+ +

Definition at line 944 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalEroded()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultGridGlobalEroded ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/Eroded : false .

+ +

Definition at line 944 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalEroded()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalEroded ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/Eroded , as a string: bool .

+ +

Definition at line 944 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalMaxNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalMaxNodes ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/MaxNodes : "Maximum nodes assembled in the map starting from the last node (0=unlimited)." Default value: 0 ( int ).

+ +

Definition at line 945 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalMaxNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultGridGlobalMaxNodes ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/MaxNodes : 0 .

+ +

Definition at line 945 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalMaxNodes()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalMaxNodes ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/MaxNodes , as a string: int .

+ +

Definition at line 945 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalAltitudeDelta()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalAltitudeDelta ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/AltitudeDelta : "Assemble only nodes that have the same altitude of +-delta meters of the current pose (0=disabled). This is used to generate 2D occupancy grid based on the current altitude (e.g., multi-floor building)." Default value: 0 ( float ).

+ +

Definition at line 946 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalAltitudeDelta()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalAltitudeDelta ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/AltitudeDelta : 0 .

+ +

Definition at line 946 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalAltitudeDelta()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalAltitudeDelta ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/AltitudeDelta , as a string: float .

+ +

Definition at line 946 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalOccupancyThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalOccupancyThr ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/OccupancyThr : "Occupancy threshold (value between 0 and 1)." Default value: 0.5 ( float ).

+ +

Definition at line 947 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalOccupancyThr()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalOccupancyThr ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/OccupancyThr : 0.5 .

+ +

Definition at line 947 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalOccupancyThr()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalOccupancyThr ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/OccupancyThr , as a string: float .

+ +

Definition at line 947 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalProbHit()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalProbHit ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/ProbHit : "Probability of a hit (value between 0.5 and 1)." Default value: 0.7 ( float ).

+ +

Definition at line 948 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalProbHit()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalProbHit ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/ProbHit : 0.7 .

+ +

Definition at line 948 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalProbHit()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalProbHit ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/ProbHit , as a string: float .

+ +

Definition at line 948 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalProbMiss()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalProbMiss ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/ProbMiss : "Probability of a miss (value between 0 and 0.5)." Default value: 0.4 ( float ).

+ +

Definition at line 949 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalProbMiss()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalProbMiss ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/ProbMiss : 0.4 .

+ +

Definition at line 949 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalProbMiss()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalProbMiss ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/ProbMiss , as a string: float .

+ +

Definition at line 949 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalProbClampingMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalProbClampingMin ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/ProbClampingMin : "Probability clamping minimum (value between 0 and 1)." Default value: 0.1192 ( float ).

+ +

Definition at line 950 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalProbClampingMin()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalProbClampingMin ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/ProbClampingMin : 0.1192 .

+ +

Definition at line 950 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalProbClampingMin()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalProbClampingMin ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/ProbClampingMin , as a string: float .

+ +

Definition at line 950 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalProbClampingMax()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalProbClampingMax ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/ProbClampingMax : "Probability clamping maximum (value between 0 and 1)." Default value: 0.971 ( float ).

+ +

Definition at line 951 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalProbClampingMax()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultGridGlobalProbClampingMax ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/ProbClampingMax : 0.971 .

+ +

Definition at line 951 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalProbClampingMax()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalProbClampingMax ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/ProbClampingMax , as a string: float .

+ +

Definition at line 951 of file Parameters.h.

+ +
+
+ +

◆ kGridGlobalFloodFillDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kGridGlobalFloodFillDepth ()
+
+inlinestatic
+
+ +

Key of parameter GridGlobal/FloodFillDepth : "Flood fill filter (0=disabled), used to remove empty cells outside the map. The flood fill is done at the specified depth (between 1 and 16) of the OctoMap." Default value: 0 ( unsigned int ).

+ +

Definition at line 952 of file Parameters.h.

+ +
+
+ +

◆ defaultGridGlobalFloodFillDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned int rtabmap::Parameters::defaultGridGlobalFloodFillDepth ()
+
+inlinestatic
+
+ +

Default value of parameter GridGlobal/FloodFillDepth : 0 .

+ +

Definition at line 952 of file Parameters.h.

+ +
+
+ +

◆ typeGridGlobalFloodFillDepth()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeGridGlobalFloodFillDepth ()
+
+inlinestatic
+
+ +

Type of parameter GridGlobal/FloodFillDepth , as a string: unsigned int .

+ +

Definition at line 952 of file Parameters.h.

+ +
+
+ +

◆ kMarkerStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerStrategy ()
+
+inlinestatic
+
+ +

Key of parameter Marker/Strategy : "Marker detection implementation: 0=OpenCV, 1=AprilTag" Default value: 0 ( int ).

+ +

Definition at line 954 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultMarkerStrategy ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/Strategy : 0 .

+ +

Definition at line 954 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerStrategy ()
+
+inlinestatic
+
+ +

Type of parameter Marker/Strategy , as a string: int .

+ +

Definition at line 954 of file Parameters.h.

+ +
+
+ +

◆ kMarkerDictionary()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerDictionary ()
+
+inlinestatic
+
+ +

Key of parameter Marker/Dictionary : "Dictionary to use: DICT_ARUCO_4X4_50=0, DICT_ARUCO_4X4_100=1, DICT_ARUCO_4X4_250=2, DICT_ARUCO_4X4_1000=3, DICT_ARUCO_5X5_50=4, DICT_ARUCO_5X5_100=5, DICT_ARUCO_5X5_250=6, DICT_ARUCO_5X5_1000=7, DICT_ARUCO_6X6_50=8, DICT_ARUCO_6X6_100=9, DICT_ARUCO_6X6_250=10, DICT_ARUCO_6X6_1000=11, DICT_ARUCO_7X7_50=12, DICT_ARUCO_7X7_100=13, DICT_ARUCO_7X7_250=14, DICT_ARUCO_7X7_1000=15, DICT_ARUCO_ORIGINAL = 16, DICT_APRILTAG_16h5=17, DICT_APRILTAG_25h9=18, DICT_APRILTAG_36h10=19, DICT_APRILTAG_36h11=20, DICT_ARUCO_MIP_36H12=21" Default value: 0 ( int ).

+ +

Definition at line 955 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerDictionary()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultMarkerDictionary ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/Dictionary : 0 .

+ +

Definition at line 955 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerDictionary()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerDictionary ()
+
+inlinestatic
+
+ +

Type of parameter Marker/Dictionary , as a string: int .

+ +

Definition at line 955 of file Parameters.h.

+ +
+
+ +

◆ kMarkerLength()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerLength ()
+
+inlinestatic
+
+ +

Key of parameter Marker/Length : "The length (m) of the markers' side. Value <=0 means automatic marker length estimation using the depth image (the camera should look at the marker perpendicularly for initialization). If 0, the length is estimated only on the first marker detected, then re-used for all next detections (i.e., this assumes that markers have all the same length). With <0, the length is estimated once for each unique marker, then re-used for next detections with the same marker ID." Default value: 0 ( float ).

+ +

Definition at line 956 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerLength()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerLength ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/Length : 0 .

+ +

Definition at line 956 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerLength()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerLength ()
+
+inlinestatic
+
+ +

Type of parameter Marker/Length , as a string: float .

+ +

Definition at line 956 of file Parameters.h.

+ +
+
+ +

◆ kMarkerLengths()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerLengths ()
+
+inlinestatic
+
+ +

Key of parameter Marker/Lengths : uFormat("List of markers to detect. Format is the marker's ID followed by its length (in meters), multiple markers are separated by a vertical line (\"id1 length|id2 length\"). We can also define a range of markers with \"id1:id2 length\" (id2 included). If empty, all markers of the chosen dictionary can be detected and their length is set/estimated based on %s. For example, to detect markers 12 and 14 with lengths of 8 and 15 cm respectively, and all markers between 30 and 40 with a length of 10 cm, set \"12 0.08|14 0.15|30:40 0.1\".", kMarkerLength().c_str()).c_str() Default value: "" (string).

+ +

Definition at line 957 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerLengths()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultMarkerLengths ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/Lengths : "" .

+ +

Definition at line 957 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerLengths()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerLengths ()
+
+inlinestatic
+
+ +

Type of parameter Marker/Lengths , as a string: string.

+ +

Definition at line 957 of file Parameters.h.

+ +
+
+ +

◆ kMarkerMaxDepthError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerMaxDepthError ()
+
+inlinestatic
+
+ +

Key of parameter Marker/MaxDepthError : uFormat("Maximum depth error between all corners of a marker when estimating the marker length (when %s is 0). The smaller it is, the more perpendicular the camera should be toward the marker to initialize the length.", kMarkerLength().c_str()) Default value: 0.01 ( float ).

+ +

Definition at line 958 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerMaxDepthError()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerMaxDepthError ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/MaxDepthError : 0.01 .

+ +

Definition at line 958 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerMaxDepthError()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerMaxDepthError ()
+
+inlinestatic
+
+ +

Type of parameter Marker/MaxDepthError , as a string: float .

+ +

Definition at line 958 of file Parameters.h.

+ +
+
+ +

◆ kMarkerVarianceLinear()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerVarianceLinear ()
+
+inlinestatic
+
+ +

Key of parameter Marker/VarianceLinear : uFormat("Linear variance to set on marker detections. If %s is enabled and %s=2 (GTSAM): it is the variance of the range factor, with 9999 to disable range factor and to do only bearing.", kMarkerVarianceOrientationIgnored().c_str(), kOptimizerStrategy().c_str()) Default value: 0.001 ( float ).

+ +

Definition at line 959 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerVarianceLinear()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerVarianceLinear ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/VarianceLinear : 0.001 .

+ +

Definition at line 959 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerVarianceLinear()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerVarianceLinear ()
+
+inlinestatic
+
+ +

Type of parameter Marker/VarianceLinear , as a string: float .

+ +

Definition at line 959 of file Parameters.h.

+ +
+
+ +

◆ kMarkerVarianceAngular()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerVarianceAngular ()
+
+inlinestatic
+
+ +

Key of parameter Marker/VarianceAngular : uFormat("Angular variance to set on marker detections. If %s is enabled, it is ignored with %s=1 (g2o) and it corresponds to bearing variance with %s=2 (GTSAM).", kMarkerVarianceOrientationIgnored().c_str(), kOptimizerStrategy().c_str(), kOptimizerStrategy().c_str()) Default value: 0.01 ( float ).

+ +

Definition at line 960 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerVarianceAngular()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerVarianceAngular ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/VarianceAngular : 0.01 .

+ +

Definition at line 960 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerVarianceAngular()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerVarianceAngular ()
+
+inlinestatic
+
+ +

Type of parameter Marker/VarianceAngular , as a string: float .

+ +

Definition at line 960 of file Parameters.h.

+ +
+
+ +

◆ kMarkerVarianceOrientationIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerVarianceOrientationIgnored ()
+
+inlinestatic
+
+ +

Key of parameter Marker/VarianceOrientationIgnored : uFormat("When this setting is false, the landmark's orientation is optimized during graph optimization. When this setting is true, only the position of the landmark is optimized. This can be useful when the landmark's orientation estimation is not reliable. Note that for %s=1 (g2o), only %s needs be set if we ignore orientation. For %s=2 (GTSAM), instead of optimizing the landmark's position directly, a bearing/range factor is used, with %s as the variance of the range factor (with 9999 to optimize the position with only a bearing factor) and %s as the variance of the bearing factor (pitch/yaw).", kOptimizerStrategy().c_str(), kMarkerVarianceLinear().c_str(), kOptimizerStrategy().c_str(), kMarkerVarianceLinear().c_str(), kMarkerVarianceAngular().c_str()) Default value: false ( bool ).

+ +

Definition at line 961 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerVarianceOrientationIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMarkerVarianceOrientationIgnored ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/VarianceOrientationIgnored : false .

+ +

Definition at line 961 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerVarianceOrientationIgnored()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerVarianceOrientationIgnored ()
+
+inlinestatic
+
+ +

Type of parameter Marker/VarianceOrientationIgnored , as a string: bool .

+ +

Definition at line 961 of file Parameters.h.

+ +
+
+ +

◆ kMarkerMaxRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerMaxRange ()
+
+inlinestatic
+
+ +

Key of parameter Marker/MaxRange : "Maximum range in which markers will be detected. <=0 for unlimited range." Default value: 0.0 ( float ).

+ +

Definition at line 962 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerMaxRange()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerMaxRange ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/MaxRange : 0.0 .

+ +

Definition at line 962 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerMaxRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerMaxRange ()
+
+inlinestatic
+
+ +

Type of parameter Marker/MaxRange , as a string: float .

+ +

Definition at line 962 of file Parameters.h.

+ +
+
+ +

◆ kMarkerMinRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerMinRange ()
+
+inlinestatic
+
+ +

Key of parameter Marker/MinRange : "Miniminum range in which markers will be detected. <=0 for unlimited range." Default value: 0.0 ( float ).

+ +

Definition at line 963 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerMinRange()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerMinRange ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/MinRange : 0.0 .

+ +

Definition at line 963 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerMinRange()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerMinRange ()
+
+inlinestatic
+
+ +

Type of parameter Marker/MinRange , as a string: float .

+ +

Definition at line 963 of file Parameters.h.

+ +
+
+ +

◆ kMarkerPriors()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerPriors ()
+
+inlinestatic
+
+ +

Key of parameter Marker/Priors : "World prior locations of the markers. The map will be transformed in marker's world frame when a tag is detected. Format is the marker's ID followed by its position (angles in rad), multiple markers are separated by vertical line (\"id1 x y z roll pitch yaw|id2 x y z roll pitch yaw\"). Example: \"1 0 0 1 0 0 0|2 1 0 1 0 0 1.57\" (marker 2 is 1 meter forward than marker 1 with 90 deg yaw rotation)." Default value: "" (string).

+ +

Definition at line 964 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerPriors()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::defaultMarkerPriors ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/Priors : "" .

+ +

Definition at line 964 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerPriors()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerPriors ()
+
+inlinestatic
+
+ +

Type of parameter Marker/Priors , as a string: string.

+ +

Definition at line 964 of file Parameters.h.

+ +
+
+ +

◆ kMarkerPriorsVarianceLinear()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerPriorsVarianceLinear ()
+
+inlinestatic
+
+ +

Key of parameter Marker/PriorsVarianceLinear : "Linear variance to set on marker priors." Default value: 0.001 ( float ).

+ +

Definition at line 965 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerPriorsVarianceLinear()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerPriorsVarianceLinear ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/PriorsVarianceLinear : 0.001 .

+ +

Definition at line 965 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerPriorsVarianceLinear()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerPriorsVarianceLinear ()
+
+inlinestatic
+
+ +

Type of parameter Marker/PriorsVarianceLinear , as a string: float .

+ +

Definition at line 965 of file Parameters.h.

+ +
+
+ +

◆ kMarkerPriorsVarianceAngular()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerPriorsVarianceAngular ()
+
+inlinestatic
+
+ +

Key of parameter Marker/PriorsVarianceAngular : "Angular variance to set on marker priors." Default value: 0.001 ( float ).

+ +

Definition at line 966 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerPriorsVarianceAngular()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerPriorsVarianceAngular ()
+
+inlinestatic
+
+ +

Default value of parameter Marker/PriorsVarianceAngular : 0.001 .

+ +

Definition at line 966 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerPriorsVarianceAngular()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerPriorsVarianceAngular ()
+
+inlinestatic
+
+ +

Type of parameter Marker/PriorsVarianceAngular , as a string: float .

+ +

Definition at line 966 of file Parameters.h.

+ +
+
+ +

◆ kMarkerAprilTagNThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerAprilTagNThreads ()
+
+inlinestatic
+
+ +

Key of parameter MarkerAprilTag/NThreads : "How many threads should be used?" Default value: 1 ( int ).

+ +

Definition at line 968 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerAprilTagNThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultMarkerAprilTagNThreads ()
+
+inlinestatic
+
+ +

Default value of parameter MarkerAprilTag/NThreads : 1 .

+ +

Definition at line 968 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerAprilTagNThreads()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerAprilTagNThreads ()
+
+inlinestatic
+
+ +

Type of parameter MarkerAprilTag/NThreads , as a string: int .

+ +

Definition at line 968 of file Parameters.h.

+ +
+
+ +

◆ kMarkerAprilTagQuadDecimate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerAprilTagQuadDecimate ()
+
+inlinestatic
+
+ +

Key of parameter MarkerAprilTag/QuadDecimate : "Detection of quads can be done on a lower-resolution image, improving speed at a cost of pose accuracy and a slight decrease in detection rate. Decoding the binary payload is still done at full resolution." Default value: 1.0 ( float ).

+ +

Definition at line 969 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerAprilTagQuadDecimate()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerAprilTagQuadDecimate ()
+
+inlinestatic
+
+ +

Default value of parameter MarkerAprilTag/QuadDecimate : 1.0 .

+ +

Definition at line 969 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerAprilTagQuadDecimate()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerAprilTagQuadDecimate ()
+
+inlinestatic
+
+ +

Type of parameter MarkerAprilTag/QuadDecimate , as a string: float .

+ +

Definition at line 969 of file Parameters.h.

+ +
+
+ +

◆ kMarkerAprilTagQuadSigma()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerAprilTagQuadSigma ()
+
+inlinestatic
+
+ +

Key of parameter MarkerAprilTag/QuadSigma : "What Gaussian blur should be applied to the segmented image (used for quad detection?) Parameter is the standard deviation in pixels. Very noisy images benefit from non-zero values (e.g. 0.8)." Default value: 0.0 ( float ).

+ +

Definition at line 970 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerAprilTagQuadSigma()

+ +
+
+ + + + + +
+ + + + + + + +
static float rtabmap::Parameters::defaultMarkerAprilTagQuadSigma ()
+
+inlinestatic
+
+ +

Default value of parameter MarkerAprilTag/QuadSigma : 0.0 .

+ +

Definition at line 970 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerAprilTagQuadSigma()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerAprilTagQuadSigma ()
+
+inlinestatic
+
+ +

Type of parameter MarkerAprilTag/QuadSigma , as a string: float .

+ +

Definition at line 970 of file Parameters.h.

+ +
+
+ +

◆ kMarkerAprilTagRefineEdges()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerAprilTagRefineEdges ()
+
+inlinestatic
+
+ +

Key of parameter MarkerAprilTag/RefineEdges : uFormat("When true, the edges of the each quad are adjusted to \"snap to\" strong gradients nearby. This is useful when decimation is employed, as it can increase the quality of the initial quad estimate substantially. Generally recommended to be on (true). Very computationally inexpensive. Option is ignored if %s = 1.", kMarkerAprilTagQuadDecimate().c_str()) Default value: true ( bool ).

+ +

Definition at line 971 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerAprilTagRefineEdges()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMarkerAprilTagRefineEdges ()
+
+inlinestatic
+
+ +

Default value of parameter MarkerAprilTag/RefineEdges : true .

+ +

Definition at line 971 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerAprilTagRefineEdges()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerAprilTagRefineEdges ()
+
+inlinestatic
+
+ +

Type of parameter MarkerAprilTag/RefineEdges , as a string: bool .

+ +

Definition at line 971 of file Parameters.h.

+ +
+
+ +

◆ kMarkerAprilTagDecodeSharpening()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerAprilTagDecodeSharpening ()
+
+inlinestatic
+
+ +

Key of parameter MarkerAprilTag/DecodeSharpening : "How much sharpening should be done to decoded images? This can help decode small tags but may or may not help in odd lighting conditions or low light conditions." Default value: 0.25 ( double ).

+ +

Definition at line 972 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerAprilTagDecodeSharpening()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultMarkerAprilTagDecodeSharpening ()
+
+inlinestatic
+
+ +

Default value of parameter MarkerAprilTag/DecodeSharpening : 0.25 .

+ +

Definition at line 972 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerAprilTagDecodeSharpening()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerAprilTagDecodeSharpening ()
+
+inlinestatic
+
+ +

Type of parameter MarkerAprilTag/DecodeSharpening , as a string: double .

+ +

Definition at line 972 of file Parameters.h.

+ +
+
+ +

◆ kMarkerAprilTagDebug()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerAprilTagDebug ()
+
+inlinestatic
+
+ +

Key of parameter MarkerAprilTag/Debug : uFormat("When true, write a variety of debugging images to the working directory where the app started (not %s) at various stages through the detection process. (Somewhat slow).", kRtabmapWorkingDirectory().c_str()) Default value: false ( bool ).

+ +

Definition at line 973 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerAprilTagDebug()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultMarkerAprilTagDebug ()
+
+inlinestatic
+
+ +

Default value of parameter MarkerAprilTag/Debug : false .

+ +

Definition at line 973 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerAprilTagDebug()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerAprilTagDebug ()
+
+inlinestatic
+
+ +

Type of parameter MarkerAprilTag/Debug , as a string: bool .

+ +

Definition at line 973 of file Parameters.h.

+ +
+
+ +

◆ kMarkerOpenCVCornerRefinementMethod()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kMarkerOpenCVCornerRefinementMethod ()
+
+inlinestatic
+
+ +

Key of parameter MarkerOpenCV/CornerRefinementMethod : "Corner refinement method for OpenCV strategy (0: None, 1: Subpixel, 2:contour, 3: AprilTag2). For OpenCV <3.3.0, this is \"doCornerRefinement\" parameter: set 0 for false and 1 for true." Default value: 0 ( int ).

+ +

Definition at line 975 of file Parameters.h.

+ +
+
+ +

◆ defaultMarkerOpenCVCornerRefinementMethod()

+ +
+
+ + + + + +
+ + + + + + + +
static int rtabmap::Parameters::defaultMarkerOpenCVCornerRefinementMethod ()
+
+inlinestatic
+
+ +

Default value of parameter MarkerOpenCV/CornerRefinementMethod : 0 .

+ +

Definition at line 975 of file Parameters.h.

+ +
+
+ +

◆ typeMarkerOpenCVCornerRefinementMethod()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeMarkerOpenCVCornerRefinementMethod ()
+
+inlinestatic
+
+ +

Type of parameter MarkerOpenCV/CornerRefinementMethod , as a string: int .

+ +

Definition at line 975 of file Parameters.h.

+ +
+
+ +

◆ kImuFilterMadgwickGain()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kImuFilterMadgwickGain ()
+
+inlinestatic
+
+ +

Key of parameter ImuFilter/MadgwickGain : "Gain of the filter. Higher values lead to faster convergence but more noise. Lower values lead to slower convergence but smoother signal, belongs in [0, 1]." Default value: 0.1 ( double ).

+ +

Definition at line 977 of file Parameters.h.

+ +
+
+ +

◆ defaultImuFilterMadgwickGain()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultImuFilterMadgwickGain ()
+
+inlinestatic
+
+ +

Default value of parameter ImuFilter/MadgwickGain : 0.1 .

+ +

Definition at line 977 of file Parameters.h.

+ +
+
+ +

◆ typeImuFilterMadgwickGain()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeImuFilterMadgwickGain ()
+
+inlinestatic
+
+ +

Type of parameter ImuFilter/MadgwickGain , as a string: double .

+ +

Definition at line 977 of file Parameters.h.

+ +
+
+ +

◆ kImuFilterMadgwickZeta()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kImuFilterMadgwickZeta ()
+
+inlinestatic
+
+ +

Key of parameter ImuFilter/MadgwickZeta : "Gyro drift gain (approx. rad/s), belongs in [-1, 1]." Default value: 0.0 ( double ).

+ +

Definition at line 978 of file Parameters.h.

+ +
+
+ +

◆ defaultImuFilterMadgwickZeta()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultImuFilterMadgwickZeta ()
+
+inlinestatic
+
+ +

Default value of parameter ImuFilter/MadgwickZeta : 0.0 .

+ +

Definition at line 978 of file Parameters.h.

+ +
+
+ +

◆ typeImuFilterMadgwickZeta()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeImuFilterMadgwickZeta ()
+
+inlinestatic
+
+ +

Type of parameter ImuFilter/MadgwickZeta , as a string: double .

+ +

Definition at line 978 of file Parameters.h.

+ +
+
+ +

◆ kImuFilterComplementaryGainAcc()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kImuFilterComplementaryGainAcc ()
+
+inlinestatic
+
+ +

Key of parameter ImuFilter/ComplementaryGainAcc : "Gain parameter for the complementary filter, belongs in [0, 1]." Default value: 0.01 ( double ).

+ +

Definition at line 980 of file Parameters.h.

+ +
+
+ +

◆ defaultImuFilterComplementaryGainAcc()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultImuFilterComplementaryGainAcc ()
+
+inlinestatic
+
+ +

Default value of parameter ImuFilter/ComplementaryGainAcc : 0.01 .

+ +

Definition at line 980 of file Parameters.h.

+ +
+
+ +

◆ typeImuFilterComplementaryGainAcc()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeImuFilterComplementaryGainAcc ()
+
+inlinestatic
+
+ +

Type of parameter ImuFilter/ComplementaryGainAcc , as a string: double .

+ +

Definition at line 980 of file Parameters.h.

+ +
+
+ +

◆ kImuFilterComplementaryBiasAlpha()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kImuFilterComplementaryBiasAlpha ()
+
+inlinestatic
+
+ +

Key of parameter ImuFilter/ComplementaryBiasAlpha : "Bias estimation gain parameter, belongs in [0, 1]." Default value: 0.01 ( double ).

+ +

Definition at line 981 of file Parameters.h.

+ +
+
+ +

◆ defaultImuFilterComplementaryBiasAlpha()

+ +
+
+ + + + + +
+ + + + + + + +
static double rtabmap::Parameters::defaultImuFilterComplementaryBiasAlpha ()
+
+inlinestatic
+
+ +

Default value of parameter ImuFilter/ComplementaryBiasAlpha : 0.01 .

+ +

Definition at line 981 of file Parameters.h.

+ +
+
+ +

◆ typeImuFilterComplementaryBiasAlpha()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeImuFilterComplementaryBiasAlpha ()
+
+inlinestatic
+
+ +

Type of parameter ImuFilter/ComplementaryBiasAlpha , as a string: double .

+ +

Definition at line 981 of file Parameters.h.

+ +
+
+ +

◆ kImuFilterComplementaryDoBiasEstimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kImuFilterComplementaryDoBiasEstimation ()
+
+inlinestatic
+
+ +

Key of parameter ImuFilter/ComplementaryDoBiasEstimation : "Parameter whether to do bias estimation or not." Default value: true ( bool ).

+ +

Definition at line 982 of file Parameters.h.

+ +
+
+ +

◆ defaultImuFilterComplementaryDoBiasEstimation()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultImuFilterComplementaryDoBiasEstimation ()
+
+inlinestatic
+
+ +

Default value of parameter ImuFilter/ComplementaryDoBiasEstimation : true .

+ +

Definition at line 982 of file Parameters.h.

+ +
+
+ +

◆ typeImuFilterComplementaryDoBiasEstimation()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeImuFilterComplementaryDoBiasEstimation ()
+
+inlinestatic
+
+ +

Type of parameter ImuFilter/ComplementaryDoBiasEstimation , as a string: bool .

+ +

Definition at line 982 of file Parameters.h.

+ +
+
+ +

◆ kImuFilterComplementaryDoAdpativeGain()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::kImuFilterComplementaryDoAdpativeGain ()
+
+inlinestatic
+
+ +

Key of parameter ImuFilter/ComplementaryDoAdpativeGain : "Parameter whether to do adaptive gain or not." Default value: true ( bool ).

+ +

Definition at line 983 of file Parameters.h.

+ +
+
+ +

◆ defaultImuFilterComplementaryDoAdpativeGain()

+ +
+
+ + + + + +
+ + + + + + + +
static bool rtabmap::Parameters::defaultImuFilterComplementaryDoAdpativeGain ()
+
+inlinestatic
+
+ +

Default value of parameter ImuFilter/ComplementaryDoAdpativeGain : true .

+ +

Definition at line 983 of file Parameters.h.

+ +
+
+ +

◆ typeImuFilterComplementaryDoAdpativeGain()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string rtabmap::Parameters::typeImuFilterComplementaryDoAdpativeGain ()
+
+inlinestatic
+
+ +

Type of parameter ImuFilter/ComplementaryDoAdpativeGain , as a string: bool .

+ +

Definition at line 983 of file Parameters.h.

+ +
+
+ +

◆ getDefaultParameters()

+ +
+
+ + + + + +
+ + + + + + + +
static const ParametersMap & rtabmap::Parameters::getDefaultParameters ()
+
+inlinestatic
+
+

Get default parameters

+ +

Definition at line 992 of file Parameters.h.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::Parameters::getType (const std::string & paramKey)
+
+static
+
+

Get parameter type

+ +
+
+ +

◆ getDescription()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::Parameters::getDescription (const std::string & paramKey)
+
+static
+
+

Get parameter description

+ +
+
+ +

◆ filterParameters()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static ParametersMap rtabmap::Parameters::filterParameters (const ParametersMap & parameters,
const std::string & group,
bool remove = false 
)
+
+static
+
+

If remove=false: keep only parameters of the specified group. If remove=true: remove parameters of the specified group.

+ +
+
+ +

◆ getRemovedParameters()

+ +
+
+ + + + + +
+ + + + + + + +
static const std::map< std::string, std::pair< bool, std::string > > & rtabmap::Parameters::getRemovedParameters ()
+
+static
+
+

Get removed parameters (backward compatibility) <OldKeyName, <isEqual, NewKeyName> >, when isEqual=true, the old value can be safely copied to new parameter

+ +
+
+ +

◆ getBackwardCompatibilityMap()

+ +
+
+ + + + + +
+ + + + + + + +
static const ParametersMap & rtabmap::Parameters::getBackwardCompatibilityMap ()
+
+static
+
+

<NewKeyName, OldKeyName>

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter-members.html new file mode 100644 index 00000000..2ce43de8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter-members.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::ParticleFilter Member List
+
+
+ +

This is the complete list of members for rtabmap::ParticleFilter, including all inherited members.

+ + + + +
filter(double val) (defined in rtabmap::ParticleFilter)rtabmap::ParticleFilterinline
init(double initValue=0.0f) (defined in rtabmap::ParticleFilter)rtabmap::ParticleFilterinline
ParticleFilter(unsigned int nParticles=200, double noise=0.1, double lambda=10.0, double initValue=0.0) (defined in rtabmap::ParticleFilter)rtabmap::ParticleFilterinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter.html b/preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter.html new file mode 100644 index 00000000..1ca8ecbe --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ParticleFilter.html @@ -0,0 +1,241 @@ + + + + + + + + +RTAB-Map: rtabmap::ParticleFilter Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::ParticleFilter Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

 ParticleFilter (unsigned int nParticles=200, double noise=0.1, double lambda=10.0, double initValue=0.0)
 
void init (double initValue=0.0f)
 
double filter (double val)
 
+

Detailed Description

+
+

Definition at line 115 of file ParticleFilter.h.

+

Constructor & Destructor Documentation

+ +

◆ ParticleFilter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::ParticleFilter::ParticleFilter (unsigned int nParticles = 200,
double noise = 0.1,
double lambda = 10.0,
double initValue = 0.0 
)
+
+inline
+
+ +

Definition at line 118 of file ParticleFilter.h.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::ParticleFilter::init (double initValue = 0.0f)
+
+inline
+
+ +

Definition at line 128 of file ParticleFilter.h.

+ +
+
+ +

◆ filter()

+ +
+
+ + + + + +
+ + + + + + + + +
double rtabmap::ParticleFilter::filter (double val)
+
+inline
+
+ +

Definition at line 133 of file ParticleFilter.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ProgressState-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1ProgressState-members.html new file mode 100644 index 00000000..159a9398 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ProgressState-members.html @@ -0,0 +1,121 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::ProgressState Member List
+
+
+ +

This is the complete list of members for rtabmap::ProgressState, including all inherited members.

+ + + + + + +
callback(const std::string &msg) const (defined in rtabmap::ProgressState)rtabmap::ProgressStateinlinevirtual
isCanceled() const (defined in rtabmap::ProgressState)rtabmap::ProgressStateinline
ProgressState() (defined in rtabmap::ProgressState)rtabmap::ProgressStateinline
setCanceled(bool canceled) (defined in rtabmap::ProgressState)rtabmap::ProgressStateinline
~ProgressState() (defined in rtabmap::ProgressState)rtabmap::ProgressStateinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1ProgressState.html b/preview/pr-1773/api/latest/classrtabmap_1_1ProgressState.html new file mode 100644 index 00000000..ff1512a9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1ProgressState.html @@ -0,0 +1,272 @@ + + + + + + + + +RTAB-Map: rtabmap::ProgressState Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::ProgressState Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

virtual bool callback (const std::string &msg) const
 
void setCanceled (bool canceled)
 
bool isCanceled () const
 
+

Detailed Description

+
+

Definition at line 35 of file ProgressState.h.

+

Constructor & Destructor Documentation

+ +

◆ ProgressState()

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::ProgressState::ProgressState ()
+
+inline
+
+ +

Definition at line 38 of file ProgressState.h.

+ +
+
+ +

◆ ~ProgressState()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::ProgressState::~ProgressState ()
+
+inlinevirtual
+
+ +

Definition at line 45 of file ProgressState.h.

+ +
+
+

Member Function Documentation

+ +

◆ callback()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool rtabmap::ProgressState::callback (const std::string & msg) const
+
+inlinevirtual
+
+ +

Definition at line 39 of file ProgressState.h.

+ +
+
+ +

◆ setCanceled()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::ProgressState::setCanceled (bool canceled)
+
+inline
+
+ +

Definition at line 47 of file ProgressState.h.

+ +
+
+ +

◆ isCanceled()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::ProgressState::isCanceled () const
+
+inline
+
+ +

Definition at line 51 of file ProgressState.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface-members.html new file mode 100644 index 00000000..f0373525 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface-members.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::PythonInterface Member List
+
+
+ +

This is the complete list of members for rtabmap::PythonInterface, including all inherited members.

+ + + + +
instance(const std::string &caller="") (defined in rtabmap::PythonInterface)rtabmap::PythonInterfacestatic
operator=(const PythonInterface &)=delete (defined in rtabmap::PythonInterface)rtabmap::PythonInterface
PythonInterface(const PythonInterface &)=delete (defined in rtabmap::PythonInterface)rtabmap::PythonInterface
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface.html b/preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface.html new file mode 100644 index 00000000..b12e3414 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1PythonInterface.html @@ -0,0 +1,143 @@ + + + + + + + + +RTAB-Map: rtabmap::PythonInterface Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::PythonInterface Class Reference
+
+
+ +

#include <PythonInterface.h>

+ + + + + + +

+Public Member Functions

+ PythonInterface (const PythonInterface &)=delete
 
+PythonInterface & operator= (const PythonInterface &)=delete
 
+ + + +

+Static Public Member Functions

+static PythonInterface & instance (const std::string &caller="")
 
+

Detailed Description

+

Process-wide singleton owning the embedded Python interpreter. Call PythonInterface::instance() from the main thread (typically near the top of main()) before any Python-using class is constructed.

+ +

Definition at line 28 of file PythonInterface.h.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Registration-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Registration-members.html new file mode 100644 index 00000000..63062b8f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Registration-members.html @@ -0,0 +1,147 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Registration Member List
+
+
+ +

This is the complete list of members for rtabmap::Registration, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canUseGuess() constrtabmap::Registration
canUseGuessImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
computeTransformation(const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
computeTransformation(const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const =0rtabmap::Registrationprotectedpure virtual
computeTransformationMod(Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
COVARIANCE_ANGULAR_EPSILONrtabmap::Registrationstatic
COVARIANCE_LINEAR_EPSILONrtabmap::Registrationstatic
create(const ParametersMap &parameters)rtabmap::Registrationstatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Registrationstatic
force3DoF() constrtabmap::Registrationinline
getMinGeometryCorrespondencesRatio() constrtabmap::Registration
getMinGeometryCorrespondencesRatioImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
getMinVisualCorrespondences() constrtabmap::Registration
getMinVisualCorrespondencesImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
isImageRequired() constrtabmap::Registration
isImageRequiredImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
isScanRequired() constrtabmap::Registration
isScanRequiredImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
isUserDataRequired() constrtabmap::Registration
isUserDataRequiredImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
kTypeIcp enum valuertabmap::Registration
kTypeUndef enum valuertabmap::Registration
kTypeVis enum valuertabmap::Registration
kTypeVisIcp enum valuertabmap::Registration
parseParameters(const ParametersMap &parameters)rtabmap::Registrationvirtual
Registration(const ParametersMap &parameters=ParametersMap(), Registration *child=0)rtabmap::Registrationprotected
repeatOnce() constrtabmap::Registrationinline
setChildRegistration(Registration *child)rtabmap::Registration
Type enum namertabmap::Registration
~Registration() (defined in rtabmap::Registration)rtabmap::Registrationvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Registration.html b/preview/pr-1773/api/latest/classrtabmap_1_1Registration.html new file mode 100644 index 00000000..7f5f7509 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Registration.html @@ -0,0 +1,640 @@ + + + + + + + + +RTAB-Map: rtabmap::Registration Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract base for registering two observations (visual, ICP, or both). + More...

+ +

#include <Registration.h>

+
+Inheritance diagram for rtabmap::Registration:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + +

+Public Types

enum  Type { kTypeUndef = -1 +, kTypeVis = 0 +, kTypeIcp = 1 +, kTypeVisIcp = 2 + }
 Registration strategy selected by Reg/Strategy. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void parseParameters (const ParametersMap &parameters)
 Parses Reg/RepeatOnce, Reg/Force3DoF and forwards to the child registration if set.
 
+bool isImageRequired () const
 True if images are needed (parent or child).
 
+bool isScanRequired () const
 True if laser scans are needed (parent or child).
 
+bool isUserDataRequired () const
 True if user data is needed (parent or child).
 
+bool canUseGuess () const
 True if the strategy can refine an initial guess (parent or child).
 
+int getMinVisualCorrespondences () const
 Minimum visual inliers required (max of parent and child thresholds).
 
+float getMinGeometryCorrespondencesRatio () const
 Minimum geometry inlier ratio required (max of parent and child thresholds).
 
bool repeatOnce () const
 
bool force3DoF () const
 
+void setChildRegistration (Registration *child)
 Replaces the current child registration; takes ownership of child.
 
+Transform computeTransformation (const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers from to to using immutable signatures (copied internally).
 
+Transform computeTransformation (const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers two SensorData observations (wrapped as signatures).
 
+Transform computeTransformationMod (Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers from to to; signatures may be modified by the implementation.
 
+ + + + + + + +

+Static Public Member Functions

+static Registration * create (const ParametersMap &parameters)
 Creates a registration from Reg/Strategy in parameters. Caller owns the pointer.
 
+static Registration * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates a registration of type (may be adjusted, e.g. to kTypeVis). Caller owns the pointer.
 
+ + + + + + + +

+Static Public Attributes

static double COVARIANCE_LINEAR_EPSILON
 Minimum diagonal value for linear covariance (m²).
 
static double COVARIANCE_ANGULAR_EPSILON
 Minimum diagonal value for angular covariance (rad²).
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+ Registration (const ParametersMap &parameters=ParametersMap(), Registration *child=0)
 child is owned and deleted in the destructor.
 
virtual Transform computeTransformationImpl (Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const =0
 Strategy-specific registration.
 
virtual bool isImageRequiredImpl () const
 
virtual bool isScanRequiredImpl () const
 
virtual bool isUserDataRequiredImpl () const
 
virtual bool canUseGuessImpl () const
 
virtual int getMinVisualCorrespondencesImpl () const
 
virtual float getMinGeometryCorrespondencesRatioImpl () const
 
+

Detailed Description

+

Abstract base for registering two observations (visual, ICP, or both).

+

Factory create() builds RegistrationVis, RegistrationIcp, or the two chained (kTypeVisIcp) from Reg/Strategy in a ParametersMap.

+

computeTransformation() wraps signatures and delegates to computeTransformationMod(), which calls computeTransformationImpl() on the concrete strategy, optionally chains a child registration (e.g. ICP after visual), applies Reg/Force3DoF, and may repeat once with the first result as guess when Reg/RepeatOnce is enabled.

+

Requirement queries (isImageRequired(), isScanRequired(), etc.) OR-combine with the child when the parent returns false. Minimum correspondence thresholds take the maximum between parent and child.

+
See also
RegistrationVis
+
+RegistrationIcp
+
+RegistrationInfo
+ +

Definition at line 60 of file Registration.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::Registration::Type
+
+ +

Registration strategy selected by Reg/Strategy.

+ + + + + +
Enumerator
kTypeUndef 

Undefined / invalid strategy.

+
kTypeVis 

Visual registration only (RegistrationVis).

+
kTypeIcp 

Geometric registration only (RegistrationIcp).

+
kTypeVisIcp 

Visual registration refined by ICP (RegistrationVis chained with RegistrationIcp).

+
+ +

Definition at line 64 of file Registration.h.

+ +
+
+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::Registration::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Parses Reg/RepeatOnce, Reg/Force3DoF and forwards to the child registration if set.

+ +

Reimplemented in rtabmap::RegistrationIcp, and rtabmap::RegistrationVis.

+ +
+
+ +

◆ repeatOnce()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Registration::repeatOnce () const
+
+inline
+
+
Returns
Value of Reg/RepeatOnce.
+ +

Definition at line 102 of file Registration.h.

+ +
+
+ +

◆ force3DoF()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Registration::force3DoF () const
+
+inline
+
+
Returns
Value of Reg/Force3DoF.
+ +

Definition at line 104 of file Registration.h.

+ +
+
+ +

◆ computeTransformationImpl()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual Transform rtabmap::Registration::computeTransformationImpl (Signature & from,
Signature & to,
Transform guess,
RegistrationInfo & info 
) const
+
+protectedpure virtual
+
+ +

Strategy-specific registration.

+

May modify from and to; a child registration reuses those changes.

+ +

Implemented in rtabmap::RegistrationIcp, and rtabmap::RegistrationVis.

+ +
+
+ +

◆ isImageRequiredImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Registration::isImageRequiredImpl () const
+
+inlineprotectedvirtual
+
+ +

Definition at line 144 of file Registration.h.

+ +
+
+ +

◆ isScanRequiredImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Registration::isScanRequiredImpl () const
+
+inlineprotectedvirtual
+
+ +

Definition at line 145 of file Registration.h.

+ +
+
+ +

◆ isUserDataRequiredImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Registration::isUserDataRequiredImpl () const
+
+inlineprotectedvirtual
+
+ +

Definition at line 146 of file Registration.h.

+ +
+
+ +

◆ canUseGuessImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Registration::canUseGuessImpl () const
+
+inlineprotectedvirtual
+
+ +

Definition at line 147 of file Registration.h.

+ +
+
+ +

◆ getMinVisualCorrespondencesImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int rtabmap::Registration::getMinVisualCorrespondencesImpl () const
+
+inlineprotectedvirtual
+
+ +

Definition at line 148 of file Registration.h.

+ +
+
+ +

◆ getMinGeometryCorrespondencesRatioImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float rtabmap::Registration::getMinGeometryCorrespondencesRatioImpl () const
+
+inlineprotectedvirtual
+
+ +

Definition at line 149 of file Registration.h.

+ +
+
+

Member Data Documentation

+ +

◆ COVARIANCE_LINEAR_EPSILON

+ +
+
+ + + + + +
+ + + + +
double rtabmap::Registration::COVARIANCE_LINEAR_EPSILON
+
+static
+
+ +

Minimum diagonal value for linear covariance (m²).

+ +

Definition at line 71 of file Registration.h.

+ +
+
+ +

◆ COVARIANCE_ANGULAR_EPSILON

+ +
+
+ + + + + +
+ + + + +
double rtabmap::Registration::COVARIANCE_ANGULAR_EPSILON
+
+static
+
+ +

Minimum diagonal value for angular covariance (rad²).

+ +

Definition at line 73 of file Registration.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Registration.js b/preview/pr-1773/api/latest/classrtabmap_1_1Registration.js new file mode 100644 index 00000000..81edbd3c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Registration.js @@ -0,0 +1,24 @@ +var classrtabmap_1_1Registration = +[ + [ "Type", "classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849", [ + [ "kTypeUndef", "classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a1e25205ebb65fe2315a0b7050e613c6d", null ], + [ "kTypeVis", "classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a8e6dbf98a9a843c34d16b8c7e546c724", null ], + [ "kTypeIcp", "classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a8638e369c895a337f587e727e1a712ab", null ], + [ "kTypeVisIcp", "classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849ad03189dad590b6e2d81adbc7d20bf662", null ] + ] ], + [ "Registration", "classrtabmap_1_1Registration.html#a7d0ff4149da7f5839308ff543932b067", null ], + [ "parseParameters", "classrtabmap_1_1Registration.html#a0f409a8f0973667ef1687fe102bbf930", null ], + [ "isImageRequired", "classrtabmap_1_1Registration.html#ae10ae7b6dbf4d5396db66600ebe18228", null ], + [ "isScanRequired", "classrtabmap_1_1Registration.html#aa0748ad5a576d0919ef0d360137e5ea7", null ], + [ "isUserDataRequired", "classrtabmap_1_1Registration.html#a3cd064c74588fd13cce178596e188b5d", null ], + [ "canUseGuess", "classrtabmap_1_1Registration.html#ab000f795ec498882585a634c2dafec05", null ], + [ "getMinVisualCorrespondences", "classrtabmap_1_1Registration.html#abc02df4842af900fbb5da75b8e5318e0", null ], + [ "getMinGeometryCorrespondencesRatio", "classrtabmap_1_1Registration.html#ac4baf87f079ce52df845805b84cad6c9", null ], + [ "repeatOnce", "classrtabmap_1_1Registration.html#a7a9163259eaebff421953e194a623864", null ], + [ "force3DoF", "classrtabmap_1_1Registration.html#abb255bdab60a262f9cfc5d868e50cc9c", null ], + [ "setChildRegistration", "classrtabmap_1_1Registration.html#ac105402feeb2ec6551235296604145aa", null ], + [ "computeTransformation", "classrtabmap_1_1Registration.html#aa6b81a6f4137138a1b49510cc3f97679", null ], + [ "computeTransformation", "classrtabmap_1_1Registration.html#a42d0c93204bc4da11eb89707ea2c03c6", null ], + [ "computeTransformationMod", "classrtabmap_1_1Registration.html#a44530cd77f6d0a9657251864fb136c0d", null ], + [ "computeTransformationImpl", "classrtabmap_1_1Registration.html#a21635a391a85b64bc33787179a6cd71b", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp-members.html new file mode 100644 index 00000000..9cdafb10 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp-members.html @@ -0,0 +1,158 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RegistrationIcp Member List
+
+
+ +

This is the complete list of members for rtabmap::RegistrationIcp, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
available(IcpStrategy strategy)rtabmap::RegistrationIcpstatic
canUseGuess() constrtabmap::Registration
canUseGuessImpl() const (defined in rtabmap::RegistrationIcp)rtabmap::RegistrationIcpinlineprotectedvirtual
computeTransformation(const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
computeTransformation(const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) constrtabmap::RegistrationIcpprotectedvirtual
computeTransformationMod(Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
COVARIANCE_ANGULAR_EPSILONrtabmap::Registrationstatic
COVARIANCE_LINEAR_EPSILONrtabmap::Registrationstatic
create(const ParametersMap &parameters)rtabmap::Registrationstatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Registrationstatic
force3DoF() constrtabmap::Registrationinline
getMinGeometryCorrespondencesRatio() constrtabmap::Registration
getMinGeometryCorrespondencesRatioImpl() const (defined in rtabmap::RegistrationIcp)rtabmap::RegistrationIcpinlineprotectedvirtual
getMinVisualCorrespondences() constrtabmap::Registration
getMinVisualCorrespondencesImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
IcpStrategy enum namertabmap::RegistrationIcp
isImageRequired() constrtabmap::Registration
isImageRequiredImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
isScanRequired() constrtabmap::Registration
isScanRequiredImpl() const (defined in rtabmap::RegistrationIcp)rtabmap::RegistrationIcpinlineprotectedvirtual
isUserDataRequired() constrtabmap::Registration
isUserDataRequiredImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
kIcpCCCoreLib enum valuertabmap::RegistrationIcp
kIcpEnd enum valuertabmap::RegistrationIcp
kIcpPCL enum valuertabmap::RegistrationIcp
kIcpPointMatcher enum valuertabmap::RegistrationIcp
kIcpUndef enum valuertabmap::RegistrationIcp
kTypeIcp enum valuertabmap::Registration
kTypeUndef enum valuertabmap::Registration
kTypeVis enum valuertabmap::Registration
kTypeVisIcp enum valuertabmap::Registration
parseParameters(const ParametersMap &parameters)rtabmap::RegistrationIcpvirtual
Registration(const ParametersMap &parameters=ParametersMap(), Registration *child=0)rtabmap::Registrationprotected
RegistrationIcp(const ParametersMap &parameters=ParametersMap(), Registration *child=0) (defined in rtabmap::RegistrationIcp)rtabmap::RegistrationIcp
RegistrationIcp(IcpStrategy strategy, const ParametersMap &parameters=ParametersMap(), Registration *child=0) (defined in rtabmap::RegistrationIcp)rtabmap::RegistrationIcp
repeatOnce() constrtabmap::Registrationinline
setChildRegistration(Registration *child)rtabmap::Registration
strategyName(IcpStrategy strategy)rtabmap::RegistrationIcpstatic
Type enum namertabmap::Registration
~Registration() (defined in rtabmap::Registration)rtabmap::Registrationvirtual
~RegistrationIcp() (defined in rtabmap::RegistrationIcp)rtabmap::RegistrationIcpvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.html b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.html new file mode 100644 index 00000000..4f78b294 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.html @@ -0,0 +1,506 @@ + + + + + + + + +RTAB-Map: rtabmap::RegistrationIcp Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for rtabmap::RegistrationIcp:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RegistrationIcp:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + +

+Public Types

enum  IcpStrategy {
+  kIcpUndef = -1 +, kIcpPCL = 0 +, kIcpPointMatcher = 1 +, kIcpCCCoreLib = 2 +,
+  kIcpEnd = 3 +
+ }
 
- Public Types inherited from rtabmap::Registration
enum  Type { kTypeUndef = -1 +, kTypeVis = 0 +, kTypeIcp = 1 +, kTypeVisIcp = 2 + }
 Registration strategy selected by Reg/Strategy. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ RegistrationIcp (const ParametersMap &parameters=ParametersMap(), Registration *child=0)
 
+ RegistrationIcp (IcpStrategy strategy, const ParametersMap &parameters=ParametersMap(), Registration *child=0)
 
virtual void parseParameters (const ParametersMap &parameters)
 Parses Reg/RepeatOnce, Reg/Force3DoF and forwards to the child registration if set.
 
- Public Member Functions inherited from rtabmap::Registration
+bool isImageRequired () const
 True if images are needed (parent or child).
 
+bool isScanRequired () const
 True if laser scans are needed (parent or child).
 
+bool isUserDataRequired () const
 True if user data is needed (parent or child).
 
+bool canUseGuess () const
 True if the strategy can refine an initial guess (parent or child).
 
+int getMinVisualCorrespondences () const
 Minimum visual inliers required (max of parent and child thresholds).
 
+float getMinGeometryCorrespondencesRatio () const
 Minimum geometry inlier ratio required (max of parent and child thresholds).
 
bool repeatOnce () const
 
bool force3DoF () const
 
+void setChildRegistration (Registration *child)
 Replaces the current child registration; takes ownership of child.
 
+Transform computeTransformation (const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers from to to using immutable signatures (copied internally).
 
+Transform computeTransformation (const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers two SensorData observations (wrapped as signatures).
 
+Transform computeTransformationMod (Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers from to to; signatures may be modified by the implementation.
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static bool available (IcpStrategy strategy)
 Returns true if strategy is built into this rtabmap binary.
 
+static const char * strategyName (IcpStrategy strategy)
 Human-readable name for strategy ("PCL", "libpointmatcher", "CCCoreLib", or "Unknown").
 
- Static Public Member Functions inherited from rtabmap::Registration
+static Registration * create (const ParametersMap &parameters)
 Creates a registration from Reg/Strategy in parameters. Caller owns the pointer.
 
+static Registration * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates a registration of type (may be adjusted, e.g. to kTypeVis). Caller owns the pointer.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual Transform computeTransformationImpl (Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const
 Strategy-specific registration.
 
virtual bool isScanRequiredImpl () const
 
virtual bool canUseGuessImpl () const
 
virtual float getMinGeometryCorrespondencesRatioImpl () const
 
- Protected Member Functions inherited from rtabmap::Registration
+ Registration (const ParametersMap &parameters=ParametersMap(), Registration *child=0)
 child is owned and deleted in the destructor.
 
virtual bool isImageRequiredImpl () const
 
virtual bool isUserDataRequiredImpl () const
 
virtual int getMinVisualCorrespondencesImpl () const
 
+ + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from rtabmap::Registration
static double COVARIANCE_LINEAR_EPSILON
 Minimum diagonal value for linear covariance (m²).
 
static double COVARIANCE_ANGULAR_EPSILON
 Minimum diagonal value for angular covariance (rad²).
 
+

Detailed Description

+
+

Definition at line 39 of file RegistrationIcp.h.

+

Member Enumeration Documentation

+ +

◆ IcpStrategy

+ +
+
+ + + + + + +
Enumerator
kIcpUndef 

Undefined / invalid type.

+
kIcpPCL 

Point Cloud Library.

+
kIcpPointMatcher 

libpointmatcher.

+
kIcpCCCoreLib 

CCCoreLib (Cloud Compare).

+
kIcpEnd 

Sentinel: always keep last. Used to iterate through strategies.

+
+ +

Definition at line 42 of file RegistrationIcp.h.

+ +
+
+

Member Function Documentation

+ +

◆ available()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool rtabmap::RegistrationIcp::available (IcpStrategy strategy)
+
+static
+
+ +

Returns true if strategy is built into this rtabmap binary.

+

kIcpPCL is always available; kIcpPointMatcher requires the RTABMAP_POINTMATCHER build flag; kIcpCCCoreLib requires RTABMAP_CCCORELIB.

+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::RegistrationIcp::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Parses Reg/RepeatOnce, Reg/Force3DoF and forwards to the child registration if set.

+ +

Reimplemented from rtabmap::Registration.

+ +
+
+ +

◆ computeTransformationImpl()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual Transform rtabmap::RegistrationIcp::computeTransformationImpl (Signature & from,
Signature & to,
Transform guess,
RegistrationInfo & info 
) const
+
+protectedvirtual
+
+ +

Strategy-specific registration.

+

May modify from and to; a child registration reuses those changes.

+ +

Implements rtabmap::Registration.

+ +
+
+ +

◆ isScanRequiredImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::RegistrationIcp::isScanRequiredImpl () const
+
+inlineprotectedvirtual
+
+ +

Reimplemented from rtabmap::Registration.

+ +

Definition at line 79 of file RegistrationIcp.h.

+ +
+
+ +

◆ canUseGuessImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::RegistrationIcp::canUseGuessImpl () const
+
+inlineprotectedvirtual
+
+ +

Reimplemented from rtabmap::Registration.

+ +

Definition at line 80 of file RegistrationIcp.h.

+ +
+
+ +

◆ getMinGeometryCorrespondencesRatioImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float rtabmap::RegistrationIcp::getMinGeometryCorrespondencesRatioImpl () const
+
+inlineprotectedvirtual
+
+ +

Reimplemented from rtabmap::Registration.

+ +

Definition at line 81 of file RegistrationIcp.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.js b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.js new file mode 100644 index 00000000..fb217330 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp.js @@ -0,0 +1,12 @@ +var classrtabmap_1_1RegistrationIcp = +[ + [ "IcpStrategy", "classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fab", [ + [ "kIcpUndef", "classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabadebfaf4d0822a35b7b56f37f9c133327", null ], + [ "kIcpPCL", "classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabafd4289953af3132d6d334fb438f22ace", null ], + [ "kIcpPointMatcher", "classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabac978d96078e7e0209d4a25894de3c805", null ], + [ "kIcpCCCoreLib", "classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3faba0f8b0cfe29412a3d66af5eb19dd7c0db", null ], + [ "kIcpEnd", "classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabaf6639ca6ae5f75d631dbbf7f61455881", null ] + ] ], + [ "parseParameters", "classrtabmap_1_1RegistrationIcp.html#abd60fffd946201723c35beebc7bfea6a", null ], + [ "computeTransformationImpl", "classrtabmap_1_1RegistrationIcp.html#a8a18107160cfc05cfb8a5109540d81b5", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.map new file mode 100644 index 00000000..bdc65c1e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.md5 new file mode 100644 index 00000000..ddcbc215 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.md5 @@ -0,0 +1 @@ +bf9f86accf8f6067972da042b62c8a71 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c066f6f227c2fc309c54d9b9b8012d440d684962 GIT binary patch literal 5431 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 Nm@-_c@UcbEzW{A~ + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.md5 new file mode 100644 index 00000000..ddcbc215 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.md5 @@ -0,0 +1 @@ +bf9f86accf8f6067972da042b62c8a71 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationIcp__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c066f6f227c2fc309c54d9b9b8012d440d684962 GIT binary patch literal 5431 zcmc&&g;&$>zn>Vis7whdNfAi}2?3EDF+>EU%P*Z9JqJ=EOh7;y6hS3rAky6;-8qo% zat=leeh@c+kwxX^StX7@9-yZRaz=$DhLEZ3sX~i3f>#R%bDU5_|2Gh zkrKRJveHmhf}EcHWYlKIK_Ji#n3BRXpR~<%)DykY@vx8R3Mxbe6$K?#Ob+b6Q4H$+ zRW5FwESTo?-Lri?D+^p%VFVr!gL~}_42@Yhj?n8ZJpUa9JQtecKM4S^Y_EEU{ zWQT*p8%noNAk8jcCcn(E`?G(GaNKHy+TJH^dZ*7!J8qVod#A>IEnJB+MvdD@g=r&D zz@YFYF7`2Z?2$4>Os(g-ese9Gt;|?RMCJzbM)9?d^K>P*Vor@NLc^IKOY#EoD4HEVupBmc@d9} z;@-V$C@?I!n_#`vmHgw!4;njjjbWTg8mfP{$U=`Edi}bNsj0ITrQ&0Id;Uwof!~bF z2S!Fzyu2iYYj(&`dmFP~63xD=MP+1UoZEKHtxClpg{9eUyzaV?o14oRsWOGbNxA)o z#K*^jqx!)&H8p7F@$dgoM`Zrq+|)8LVR5ZHu!;8h=zqw6_V2>N!UEIk zgpN4AeBYFm6gMv~UI77W85x;r^uB3LZS8o4J6CIKtCEsZkw3|AV`Bp{R_bW*QEJ;^ zbe&*>G^=n66n7liSxht+vub(6=KN~5IV^wq;27VF-1)7rw>{%(6?A&MEdTOwHT!)+ zf|$#c8QB0bdgW~fO7DwR`ovJI0uv1S!H8C zeCTNkr8cbc;BS6SyY4PiT3X5@CU%XTo&9&uBVIl}U2v%?&-J0_$;ru6b?DSD8i|O% zD>|83SyJf3`_}DIUy6#}Y0Dji=;iAdJB^EZZBL)&+q&(oWoyLsmbSJ(B_ByN>G15! z&jO^Vsi|Qa8rIV_zBWh+2?+#o$I_FzuNIenc<2{_!GuRg8ysC`d-yZxBK7lnf7ue- zUYqUd+K|_;5husKAegZ_w2W&#NrIoB-v@MhnUn45wy=BrC zd9!_@)RA96z`8$EIqjiuEJz0@7Z+-%_K5g!w}qbOrbNML)!!T0)lnd!#a69U{)Bw< ztBj04+t~xU>d;3&dwNu|2XlRAeCBBrgiL?!&bNcRWfv7)k(aMmK##nB3!)9D=Yziq z{4-+g8V-x&P5xVp?~$2{d@#L&uP7+E3r@4U#wRKH+{42o2aT=y6Y;#(ue3^5TG|LV zGBm^uRlX|YwejT0|MX}E1EMg#YpbXjEa|cG&d$X}V)BH54G>IAPjCIZI;i~Y*?Tu6 zl0G~ zaMCeJNjWaw;QOa1`}M6)AOE_J6$d9Fc0w}3HJ*U(s9S!rl% zyYvcN&7+E)%_%fAv^e0@zm&8Pr=2G+BPC_&>e@S2Y&|UJ?d`p`zAl)ciyh6^B||zx z%+1YXV`D{_Bb~;-hvJuevu=A&n?oPF?QIxNOiYZG*hc$l!eEq%LZ*)?8W%egwaj#O z_xHE)>Xjf~{etI>E#dUx5fO8xqh`(HD_&qC;1ApkaBy?H}X+S}b72}+3E zom2L_BMF8vZvLUHtXA8y!oAPDMWy0e-usGu@uAcVnS-m(%bb|l*w`3pE`h?U8ylw@ z5w|YpVX^Jq-QRjEmJaVGm&jKYQd(JC`z|Hhs=;8EU~Xw6M6&xYC% zg(^3;wuZibeW}!(Lc!YF8hda<(5NL-8FTyY-4`=;Xw4*%z_c`$px|KCH|71^Rjd$t z82Y3)AGNu*wsy#h{nU~-Ltjx<_0-tdabO={ZV6&h{l?wr4R4w5Nuu_gqUX;#BqlMD zydm=DgE4?3?(XivBkuK5!X_1u01WEs>Df%;ip$IS`1!+UNL$`RLqm|AwS4T^(0zrc ztAl4mMMXjN002VXU@%_@yPAr@FeJtQK8KqJS%yRaI39HC@AK z5l<$yG$PUGWG75MXFUs7?Ty@=5Vz?{>UTZ))Rf2TbFi2wg;;naz4Ptcw;IykBsVYb zH8wW5g$0MQva)OxH6`UNKtUdE?vUTVEt;B}4J#3g8J<(FJt$Mg=JfoH`DpnbSAYCX zh}`jx;$J`6XxY7_!xuLArEcQkVcsMrB7%a3W?|g+<3H_Dtl&?36@Ja>+nhq?b#Jj) z;n~^Qx6I-Z*&qFl#J^Qm(R~#l8&77XZ^qca=RmZ#;* zgFpYc@6NTdkq86=Cm)|Gi?oNDsZT@FH zn#1TYZEY&0raC(PiYRlb8NYSGVsMrja<5!Oh@W57I6pI!GbT0FalpXTR1kqgf&?f> zlO`u8TgOXml`Snl**QC3hr{7>U@{yEs2PNkzBzl>nwH~ad#Bs7u~kVJYq+YdZFU7> zF+$RF?Y*6YgV?x@&~~nFb_-#B6lJ%HIWlCVOQvM|XDg*41yD`I#)eaAt^2&n?CNSR zv)1}UG3_w!;P&C+_?8wW2L}f`d;3qt#W7u7nk+0V1%jI~swozbm&d#9BMGm}u**MV zxJD9o%{#dEZ{#Xj*?*?wPEk#Hlp;u0s%vZW$;#rM8r_F27rZE2 z{F*hCXk;8=!}NnPn`>tndW8T%y4*+5Xzlp| zVm8tIoNLyT1ETwJZ0viuqvHT4Ld$|DHZ}zQh?DFJ@qNgjv{G^V>-J;bU zm`P~ph4niFLIW2@GUG1%-l}f*ifC%O7;s~6kQt`b;_=0g^6Xbh^+(}+f#$9FORzDyR{s(43@Q%hul;zkxnmy2$Z z!j<}kj2#v$y%d!c3kpMm_w2fKOO6`-7aqUC4h#-5cx;wzIxjagG>~J}$h2mH!&rTO z`pMhn<>gfX(2hPa)A~I-yZh)Oj9XF5)HHqEzw$o<^enayVZSbPbaX5%EIc=EQ&a`o zkd~Gf^kv^l(S5qE3p_kL_a!9ca(3uwfo2Q}BBP?Bs_-M^jc3#CclKwg@(T*G_SGfi zRaZ*xXIgUrD0i8vuq^fo{xX`axZk<_F#rz0FD532?oO*>;})(OD23+9$y6}hzkdCq zprhjx6}_swx+~t5p{AzBxbwe9ZA{nR1axH*aULR$KZMP8FIb6pgfdV|kFBg}##>PO;^^w_?6^cIBp3TYfc_47( z1q`~Dy1Kg;SNgM@#)=x9s%1`2PF6gm<0_FL6~^T*XLns#P(q_+&lLADaTfxGLU%g& zK4y%r+dDh++`jz=2)ZJmt6tNw!)=gXIum&c`~sO#$|z;r;z!PM28Iy%CenjT9yPqYws=Xde=^BJY3@e2ztfN7Bg z)+pd`@ZZ8XxotjLyB8tWzNP}Pay$; zdEg{o5@*9CrKJa^r+WZPL6T%q6288^Hra}}cH5~6chFl{NpB!4IJmfii;6^mjwEkj zFn_545>ZcV6&}j9u(sxc!C+&PlgOr{IE}%uvxgiiwN9lmu9U2)Cvu>k-K$UMvNF;369rZYo9zJ|n1Y8#= zjAqJxN+5ijnwk#3RagF7?&%mB!aO}oJ6gHrTkPbc1%&8~UeZ+!V9QyFciRK0-*@6RKB3wrdns1Mu-`tE04n7aM zNj9n)6>Bz0W%H z5>E^4LHp<^gR%|)W|7M8r9XaH0AJCa`e0aj7q@AEHQOYl85tP?x5OnU$5wGqRviwv z8TbqX0qo}-S*#D3vjArsas|wkh~Hnk-#x54*@Ls2n>bs4B#@G1Po6zfa&s%1n3Ok4{y@~X}6z_H)Ci6{RI?XiFNyBo9>iQfYG36oB_x4?BN(pGY*%&K8i(d zjERCA%Yp#}8Ww;Een3OGe`=}=c=vN%a#n);{IjkBM>hd)Ra93am%5ltOiYFZ5c^f+ z7cS7`36WX>sN9m4PI>#5W~nD#LsgaBJb)yA&!%ey?=XF{r>Cc-wKdlhq-K7hBTh42 zIvyBUvILToN9$KqJK&WM`p|zGYr9I+)zvAesGcqdx-IK%0PPC|ud0?7t?pONTauDV z$mJe)unhw21w0qn0t8di^X9nE&CloN=g$ME00>s>vHG+$2Zx_Rza902n;05`AgKcb z1Hnk|r{V$U)a*1-gI&U;Q_sYNk&&_SL4UOWi!x^s#+^TZ#47I*4-VXcrEqd~20qVr zW32d$Q$UjlnO22>4yUA~T-!v?wS6q`S|$( zYEm^bV>>uF0Nipz*sN=3wz+!*-4sG8yC(4ti0eT;@`eyf`m-4Y%N2l5!7D3vb8~ag z@Ls(FAsJw?0U&H{Wo0bOYrZYAxw$zQ!yt?xtm%R37K~KZyE9V&*L?rM19M6A;on5l zBNXXN3cv1G8cAZ7CITT=V$;psH}^*Y@UhLG+Qwq*_OWtTcCftAAN*Tn8SW1FF0-)E z<#+uvE+%Psnxq2gs59^dV6%a%P6QoeY@A@zS3{{1$sB5iEzf%m-0Z~Uq9? Nm@-_c@UcbEzW{A~ + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.html b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.html new file mode 100644 index 00000000..e37ec60e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.html @@ -0,0 +1,619 @@ + + + + + + + + +RTAB-Map: rtabmap::RegistrationInfo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RegistrationInfo Class Reference
+
+
+ +

Statistics and diagnostics returned by Registration. + More...

+ +

#include <RegistrationInfo.h>

+ + + + + +

+Public Member Functions

RegistrationInfo copyWithoutData () const
 Copies scalar metrics and covariance; omits correspondence ID vectors.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

cv::Mat covariance
 
std::string rejectedMsg
 
double totalTime
 
int inliers
 
float inliersRatio
 
float inliersMeanDistance
 
float inliersDistribution
 
std::vector< int > inliersIDs
 
int matches
 
float variance
 
std::vector< int > matchesIDs
 
std::vector< int > projectedIDs
 
std::vector< int > inliersPerCam
 
std::vector< int > matchesPerCam
 
float icpInliersRatio
 
float icpTranslation
 
float icpRotation
 
float icpStructuralComplexity
 
float icpStructuralDistribution
 
int icpCorrespondences
 
float icpRMS
 
int icpIterations
 
+

Detailed Description

+

Statistics and diagnostics returned by Registration.

+

Filled by RegistrationVis and/or RegistrationIcp during Registration::computeTransformation(). The 6×6 covariance matrix is clamped to Registration::COVARIANCE_LINEAR_EPSILON and Registration::COVARIANCE_ANGULAR_EPSILON on the diagonal when empty or too small.

+

Visual fields are set by RegistrationVis; ICP fields by RegistrationIcp. In a combined Vis+ICP pipeline, both sets may be populated in the same object.

+ +

Definition at line 47 of file RegistrationInfo.h.

+

Constructor & Destructor Documentation

+ +

◆ RegistrationInfo()

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::RegistrationInfo::RegistrationInfo ()
+
+inline
+
+ +

Definition at line 50 of file RegistrationInfo.h.

+ +
+
+

Member Function Documentation

+ +

◆ copyWithoutData()

+ +
+
+ + + + + +
+ + + + + + + +
RegistrationInfo rtabmap::RegistrationInfo::copyWithoutData () const
+
+inline
+
+ +

Copies scalar metrics and covariance; omits correspondence ID vectors.

+ +

Definition at line 71 of file RegistrationInfo.h.

+ +
+
+

Member Data Documentation

+ +

◆ covariance

+ +
+
+ + + + +
cv::Mat rtabmap::RegistrationInfo::covariance
+
+

6×6 registration uncertainty (CV_64FC1).

+ +

Definition at line 95 of file RegistrationInfo.h.

+ +
+
+ +

◆ rejectedMsg

+ +
+
+ + + + +
std::string rtabmap::RegistrationInfo::rejectedMsg
+
+

Reason the registration was rejected, if any.

+ +

Definition at line 96 of file RegistrationInfo.h.

+ +
+
+ +

◆ totalTime

+ +
+
+ + + + +
double rtabmap::RegistrationInfo::totalTime
+
+

Total registration time (seconds).

+ +

Definition at line 97 of file RegistrationInfo.h.

+ +
+
+ +

◆ inliers

+ +
+
+ + + + +
int rtabmap::RegistrationInfo::inliers
+
+

Number of visual inliers.

+ +

Definition at line 100 of file RegistrationInfo.h.

+ +
+
+ +

◆ inliersRatio

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::inliersRatio
+
+

Ratio of inliers to matches.

+ +

Definition at line 101 of file RegistrationInfo.h.

+ +
+
+ +

◆ inliersMeanDistance

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::inliersMeanDistance
+
+

Mean reprojection or descriptor distance of inliers.

+ +

Definition at line 102 of file RegistrationInfo.h.

+ +
+
+ +

◆ inliersDistribution

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::inliersDistribution
+
+

Spatial spread of inliers in the image.

+ +

Definition at line 103 of file RegistrationInfo.h.

+ +
+
+ +

◆ inliersIDs

+ +
+
+ + + + +
std::vector<int> rtabmap::RegistrationInfo::inliersIDs
+
+

Indices of inlier keypoints.

+ +

Definition at line 104 of file RegistrationInfo.h.

+ +
+
+ +

◆ matches

+ +
+
+ + + + +
int rtabmap::RegistrationInfo::matches
+
+

Total visual matches before outlier rejection.

+ +

Definition at line 105 of file RegistrationInfo.h.

+ +
+
+ +

◆ variance

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::variance
+
+

Estimated variance of the visual constraint.

+ +

Definition at line 106 of file RegistrationInfo.h.

+ +
+
+ +

◆ matchesIDs

+ +
+
+ + + + +
std::vector<int> rtabmap::RegistrationInfo::matchesIDs
+
+

Indices of all matches.

+ +

Definition at line 107 of file RegistrationInfo.h.

+ +
+
+ +

◆ projectedIDs

+ +
+
+ + + + +
std::vector<int> rtabmap::RegistrationInfo::projectedIDs
+
+

Source ("from") feature IDs used in projection.

+ +

Definition at line 108 of file RegistrationInfo.h.

+ +
+
+ +

◆ inliersPerCam

+ +
+
+ + + + +
std::vector<int> rtabmap::RegistrationInfo::inliersPerCam
+
+

Inlier count per camera (multi-camera).

+ +

Definition at line 109 of file RegistrationInfo.h.

+ +
+
+ +

◆ matchesPerCam

+ +
+
+ + + + +
std::vector<int> rtabmap::RegistrationInfo::matchesPerCam
+
+

Match count per camera (multi-camera).

+ +

Definition at line 110 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpInliersRatio

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::icpInliersRatio
+
+

Ratio of ICP inlier correspondences.

+ +

Definition at line 113 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpTranslation

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::icpTranslation
+
+

Translation component of the ICP correction (m).

+ +

Definition at line 114 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpRotation

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::icpRotation
+
+

Rotation component of the ICP correction (rad).

+ +

Definition at line 115 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpStructuralComplexity

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::icpStructuralComplexity
+
+

Structural complexity of the scan overlap.

+ +

Definition at line 116 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpStructuralDistribution

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::icpStructuralDistribution
+
+

Distribution of structural features in the overlap.

+ +

Definition at line 117 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpCorrespondences

+ +
+
+ + + + +
int rtabmap::RegistrationInfo::icpCorrespondences
+
+

Number of ICP point correspondences.

+ +

Definition at line 118 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpRMS

+ +
+
+ + + + +
float rtabmap::RegistrationInfo::icpRMS
+
+

Root-mean-square error of ICP correspondences (m).

+ +

Definition at line 119 of file RegistrationInfo.h.

+ +
+
+ +

◆ icpIterations

+ +
+
+ + + + +
int rtabmap::RegistrationInfo::icpIterations
+
+

Number of ICP iterations actually performed (-1 if unavailable from backend).

+ +

Definition at line 120 of file RegistrationInfo.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.js b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.js new file mode 100644 index 00000000..2ed27f1f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationInfo.js @@ -0,0 +1,26 @@ +var classrtabmap_1_1RegistrationInfo = +[ + [ "copyWithoutData", "classrtabmap_1_1RegistrationInfo.html#ae7abf7e34019a0c27b2de8ac5647f277", null ], + [ "covariance", "classrtabmap_1_1RegistrationInfo.html#a347f413d8a96dea23c4fdc6af2a1ddb5", null ], + [ "rejectedMsg", "classrtabmap_1_1RegistrationInfo.html#af47520f216ad7259cfcc07254c4daa96", null ], + [ "totalTime", "classrtabmap_1_1RegistrationInfo.html#a52c83dd2b8f59c4ed360dc0eadc5de57", null ], + [ "inliers", "classrtabmap_1_1RegistrationInfo.html#a9de693920adf2f33eb283018c1e52456", null ], + [ "inliersRatio", "classrtabmap_1_1RegistrationInfo.html#a2ffbcc42740094d7cb5e38bcd03006c8", null ], + [ "inliersMeanDistance", "classrtabmap_1_1RegistrationInfo.html#a9b5a886b0d4a77966820ed5766ff42fc", null ], + [ "inliersDistribution", "classrtabmap_1_1RegistrationInfo.html#a4461db9c85505ed07f6d69b5e0329601", null ], + [ "inliersIDs", "classrtabmap_1_1RegistrationInfo.html#a3672f48c403ae0d9a309aa7b3a0715b2", null ], + [ "matches", "classrtabmap_1_1RegistrationInfo.html#a5dd0548e61c157636449fb607869f3a8", null ], + [ "variance", "classrtabmap_1_1RegistrationInfo.html#a95b6903a7b750f9ada14000dc37800dc", null ], + [ "matchesIDs", "classrtabmap_1_1RegistrationInfo.html#aa7a148863f31e6556f483b7d932a40dc", null ], + [ "projectedIDs", "classrtabmap_1_1RegistrationInfo.html#aa81f7ffab8e77dfc5240fd7e9a587498", null ], + [ "inliersPerCam", "classrtabmap_1_1RegistrationInfo.html#a1537d6d65162a8c84cabcae7fba37c26", null ], + [ "matchesPerCam", "classrtabmap_1_1RegistrationInfo.html#ab79de88af655e987d8232d5b86d7ad82", null ], + [ "icpInliersRatio", "classrtabmap_1_1RegistrationInfo.html#aa77a6a2994d004c83ce37906d7adce06", null ], + [ "icpTranslation", "classrtabmap_1_1RegistrationInfo.html#a0aca4419a027a27d3aa9b65d7019898b", null ], + [ "icpRotation", "classrtabmap_1_1RegistrationInfo.html#a9487cf937223f68f2658189298d727e4", null ], + [ "icpStructuralComplexity", "classrtabmap_1_1RegistrationInfo.html#a702e62ddd46f3912312be7b55fbba4de", null ], + [ "icpStructuralDistribution", "classrtabmap_1_1RegistrationInfo.html#a8b152df7c54273e6e33cdfa1744157f5", null ], + [ "icpCorrespondences", "classrtabmap_1_1RegistrationInfo.html#a2cd3a5a3de9c1a07101ef198bf11a495", null ], + [ "icpRMS", "classrtabmap_1_1RegistrationInfo.html#a1612de115fbd0bfb6dbe8e3aa3528037", null ], + [ "icpIterations", "classrtabmap_1_1RegistrationInfo.html#a4183e994d882e94bd782678a3ab4cd12", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis-members.html new file mode 100644 index 00000000..2575c0d1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis-members.html @@ -0,0 +1,158 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RegistrationVis Member List
+
+
+ +

This is the complete list of members for rtabmap::RegistrationVis, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canUseGuess() constrtabmap::Registration
canUseGuessImpl() const (defined in rtabmap::RegistrationVis)rtabmap::RegistrationVisinlineprotectedvirtual
computeTransformation(const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
computeTransformation(const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) constrtabmap::RegistrationVisprotectedvirtual
computeTransformationMod(Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) constrtabmap::Registration
COVARIANCE_ANGULAR_EPSILONrtabmap::Registrationstatic
COVARIANCE_LINEAR_EPSILONrtabmap::Registrationstatic
create(const ParametersMap &parameters)rtabmap::Registrationstatic
create(Type &type, const ParametersMap &parameters=ParametersMap())rtabmap::Registrationstatic
force3DoF() constrtabmap::Registrationinline
getDetector() constrtabmap::RegistrationVisinline
getEstimationType() constrtabmap::RegistrationVisinline
getInlierDistance() constrtabmap::RegistrationVisinline
getIterations() constrtabmap::RegistrationVisinline
getMinGeometryCorrespondencesRatio() constrtabmap::Registration
getMinGeometryCorrespondencesRatioImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
getMinInliers() constrtabmap::RegistrationVisinline
getMinVisualCorrespondences() constrtabmap::Registration
getMinVisualCorrespondencesImpl() const (defined in rtabmap::RegistrationVis)rtabmap::RegistrationVisinlineprotectedvirtual
getNNDR() constrtabmap::RegistrationVisinline
getNNType() constrtabmap::RegistrationVisinline
getNNTypeName() constrtabmap::RegistrationVisinline
getNNTypeName(int nnType)rtabmap::RegistrationVisstatic
isImageRequired() constrtabmap::Registration
isImageRequiredImpl() const (defined in rtabmap::RegistrationVis)rtabmap::RegistrationVisinlineprotectedvirtual
isScanRequired() constrtabmap::Registration
isScanRequiredImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
isUserDataRequired() constrtabmap::Registration
isUserDataRequiredImpl() const (defined in rtabmap::Registration)rtabmap::Registrationinlineprotectedvirtual
kTypeIcp enum valuertabmap::Registration
kTypeUndef enum valuertabmap::Registration
kTypeVis enum valuertabmap::Registration
kTypeVisIcp enum valuertabmap::Registration
parseParameters(const ParametersMap &parameters)rtabmap::RegistrationVisvirtual
Registration(const ParametersMap &parameters=ParametersMap(), Registration *child=0)rtabmap::Registrationprotected
RegistrationVis(const ParametersMap &parameters=ParametersMap(), Registration *child=0)rtabmap::RegistrationVis
repeatOnce() constrtabmap::Registrationinline
setChildRegistration(Registration *child)rtabmap::Registration
Type enum namertabmap::Registration
~Registration() (defined in rtabmap::Registration)rtabmap::Registrationvirtual
~RegistrationVis() (defined in rtabmap::RegistrationVis)rtabmap::RegistrationVisvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.html b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.html new file mode 100644 index 00000000..4dc3a4eb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.html @@ -0,0 +1,680 @@ + + + + + + + + +RTAB-Map: rtabmap::RegistrationVis Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Visual registration between two signatures using features and geometry. + More...

+ +

#include <RegistrationVis.h>

+
+Inheritance diagram for rtabmap::RegistrationVis:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RegistrationVis:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ RegistrationVis (const ParametersMap &parameters=ParametersMap(), Registration *child=0)
 child is owned and deleted in the destructor.
 
virtual void parseParameters (const ParametersMap &parameters)
 Parses Vis/ and feature parameters; recreates feature detectors.
 
float getInlierDistance () const
 
int getIterations () const
 
int getMinInliers () const
 
int getNNType () const
 
std::string getNNTypeName () const
 
float getNNDR () const
 
int getEstimationType () const
 
const Feature2D * getDetector () const
 
- Public Member Functions inherited from rtabmap::Registration
+bool isImageRequired () const
 True if images are needed (parent or child).
 
+bool isScanRequired () const
 True if laser scans are needed (parent or child).
 
+bool isUserDataRequired () const
 True if user data is needed (parent or child).
 
+bool canUseGuess () const
 True if the strategy can refine an initial guess (parent or child).
 
+int getMinVisualCorrespondences () const
 Minimum visual inliers required (max of parent and child thresholds).
 
+float getMinGeometryCorrespondencesRatio () const
 Minimum geometry inlier ratio required (max of parent and child thresholds).
 
bool repeatOnce () const
 
bool force3DoF () const
 
+void setChildRegistration (Registration *child)
 Replaces the current child registration; takes ownership of child.
 
+Transform computeTransformation (const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers from to to using immutable signatures (copied internally).
 
+Transform computeTransformation (const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers two SensorData observations (wrapped as signatures).
 
+Transform computeTransformationMod (Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
 Registers from to to; signatures may be modified by the implementation.
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static std::string getNNTypeName (int nnType)
 Name of a Vis/CorNNType value.
 
- Static Public Member Functions inherited from rtabmap::Registration
+static Registration * create (const ParametersMap &parameters)
 Creates a registration from Reg/Strategy in parameters. Caller owns the pointer.
 
+static Registration * create (Type &type, const ParametersMap &parameters=ParametersMap())
 Creates a registration of type (may be adjusted, e.g. to kTypeVis). Caller owns the pointer.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual Transform computeTransformationImpl (Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const
 Strategy-specific registration.
 
virtual bool isImageRequiredImpl () const
 
virtual bool canUseGuessImpl () const
 
virtual int getMinVisualCorrespondencesImpl () const
 
- Protected Member Functions inherited from rtabmap::Registration
+ Registration (const ParametersMap &parameters=ParametersMap(), Registration *child=0)
 child is owned and deleted in the destructor.
 
virtual bool isScanRequiredImpl () const
 
virtual bool isUserDataRequiredImpl () const
 
virtual float getMinGeometryCorrespondencesRatioImpl () const
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Registration
enum  Type { kTypeUndef = -1 +, kTypeVis = 0 +, kTypeIcp = 1 +, kTypeVisIcp = 2 + }
 Registration strategy selected by Reg/Strategy. More...
 
- Static Public Attributes inherited from rtabmap::Registration
static double COVARIANCE_LINEAR_EPSILON
 Minimum diagonal value for linear covariance (m²).
 
static double COVARIANCE_ANGULAR_EPSILON
 Minimum diagonal value for angular covariance (rad²).
 
+

Detailed Description

+

Visual registration between two signatures using features and geometry.

+

Extracts and matches features (Feature2D), then estimates motion with Vis/EstimationType (3D→3D, 3D→2D PnP, or 2D→2D epipolar). Supports RGB-D (CameraModel + depth), stereo (StereoCameraModel), optical flow, GMS, and optional Python matchers when built with Python support.

+

Can chain a child registration (e.g. RegistrationIcp in Registration::kTypeVisIcp). Feature-related Vis/ parameters are mapped to Kp/ for Feature2D::create().

+
See also
Registration
+
+RegistrationInfo
+ +

Definition at line 60 of file RegistrationVis.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::RegistrationVis::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Parses Vis/ and feature parameters; recreates feature detectors.

+ +

Reimplemented from rtabmap::Registration.

+ +
+
+ +

◆ getInlierDistance()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::RegistrationVis::getInlierDistance () const
+
+inline
+
+
Returns
Vis/InlierDistance (m).
+ +

Definition at line 71 of file RegistrationVis.h.

+ +
+
+ +

◆ getIterations()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RegistrationVis::getIterations () const
+
+inline
+
+
Returns
Vis/Iterations (RANSAC iterations).
+ +

Definition at line 73 of file RegistrationVis.h.

+ +
+
+ +

◆ getMinInliers()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RegistrationVis::getMinInliers () const
+
+inline
+
+
Returns
Vis/MinInliers.
+ +

Definition at line 75 of file RegistrationVis.h.

+ +
+
+ +

◆ getNNType()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RegistrationVis::getNNType () const
+
+inline
+
+
Returns
Vis/CorNNType nearest-neighbor strategy.
+ +

Definition at line 77 of file RegistrationVis.h.

+ +
+
+ +

◆ getNNTypeName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string rtabmap::RegistrationVis::getNNTypeName () const
+
+inline
+
+
Returns
Name of the Vis/CorNNType nearest-neighbor strategy in use.
+ +

Definition at line 79 of file RegistrationVis.h.

+ +
+
+ +

◆ getNNDR()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::RegistrationVis::getNNDR () const
+
+inline
+
+
Returns
Vis/CorNNDR ratio test threshold.
+ +

Definition at line 86 of file RegistrationVis.h.

+ +
+
+ +

◆ getEstimationType()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RegistrationVis::getEstimationType () const
+
+inline
+
+
Returns
Vis/EstimationType (0: 3D→3D, 1: PnP, 2: epipolar).
+ +

Definition at line 88 of file RegistrationVis.h.

+ +
+
+ +

◆ getDetector()

+ +
+
+ + + + + +
+ + + + + + + +
const Feature2D * rtabmap::RegistrationVis::getDetector () const
+
+inline
+
+
Returns
Feature detector used for the “from” signature.
+ +

Definition at line 91 of file RegistrationVis.h.

+ +
+
+ +

◆ computeTransformationImpl()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual Transform rtabmap::RegistrationVis::computeTransformationImpl (Signature & from,
Signature & to,
Transform guess,
RegistrationInfo & info 
) const
+
+protectedvirtual
+
+ +

Strategy-specific registration.

+

May modify from and to; a child registration reuses those changes.

+ +

Implements rtabmap::Registration.

+ +
+
+ +

◆ isImageRequiredImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::RegistrationVis::isImageRequiredImpl () const
+
+inlineprotectedvirtual
+
+ +

Reimplemented from rtabmap::Registration.

+ +

Definition at line 100 of file RegistrationVis.h.

+ +
+
+ +

◆ canUseGuessImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::RegistrationVis::canUseGuessImpl () const
+
+inlineprotectedvirtual
+
+ +

Reimplemented from rtabmap::Registration.

+ +

Definition at line 101 of file RegistrationVis.h.

+ +
+
+ +

◆ getMinVisualCorrespondencesImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int rtabmap::RegistrationVis::getMinVisualCorrespondencesImpl () const
+
+inlineprotectedvirtual
+
+ +

Reimplemented from rtabmap::Registration.

+ +

Definition at line 102 of file RegistrationVis.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.js b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.js new file mode 100644 index 00000000..b269f855 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis.js @@ -0,0 +1,14 @@ +var classrtabmap_1_1RegistrationVis = +[ + [ "RegistrationVis", "classrtabmap_1_1RegistrationVis.html#aa845f7fbbfc8fc340dba96a2a6550d03", null ], + [ "parseParameters", "classrtabmap_1_1RegistrationVis.html#a6560046940995044d7a51cb0066d420e", null ], + [ "getInlierDistance", "classrtabmap_1_1RegistrationVis.html#a488ecb8a7423996abdad98b0044cd7f2", null ], + [ "getIterations", "classrtabmap_1_1RegistrationVis.html#a93331add1822dd6f02bc74efec6d6834", null ], + [ "getMinInliers", "classrtabmap_1_1RegistrationVis.html#ae951e95c4ae2ea1ab5c4d849823d66c4", null ], + [ "getNNType", "classrtabmap_1_1RegistrationVis.html#a697d562bebe30b73a1ecd34dabee4347", null ], + [ "getNNTypeName", "classrtabmap_1_1RegistrationVis.html#a9fd0ba3453d2c658d8a9b1cee5ba132c", null ], + [ "getNNDR", "classrtabmap_1_1RegistrationVis.html#aed9e9e593b290a4be1aeda05967a631a", null ], + [ "getEstimationType", "classrtabmap_1_1RegistrationVis.html#a951c79dd9be75b896c551e5213c0ee31", null ], + [ "getDetector", "classrtabmap_1_1RegistrationVis.html#a0a860fb3509b4c5b135b66ebd5cd6e55", null ], + [ "computeTransformationImpl", "classrtabmap_1_1RegistrationVis.html#aa47fd3a0599ee918e024161db330a92f", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.map new file mode 100644 index 00000000..34d852a1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.md5 new file mode 100644 index 00000000..2e84a00d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.md5 @@ -0,0 +1 @@ +e236542c7fee780c3f6bc053887d8092 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0409ea40b2dc325b335cf4d7d47af5fb712af2b9 GIT binary patch literal 5449 zcmchbi96I^yvNBe6rzM7hRRZ67|On6C%eX$Wi*uRTWAcUBKuNyKg%d4*+TXulhD|A zCi{}DY}vQLJ?_2FeeQGrfcs#^Gv71c@A;hb{=7f0&j~ls(_pyBagl<8f3*gSceI{J` z{F3$+#4sC`bCFg}PdQi>K3a8M_@e|O`+|VmK)IF+4C*ih8Q>R?cPUC_DpI%gibGtx z$0n~4d!tqN^1UU;#3S9BTWmFJTPHJOB6UJ+9*^%S;0WpHr@=4+OS~cdd!1J1^k6K) z*my)HN>80 zp_P@cnHgk$e%|ET+1Fm6(G1TloaQHt6sxWfGv+D@_SG!lmN#Lrn0NvGxU@8F6&0$* z9^7Jv@8sj<;Ub+(xzy-ulADLi#qsany?Rviqo*gfxmoqb&6~Q1j*gC~p?u?X8SjXV zU&O5+*W9LOX5L4M`>t8);S{>s;srK#cKD>FQzO|#zIgmn=iuOYv5;!7si|pjxa`*X zq$3F)c;fHr44jlshmF4Gndsz=KHE7={czBKOH(nn<*yqGECV=0&hkOZP;+?$|;@ znO-L(T)hO93wwaSAt8|jLXIDYnU%b(ub1=m^!&TIIol;U)l4GoNqnw+yiMNfA&MXy zEXO0VvUq0J)?mX$76Rbgw=QwX@bc@V@PHZJKKma8`-Vw*ZgDYECG=8w5DjC*-c%s6 zx~3+4d;57j*3!zV<|(S~^eGn@dSchnJV%#rKSHc^x0_%r??+BPu14G2!8tMF`|CU(yp3`6%Kc zaq;nL_wT>lU&@Yc2G3AMAQHl2V@*eynVDM#^B%V3;;@274cNHB1IH896l&S60CW7d1Sv~7gI!fpQaZNQpLk+# zA35KV99fqSsYNm=(_ZG}6smL{>0iXQwYA-V!~1e@c>ui=6l)P$C`!KUq>BnSy@=Ze-UHvtS)rG;c(Q-&r(!(x-@E`Gxd8* zi<MHq=M35NKz#Dm-kkRQG86KXVsQw(S2V%#gB(0f)l~r9sgN9ASnpa8+@-m!RKyWo%J^EZ0 zh%GhbQs`q5Y7A!Jy0PE@cejLugcxSm8M|ACD+L~AX=%9+vQR}`J*3TNLS*jq{Ni=yEfi7+Y*`R(v{q$nk<;#tE4|9Rn*n(vS&hX6PYlhg9yd|*>!pVg2!Xg?jFM?=D$2^|fb>D0zfDL` zwXxyRm)rP0FTorZbHoK&CvLB`S84T6|9&n5 z3M5c=c6s?#H#fJ2{aHGT(4DW>BOkxq+}w2LIydl9R~*fC$DFh`cR@YQ6(>ZkB^KAh zqow`@!rP|F+QcpVIRLf9xEaA`+!7?27YjS=~W3g~?WOG%Jsq&y(v(}-vg(p~( zCbJYJw8z_2j+2YrT9RrCifzcNbvI~`thhdQiuemnN*5aBdz^3+lKq-dAmr#hUjQh_f9!ruWmd zfFR4IAI7Vnw3fUC95mZdC6^6V=(Cn9A7o!?K3&JoJS#}~&(X~`HgLz$x?<*Oe-+)r zB2+C2jD0nayjWyV%Jk|-Vcx?}OUG_%`0IR;jnwqJa_7zdy)<(3h2sYHeOWI*1KgZm zf@j+Nn@yhX`Q5!dGttiLTCFIEkH{L!+9$N-c~-(hrgM)=evQn;XvejPu8iK3i*EG1 zPLcIp?+MT08@J#^(GWhc%s($Qq7cU?^gljRo!Fb5i@W*-64EEqz%qINAF6%b6ejZX zrJHd%vaKQwtQ*>dB*H`kbE|9+FMAv6E$_|$;WsYdA82rq5zQ} zIC3Ke6PLz_8W%#?H}kN$yqeu42Z1PE7?q%YJu)9MF1u0Av;P9g9#8;%yjgVYI@j@=_DO2mNA-iV3}%nwlj6 z8}O-?V4IMX^ntY8x4d(em9@XO*JcL}viBAY2JNjJZm+{*UHM{8z$L&9wxvb+`4Rp7 zMg_4WIO{3?iO*cJK7iy}Rz}J~9m8b5vmyPJ%+1*|Gc(I8Dhy3b)Il8saHx*|vmuBv zxN_wRb$wCArfVL~B0O6WaKo?m#5?3ari4Fzm4F|WRaAigl>SLME^W_vzx*(#s3`iw zha1~|^1!8lwSZYBw!`k+Q7I;Q&3u1jt;j<0$if1|_AxK7ZB`0!!&MfR)NzG^f`Z$( zZ@>iFIl-X9Lp{o?svcTe>Ht~>_z5aHa5u`1hj0G(IO;PC9( zlK2@^-o6yncwbHJJg_DcS3}3>Tm`p-1ImL?}jwo!HeCy}9WLKE>nl%|xQt?ut2p`DYFe zjeULZ0Qb$#&HdB6o&p}+)YKHzkt|}tDGr_i2y^(em6ONF_|H;X!-64xfszj&UNb6^ z-(Hh+1?4EOxY+)8KVIkGyBDg_l+L5&7c%rTEG({3Qc~L4+iy)`)@NpCzjtTIhKGgm z+_-TL6v>6IG@z^(ettkcP2bqA;8G1CL)3#OA1-kJdSWP`W6WI5vDQq3l#i#FsT022jMrMB*dD=eH6dE2LZa8d; zK)g*)k1{Ek2OvC(L#Svj{cRJ#mDsgi`QFq7htL;V)g^(P z0+4B&2-k?=bl7yM2e@Ws#pU-kv$9e`OiZlz_jAxyu~(xt_Ww39rb@VQ(6I{L#~Zy% zP9|z_2Q=4uFPD^+*#h2a{_#T$^isi0&J(p2B)R0o#El8xsg1R|b+A9GfX+a1qv*sb z;>cwG$N}E1Epd<8X6vnfQ$;HvM=f1lK3-ncniSvFQ8hCq z4ZxSCsnZi*z+j;A-vkPrsPiqeX*>r61`H%!4jl)&S_=gqr;<^s=VoRpaZ3$%@7*&* zAesS&|J~hPAeN{djsqVp7uV`g+eB zI=0^B9l*fz2OogaMn@k(1GWt*5Q2%GreEylTHpN~8v}i*5?Ei5m7rDGPW1e?dGK3A zBp@$8e-^Y-{M>@2rKJc2B1I=aSy|cL-JN3keJB(Jt&$2mo~BXE0w(e>SC7)2yzenS zKAs@^u_7iQtI)@ON#-D6q{4}fot+)X6Od@@&N2zJLh?5BK?0&QNvgX-Cn>@itseBK zNWz>Hu;v&IKVs(O)baP1qd*4iu;k_Ckx%vr8U;iBKYxNga`xLRD*mJW!$XuPq}t;b zHAgfx=IB(BWnts_;>t>AzHtEn5<7r8mS6o6mzI{Wxfd6Ra&POm@ijH<6^~quY^*$d zd#v_uyOYp={8&AoKL_nsFvv+LdhRj+k_P}3i$$Q+m=&sfc5d-2D=P_T-f?oUod3Qk zXt%y~buqk@$Lyx~|7q$nbyXzKFuqEwS_f_oe3gbJ=-!XQqM~_F1=2>$4Ua)~j0c_`e?kZXhX$>$QKgfMOG{(ptB?@t(Xp|-PoE4%>FDS%@*jtXP1K_x zO3uzg?p}XNo_2A3)W^k?m3hV1GfIdY?}$I`gak7I6W#zyp^#jE>sY~|uiv9UT!#Vq zfyOc}G4aXfw6j(q5nC5h2$7SQmqu^$-qeU`9vLyOY2lLg41W2NA|f(U8pH$+G~gp5 z0s=I?zP|ne0b2U{L@*}}DB8{d{;Xnj47z2)4NU3Y)?$x60LIP?SvGrn`%M2$t&`m< z!ewUWpt?F)a5Tax>k|dg{{6sjS_THtBfJ3z27Ueg-%pN@D21@fppPuY?72Se$&3c$ zfl8}uYXxz=3+TO_9WI3R;WBY(C=nb-00T2Gv7rRGcvkH|CMO)N)wyNm(sFZi1MUB8 z2&iidD&srmI$HfAjs(pux#R)fuXg#BHxDo{kSjL8w$n>-g z)NkqfS*jjvEqeI)@XN`icX#W3)XT`(3fkFlW z%_%ryYWifD4a|Wb^lGnPp93YPN8v~a^vl z&HMbB|Hh5iDJc+qSQn8+*?nVH?P+(qgD0h|tn5Q1QXl9E^qyihm9FzYX=Z;!UmGNm z;?vTOFk6+@r_};dQZK$yjdu+fnm3KtcoiM;_!IzHCMKVA-=fP4INIIV9djEK`nX>3 zc|F|qcPu7nCO#uW*TVx2j=UBCVVt!pV0p)63NhXCNP18@0=gfDs(^ztP}|$L+T-}N zsgKin879F+?IfX6Z(5KF0Pw@3qRPE*?Ul>^5g3oN)BZ1X|8G9bw&u=qo7b?2dtN1a zib-Dcy9#Uq1}X#&)OH33ga1Br1SgNrB@YxM8a$c3jRy9?*(imUnx5)sWt-Rk0naA6 A{r~^~ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.map new file mode 100644 index 00000000..34d852a1 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.md5 new file mode 100644 index 00000000..2e84a00d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.md5 @@ -0,0 +1 @@ +e236542c7fee780c3f6bc053887d8092 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RegistrationVis__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0409ea40b2dc325b335cf4d7d47af5fb712af2b9 GIT binary patch literal 5449 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 A{r~^~ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.map new file mode 100644 index 00000000..7730222e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.md5 new file mode 100644 index 00000000..51195a56 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.md5 @@ -0,0 +1 @@ +b30715b65b7b0cc9301c97a01c2610fb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Registration__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a5829dff23df89def3c753dc74cf0e70e2aa52ed GIT binary patch literal 9537 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 x_ZzysDm0PVYxUmMq^I@2ZyRAgO + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Rtabmap Member List
+
+
+ +

This is the complete list of members for rtabmap::Rtabmap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addLink(const Link &link)rtabmap::Rtabmap
addNodesToRepublish(const std::vector< int > &ids)rtabmap::Rtabmap
adjustLikelihood(std::map< int, float > &likelihood) constrtabmap::Rtabmap
cleanupLocalGrids(const std::map< int, Transform > &mapPoses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)rtabmap::Rtabmap
clearPath(int status)rtabmap::Rtabmap
close(bool databaseSaved=true, const std::string &ouputDatabasePath="")rtabmap::Rtabmap
computePath(int targetNode, bool global)rtabmap::Rtabmap
computePath(const Transform &targetPose, float tolerance=-1.0f)rtabmap::Rtabmap
deleteLastLocation()rtabmap::Rtabmap
detectMoreLoopClosures(float clusterRadiusMax=0.5f, float clusterAngle=M_PI/6.0f, int iterations=1, bool intraSession=true, bool interSession=true, const ProgressState *state=0, float clusterRadiusMin=0.0f, int toFromMapId=-1)rtabmap::Rtabmap
dumpData() constrtabmap::Rtabmap
dumpPrediction() constrtabmap::Rtabmap
exportPoses(const std::string &path, bool optimized, bool global, int format)rtabmap::Rtabmap
generateDOTGraph(const std::string &path, int id=0, int margin=5)rtabmap::Rtabmap
get3DMap(std::map< int, Signature > &signatures, std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global) constrtabmap::Rtabmap
getForwardWMPoses(int fromId, int maxNearestNeighbors, float radius, int maxDiffID) constrtabmap::Rtabmap
getGoalReachedRadius() constrtabmap::Rtabmapinline
getGraph(std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global, std::map< int, Signature > *signatures=0, bool withImages=false, bool withScan=false, bool withUserData=false, bool withGrid=false, bool withWords=true, bool withGlobalDescriptors=true) constrtabmap::Rtabmap
getHighestHypothesisId() constrtabmap::Rtabmapinline
getHighestHypothesisValue() constrtabmap::Rtabmapinline
getInformation(const cv::Mat &covariance) constrtabmap::Rtabmap
getLastLocalizationPose() constrtabmap::Rtabmapinline
getLastLocationId() constrtabmap::Rtabmap
getLastProcessTime() constrtabmap::Rtabmapinline
getLocalConstraints() constrtabmap::Rtabmapinline
getLocalOptimizedPoses() constrtabmap::Rtabmapinline
getLocalRadius() constrtabmap::Rtabmapinline
getLoopClosureId() constrtabmap::Rtabmapinline
getLoopClosureValue() constrtabmap::Rtabmapinline
getMapCorrection() constrtabmap::Rtabmapinline
getMemory() constrtabmap::Rtabmapinline
getMemoryThreshold() constrtabmap::Rtabmapinline
getNodesInRadius(const Transform &pose, float radius, int k=0, std::map< int, float > *distsSqr=0)rtabmap::Rtabmap
getNodesInRadius(int nodeId, float radius, int k=0, std::map< int, float > *distsSqr=0)rtabmap::Rtabmap
getParameters() constrtabmap::Rtabmapinline
getPath() constrtabmap::Rtabmapinline
getPathCurrentGoalId() constrtabmap::Rtabmap
getPathCurrentGoalIndex() constrtabmap::Rtabmapinline
getPathCurrentIndex() constrtabmap::Rtabmapinline
getPathNextNodes() constrtabmap::Rtabmap
getPathNextPoses() constrtabmap::Rtabmap
getPaths(const std::map< int, Transform > &poses, const Transform &target, int maxGraphDepth=0) constrtabmap::Rtabmap
getPathStatus() constrtabmap::Rtabmapinline
getPathTransformToGoal() constrtabmap::Rtabmapinline
getPose(int locationId) constrtabmap::Rtabmap
getSignatureCopy(int id, bool images, bool scan, bool userData, bool occupancyGrid, bool withWords, bool withGlobalDescriptors) constrtabmap::Rtabmap
getStatistics() constrtabmap::Rtabmap
getSTM() constrtabmap::Rtabmap
getSTMSize() constrtabmap::Rtabmap
getTimeThreshold() constrtabmap::Rtabmapinline
getTotalMemSize() constrtabmap::Rtabmap
getWeights() constrtabmap::Rtabmap
getWM() constrtabmap::Rtabmap
getWMSize() constrtabmap::Rtabmap
getWorkingDir() constrtabmap::Rtabmapinline
globalBundleAdjustment(int optimizerType=1, bool rematchFeatures=true, int iterations=0, float pixelVariance=0.0f)rtabmap::Rtabmap
init(const ParametersMap &parameters, const std::string &databasePath="", bool loadDatabaseParameters=false)rtabmap::Rtabmap
init(const std::string &configFile="", const std::string &databasePath="", bool loadDatabaseParameters=false)rtabmap::Rtabmap
isIDsGenerated() constrtabmap::Rtabmap
isInSTM(int locationId) constrtabmap::Rtabmap
isRGBDMode() constrtabmap::Rtabmapinline
kVhEpipolar enum valuertabmap::Rtabmap
kVhNone enum valuertabmap::Rtabmap
kVhUndef enum valuertabmap::Rtabmap
labelLocation(int id, const std::string &label)rtabmap::Rtabmap
parseParameters(const ParametersMap &parameters)rtabmap::Rtabmap
process(const SensorData &data, Transform odomPose, const cv::Mat &odomCovariance=cv::Mat::eye(6, 6, CV_64FC1), const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())rtabmap::Rtabmap
process(const SensorData &data, Transform odomPose, float odomLinearVariance, float odomAngularVariance, const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())rtabmap::Rtabmap
process(const cv::Mat &image, int id=0, const std::map< std::string, float > &externalStats=std::map< std::string, float >())rtabmap::Rtabmap
refineLinks()rtabmap::Rtabmap
rejectLastLoopClosure()rtabmap::Rtabmap
resetMemory()rtabmap::Rtabmap
Rtabmap() (defined in rtabmap::Rtabmap)rtabmap::Rtabmap
setDummyDictionary(bool enabled=true)rtabmap::Rtabmap
setInitialPose(const Transform &initialPose)rtabmap::Rtabmap
setMemoryThreshold(int maxMemoryAllowed)rtabmap::Rtabmap
setOptimizedPoses(const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints)rtabmap::Rtabmap
setTimeThreshold(float maxTimeAllowed)rtabmap::Rtabmap
setUserData(int id, const cv::Mat &data)rtabmap::Rtabmap
setWorkingDirectory(std::string path)rtabmap::Rtabmap
triggerNewMap()rtabmap::Rtabmap
VhStrategy enum namertabmap::Rtabmap
~Rtabmap() (defined in rtabmap::Rtabmap)rtabmap::Rtabmapvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.html b/preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.html new file mode 100644 index 00000000..cf3c2460 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.html @@ -0,0 +1,2780 @@ + + + + + + + + +RTAB-Map: rtabmap::Rtabmap Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Rtabmap Class Reference
+
+
+ +

Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure). + More...

+ +

#include <Rtabmap.h>

+ + + + + +

+Public Types

enum  VhStrategy { kVhNone +, kVhEpipolar +, kVhUndef + }
 Loop-closure verification strategy. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool process (const SensorData &data, Transform odomPose, const cv::Mat &odomCovariance=cv::Mat::eye(6, 6, CV_64FC1), const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())
 Main RTAB-Map iteration: ingests one sensor frame and updates the map.
 
bool process (const SensorData &data, Transform odomPose, float odomLinearVariance, float odomAngularVariance, const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())
 Convenience overload: builds a diagonal covariance from scalar variances.
 
bool process (const cv::Mat &image, int id=0, const std::map< std::string, float > &externalStats=std::map< std::string, float >())
 Appearance-only convenience overload (loop-closure detection without odometry).
 
void init (const ParametersMap &parameters, const std::string &databasePath="", bool loadDatabaseParameters=false)
 Initializes Rtabmap with parameters and a database.
 
void init (const std::string &configFile="", const std::string &databasePath="", bool loadDatabaseParameters=false)
 Initializes Rtabmap from a configuration file and a database.
 
void close (bool databaseSaved=true, const std::string &ouputDatabasePath="")
 Closes Rtabmap and releases the underlying Memory.
 
const std::string & getWorkingDir () const
 
bool isRGBDMode () const
 
int getLoopClosureId () const
 
float getLoopClosureValue () const
 
int getHighestHypothesisId () const
 
float getHighestHypothesisValue () const
 
int getLastLocationId () const
 
std::list< int > getWM () const
 
std::set< int > getSTM () const
 
int getWMSize () const
 
int getSTMSize () const
 
std::map< int, int > getWeights () const
 
int getTotalMemSize () const
 
double getLastProcessTime () const
 
bool isInSTM (int locationId) const
 
bool isIDsGenerated () const
 
const Statistics & getStatistics () const
 
const std::map< int, Transform > & getLocalOptimizedPoses () const
 
const std::multimap< int, Link > & getLocalConstraints () const
 
Transform getPose (int locationId) const
 
Transform getMapCorrection () const
 
const Memory * getMemory () const
 
float getGoalReachedRadius () const
 
float getLocalRadius () const
 
const Transform & getLastLocalizationPose () const
 
float getTimeThreshold () const
 
void setTimeThreshold (float maxTimeAllowed)
 Sets the per-iteration time budget (ms).
 
int getMemoryThreshold () const
 
void setMemoryThreshold (int maxMemoryAllowed)
 Sets the maximum number of signatures kept in WM (0 = unbounded).
 
void setInitialPose (const Transform &initialPose)
 Sets the localization prior pose used to seed the next process() call (localization mode only).
 
int triggerNewMap ()
 Starts a new map session (next process() will create a fresh map id).
 
bool labelLocation (int id, const std::string &label)
 Assigns or clears a label on signature id.
 
bool setUserData (int id, const cv::Mat &data)
 Attaches user data to signature id, compressing it on the fly if needed.
 
void generateDOTGraph (const std::string &path, int id=0, int margin=5)
 Writes a Graphviz DOT file of the pose graph.
 
void exportPoses (const std::string &path, bool optimized, bool global, int format)
 Exports the current pose graph to a text file.
 
void resetMemory ()
 Clears all in-memory state and resets the database.
 
+void dumpPrediction () const
 Dumps the Bayes-filter prediction matrix to a file in the working directory.
 
+void dumpData () const
 Dumps the Memory state (signatures, words, dictionary) to the working directory.
 
+void parseParameters (const ParametersMap &parameters)
 Re-parses parameters and propagates them to owned sub-objects (Memory, BayesFilter, Optimizer, ...).
 
const ParametersMap & getParameters () const
 
void setWorkingDirectory (std::string path)
 Sets the working directory used for dumps, logs and temporary files.
 
void rejectLastLoopClosure ()
 Removes the loop-closure link added at the last process() iteration.
 
void deleteLastLocation ()
 Deletes the most recent (non-intermediate) location from the map.
 
void setOptimizedPoses (const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints)
 Replaces the current optimized poses and constraints with externally provided ones.
 
Signature getSignatureCopy (int id, bool images, bool scan, bool userData, bool occupancyGrid, bool withWords, bool withGlobalDescriptors) const
 Returns a copy of signature id with optional payloads attached.
 
+RTABMAP_DEPRECATED void get3DMap (std::map< int, Signature > &signatures, std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global) const
 Deprecated: use getGraph() instead with withImages=true, withScan=true, withUserData=true and withGrid=true.
 
void getGraph (std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global, std::map< int, Signature > *signatures=0, bool withImages=false, bool withScan=false, bool withUserData=false, bool withGrid=false, bool withWords=true, bool withGlobalDescriptors=true) const
 Extracts a full snapshot of the current pose graph.
 
std::map< int, Transform > getNodesInRadius (const Transform &pose, float radius, int k=0, std::map< int, float > *distsSqr=0)
 Returns optimized poses within a metric radius of pose.
 
std::map< int, Transform > getNodesInRadius (int nodeId, float radius, int k=0, std::map< int, float > *distsSqr=0)
 Returns optimized poses within a metric radius of node nodeId.
 
int detectMoreLoopClosures (float clusterRadiusMax=0.5f, float clusterAngle=M_PI/6.0f, int iterations=1, bool intraSession=true, bool interSession=true, const ProgressState *state=0, float clusterRadiusMin=0.0f, int toFromMapId=-1)
 Post-processing: searches for additional loop closures over the existing graph.
 
bool globalBundleAdjustment (int optimizerType=1, bool rematchFeatures=true, int iterations=0, float pixelVariance=0.0f)
 Runs a global bundle adjustment over the optimized graph.
 
int cleanupLocalGrids (const std::map< int, Transform > &mapPoses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)
 Filters spurious obstacles from every node's local grid using a reference 2D map.
 
int refineLinks ()
 Re-runs registration on every link of the current graph and updates the ones that converge.
 
bool addLink (const Link &link)
 Adds an external link to the map.
 
+cv::Mat getInformation (const cv::Mat &covariance) const
 Converts an odometry covariance into an information matrix, clipping by Memory::getOdomMaxInf() when Parameters::kRGBDLoopCovLimited() is enabled.
 
void addNodesToRepublish (const std::vector< int > &ids)
 Marks node ids whose data should be re-emitted on the next process().
 
void setDummyDictionary (bool enabled=true)
 Loads the visual word dictionary as ids only, without descriptors.
 
int getPathStatus () const
 
void clearPath (int status)
 Clears the current path and sets its terminal status.
 
bool computePath (int targetNode, bool global)
 Plans a path from the current location to node targetNode.
 
bool computePath (const Transform &targetPose, float tolerance=-1.0f)
 Plans a path in the current optimized map toward a metric goal pose.
 
const std::vector< std::pair< int, Transform > > & getPath () const
 
std::vector< std::pair< int, Transform > > getPathNextPoses () const
 
std::vector< int > getPathNextNodes () const
 
int getPathCurrentGoalId () const
 
unsigned int getPathCurrentIndex () const
 
unsigned int getPathCurrentGoalIndex () const
 
const Transform & getPathTransformToGoal () const
 
std::map< int, Transform > getForwardWMPoses (int fromId, int maxNearestNeighbors, float radius, int maxDiffID) const
 Returns optimized poses of WM nodes located in front of fromId.
 
std::map< int, std::map< int, Transform > > getPaths (const std::map< int, Transform > &poses, const Transform &target, int maxGraphDepth=0) const
 Segments a set of optimized poses into paths connected by neighbor links.
 
void adjustLikelihood (std::map< int, float > &likelihood) const
 Applies the standard RTAB-Map likelihood adjustment.
 
+

Detailed Description

+

Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure).

+

Rtabmap orchestrates the full SLAM iteration. Each new sensor observation passed to process() goes through the steps described below.

+
1. Memory update
+

Done via Memory::update(): a new Signature is added to STM, the oldest STM entry is promoted to WM if STM is full, and rehearsal compares the new signature to the previous STM signature.

+

When the robot barely moved since the previous frame (odometry displacement below Parameters::kRGBDLinearUpdate() and Parameters::kRGBDAngularUpdate()), the iteration is flagged as a "small displacement":

    +
  • If a loop closure or localization was already accepted on a recent iteration, appearance-based global loop-closure detection and proximity detection by space are both skipped to avoid wasting work while the robot is stationary at an already-known location (only retrieval runs).
  • +
  • Otherwise (no recent loop closure / localization), both still run normally so a first-time loop closure can still be detected from a standstill.
  • +
+

In either case, at the end of the iteration, if no loop closure, proximity detection or landmark observation latched onto the new node, it is deleted from Memory so the map does not grow while the robot is idle.

+

Rehearsal still runs first, so visually similar consecutive idle frames may also be merged into the previous STM signature (its weight is incremented and the new signature is discarded) when the similarity exceeds Parameters::kMemRehearsalSimilarity().

+
2. Loop-closure hypothesis
+

Scored via Memory::computeLikelihood() and the recursive BayesFilter (prior + observation update).

+
3. Hypothesis selection
+

The highest posterior is compared against the loop-closure threshold (Parameters::kRtabmapLoopThr()); if accepted, the loop-closure link is added and the pose graph is re-optimized by Optimizer.

+

In RGB-D mode, two extra checks must pass before the link is committed:

+

The optimization used by the consistency check depends on the operating mode:

    +
  • In mapping mode, the local map is re-optimized around the current signature including the new link, then graph::computeMaxGraphErrors() measures the worst per-link residual / its standard deviation. If the ratio exceeds Parameters::kRGBDOptimizeMaxError(), the loop closure(s) added this iteration are removed from Memory.
  • +
  • In localization mode, optimization is run on a sub-graph composed of the odometry cache (Parameters::kRGBDMaxOdomCacheSize()), the newly added localization link and pose priors fixing the map nodes (with the variance set from Parameters::kRGBDLocalizationPriorError()). The same error-ratio check is applied; on failure the localization is rejected for this iteration but the persisted map and its links are left untouched.
  • +
+

In both modes, if the same link is rejected twice in a row, a graph repair may also be attempted (within Parameters::kRGBDOptimizeMaxErrorRepairRadius()) to drop the offending link instead of the new candidate.

+

If either RGB-D check fails, the candidate is discarded and no link is added.

+
4. Retrieval
+

Once a loop-closure hypothesis is selected, neighbors of the matched node are brought back from LTM into WM via Memory::reactivateSignatures(), so the next iteration can compare against them too. Up to Parameters::kRtabmapMaxRetrieved() nodes are pulled per iteration; nodes around the current path or local pose may also be retrieved (capped by Parameters::kRGBDMaxLocalRetrieved()).

+

Retrieval (and the related node immunization) is only active when memory management is enabled, i.e. when Parameters::kRtabmapTimeThr() or Parameters::kRtabmapMemoryThr() is non-zero.

+
5. Proximity detection (RGB-D mode)
+

Visual and scan-based local matches to nearby nodes, used in addition to the appearance-based loop closure.

+

Candidate proximity links go through the same two RGB-D gates as loop closures above: a valid geometric transform must be computed by the registration pipeline, and the transform must not be rejected by the graph-optimization consistency check.

+
6. Transfer (WM to LTM)
+

At the end of the iteration, if the iteration exceeded the configured time budget (Parameters::kRtabmapTimeThr()) or WM exceeded its size budget (Parameters::kRtabmapMemoryThr()), Memory::forget() moves the oldest low-frequency signatures from WM to LTM (immunized nodes – retrieved neighbors, the last localization node, etc. – are kept in WM).

+

Transfer is skipped when both thresholds are 0 (memory management disabled).

+
7. Map / localization output
+

Optimized poses, current map correction and statistics are made available to callers via the getters below.

+
Operating modes
+

Selected by Parameters::kMemIncrementalMemory() (see Memory::isIncremental()):

    +
  • Mapping: STM and WM grow; loop closures update the optimized graph.
  • +
  • Localization: STM/WM are frozen; the current node is matched against the persisted map and only getLastLocalizationPose() is updated.
  • +
+
Path planning
+

Rtabmap also exposes basic graph-based path planning in RGB-D mode (computePath(), getPath(), getPathStatus()), used by the GUI to navigate between mapped locations.

+

When memory management is enabled (see step 4 Retrieval and step 6 Transfer), the retrieval step also pulls nodes along the currently planned path back from LTM into WM (capped by Parameters::kRGBDMaxLocalRetrieved()) so the robot is able to re-localize against upcoming waypoints as it follows the path, even when those nodes had been transferred out of WM earlier.

+
See also
Memory
+
+BayesFilter
+
+Optimizer
+
+Parameters
+ +

Definition at line 193 of file Rtabmap.h.

+

Member Enumeration Documentation

+ +

◆ VhStrategy

+ +
+
+ +

Loop-closure verification strategy.

+ + + + +
Enumerator
kVhNone 

No verification: the highest hypothesis above threshold is accepted.

+
kVhEpipolar 

Epipolar geometry verification (mostly historical, RGB-only mode).

+
kVhUndef 

Sentinel – undefined.

+
+ +

Definition at line 197 of file Rtabmap.h.

+ +
+
+

Member Function Documentation

+ +

◆ process() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::process (const SensorData & data,
Transform odomPose,
const cv::Mat & odomCovariance = cv::Mat::eye(6, 6, CV_64FC1),
const std::vector< float > & odomVelocity = std::vector< float >(),
const std::map< std::string, float > & externalStats = std::map< std::string, float >() 
)
+
+ +

Main RTAB-Map iteration: ingests one sensor frame and updates the map.

+

Adds data to Memory, runs the Bayes filter on the current likelihood, selects a loop-closure hypothesis if any, performs proximity detection, re-optimizes the graph as needed, and refreshes getStatistics() and getLastLocalizationPose().

+
Parameters
+ + + + + + +
dataSensor data for this frame (images, scan, user data, ...).
odomPoseOdometry pose; must be non-null in RGB-D SLAM mode. Pass a null Transform to fall back to appearance-only mode.
odomCovariance6x6 odometry covariance (default: identity).
odomVelocityOptional 6-vector (vx, vy, vz, vroll, vpitch, vyaw).
externalStatsExtra named statistics to record in the database for this iteration.
+
+
+
Returns
True if data was added to the map (i.e. the memory update succeeded).
+ +
+
+ +

◆ process() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::process (const SensorData & data,
Transform odomPose,
float odomLinearVariance,
float odomAngularVariance,
const std::vector< float > & odomVelocity = std::vector< float >(),
const std::map< std::string, float > & externalStats = std::map< std::string, float >() 
)
+
+ +

Convenience overload: builds a diagonal covariance from scalar variances.

+

The 6x6 odometry covariance is constructed as diag(odomLinearVariance, odomLinearVariance, odomLinearVariance, +odomAngularVariance, odomAngularVariance, odomAngularVariance).

+ +
+
+ +

◆ process() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::process (const cv::Mat & image,
int id = 0,
const std::map< std::string, float > & externalStats = std::map< std::string, float >() 
)
+
+ +

Appearance-only convenience overload (loop-closure detection without odometry).

+

Equivalent to processing image alone, with no odometry pose. Useful for offline loop-closure benchmarking on image sequences.

+
Parameters
+ + + + +
imageRGB or grayscale frame.
idOptional frame id (0 = auto-generated).
externalStatsExtra named statistics to record in the database for this iteration.
+
+
+ +
+
+ +

◆ init() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Rtabmap::init (const ParametersMap & parameters,
const std::string & databasePath = "",
bool loadDatabaseParameters = false 
)
+
+ +

Initializes Rtabmap with parameters and a database.

+
Parameters
+ + + + +
parametersParameters overriding default parameters and database parameters (see loadDatabaseParameters).
databasePathDatabase input/output path. If empty, an in-memory database is used. If set and the file does not exist, it is created empty; if it exists, nodes and the visual word vocabulary are loaded into working memory.
loadDatabaseParametersIf true and an existing database is opened, the parameters stored inside the database are loaded and applied to this Rtabmap instance (then overridden by parameters).
+
+
+ +
+
+ +

◆ init() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Rtabmap::init (const std::string & configFile = "",
const std::string & databasePath = "",
bool loadDatabaseParameters = false 
)
+
+ +

Initializes Rtabmap from a configuration file and a database.

+
Parameters
+ + + + +
configFileConfiguration file (*.ini) overriding default parameters and database parameters (see loadDatabaseParameters).
databasePathDatabase input/output path; same semantics as the other init().
loadDatabaseParametersIf true and an existing database is opened, the parameters stored inside the database are loaded and applied first, then overridden by values from configFile.
+
+
+ +
+
+ +

◆ close()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::Rtabmap::close (bool databaseSaved = true,
const std::string & ouputDatabasePath = "" 
)
+
+ +

Closes Rtabmap and releases the underlying Memory.

+
Parameters
+ + + +
databaseSavedIf true, the in-memory state is flushed to the database; if false, in-memory changes are discarded.
ouputDatabasePathIf non-empty, the database is copied to this path on close. If a database on disk was initially created/loaded on a different path, it will be updated with the latest changes and renamed to the output path.
+
+
+ +
+
+ +

◆ getWorkingDir()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::Rtabmap::getWorkingDir () const
+
+inline
+
+
Returns
Working directory used for dumps, log files and temporary outputs.
+ +

Definition at line 297 of file Rtabmap.h.

+ +
+
+ +

◆ isRGBDMode()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Rtabmap::isRGBDMode () const
+
+inline
+
+
Returns
True if RGB-D SLAM mode is enabled (Parameters::kRGBDEnabled()).
+ +

Definition at line 299 of file Rtabmap.h.

+ +
+
+ +

◆ getLoopClosureId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Rtabmap::getLoopClosureId () const
+
+inline
+
+
Returns
Id of the loop-closure hypothesis accepted at the last process() iteration, or 0 if none.
+ +

Definition at line 301 of file Rtabmap.h.

+ +
+
+ +

◆ getLoopClosureValue()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Rtabmap::getLoopClosureValue () const
+
+inline
+
+
Returns
Posterior probability of the accepted loop-closure hypothesis, or 0 if none.
+ +

Definition at line 303 of file Rtabmap.h.

+ +
+
+ +

◆ getHighestHypothesisId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Rtabmap::getHighestHypothesisId () const
+
+inline
+
+
Returns
Id of the highest-posterior hypothesis at the last iteration (whether or not it was accepted).
+ +

Definition at line 305 of file Rtabmap.h.

+ +
+
+ +

◆ getHighestHypothesisValue()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Rtabmap::getHighestHypothesisValue () const
+
+inline
+
+
Returns
Posterior of the highest-posterior hypothesis at the last iteration.
+ +

Definition at line 307 of file Rtabmap.h.

+ +
+
+ +

◆ getLastLocationId()

+ +
+
+ + + + + + + +
int rtabmap::Rtabmap::getLastLocationId () const
+
+
Returns
Id of the last non-intermediate signature added to the map (0 if none).
+ +
+
+ +

◆ getWM()

+ +
+
+ + + + + + + +
std::list< int > rtabmap::Rtabmap::getWM () const
+
+
Returns
Working memory ids ordered as in Memory::getWorkingMem().
+ +
+
+ +

◆ getSTM()

+ +
+
+ + + + + + + +
std::set< int > rtabmap::Rtabmap::getSTM () const
+
+
Returns
Short-term memory ids.
+ +
+
+ +

◆ getWMSize()

+ +
+
+ + + + + + + +
int rtabmap::Rtabmap::getWMSize () const
+
+
Returns
Working memory size (number of WM signatures).
+ +
+
+ +

◆ getSTMSize()

+ +
+
+ + + + + + + +
int rtabmap::Rtabmap::getSTMSize () const
+
+
Returns
Short-term memory size (number of STM signatures).
+ +
+
+ +

◆ getWeights()

+ +
+
+ + + + + + + +
std::map< int, int > rtabmap::Rtabmap::getWeights () const
+
+
Returns
Per-signature weights (rehearsal counts) for WM and STM.
+ +
+
+ +

◆ getTotalMemSize()

+ +
+
+ + + + + + + +
int rtabmap::Rtabmap::getTotalMemSize () const
+
+
Returns
Total number of signatures across WM, STM and LTM.
+ +
+
+ +

◆ getLastProcessTime()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::Rtabmap::getLastProcessTime () const
+
+inline
+
+
Returns
Wall-clock duration of the last process() call, in seconds.
+ +

Definition at line 323 of file Rtabmap.h.

+ +
+
+ +

◆ isInSTM()

+ +
+
+ + + + + + + + +
bool rtabmap::Rtabmap::isInSTM (int locationId) const
+
+
Returns
True if locationId is currently in short-term memory.
+ +
+
+ +

◆ isIDsGenerated()

+ +
+
+ + + + + + + +
bool rtabmap::Rtabmap::isIDsGenerated () const
+
+
Returns
True if signature ids are auto-generated (vs. taken from SensorData::id()).
+ +
+
+ +

◆ getStatistics()

+ +
+
+ + + + + + + +
const Statistics & rtabmap::Rtabmap::getStatistics () const
+
+
Returns
Statistics produced by the last process() iteration.
+ +
+
+ +

◆ getLocalOptimizedPoses()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Transform > & rtabmap::Rtabmap::getLocalOptimizedPoses () const
+
+inline
+
+
Returns
Optimized poses of the current local map (last graph optimization result).
+ +

Definition at line 331 of file Rtabmap.h.

+ +
+
+ +

◆ getLocalConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
const std::multimap< int, Link > & rtabmap::Rtabmap::getLocalConstraints () const
+
+inline
+
+
Returns
Constraints (links) of the current local map.
+ +

Definition at line 333 of file Rtabmap.h.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + + + + +
Transform rtabmap::Rtabmap::getPose (int locationId) const
+
+
Returns
Optimized pose of locationId in the current local map (identity if not present).
+ +
+
+ +

◆ getMapCorrection()

+ +
+
+ + + + + +
+ + + + + + + +
Transform rtabmap::Rtabmap::getMapCorrection () const
+
+inline
+
+
Returns
Transform mapping odometry frame to the optimized map frame.
+

This is the correction applied to incoming odometry poses so they align with the latest graph optimization output. Updated whenever a loop closure or proximity detection re-optimizes the graph.

+

In ROS terms, this corresponds to the standard /map -> /odom TF transform published by SLAM systems: composing it with the live odometry pose (/odom -> /base_link) yields the robot pose in the map frame.

+ +

Definition at line 349 of file Rtabmap.h.

+ +
+
+ +

◆ getMemory()

+ +
+
+ + + + + +
+ + + + + + + +
const Memory * rtabmap::Rtabmap::getMemory () const
+
+inline
+
+
Returns
Owned Memory (may be null before init()).
+ +

Definition at line 351 of file Rtabmap.h.

+ +
+
+ +

◆ getGoalReachedRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Rtabmap::getGoalReachedRadius () const
+
+inline
+
+
Returns
Radius (meters) under which the current path goal is considered reached.
+ +

Definition at line 353 of file Rtabmap.h.

+ +
+
+ +

◆ getLocalRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Rtabmap::getLocalRadius () const
+
+inline
+
+
Returns
Local radius (meters) used by proximity detection and path planning queries.
+ +

Definition at line 355 of file Rtabmap.h.

+ +
+
+ +

◆ getLastLocalizationPose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Rtabmap::getLastLocalizationPose () const
+
+inline
+
+
Returns
Last localized pose in the map frame.
+

In localization mode, this is the corrected odometry pose of the last processed frame. In mapping mode, this is the last pose returned by getLocalOptimizedPoses().

+ +

Definition at line 363 of file Rtabmap.h.

+ +
+
+ +

◆ getTimeThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Rtabmap::getTimeThreshold () const
+
+inline
+
+
Returns
Maximum allowed processing time per process() call, in milliseconds.
+
See also
Parameters::kRtabmapTimeThr()
+ +

Definition at line 369 of file Rtabmap.h.

+ +
+
+ +

◆ setTimeThreshold()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::setTimeThreshold (float maxTimeAllowed)
+
+ +

Sets the per-iteration time budget (ms).

+

Drives how aggressively WM is transferred to LTM to keep iterations under the threshold. 0 disables the time bound.

+
Note
This setting and setMemoryThreshold() are the only two switches that enable RTAB-Map's memory management (WM-to-LTM transfer, retrieval and node immunization). When both are 0, memory management is disabled and all signatures stay in working memory.
+
See also
Parameters::kRtabmapTimeThr()
+ +
+
+ +

◆ getMemoryThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Rtabmap::getMemoryThreshold () const
+
+inline
+
+
Returns
Maximum allowed WM size (number of signatures).
+
See also
Parameters::kRtabmapMemoryThr()
+ +

Definition at line 388 of file Rtabmap.h.

+ +
+
+ +

◆ setMemoryThreshold()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::setMemoryThreshold (int maxMemoryAllowed)
+
+ +

Sets the maximum number of signatures kept in WM (0 = unbounded).

+
Note
This setting and setTimeThreshold() are the only two switches that enable RTAB-Map's memory management (WM-to-LTM transfer, retrieval and node immunization). When both are 0, memory management is disabled and all signatures stay in working memory.
+
See also
Parameters::kRtabmapMemoryThr()
+ +
+
+ +

◆ setInitialPose()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::setInitialPose (const Transform & initialPose)
+
+ +

Sets the localization prior pose used to seed the next process() call (localization mode only).

+

Tells RTAB-Map where the robot is currently located in the map frame, so that the very next call to process() can align incoming odometry with the persisted map without waiting for a loop closure. Typical use cases: restoring localization after a session restart, applying an external pose estimate (e.g. from a GPS or a known starting point), or recovering from "kidnapped robot" situations.

+

This call only stages state; it does not itself produce a non-identity getMapCorrection(). The alignment between the odometry frame and the map frame is performed on the next process() call, which consumes initialPose together with the incoming odometry pose. Two branches are taken depending on Parameters::kRGBDOptimizeFromGraphEnd():

    +
  • false (default): getMapCorrection() is set so that the live odometry pose is shifted to land on initialPose in the map frame (the optimized map is left untouched).
  • +
  • true: every optimized node pose is rigidly transformed so that the map itself moves to align with initialPose (the map correction stays close to identity).
  • +
+

The transform applied is restricted by SLAM dimensionality: 3-DoF (x, y, yaw) for 2D SLAM, 4-DoF (x, y, z, yaw) when gravity is available (IMU orientation or Memory::isOdomGravityUsed()) and Parameters::kOptimizerGravitySigma() is non-zero, full 6-DoF otherwise.

+

Side effects on the staged state:

    +
  • getLastLocalizationPose() is replaced by initialPose; the localization covariance, the last localization node id and the odometry cache used for loop-closure rejection are all cleared.
  • +
  • getMapCorrection() is reset to identity and any backup is cleared.
  • +
  • If the current map has not been optimized yet (no entries in getLocalOptimizedPoses()) and a last working signature exists, the map is optimized around that signature so the next process() has something to localize against.
  • +
+

After the next process() consumes the prior, the nearest optimized node to initialPose is recorded as the last localization node.

+
Parameters
+ + +
initialPoseRobot pose in the map frame.
+
+
+
Note
No-op (with warning) in mapping mode.
+
See also
Parameters::kMemIncrementalMemory()
+
+Parameters::kRGBDOptimizeFromGraphEnd()
+ +
+
+ +

◆ triggerNewMap()

+ +
+
+ + + + + + + +
int rtabmap::Rtabmap::triggerNewMap ()
+
+ +

Starts a new map session (next process() will create a fresh map id).

+

In mapping mode, this increments the map id, clears the local optimized graph and resets the Bayes filter. In localization mode, it resets the map correction, the localization node and the odometry cache; if Parameters::kRGBDStartAtOrigin() is enabled, the last localization pose is reset to identity.

+
Returns
The new map id (mapping mode), or -1 (localization mode).
+ +
+
+ +

◆ labelLocation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::labelLocation (int id,
const std::string & label 
)
+
+ +

Assigns or clears a label on signature id.

+
Returns
True if the label was applied.
+ +
+
+ +

◆ setUserData()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::setUserData (int id,
const cv::Mat & data 
)
+
+ +

Attaches user data to signature id, compressing it on the fly if needed.

+

The format is detected automatically: a single-row CV_8UC1 matrix is treated as already-compressed data and stored as-is; anything else is considered raw and compressed before being stored.

+
Note
If you pass one-dimensional unsigned 8-bit raw data, transpose it so it has multiple rows (not multiple columns), otherwise it will be misdetected as already compressed.
+
Parameters
+ + + +
idTarget signature id (must be in WM/STM or LTM).
dataRaw or pre-compressed user data.
+
+
+
Returns
True if the data was attached.
+ +
+
+ +

◆ generateDOTGraph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Rtabmap::generateDOTGraph (const std::string & path,
int id = 0,
int margin = 5 
)
+
+ +

Writes a Graphviz DOT file of the pose graph.

+
Parameters
+ + + + +
pathOutput file path.
idIf non-zero, root the graph at id; otherwise use the last signature.
marginMaximum graph depth around id to include.
+
+
+ +
+
+ +

◆ exportPoses()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Rtabmap::exportPoses (const std::string & path,
bool optimized,
bool global,
int format 
)
+
+ +

Exports the current pose graph to a text file.

+

Forwards to graph::exportPoses() after collecting either the optimized or the raw odometry poses (and the matching constraints when needed).

+
Parameters
+ + + + + +
pathOutput file path.
optimizedIf true, export optimized poses; otherwise raw odometry poses.
globalIf true, include nodes from LTM as well; otherwise only WM/STM.
formatOutput format code; see graph::exportPoses() for the full list of supported values (raw, RGBD-SLAM/TUM, KITTI, TORO, g2o, ...).
+
+
+
See also
graph::exportPoses()
+ +
+
+ +

◆ resetMemory()

+ +
+
+ + + + + + + +
void rtabmap::Rtabmap::resetMemory ()
+
+ +

Clears all in-memory state and resets the database.

+

In incremental mode, also clears the persisted map. In read-only memory mode, resets the in-memory state but leaves the database untouched.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + +
const ParametersMap & rtabmap::Rtabmap::getParameters () const
+
+inline
+
+
Returns
Current effective parameter map.
+ +

Definition at line 526 of file Rtabmap.h.

+ +
+
+ +

◆ setWorkingDirectory()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::setWorkingDirectory (std::string path)
+
+ +

Sets the working directory used for dumps, logs and temporary files.

+

Can also be configured through Parameters::kRtabmapWorkingDirectory() in the parameter map passed to init() or parseParameters().

+
See also
Parameters::kRtabmapWorkingDirectory()
+ +
+
+ +

◆ rejectLastLoopClosure()

+ +
+
+ + + + + + + +
void rtabmap::Rtabmap::rejectLastLoopClosure ()
+
+ +

Removes the loop-closure link added at the last process() iteration.

+

Looks at the last non-intermediate signature in STM and erases any Link::kGlobalClosure, Link::kLocalSpaceClosure, Link::kLocalTimeClosure or Link::kUserClosure attached to it. The current optimized map is updated accordingly.

+ +
+
+ +

◆ deleteLastLocation()

+ +
+
+ + + + + + + +
void rtabmap::Rtabmap::deleteLastLocation ()
+
+ +

Deletes the most recent (non-intermediate) location from the map.

+

Used by tools to undo the very last process() iteration. In mapping mode, the optimized graph is recomputed without the deleted node.

+
Note
Locations whose neighbors include intermediate nodes are not supported.
+ +
+
+ +

◆ setOptimizedPoses()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::Rtabmap::setOptimizedPoses (const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints 
)
+
+ +

Replaces the current optimized poses and constraints with externally provided ones.

+

Useful when graph optimization is performed outside of Rtabmap.

+
Warning
No consistency check is performed against the current Memory state: poses and constraints overwrite the internal containers verbatim. The caller is responsible for ensuring that every id in poses (and every endpoint of every link in constraints) belongs to a signature currently in STM or WM (see Memory::isInSTM() / Memory::isInWM()). Passing poses for ids that are no longer loaded will leave dangling entries that may confuse subsequent process() calls.
+ +
+
+ +

◆ getSignatureCopy()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Signature rtabmap::Rtabmap::getSignatureCopy (int id,
bool images,
bool scan,
bool userData,
bool occupancyGrid,
bool withWords,
bool withGlobalDescriptors 
) const
+
+ +

Returns a copy of signature id with optional payloads attached.

+

Loads from WM/STM if present, otherwise from LTM. Selectively populates the returned Signature with images, scan, user data, occupancy grid, visual words and global descriptors.

+ +
+
+ +

◆ getGraph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Rtabmap::getGraph (std::map< int, Transform > & poses,
std::multimap< int, Link > & constraints,
bool optimized,
bool global,
std::map< int, Signature > * signatures = 0,
bool withImages = false,
bool withScan = false,
bool withUserData = false,
bool withGrid = false,
bool withWords = true,
bool withGlobalDescriptors = true 
) const
+
+ +

Extracts a full snapshot of the current pose graph.

+
Parameters
+ + + + + + + + + + + + +
posesOutput: pose for every selected node.
constraintsOutput: links between selected nodes.
optimizedIf true, return optimized poses; otherwise raw odometry poses.
globalIf true, include nodes from LTM as well; otherwise only WM/STM.
signaturesOptional output: a copy of each node's Signature (with the payloads requested by the with* flags).
withImagesAttach compressed RGB/depth images to signatures.
withScanAttach laser scan blob.
withUserDataAttach user data blob.
withGridAttach occupancy grid cells.
withWordsAttach visual words (id, keypoints, 3D points, descriptors).
withGlobalDescriptorsAttach global descriptors.
+
+
+ +
+
+ +

◆ getNodesInRadius() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, Transform > rtabmap::Rtabmap::getNodesInRadius (const Transform & pose,
float radius,
int k = 0,
std::map< int, float > * distsSqr = 0 
)
+
+ +

Returns optimized poses within a metric radius of pose.

+
Parameters
+ + + + + +
poseQuery pose in the map frame.
radiusSearch radius in meters (0 falls back to Parameters::kRGBDLocalRadius()).
kIf non-zero, also cap the result to the k nearest neighbors.
distsSqrOptional output: per-id squared distance to pose.
+
+
+
Returns
Nodes (and possibly landmarks) within the radius, mapped to their pose. Landmarks have a negative id.
+ +
+
+ +

◆ getNodesInRadius() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, Transform > rtabmap::Rtabmap::getNodesInRadius (int nodeId,
float radius,
int k = 0,
std::map< int, float > * distsSqr = 0 
)
+
+ +

Returns optimized poses within a metric radius of node nodeId.

+
Parameters
+ + + + + +
nodeIdQuery node id. Pass 0 to query around the latest node. A negative id requests neighbors of the corresponding landmark.
radiusSearch radius in meters (0 falls back to Parameters::kRGBDLocalRadius()).
kIf non-zero, cap the result to the k nearest neighbors.
distsSqrOptional output: per-id squared distance to nodeId.
+
+
+
Returns
Nodes (and possibly landmarks) within the radius.
+ +
+
+ +

◆ detectMoreLoopClosures()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int rtabmap::Rtabmap::detectMoreLoopClosures (float clusterRadiusMax = 0.5f,
float clusterAngle = M_PI/6.0f,
int iterations = 1,
bool intraSession = true,
bool interSession = true,
const ProgressState * state = 0,
float clusterRadiusMin = 0.0f,
int toFromMapId = -1 
)
+
+ +

Post-processing: searches for additional loop closures over the existing graph.

+

Clusters nearby optimized poses and runs registration between candidates that are not yet linked. New links are added to Memory and the graph is re-optimized.

+
Note
The registration approach used here is the one configured in Memory via Parameters::kRegStrategy() (0=Vis, 1=Icp, 2=VisIcp), so the quality and sensor requirements of this pass mirror the live loop-closure pipeline.
+
+Candidate cluster pairs whose ids differ by less than Parameters::kMemSTMSize(), or that are already reachable from each other within that many graph hops, are filtered out. This prevents trivial "loop closures" between temporally or topologically adjacent nodes.
+
Parameters
+ + + + + + + + + +
clusterRadiusMaxMaximum metric distance (m) between two candidate nodes.
clusterAngleMaximum angular distance (rad) between two candidate nodes.
iterationsNumber of refinement passes.
intraSessionInclude loop closures within the same map session.
interSessionInclude loop closures between different map sessions.
stateOptional progress sink; cancellation requests are honored.
clusterRadiusMinMinimum metric distance (m); pairs closer than this are considered already linked through neighbor links.
toFromMapIdIf >=0, restrict candidate pairs to nodes belonging to this map id.
+
+
+
Returns
Number of loop closures added, or -1 on error (e.g. not in RGB-D mode, no optimizer iterations).
+ +
+
+ +

◆ globalBundleAdjustment()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::globalBundleAdjustment (int optimizerType = 1,
bool rematchFeatures = true,
int iterations = 0,
float pixelVariance = 0.0f 
)
+
+ +

Runs a global bundle adjustment over the optimized graph.

+
Parameters
+ + + + + +
optimizerTypeBackend optimizer (e.g. 1=g2o); availability depends on what RTAB-Map was built with.
rematchFeaturesIf true, re-match visual features between connected nodes before BA (otherwise reuse existing word-id correspondences).
iterationsSolver iterations (0 falls back to Parameters::kOptimizerIterations()).
pixelVariancePixel reprojection variance used by the cost (0 falls back to Parameters::kOptimizerPixelVariance()).
+
+
+
Returns
True if BA was run and improved poses were stored.
+ +
+
+ +

◆ cleanupLocalGrids()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int rtabmap::Rtabmap::cleanupLocalGrids (const std::map< int, Transform > & mapPoses,
const cv::Mat & map,
float xMin,
float yMin,
float cellSize,
int cropRadius = 1,
bool filterScans = false 
)
+
+ +

Filters spurious obstacles from every node's local grid using a reference 2D map.

+

Thin wrapper around Memory::cleanupLocalGrids(); see that method for the exact filtering rule and the meaning of cropRadius and filterScans.

+
Returns
Number of (node, grid or scan) modifications, or -1 on error.
+ +
+
+ +

◆ refineLinks()

+ +
+
+ + + + + + + +
int rtabmap::Rtabmap::refineLinks ()
+
+ +

Re-runs registration on every link of the current graph and updates the ones that converge.

+

Useful after parameter changes to refresh stored transforms.

+
Note
The registration approach is the one configured in Memory via Parameters::kRegStrategy() (0=Vis, 1=Icp, 2=VisIcp). For each link, the link's existing relative transform (the constraint produced by the current optimized local graph) is passed as the initial guess to Memory::computeTransform(), so links already close to convergence are refined locally rather than re-estimated from scratch.
+
Returns
Number of links refined, or -1 if not in RGB-D mode.
+ +
+
+ +

◆ addLink()

+ +
+
+ + + + + + + + +
bool rtabmap::Rtabmap::addLink (const Link & link)
+
+ +

Adds an external link to the map.

+

The link's "from" and "to" endpoints must exist in memory (incremental mode) or in the optimized poses (localization mode). RGB-D mode only.

+
Returns
True if the link was added.
+ +
+
+ +

◆ addNodesToRepublish()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::addNodesToRepublish (const std::vector< int > & ids)
+
+ +

Marks node ids whose data should be re-emitted on the next process().

+

The requested signatures are attached to the Statistics object produced by the next process() call (via the same mechanism as the regular "last signature +data"), so consumers reading getStatistics() pick them up alongside the normal output. Up to Parameters::kRtabmapMaxRepublished() ids are emitted per iteration; any leftover ids stay queued for subsequent iterations until they are republished or fall out of the current graph.

+

Pass an empty vector to clear the request set. Requires Parameters::kRtabmapMaxRepublished() > 0 and Parameters::kRtabmapPublishLastSignature() = true.

+ +
+
+ +

◆ setDummyDictionary()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::setDummyDictionary (bool enabled = true)
+
+ +

Loads the visual word dictionary as ids only, without descriptors.

+

With a dummy dictionary, init() populates VWDictionary with placeholder VisualWord objects carrying an empty descriptor, and the dictionary update (FLANN index construction) is skipped. This makes opening a large database much faster and lighter in RAM when the word descriptors are not needed, e.g. to inspect or post-process an existing map rather than to localize in it.

+

The dummy dictionary is silently disabled if the database has no words, or if the dictionary has to be rebuilt from the nodes because it was not saved properly.

+
Parameters
+ + +
enabledTrue to load ids only, false to load the full dictionary (default).
+
+
+
Note
Must be called before init(); an error is logged and the call ignored once the memory exists.
+
Warning
Incompatible with mapping: adding new nodes asserts in Memory::createSignature(). Loop closure detection also cannot match new observations against a descriptor-less dictionary.
+
See also
Memory::setDummyDictionary()
+ +
+
+ +

◆ getPathStatus()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Rtabmap::getPathStatus () const
+
+inline
+
+
Returns
Current path status: -1 = failed, 0 = idle / executing, 1 = success.
+ +

Definition at line 776 of file Rtabmap.h.

+ +
+
+ +

◆ clearPath()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::clearPath (int status)
+
+ +

Clears the current path and sets its terminal status.

+
Parameters
+ + +
status-1 = failed, 0 = idle / executing, 1 = success.
+
+
+ +
+
+ +

◆ computePath() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::computePath (int targetNode,
bool global 
)
+
+ +

Plans a path from the current location to node targetNode.

+

RGB-D mode only (requires Parameters::kRGBDEnabled() = true).

+
Parameters
+ + + +
targetNodeDestination node id (positive) or landmark id (negative).
globalIf true, also search nodes in LTM; otherwise only the current optimized map.
+
+
+
Returns
True if a path was computed; the result is available via getPath().
+
See also
Parameters::kRGBDEnabled()
+ +
+
+ +

◆ computePath() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Rtabmap::computePath (const Transform & targetPose,
float tolerance = -1.0f 
)
+
+ +

Plans a path in the current optimized map toward a metric goal pose.

+
Parameters
+ + + +
targetPoseGoal pose in the map frame.
toleranceGoal-acceptance tolerance (meters). A negative value falls back to Parameters::kRGBDLocalRadius(); 0 means infinite tolerance.
+
+
+
Returns
True if a path was computed.
+ +
+
+ +

◆ getPath()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< std::pair< int, Transform > > & rtabmap::Rtabmap::getPath () const
+
+inline
+
+
Returns
The currently planned path as a sequence of (node id, pose) waypoints.
+ +

Definition at line 805 of file Rtabmap.h.

+ +
+
+ +

◆ getPathNextPoses()

+ +
+
+ + + + + + + +
std::vector< std::pair< int, Transform > > rtabmap::Rtabmap::getPathNextPoses () const
+
+
Returns
Upcoming waypoints (from the current path index onward).
+ +
+
+ +

◆ getPathNextNodes()

+ +
+
+ + + + + + + +
std::vector< int > rtabmap::Rtabmap::getPathNextNodes () const
+
+
Returns
Upcoming node ids (from the current path index onward).
+ +
+
+ +

◆ getPathCurrentGoalId()

+ +
+
+ + + + + + + +
int rtabmap::Rtabmap::getPathCurrentGoalId () const
+
+
Returns
Id of the current intermediate path goal (the node currently being chased).
+ +
+
+ +

◆ getPathCurrentIndex()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int rtabmap::Rtabmap::getPathCurrentIndex () const
+
+inline
+
+
Returns
Index of the current waypoint in getPath().
+ +

Definition at line 813 of file Rtabmap.h.

+ +
+
+ +

◆ getPathCurrentGoalIndex()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int rtabmap::Rtabmap::getPathCurrentGoalIndex () const
+
+inline
+
+
Returns
Index of the current intermediate goal in getPath().
+ +

Definition at line 815 of file Rtabmap.h.

+ +
+
+ +

◆ getPathTransformToGoal()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Rtabmap::getPathTransformToGoal () const
+
+inline
+
+
Returns
Transform from the final waypoint pose to the requested goal pose.
+ +

Definition at line 817 of file Rtabmap.h.

+ +
+
+ +

◆ getForwardWMPoses()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, Transform > rtabmap::Rtabmap::getForwardWMPoses (int fromId,
int maxNearestNeighbors,
float radius,
int maxDiffID 
) const
+
+ +

Returns optimized poses of WM nodes located in front of fromId.

+

Candidates are first gathered around fromId, then STM nodes are excluded, the survivors are cropped to a forward-facing box of width radius (1 m behind, radius ahead, +/-radius laterally), and a KdTree radius search keeps the maxNearestNeighbors closest poses in that box.

+
Note
Mapping vs. localization mode differs only in how the initial candidate set is built:
    +
  • In mapping mode (incremental), candidates are produced by a graph-radius walk from fromId: nodes reachable within maxDiffID graph hops AND within radius meters in the optimized poses.
  • +
  • In localization mode, the graph-hop restriction is ignored: every optimized pose within radius meters of fromId is considered. The forward-box crop and KdTree radius search that follow are identical in both modes.
  • +
+
+
Parameters
+ + + + + +
fromIdReference node (must be in Memory and getLocalOptimizedPoses()).
maxNearestNeighborsCap on the number of nodes returned.
radiusMaximum metric distance from fromId (meters).
maxDiffIDMaximum graph depth from fromId in mapping mode (0 = unlimited). Ignored in localization mode.
+
+
+ +
+
+ +

◆ getPaths()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::map< int, std::map< int, Transform > > rtabmap::Rtabmap::getPaths (const std::map< int, Transform > & poses,
const Transform & target,
int maxGraphDepth = 0 
) const
+
+ +

Segments a set of optimized poses into paths connected by neighbor links.

+

Designed to be called on the result of a radius search around target (a set of poses already constrained to be metrically close to the goal). Within that radius, the method partitions the poses into one or more "paths" where each path is a connected component reachable from its starting node using only neighbor (sequential) links – loop-closure links, landmark links and intermediate nodes are not used to traverse between members. Paths are produced one at a time, each starting from the still-unclaimed pose nearest to target; a candidate is added to the current path only if it has at least one neighbor link to a node already in the path.

+

Used internally by proximity detection by space (see Parameters::kRGBDProximityBySpace()) in two independent stages, each iterating over the segmented paths:

    +
  • One-to-one (visual registration): runs registration between the current node and at most one node per neighbor-connected path, avoiding redundant attempts against nearby members of the same local trajectory.
  • +
  • One-to-many (scan matching, enabled when Parameters::kRGBDProximityPathMaxNeighbors() > 0): on each path, neighboring nodes are assembled around the nearest pose on the path (up to the configured count, walked forward and backward) and their laser scans are merged for an ICP registration against the current scan. The neighbor-link-only structure of each path is what makes this assembly geometrically consistent.
  • +
+
Parameters
+ + + + +
posesCandidate nodes with their optimized poses (typically pre-filtered to a radius around target).
targetReference pose used to order paths: each path's starting node is the still-unclaimed pose closest to target.
maxGraphDepthMaximum graph depth traversed from the starting node when gathering candidates for a path (0 = unlimited).
+
+
+
Returns
Map from the starting node id of each path to its (node id -> pose) chain.
+ +
+
+ +

◆ adjustLikelihood()

+ +
+
+ + + + + + + + +
void rtabmap::Rtabmap::adjustLikelihood (std::map< int, float > & likelihood) const
+
+ +

Applies the standard RTAB-Map likelihood adjustment.

+

Normalizes raw likelihoods using mean and standard deviation across non-null values. Real-place entries with value <= mean + stdDev are clamped to 1.0; only entries above that threshold are scaled. The virtual place (the first key in likelihood, representing the "new place" hypothesis) is then set so that its likelihood reflects how peaked the real distribution is.

+

The exact formulas are selected by Parameters::kRtabmapVirtualPlaceLikelihoodRatio() (default 0, Angeli PhD formulation):

+
    +
  • Ratio = 0 (mean / std-dev formulation):
      +
    • Real place above threshold: (value - (stdDev - epsilon)) / mean
    • +
    • Virtual place: mean / stdDev + 1 (when stdDev is non-trivial and a maximum exists; otherwise 2). The virtual place "wins" when the real-place distribution is flat (small stdDev relative to mean).
    • +
    +
  • +
  • Ratio != 0 (z-score formulation):
      +
    • Real place above threshold: (value - mean) / stdDev (i.e. the z-score).
    • +
    • Virtual place: stdDev / (max - mean) + 1 (when max > mean; otherwise 2). The virtual place "wins" when no real candidate stands out far above the mean.
    • +
    +
  • +
+

In both formulations a low virtual-place likelihood favors a real-place loop closure on the next Bayes update; a high one favors the "new place" hypothesis.

+
See also
Parameters::kRtabmapVirtualPlaceLikelihoodRatio()
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.js b/preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.js new file mode 100644 index 00000000..7ea47c94 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Rtabmap.js @@ -0,0 +1,85 @@ +var classrtabmap_1_1Rtabmap = +[ + [ "VhStrategy", "classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568c", [ + [ "kVhNone", "classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568caea5e55cc106979d91f695c064a78926b", null ], + [ "kVhEpipolar", "classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568ca1b458648c7dc4ea000ca53e0e384e3c6", null ], + [ "kVhUndef", "classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568cab2676e6cebdd6090d3c87a3237c3e83b", null ] + ] ], + [ "process", "classrtabmap_1_1Rtabmap.html#ad7f085b6ae0fd3c7077c500c028fd5c3", null ], + [ "process", "classrtabmap_1_1Rtabmap.html#a91cedf4574a557cadf6daded489e4dbe", null ], + [ "process", "classrtabmap_1_1Rtabmap.html#a35cf8fd93f77d1c148ae6d3107725750", null ], + [ "init", "classrtabmap_1_1Rtabmap.html#a711c479925db2c9f8201aacffe70281b", null ], + [ "init", "classrtabmap_1_1Rtabmap.html#a25bfb157aa3be3bd3c8a1d4200329041", null ], + [ "close", "classrtabmap_1_1Rtabmap.html#a5e0b2eada8ae885e45df23165bb91d2f", null ], + [ "getWorkingDir", "classrtabmap_1_1Rtabmap.html#a61bc4dce59a1da8b904a7dbe39e5038a", null ], + [ "isRGBDMode", "classrtabmap_1_1Rtabmap.html#a691de75b6964ab48d7f1ea53ea40f4c1", null ], + [ "getLoopClosureId", "classrtabmap_1_1Rtabmap.html#a2bc8eecb690ec1e36955119cd2c1a197", null ], + [ "getLoopClosureValue", "classrtabmap_1_1Rtabmap.html#adc87cbb6adde3027b8c20bbba25fec7b", null ], + [ "getHighestHypothesisId", "classrtabmap_1_1Rtabmap.html#ab11a50751ab17717f567934e7cb2c450", null ], + [ "getHighestHypothesisValue", "classrtabmap_1_1Rtabmap.html#a530c87cda2cd010e384178bced6611a1", null ], + [ "getLastLocationId", "classrtabmap_1_1Rtabmap.html#a9406c710b7af988dda1868a3efa8f1dd", null ], + [ "getWM", "classrtabmap_1_1Rtabmap.html#ae3d40ed4ee48954e70d45e0779c24a49", null ], + [ "getSTM", "classrtabmap_1_1Rtabmap.html#a809673c3d0e6d8fb05ebb4a52218d438", null ], + [ "getWMSize", "classrtabmap_1_1Rtabmap.html#a203a18eb60f6c057518fd5129bbc32ff", null ], + [ "getSTMSize", "classrtabmap_1_1Rtabmap.html#a49adc83991d6b95c7911f41330cbd467", null ], + [ "getWeights", "classrtabmap_1_1Rtabmap.html#a353361aeeece3ce8c799d168a5798a01", null ], + [ "getTotalMemSize", "classrtabmap_1_1Rtabmap.html#ab44f1bca06eec4beb8dfebeed9ed5ce8", null ], + [ "getLastProcessTime", "classrtabmap_1_1Rtabmap.html#a88ffdd1ba70707e5969deab4f6ee66a0", null ], + [ "isInSTM", "classrtabmap_1_1Rtabmap.html#a596ea3fbeb22c90db9530f6752900ecc", null ], + [ "isIDsGenerated", "classrtabmap_1_1Rtabmap.html#a5e85283c6421dcf9afb6961662e501b8", null ], + [ "getStatistics", "classrtabmap_1_1Rtabmap.html#a5d18002c7eb7cee234471686413d201c", null ], + [ "getLocalOptimizedPoses", "classrtabmap_1_1Rtabmap.html#aebe0bf9364ff8952d041f57c6a1c1d57", null ], + [ "getLocalConstraints", "classrtabmap_1_1Rtabmap.html#a4d1e329f0c0fcc341d14f6853ec86750", null ], + [ "getPose", "classrtabmap_1_1Rtabmap.html#ac430e0adb75dc4aec3b7ba77053aabd0", null ], + [ "getMapCorrection", "classrtabmap_1_1Rtabmap.html#a7b71f70a20f1ef42a65fa9571e254711", null ], + [ "getMemory", "classrtabmap_1_1Rtabmap.html#a08adb5e0b8019c1dbd4f571099d2d46b", null ], + [ "getGoalReachedRadius", "classrtabmap_1_1Rtabmap.html#a6098155788f6e9ccaa636e26f8881c07", null ], + [ "getLocalRadius", "classrtabmap_1_1Rtabmap.html#a6a4c533659621ccb1f6a5ddbc8149306", null ], + [ "getLastLocalizationPose", "classrtabmap_1_1Rtabmap.html#a2d2efac02d4a6d1d7bbc505d94fd634b", null ], + [ "getTimeThreshold", "classrtabmap_1_1Rtabmap.html#af7fa0cbd1ef027f8bb2af11364487df8", null ], + [ "setTimeThreshold", "classrtabmap_1_1Rtabmap.html#a80add8fadd488d0c7781c249abea0d5d", null ], + [ "getMemoryThreshold", "classrtabmap_1_1Rtabmap.html#a876d3599c76de815bee4b278a087cfa5", null ], + [ "setMemoryThreshold", "classrtabmap_1_1Rtabmap.html#a6915ee0137b949837addcb5d3ac1646c", null ], + [ "setInitialPose", "classrtabmap_1_1Rtabmap.html#a9a9321531773f37cd5d7740495ede47f", null ], + [ "triggerNewMap", "classrtabmap_1_1Rtabmap.html#a4ab6de2be120bbda75577911d52346d4", null ], + [ "labelLocation", "classrtabmap_1_1Rtabmap.html#af1fe8ed393237bc9ffa1ea93adf0ec9b", null ], + [ "setUserData", "classrtabmap_1_1Rtabmap.html#a037ddb5d737e0466d7610b88d8429bd6", null ], + [ "generateDOTGraph", "classrtabmap_1_1Rtabmap.html#a3c32f64acd943c676a9b11c7dbd3a5ae", null ], + [ "exportPoses", "classrtabmap_1_1Rtabmap.html#aeffdfc811a178ba2e55205b746a6ea71", null ], + [ "resetMemory", "classrtabmap_1_1Rtabmap.html#af12ae46226f33adf8c4cafbe1bcf544c", null ], + [ "dumpPrediction", "classrtabmap_1_1Rtabmap.html#ad0c040e54bbca27dffc46346d96c57cb", null ], + [ "dumpData", "classrtabmap_1_1Rtabmap.html#a38db1c80ae583e255dd6174ba6d41ffc", null ], + [ "parseParameters", "classrtabmap_1_1Rtabmap.html#a5a461ed88e83d2dbebee819ab6690e7a", null ], + [ "getParameters", "classrtabmap_1_1Rtabmap.html#a9ac5900cbc165df1c501606f79c65ec1", null ], + [ "setWorkingDirectory", "classrtabmap_1_1Rtabmap.html#a25028c3e8d8018c03f47f06150d76eab", null ], + [ "rejectLastLoopClosure", "classrtabmap_1_1Rtabmap.html#ab04bd616db9107a705faf5b3395a73d3", null ], + [ "deleteLastLocation", "classrtabmap_1_1Rtabmap.html#aee23115b4bd02bce5d1721418a0f7599", null ], + [ "setOptimizedPoses", "classrtabmap_1_1Rtabmap.html#a7a841702b925777620714fce7b41fd69", null ], + [ "getSignatureCopy", "classrtabmap_1_1Rtabmap.html#a7133d8efa98410eaec68e0199ff98a0c", null ], + [ "get3DMap", "classrtabmap_1_1Rtabmap.html#ae617c65a0ba6f95a321b8c0c3a18b0e3", null ], + [ "getGraph", "classrtabmap_1_1Rtabmap.html#a456fa0c95770f052d78f6d9f745fa1e3", null ], + [ "getNodesInRadius", "classrtabmap_1_1Rtabmap.html#a1a6498f60f52f65ffbed2d89d7c20648", null ], + [ "getNodesInRadius", "classrtabmap_1_1Rtabmap.html#a9bd263bbcdbc6f41119f8532131db974", null ], + [ "detectMoreLoopClosures", "classrtabmap_1_1Rtabmap.html#a600d86ab2a67fa08d6a1e726380948ea", null ], + [ "globalBundleAdjustment", "classrtabmap_1_1Rtabmap.html#ab1044f290653749990018ca5722f00c7", null ], + [ "cleanupLocalGrids", "classrtabmap_1_1Rtabmap.html#ac7de2278aa53a315a63bec05c1f0a15f", null ], + [ "refineLinks", "classrtabmap_1_1Rtabmap.html#a6650c241bd6a89f66718ce7a227dfe10", null ], + [ "addLink", "classrtabmap_1_1Rtabmap.html#aef03c0d6ee1ef5646ba11be5dbe9faa5", null ], + [ "getInformation", "classrtabmap_1_1Rtabmap.html#aeea47830776fe57c456ae6a673069ddc", null ], + [ "addNodesToRepublish", "classrtabmap_1_1Rtabmap.html#a0d2caf505525f635bda914e73aa59232", null ], + [ "setDummyDictionary", "classrtabmap_1_1Rtabmap.html#a4d351e3f5ef809460afbb5a7702a500d", null ], + [ "getPathStatus", "classrtabmap_1_1Rtabmap.html#afe4aa4f9a67ba85b60c7dfda86d0131b", null ], + [ "clearPath", "classrtabmap_1_1Rtabmap.html#a589cd696bffe53a5e00898631e7d9103", null ], + [ "computePath", "classrtabmap_1_1Rtabmap.html#ab797f7f5bb73a507ba4d4672cd5476df", null ], + [ "computePath", "classrtabmap_1_1Rtabmap.html#a14d5c84b61386e95071e90aba406ff49", null ], + [ "getPath", "classrtabmap_1_1Rtabmap.html#a5fe89ac87283a92258d27f42eb7b13f1", null ], + [ "getPathNextPoses", "classrtabmap_1_1Rtabmap.html#af81fe33ef45e1ad1838bc97d6a73a8be", null ], + [ "getPathNextNodes", "classrtabmap_1_1Rtabmap.html#a45addb0848702b39c67c2394dd62f739", null ], + [ "getPathCurrentGoalId", "classrtabmap_1_1Rtabmap.html#a5f886101463229fcd79bf3dd6418aa5c", null ], + [ "getPathCurrentIndex", "classrtabmap_1_1Rtabmap.html#a94eecd89994fc02a913b1eb087d85c84", null ], + [ "getPathCurrentGoalIndex", "classrtabmap_1_1Rtabmap.html#a781713c190497d5f25d7e12112ae4345", null ], + [ "getPathTransformToGoal", "classrtabmap_1_1Rtabmap.html#aedf5dce175ee325822ab7b7772c8d4f5", null ], + [ "getForwardWMPoses", "classrtabmap_1_1Rtabmap.html#a8400ccecd090cb438d16178930fe0872", null ], + [ "getPaths", "classrtabmap_1_1Rtabmap.html#ad314edf995555480a2db1aceb7fd2ee7", null ], + [ "adjustLikelihood", "classrtabmap_1_1Rtabmap.html#aad648f09bb04b193907528987ccda413", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree-members.html new file mode 100644 index 00000000..c1869fbc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree-members.html @@ -0,0 +1,131 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapColorOcTree Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapColorOcTree, including all inherited members.

+ + + + + + + + + + + + + + + + +
averageNodeColor(const octomap::OcTreeKey &key, uint8_t r, uint8_t g, uint8_t b) (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTree
averageNodeColor(float x, float y, float z, uint8_t r, uint8_t g, uint8_t b) (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTreeinline
create() constrtabmap::RtabmapColorOcTreeinline
getTreeType() const (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTreeinline
integrateNodeColor(const octomap::OcTreeKey &key, uint8_t r, uint8_t g, uint8_t b) (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTree
integrateNodeColor(float x, float y, float z, uint8_t r, uint8_t g, uint8_t b) (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTreeinline
isNodeCollapsible(const RtabmapColorOcTreeNode *node) const (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTreevirtual
pruneNode(RtabmapColorOcTreeNode *node)rtabmap::RtabmapColorOcTreevirtual
RtabmapColorOcTree(double resolution)rtabmap::RtabmapColorOcTree
RtabmapColorOcTreeMemberInitrtabmap::RtabmapColorOcTreeprotectedstatic
setNodeColor(const octomap::OcTreeKey &key, uint8_t r, uint8_t g, uint8_t b) (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTree
setNodeColor(float x, float y, float z, uint8_t r, uint8_t g, uint8_t b) (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTreeinline
updateInnerOccupancy() (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTree
updateInnerOccupancyRecurs(RtabmapColorOcTreeNode *node, unsigned int depth) (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTreeprotected
~RtabmapColorOcTree() (defined in rtabmap::RtabmapColorOcTree)rtabmap::RtabmapColorOcTreeinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.html new file mode 100644 index 00000000..82b4fa9c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.html @@ -0,0 +1,524 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapColorOcTree Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapColorOcTree Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapColorOcTree:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapColorOcTree:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + +

+Classes

class  StaticMemberInitializer
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ RtabmapColorOcTree (double resolution)
 Default constructor, sets resolution of leafs.
 
RtabmapColorOcTree * create () const
 
std::string getTreeType () const
 
virtual bool pruneNode (RtabmapColorOcTreeNode *node)
 
+virtual bool isNodeCollapsible (const RtabmapColorOcTreeNode *node) const
 
+RtabmapColorOcTreeNode * setNodeColor (const octomap::OcTreeKey &key, uint8_t r, uint8_t g, uint8_t b)
 
RtabmapColorOcTreeNode * setNodeColor (float x, float y, float z, uint8_t r, uint8_t g, uint8_t b)
 
+RtabmapColorOcTreeNode * averageNodeColor (const octomap::OcTreeKey &key, uint8_t r, uint8_t g, uint8_t b)
 
RtabmapColorOcTreeNode * averageNodeColor (float x, float y, float z, uint8_t r, uint8_t g, uint8_t b)
 
+RtabmapColorOcTreeNode * integrateNodeColor (const octomap::OcTreeKey &key, uint8_t r, uint8_t g, uint8_t b)
 
RtabmapColorOcTreeNode * integrateNodeColor (float x, float y, float z, uint8_t r, uint8_t g, uint8_t b)
 
+void updateInnerOccupancy ()
 
+ + + +

+Protected Member Functions

+void updateInnerOccupancyRecurs (RtabmapColorOcTreeNode *node, unsigned int depth)
 
+ + + + +

+Static Protected Attributes

static StaticMemberInitializer RtabmapColorOcTreeMemberInit
 static member to ensure static initialization (only once)
 
+

Detailed Description

+
+

Definition at line 87 of file OctoMap.h.

+

Constructor & Destructor Documentation

+ +

◆ ~RtabmapColorOcTree()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapColorOcTree::~RtabmapColorOcTree ()
+
+inlinevirtual
+
+ +

Definition at line 92 of file OctoMap.h.

+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + +
RtabmapColorOcTree * rtabmap::RtabmapColorOcTree::create () const
+
+inline
+
+

virtual constructor: creates a new object of same type (Covariant return type requires an up-to-date compiler)

+ +

Definition at line 96 of file OctoMap.h.

+ +
+
+ +

◆ getTreeType()

+ +
+
+ + + + + +
+ + + + + + + +
std::string rtabmap::RtabmapColorOcTree::getTreeType () const
+
+inline
+
+ +

Definition at line 98 of file OctoMap.h.

+ +
+
+ +

◆ pruneNode()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool rtabmap::RtabmapColorOcTree::pruneNode (RtabmapColorOcTreeNode * node)
+
+virtual
+
+

Prunes a node when it is collapsible. This overloaded version only considers the node occupancy for pruning, different colors of child nodes are ignored.

Returns
true if pruning was successful
+ +
+
+ +

◆ setNodeColor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RtabmapColorOcTreeNode * rtabmap::RtabmapColorOcTree::setNodeColor (float x,
float y,
float z,
uint8_t r,
uint8_t g,
uint8_t b 
)
+
+inline
+
+ +

Definition at line 114 of file OctoMap.h.

+ +
+
+ +

◆ averageNodeColor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RtabmapColorOcTreeNode * rtabmap::RtabmapColorOcTree::averageNodeColor (float x,
float y,
float z,
uint8_t r,
uint8_t g,
uint8_t b 
)
+
+inline
+
+ +

Definition at line 126 of file OctoMap.h.

+ +
+
+ +

◆ integrateNodeColor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RtabmapColorOcTreeNode * rtabmap::RtabmapColorOcTree::integrateNodeColor (float x,
float y,
float z,
uint8_t r,
uint8_t g,
uint8_t b 
)
+
+inline
+
+ +

Definition at line 138 of file OctoMap.h.

+ +
+
+

Member Data Documentation

+ +

◆ RtabmapColorOcTreeMemberInit

+ +
+
+ + + + + +
+ + + + +
StaticMemberInitializer rtabmap::RtabmapColorOcTree::RtabmapColorOcTreeMemberInit
+
+staticprotected
+
+ +

static member to ensure static initialization (only once)

+ +

Definition at line 171 of file OctoMap.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/global_map/OctoMap.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.js new file mode 100644 index 00000000..ddd78c75 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1RtabmapColorOcTree = +[ + [ "StaticMemberInitializer", "classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html", "classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer" ], + [ "RtabmapColorOcTree", "classrtabmap_1_1RtabmapColorOcTree.html#a357d9dd5513df9a4185d84f97c1d5a3f", null ], + [ "create", "classrtabmap_1_1RtabmapColorOcTree.html#ac109340a5367e1b818febb00ae06f18e", null ], + [ "pruneNode", "classrtabmap_1_1RtabmapColorOcTree.html#aea61a0ef99b3c56ecf5178c6d6eeb847", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode-members.html new file mode 100644 index 00000000..8ed6b868 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode-members.html @@ -0,0 +1,136 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapColorOcTreeNode Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapColorOcTreeNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
createChild(unsigned int i) (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
expandNode() (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
getChild(unsigned int i) (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
getChild(unsigned int i) const (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
getNodeRefId() const (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
getOccupancyType() const (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
getPointRef() const (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
kTypeEmpty enum value (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
kTypeGround enum value (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
kTypeObstacle enum value (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
kTypeUnknown enum value (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
OccupancyType enum name (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
pruneNode() (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
RtabmapColorOcTree (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodefriend
RtabmapColorOcTreeNode() (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
RtabmapColorOcTreeNode(const RtabmapColorOcTreeNode &rhs) (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
setNodeRefId(int nodeRefId) (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
setOccupancyType(char type) (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
setPointRef(const octomap::point3d &point) (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNodeinline
updateOccupancyTypeChildren() (defined in rtabmap::RtabmapColorOcTreeNode)rtabmap::RtabmapColorOcTreeNode
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode.html new file mode 100644 index 00000000..b331b436 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode.html @@ -0,0 +1,459 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapColorOcTreeNode Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapColorOcTreeNode Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapColorOcTreeNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapColorOcTreeNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + +

+Public Types

enum  OccupancyType { kTypeUnknown =-1 +, kTypeEmpty =0 +, kTypeGround =1 +, kTypeObstacle =100 + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RtabmapColorOcTreeNode (const RtabmapColorOcTreeNode &rhs)
 
void setNodeRefId (int nodeRefId)
 
void setOccupancyType (char type)
 
void setPointRef (const octomap::point3d &point)
 
int getNodeRefId () const
 
int getOccupancyType () const
 
const octomap::point3d & getPointRef () const
 
+RtabmapColorOcTreeNode * getChild (unsigned int i)
 
+const RtabmapColorOcTreeNode * getChild (unsigned int i) const
 
+bool pruneNode ()
 
+void expandNode ()
 
+bool createChild (unsigned int i)
 
+void updateOccupancyTypeChildren ()
 
+ + + +

+Friends

class RtabmapColorOcTree
 
+

Detailed Description

+
+

Definition at line 53 of file OctoMap.h.

+

Member Enumeration Documentation

+ +

◆ OccupancyType

+ +
+
+ + + + +
enum rtabmap::RtabmapColorOcTreeNode::OccupancyType
+
+ +

Definition at line 56 of file OctoMap.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ RtabmapColorOcTreeNode() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::RtabmapColorOcTreeNode::RtabmapColorOcTreeNode ()
+
+inline
+
+ +

Definition at line 61 of file OctoMap.h.

+ +
+
+ +

◆ RtabmapColorOcTreeNode() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::RtabmapColorOcTreeNode::RtabmapColorOcTreeNode (const RtabmapColorOcTreeNode & rhs)
+
+inline
+
+ +

Definition at line 62 of file OctoMap.h.

+ +
+
+

Member Function Documentation

+ +

◆ setNodeRefId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::RtabmapColorOcTreeNode::setNodeRefId (int nodeRefId)
+
+inline
+
+ +

Definition at line 64 of file OctoMap.h.

+ +
+
+ +

◆ setOccupancyType()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::RtabmapColorOcTreeNode::setOccupancyType (char type)
+
+inline
+
+ +

Definition at line 65 of file OctoMap.h.

+ +
+
+ +

◆ setPointRef()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::RtabmapColorOcTreeNode::setPointRef (const octomap::point3d & point)
+
+inline
+
+ +

Definition at line 66 of file OctoMap.h.

+ +
+
+ +

◆ getNodeRefId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RtabmapColorOcTreeNode::getNodeRefId () const
+
+inline
+
+ +

Definition at line 67 of file OctoMap.h.

+ +
+
+ +

◆ getOccupancyType()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RtabmapColorOcTreeNode::getOccupancyType () const
+
+inline
+
+ +

Definition at line 68 of file OctoMap.h.

+ +
+
+ +

◆ getPointRef()

+ +
+
+ + + + + +
+ + + + + + + +
const octomap::point3d & rtabmap::RtabmapColorOcTreeNode::getPointRef () const
+
+inline
+
+ +

Definition at line 69 of file OctoMap.h.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ RtabmapColorOcTree

+ +
+
+ + + + + +
+ + + + +
friend class RtabmapColorOcTree
+
+friend
+
+ +

Definition at line 59 of file OctoMap.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/global_map/OctoMap.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.map new file mode 100644 index 00000000..f5b1f0da --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.md5 new file mode 100644 index 00000000..31d9beb2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.md5 @@ -0,0 +1 @@ +71d4d37230a14e6a3e17c92118e6d144 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4727c2122bb5fff060cefd2fd89987c0c77e9231 GIT binary patch literal 6138 zcmcgwbyQT}x4$$35{k5RNJt|gAq~=@;?SX#Gy@1CNDd4sDyWpCe(4x$=oCS^yAjEu zn|JvA-h1o4wcg)v!MX!8ch0%{?7cs+BXqS@ZxYcFK@fCPT}??Jg0P6e-%f=1;93!@ z^bNe=TWP2&L08v5>2hd&NabEp0ak%N{JR;Wr$c&$rT)c+ab-Gq%gJTrb)kZ(1bzMjomPK65k zrB%&KO~Fq6bNi}U&Kmn2NhIgr?Y+ou5s_X29nRTqX&fwzD4}*5>+6e$bWj~J6qui% zPm|C&G&=(qTtVQMOR>DltUQOfUw2jk?R*UV? zG{QD&MTbXKJ`2qm1qC-%V;MuWbIZKBkDO-f{nfO!RrK|5t@NZ2XX{50Q}Z+P^OM2~ zsIaiG$g*Q({0=Q7;wN;5^va%*xYQj`1)@9J3XCg#>*Pj|<*?1dz13a= z9nl9527Z0ywLjfoD+fm?<-7k~8Qo-&4qqSXPnPtsYYM{iJl(fvW&I*#jgOW7=Z{@v zbaZw!z4*k`ELiN`g9o2VOH2O@KQqs6ZB>Gy9PZFYt4vfl(f>}COaM`7*!Cose7D?P z>ZGKn*Kl)l+n;bO(o!g|U1p>w>ijC(WM84s zRaJfFm%G&ZKMW0xjd>688W+UM;Zf67ZoxBe_Oz~_u1Vv8*IT4iOlnwYzg^bOj%#FWY;M5S+3Y^1gDFAbTe|<*Aq9n=u`#{O(Ub?}ojc0r z0T*H*?J4cCOgbnOYQKd{jvSgOu_mxb!Fc%i%BverPkpf;Sz20_J54^g{s0tU|98F2 zKW)_JSr=zVgVzV-fcip5Pv0g5608C%_(aMmt>#jT!3VcSY;K;BkdS2k{wh8wKKn+o zCG2Kq8&n814*;uXk}sh%YNf(a!E(c5ZIM)4c5a#uafU z{FShdcQ^!u(37W6z0STQiI5RHUaWaaeUWfu)k>C#ufI4nzD_Y79$x?H!FmMZr;RXt zQrnY@kCaJP6C8Vn_>505LMlA8phS>{gp!I%1r%pio!^nZg98sp6WDZ!1utBgK;|YA z^h$hXrMQ^5II?TTZ(D{=##fYrVsjduXvlL%OjH!Hi68uq1V7kEmy()VW5)bU{tO%% zVspE8k2Ewa?0u)rEizIU7ncDCl<9~J0ELMfcwU?A zR{#fOg+5sIZ6Z%-pkOicdlE_bCgH;))?OrVh1*x0Qi608}C zX1?kq#N2STc{NLnTF>*P)m7_O1cmNB%7xOTB$|BVN>a#mYf4gjuUlkif1h$PB{>;_ zeCz5v&K$*kb}TTqA0LPI_308er!=(P#>Fx-Gqba^BOmQ|Kpn5jT}70Z3jaCq1*>LO zRgGDt>FMb$^v=)EyLx!EWNRd*_uC0twGtxXznOR`iIDaA@u#)EHE)%aLb9a(uCHT3 zTU%Qa?n`QkMG^N`E|!;<<%>qygoN}=at7C25B@$WFE1Z^XYOr%{O& zUWN1YL}tm)-dXsrc4pW?%)!yIz zOq5hqV5X{n_x`S(x}Qw9yxbTo`Ce312~&Ofk`t6gb91xnLTd!S`EBFwv%UTO5S7f5 zBub~%r6rrPx=b?JV}!07!+q}_ zLM4__3x|L-%Qnrw!oY}~i_1V)mpn8yG#*xv!=@U8I9qoPO8C=*RSWpb9S+ZqizBC# zbZ7rz$m4r3{H)D!c`G#$g=UetOTe1(RorFZ{A90lc=%&;OAEJzMAC=H*~-P^zFHIG zM8vEa08ZmoGQWLO4A)mu!nGHrJMECWWT~#RHUi9uJU!f;TysVgSihRCfiJDBsAQ@{ zvqq~Zmc9I4T19V_N6Ib1CsmbLY!?vk;qK1oto~(i{lF8nApqWup{KgKj{r5J?A9Fu zR5JCFBV3-rV2=TUP_17aFUERaoWe0BfEYn_{_5;xsWa1|7BHhc6A555eD=)1+1WYw zAjjZ)81qP2q*=Rp1X$!+9Ve}8iM$9j9D~% z^5jLCTxP!-K&SmKfd8ikpio+`CnFk*O6$!MXPbzui zQ7Lo!MP6D|97|iFvQRkChY)0l#DyN0DQja}_N>z`SrvUrvIb#5P{NHpmf-$3v{+mB zg*7XlX?2%?5NpfRDA}2Bgv6MWj;mm=OlIF(aRuRPx_9GRY`QCwHg})UW|a@LrwW2S zarq#N(h*L`T^vh<(Otb8%gso7-s~jRFpfnV%D>dcqxd;QK+Nc6+KmA+bUsSk2a9uE z9t$GxQx%*)NhFJ(RpdiTGLs^?7${a0i%%S{{9*6pq(1~DwJa3-1YK|^h(hg(&9j6Q zmNUUc2%*ED$Aj`;%9fY|5(L+ydjDru{#y$N331*C$FtVFMf!iI@BjD4kQm}m{H9W> zH#NQ892`7RGD8|Fd(9P%%g^o@-n zt~L9QA8X(CN0)I|FL>_X4}F{+r2pfMuBk)_Ak3+He|l(cV}k@}1s@+Dqx`+9=+I6Z zg(pw$kl^Eh-kIOpa!!EhzCdjE%cioRqPMRzP z(`#!PtlOiS0Kl;jdOJUn)3(OUUR_cXkTL|C@P|LnZUzucPDvR8DC79}Sh`$_^sZD$ zR1}Hy!H|KgmsdL=3cygIfaD||KJ>0O1+wyRdsaZU@cZ{bO-@Ci=dd8*&-tS*3+V0o zmQZ49L7;FolLX~W>iy5Wq8Mf9Fc?hT#BA^YuVw#b=i1-Dk-vUD214SGrxXC8`GIT= zS2$eR!h-o%S6Bbk6p1`}`qRAm%}pnGfNvcmz?_}K!;0e}hwYBGHoPZKo&fL&%FX41 z(sOd~!41H&#C2`U-Z%FDvONe(gTvufulI6}{kZNj;XJajVPEO~%(k@+#G8_#Atj)f zs9(Q+b-d&g77=lqYs5M~=?zfv@u{jhA2kn9_V=%&q2f%q0XBu8fPes`j)7y1al>Ls z_R~DK-6eGfX&>^gM1hVt7DWgGu+*`d77(+)?^(P1i+ABrDFhHV5Ezd#`ycTqE*1q` z0ttxZa#?R_gM6{Ql2B&H2yEcF?mI z+8Z5%gSUb90B_&p zGPm<%w|uj@iNA|6K!y{1)(is#iVXpJVM3PJIXSff5ibb;YluvT0*i|UF{>FFtgmKj zY2B+ClyD)VidVEil(@iaUlq(^#vW^G0@a0|qxF>&9}hY{J+%VXI>&Bq!V6rd_W zsbuBmW|oxby=f6JudkgHNsqbEN|U{tnwmOR`hpk+gQe@Q0*fAuaHkadC0X{6+csO29`@65$n^R0p9PN3FnaeRiS{6xUnm__D^AeZLRw%@%?XG&MC<^F|glDvr(RM7Q&x>Q98!m zt9+MxX;;iLGI#Cm?WcQspRfV^x;|L!pj$0fY98_IS z(bsj9kdV;E5OU%;JSer*hJ&Ub$kk!O)DTyB!~tzKzZfe=#kFv_HSLH|zX5@-9dEh> z5YP4eaDV=s78Hnwj@Z6Rnm(t*Zw_|$xelg)R-l1f2QND;`Gy?C6ciL(|Mant+?6UH zMlg_kd1=1PIF0in3K`1y)> z1H~*eknDsvZ{8Udq9Kuy;@F<76u^~#^!PE+wWnPM=-$)QQw3hE|D-%(PVR)@0c8@ahY^yBycCzqilEECUmI|jy zawaA+Z|@_(7gYCQA;1vff+XNuSI~f zBN7l0SXx?|8@EksLr}1>$9_elALeL&4r;i%*j7_h0|Pb%Wo10=WQlixD`sD!Po}?n z8RTd-`EA#Q13m$43mY)H<{MyL|Fx#pSNs(1a6spsa9Cbu?y08h|+?<68+Uq8;9>7m31L9OrRCK#Me@#hA**HCY7fcitjg7xbpv_>g z$j$_=OaNi4y=mdVw_P50$VCdg?RY!kqOPK$PP*2qV2qgn~t%pTGI=;e!R3q%EwE6qc6W0;7%vuaQ%FVH-lA z$=omt%GY5766EIQUU(5$a0sLv&{NkX1I;Zh;p*tD3l*EE`>LxKSu4GI3zzXuxJ z+&9F;#1^JL7D#2;+1tx2D&hcQ9F(enpDc^V$H%{a=<}ffh9Ux*h{~mu>rO0QUS6K! zHMI&fxP5Q9X&EJ1$R*1c6cohxwPC! + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.md5 new file mode 100644 index 00000000..31d9beb2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.md5 @@ -0,0 +1 @@ +71d4d37230a14e6a3e17c92118e6d144 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTreeNode__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4727c2122bb5fff060cefd2fd89987c0c77e9231 GIT binary patch literal 6138 zcmcgwbyQT}x4$$35{k5RNJt|gAq~=@;?SX#Gy@1CNDd4sDyWpCe(4x$=oCS^yAjEu zn|JvA-h1o4wcg)v!MX!8ch0%{?7cs+BXqS@ZxYcFK@fCPT}??Jg0P6e-%f=1;93!@ z^bNe=TWP2&L08v5>2hd&NabEp0ak%N{JR;Wr$c&$rT)c+ab-Gq%gJTrb)kZ(1bzMjomPK65k zrB%&KO~Fq6bNi}U&Kmn2NhIgr?Y+ou5s_X29nRTqX&fwzD4}*5>+6e$bWj~J6qui% zPm|C&G&=(qTtVQMOR>DltUQOfUw2jk?R*UV? zG{QD&MTbXKJ`2qm1qC-%V;MuWbIZKBkDO-f{nfO!RrK|5t@NZ2XX{50Q}Z+P^OM2~ zsIaiG$g*Q({0=Q7;wN;5^va%*xYQj`1)@9J3XCg#>*Pj|<*?1dz13a= z9nl9527Z0ywLjfoD+fm?<-7k~8Qo-&4qqSXPnPtsYYM{iJl(fvW&I*#jgOW7=Z{@v zbaZw!z4*k`ELiN`g9o2VOH2O@KQqs6ZB>Gy9PZFYt4vfl(f>}COaM`7*!Cose7D?P z>ZGKn*Kl)l+n;bO(o!g|U1p>w>ijC(WM84s zRaJfFm%G&ZKMW0xjd>688W+UM;Zf67ZoxBe_Oz~_u1Vv8*IT4iOlnwYzg^bOj%#FWY;M5S+3Y^1gDFAbTe|<*Aq9n=u`#{O(Ub?}ojc0r z0T*H*?J4cCOgbnOYQKd{jvSgOu_mxb!Fc%i%BverPkpf;Sz20_J54^g{s0tU|98F2 zKW)_JSr=zVgVzV-fcip5Pv0g5608C%_(aMmt>#jT!3VcSY;K;BkdS2k{wh8wKKn+o zCG2Kq8&n814*;uXk}sh%YNf(a!E(c5ZIM)4c5a#uafU z{FShdcQ^!u(37W6z0STQiI5RHUaWaaeUWfu)k>C#ufI4nzD_Y79$x?H!FmMZr;RXt zQrnY@kCaJP6C8Vn_>505LMlA8phS>{gp!I%1r%pio!^nZg98sp6WDZ!1utBgK;|YA z^h$hXrMQ^5II?TTZ(D{=##fYrVsjduXvlL%OjH!Hi68uq1V7kEmy()VW5)bU{tO%% zVspE8k2Ewa?0u)rEizIU7ncDCl<9~J0ELMfcwU?A zR{#fOg+5sIZ6Z%-pkOicdlE_bCgH;))?OrVh1*x0Qi608}C zX1?kq#N2STc{NLnTF>*P)m7_O1cmNB%7xOTB$|BVN>a#mYf4gjuUlkif1h$PB{>;_ zeCz5v&K$*kb}TTqA0LPI_308er!=(P#>Fx-Gqba^BOmQ|Kpn5jT}70Z3jaCq1*>LO zRgGDt>FMb$^v=)EyLx!EWNRd*_uC0twGtxXznOR`iIDaA@u#)EHE)%aLb9a(uCHT3 zTU%Qa?n`QkMG^N`E|!;<<%>qygoN}=at7C25B@$WFE1Z^XYOr%{O& zUWN1YL}tm)-dXsrc4pW?%)!yIz zOq5hqV5X{n_x`S(x}Qw9yxbTo`Ce312~&Ofk`t6gb91xnLTd!S`EBFwv%UTO5S7f5 zBub~%r6rrPx=b?JV}!07!+q}_ zLM4__3x|L-%Qnrw!oY}~i_1V)mpn8yG#*xv!=@U8I9qoPO8C=*RSWpb9S+ZqizBC# zbZ7rz$m4r3{H)D!c`G#$g=UetOTe1(RorFZ{A90lc=%&;OAEJzMAC=H*~-P^zFHIG zM8vEa08ZmoGQWLO4A)mu!nGHrJMECWWT~#RHUi9uJU!f;TysVgSihRCfiJDBsAQ@{ zvqq~Zmc9I4T19V_N6Ib1CsmbLY!?vk;qK1oto~(i{lF8nApqWup{KgKj{r5J?A9Fu zR5JCFBV3-rV2=TUP_17aFUERaoWe0BfEYn_{_5;xsWa1|7BHhc6A555eD=)1+1WYw zAjjZ)81qP2q*=Rp1X$!+9Ve}8iM$9j9D~% z^5jLCTxP!-K&SmKfd8ikpio+`CnFk*O6$!MXPbzui zQ7Lo!MP6D|97|iFvQRkChY)0l#DyN0DQja}_N>z`SrvUrvIb#5P{NHpmf-$3v{+mB zg*7XlX?2%?5NpfRDA}2Bgv6MWj;mm=OlIF(aRuRPx_9GRY`QCwHg})UW|a@LrwW2S zarq#N(h*L`T^vh<(Otb8%gso7-s~jRFpfnV%D>dcqxd;QK+Nc6+KmA+bUsSk2a9uE z9t$GxQx%*)NhFJ(RpdiTGLs^?7${a0i%%S{{9*6pq(1~DwJa3-1YK|^h(hg(&9j6Q zmNUUc2%*ED$Aj`;%9fY|5(L+ydjDru{#y$N331*C$FtVFMf!iI@BjD4kQm}m{H9W> zH#NQ892`7RGD8|Fd(9P%%g^o@-n zt~L9QA8X(CN0)I|FL>_X4}F{+r2pfMuBk)_Ak3+He|l(cV}k@}1s@+Dqx`+9=+I6Z zg(pw$kl^Eh-kIOpa!!EhzCdjE%cioRqPMRzP z(`#!PtlOiS0Kl;jdOJUn)3(OUUR_cXkTL|C@P|LnZUzucPDvR8DC79}Sh`$_^sZD$ zR1}Hy!H|KgmsdL=3cygIfaD||KJ>0O1+wyRdsaZU@cZ{bO-@Ci=dd8*&-tS*3+V0o zmQZ49L7;FolLX~W>iy5Wq8Mf9Fc?hT#BA^YuVw#b=i1-Dk-vUD214SGrxXC8`GIT= zS2$eR!h-o%S6Bbk6p1`}`qRAm%}pnGfNvcmz?_}K!;0e}hwYBGHoPZKo&fL&%FX41 z(sOd~!41H&#C2`U-Z%FDvONe(gTvufulI6}{kZNj;XJajVPEO~%(k@+#G8_#Atj)f zs9(Q+b-d&g77=lqYs5M~=?zfv@u{jhA2kn9_V=%&q2f%q0XBu8fPes`j)7y1al>Ls z_R~DK-6eGfX&>^gM1hVt7DWgGu+*`d77(+)?^(P1i+ABrDFhHV5Ezd#`ycTqE*1q` z0ttxZa#?R_gM6{Ql2B&H2yEcF?mI z+8Z5%gSUb90B_&p zGPm<%w|uj@iNA|6K!y{1)(is#iVXpJVM3PJIXSff5ibb;YluvT0*i|UF{>FFtgmKj zY2B+ClyD)VidVEil(@iaUlq(^#vW^G0@a0|qxF>&9}hY{J+%VXI>&Bq!V6rd_W zsbuBmW|oxby=f6JudkgHNsqbEN|U{tnwmOR`hpk+gQe@Q0*fAuaHkadC0X{6+csO29`@65$n^R0p9PN3FnaeRiS{6xUnm__D^AeZLRw%@%?XG&MC<^F|glDvr(RM7Q&x>Q98!m zt9+MxX;;iLGI#Cm?WcQspRfV^x;|L!pj$0fY98_IS z(bsj9kdV;E5OU%;JSer*hJ&Ub$kk!O)DTyB!~tzKzZfe=#kFv_HSLH|zX5@-9dEh> z5YP4eaDV=s78Hnwj@Z6Rnm(t*Zw_|$xelg)R-l1f2QND;`Gy?C6ciL(|Mant+?6UH zMlg_kd1=1PIF0in3K`1y)> z1H~*eknDsvZ{8Udq9Kuy;@F<76u^~#^!PE+wWnPM=-$)QQw3hE|D-%(PVR)@0c8@ahY^yBycCzqilEECUmI|jy zawaA+Z|@_(7gYCQA;1vff+XNuSI~f zBN7l0SXx?|8@EksLr}1>$9_elALeL&4r;i%*j7_h0|Pb%Wo10=WQlixD`sD!Po}?n z8RTd-`EA#Q13m$43mY)H<{MyL|Fx#pSNs(1a6spsa9Cbu?y08h|+?<68+Uq8;9>7m31L9OrRCK#Me@#hA**HCY7fcitjg7xbpv_>g z$j$_=OaNi4y=mdVw_P50$VCdg?RY!kqOPK$PP*2qV2qgn~t%pTGI=;e!R3q%EwE6qc6W0;7%vuaQ%FVH-lA z$=omt%GY5766EIQUU(5$a0sLv&{NkX1I;Zh;p*tD3l*EE`>LxKSu4GI3zzXuxJ z+&9F;#1^JL7D#2;+1tx2D&hcQ9F(enpDc^V$H%{a=<}ffh9Ux*h{~mu>rO0QUS6K! zHMI&fxP5Q9X&EJ1$R*1c6cohxwPC! + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapColorOcTree::StaticMemberInitializer Member List
+
+ +
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html new file mode 100644 index 00000000..1c45f577 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html @@ -0,0 +1,161 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapColorOcTree::StaticMemberInitializer Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapColorOcTree::StaticMemberInitializer Class Reference
+
+
+ +

#include <OctoMap.h>

+ + + + +

+Public Member Functions

void ensureLinking ()
 
+

Detailed Description

+

Static member object which ensures that this OcTree's prototype ends up in the classIDMapping only once. You need this as a static member in any derived octree class in order to read .ot files through the AbstractOcTree factory. You should also call ensureLinking() once from the constructor.

+ +

Definition at line 159 of file OctoMap.h.

+

Member Function Documentation

+ +

◆ ensureLinking()

+ +
+
+ + + + + +
+ + + + + + + +
void rtabmap::RtabmapColorOcTree::StaticMemberInitializer::ensureLinking ()
+
+inline
+
+

Dummy function to ensure that MSVC does not drop the StaticMemberInitializer, causing this tree failing to register. Needs to be called from the constructor of this octree.

+ +

Definition at line 168 of file OctoMap.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/global_map/OctoMap.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.js new file mode 100644 index 00000000..e9c8737f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer = +[ + [ "ensureLinking", "classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html#aff6bc204ec1c5dfaa423d8ec3e448f0f", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.map new file mode 100644 index 00000000..78bdb253 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.md5 new file mode 100644 index 00000000..641e02dd --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.md5 @@ -0,0 +1 @@ +6e82c06adfafcad8224f03f82ec56f76 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4a83dd1bd81b51a58218515fc118ac659684d0f9 GIT binary patch literal 18242 zcmZ{M1yojB^ydYUR4JuflvD&H1PK8_TDn645d;CHTS`#66p=3J4r!H;P^6I#k?!u< z*Eh4)f7YydZ$0r5-*@l1=j{EfP0&LnnTz;T_y~erlzkwjiXfO9@b{Ov*zhOugaI{t zziAA7U(QRJX$gE%N#b1GoNyQAvhd5qI1CDtVD6Ux&mYAyQJ-oh(z?s8rkYbTQM71( zi)3c&9~|5>mTdik{>-<&7%igiQi;Gds()W*N?pSUwwV`1zxG5shPnP@Vd2`j3%=X~ zzak?e!y_WPe?7Vd@0LfF9&pL~zxUM?_}Ikz?+SJUr~Q0?WpK*Cp~;Fv$Gh zUzds1W_m5?qJRB*7)&cnCi(i3_58!tk(H53Vmi7|UmU{Jsw#?tf`a$lCfGtwtE0bC z_^RA!<5N?a?(U7ge9zdxd+F4qkyD!OIn(w%z0sHmth-liT8 zAxdpOYX7%}iFe(0m+^i*y{%4O!l~x$EEqyBmWYXoIiFitpQAe0O7E4{=G(d~1d;AvAJ@$Hv?737qavrdlo zdYghsE&4vGlzE=G*70xs{c#oUU~_9L4PNx2f`USf_4Bdn7&1<6@zc}O?Zc%)HEHPp z)q41D{0kTI?0%1o#3#C~-sxGecO5Y(GRF8lJgn;ISn;L!mga6{!%4{W^mOzrwZQZ6 zurR{ezkdhVPluP!y2Q>D-jZ`&_ww@kAnGAxQ1AZxsZ~6`b*h%3%l*Rfe7(x=U0q=} z4XV`(O(dmmKOYsu$H(t^dz6*rnR@>%S@-vds}_5!W9^RDl@k@xWWqATL=OYsym^ze z{5EBir8~*%RF*2_iM-?)brY;%v70TI>~Sz9?k6!l02? z#(15ZTIKVx@307-`%^f&b*_AT&qv=sHZh6e4+;uO?|%Apu)tuujU_3(yqu3#&{o_g zJ~lSC>}faC;lW&z#rAynpXq4{e}8`|sco;bJ+HoOHI@v|=Go}z%b4Qb-Q5~3*98RL zG0UcgPzzAe5SW-*k5u%Jcv@PrV3X2!#?%~14z#wj6l6NfIEPEG@-Y#zLGm@mlM5RdP?i9(_(GE3^D@^6OiaI(v z_DcgdRCD_^3XaD=zkD4ScvnQkVr96ze4I|jV!Fck3ucD<(e4VCx2l?2i~~IRyEk;p zKDAVR`}+0iVqbQ9Nql^~;R|hT?FWvIj&eRO2b*Sf@7Zs*HZ>7>vuhP}ls_8`jlH4w z#FjHSM9n(VS#o3W$=QU*o`KmxdkhDbHxCa_a0|cVvbO6|er5E|&6_v3VQB|PhSb#! zNW|QBt;`N~S4K=9KTiEfL_%z4W)_j1&3282h5Ck9q#a2Y><6*ZRq>>owk$Xr}p9>~l4CL|;nPSm;XsCo+U@%h)(2rDItUPOv2D__^u)u|fV zeRelOe{3UdYSOzZfel zBt*3mhE~D6lrbj~8xs@X$Vieuv$J2?+wqa`xVY@-D_5@E%j#tm7N%B==g;q{-wX+A zsnAjrmJ|^DJ3Bk|+dQc`T{en{iVB~AfZ%wugGC0w29bWZPGyt>=rl&DwWMtg8yJgy|XFJ}d$-ld4Yj5udg;(FepxAawV%}Z|Y0Os3 zvi>4`Tkt;>6w|_KD`>p{777SL0d#7jIMd| zi!TO3&2ROv;HH-0^S)2S<1TZwoCejGsY0Z)qdtBNUg*s-feO05y?tAdtfi%`yPFs` zyjleb*#2-`Rf+J1pJJMd%{2ii!&H37qoi=xC|t=4Op{2O(O6D%)2iq@>yD z=~9Kui~YHmsi||FN>fr+XhmG3dwP1JXP1|)hHIP(4HJ5^lzTtFoZB8q5OR2PiAGQy ztzsvK4t1xaqoecCe^W+B_20aGn-(u%vslh&Z}RN^!NCC>Eg2j_y7ZAs8!a{gezJge zIKK1HilQST?wvn>9;$tGF*jL5@k!y`OreBO=o({nZk3wFZ6yk!p`mCOP_OCQ;pUgh z5HLy<^{8&C;*gV-O@Y-^RZ{vX5+i1@-=YbRe3{s>Q1&>j;4Yr0I-mWqu;VfVV25gG zPQJ~JtAzhx%urg|mx-ZvIu8ITEmPlKb9|qO*(3 z)KX!?^Y_To?})21w_LZM-nJRn|2+YR^QxHG*{hafuQSgJlss6Pnwn30((#~YZ2SVBeeM8NIO-$Nxc_^iFyrYAF-s{+|Zm$)EL{Ajz41$tG-1q}=VcCa@ z9-TWqS@XKe!&6evZ)9G=X#&vTJ&zfFESJ&qqUSEl0yg7P4<6tGRtOe5JKn;$e>f?1 z|9*aRfIfnOX zbz7@5FS4F#3ArcL-c@BcLv;CaI;WOE;JHjW@ctJgU0e6ZX1@~7-~2y?DXbrNB=Gy13#CozhAz5!GQmsj#S(L zcxZX0CN7TB&}H@tF5@~>00gr~wgAv**nZZ)@Txto50kH1_lN|1v&K2kq|LpSGwCIO!&Bk=NSIW!7H`(j5hZ6D9RldHw>r9=L5 zf#(v&bsL)KVL0j-?RYu;`U0gysd?9Rrqt=_$3o8Q3_5yxy?{@0`fjkXrTF<_y?F5= zb!Tail(-w9HwwX^Q?rSQC0(Ms`vBfaV;Go5Y`{fo>9)4E=!67Co7xTRo#o$A_CnAv zGBPr{0p!Ywxb3EAD#oimeagBrR`bqOr$B8P_y_FSqlt9Q+=b=erE;{&%F4Pmj@IQX zxg+$cJ#!T!!^4r%X(>?V4kvvHzqhx)c|KZ|674kq>lL7IRsfQjN(pj+KQEJzNC0e2 zh5Jxl8pyYRhO*ORuBu9ckqqU8iiQwc5tXRBph2B$jH;?Cip2v6=?kL8wmNw)qfPA) z1;W)1&xRYk#A2eOS?$#KQu6>)@bK|zRESyjv2O0}W&(h2@9a!pU$;Hn88q4%4yG0e z_3`nsTn_ubzhRQ+{ym)WHavaZ22YXl=VKpUynGq-X}fBFJ}t~rgzV&SC(UlA1qG)G zVqS^0wY9j2nW*R)>{VG&i3T%2TG zB&WH*hI69Cl6gOZ=JNgOWLEY|ZafJv)8Fm_AXMF1PDs==@xlOi8@%-%#Ak3Cz?%*@;# zv1wT7=ZC_y>s7* zmh0ZYNQRrCs&tzAdLC1poXb#s;AEqf9?QGHphjBiP}bdgvF7vV?w$TmId;vL_p^U&Xe2gulqdk?O!X%qCyDSRv9aO=0-%hr ziijAnO_V=-7uhs;J#_f{_wNiqy)eZA;1)Uvr{>5WM_c!~>Rwj7G=5LdCzVxz^$n}w z8+;#67W_9oM-f@~y901G)<{vrCD(uS(K$isH39ie20p$kaE{d4E3JNGLiK=ZA&&bB z&gTpOa|D4}W;I$xY*T-59Uk8;>*3oU1??~q+l}e_i1a8I`c z1Y|m5Z^UfAInsP5$lkkPKlJ$}i=pR%nf>w*aiz^fOO8hFEjXvc7q#O^B5hR$b2Mx( zdr)1zKc~*F|IYgXQ!s`x27-0l=hLt{X30_?CAy-k@^xK7@0jsug&mvTa@7X{`^7|h zdV4pf-*QbSogK3j7&Tl1Ot+Agv^eHBzqS_k=@To>oflZ=urG+8ou1h3tr`dl3W`TE zkJh@Vtp!Lk`7|_$A;}uKn$9OXgLcb9+^~}y0qc`qR}cr9R}7piP4?kuvKzX_P-3fW zr+mg0KS!pEDU|=FpY#gS`3wi347TrpiB6J-!2c>o3S_w|)5S5Ez1Wp@<{88#tZFuLe0ehwPNVkWK1)}e)OYU}E_?dKnM zCW$pDnRG)h0s4(2@O<=PJI7C>!e=z%3nJt%|90L3X1U(ZQJ4(RSkUuW5XvVp@D6I~ zc-=4^C1N6nnj5=I)vl!LR0s=_+(Z7A((_N4Hz%p?`4xsUIQRl))DB72zQbKT;rH{; z8N&i=C-k|IC`(n@FOcwC4`Ts8M#McmMNM@AfRrmJD%#EeVst-T$dZenpMP3=v|1zR zb$S=zUrO&nH2?1IE(M?EWe{+Dpj=Kv+Z1%&W^D?DMl&%n zg#({}j#x0TF)}n{ygK^X`Rrs*MO_^WDJm_M1PU5?i+UvK1$03P1%(Sx@iySNqo;*J z*wHGXrF8UUm(8yc)Q6z&-yfiqXYOahx3L>jBY2$pf=T@mj@AW#;>n0}MAWUqp zjF1=BAF>1EMzOimxJ%Z6ohAzp4+)^-{i)aVwyUFeIDy=^3vid4nc)Xp#lD%!NfSog zF(qyy2}rOQODuwM0dtBRb2mr*K{PI#zyJ3e@w`dIa6mHecSj_%4pWx-@+%)DeDzIz z>au?6gTRe9Pq0puNPSYD&iB!7ca}}GU2`TcKRj}@v{x4XhLU%T#g&v{w0N%we@OOOcJGqqtXgpX7bM;KOjU4iYeIyCMMeP zqOUK}zIp$i0tI|^ZhO+OC80*G_sDaxX}L8VtqRwk9xj1ugX2d;!DITMoP}U^QJ0?e zWZ)XmZ24HuF969N>g!+7($aF@{cR42_l@crbfV^(wfeV=k^z%H6ND+mJnw4eX{*c? z^Ew{)?d(If{R)+J0|{ab*O`h7bx%Y9#R zD?5p(-Zg^SjsAzk+@8FA#bvMZ#i5i6E3j;+K>&UsRr(bn*a6k!bKBE@G# zgcM=AP3Cn9D#!W40(p{0fEZ%JgOq@?`*<41l;y&Q>{aijMSgkLN$8C@H`YVZ>p6_Yo&+`+gZy zM}k33DP%4E%~`c!>nm=@wf{^5Iz}_CPMdcpeZMbXXPx*Tw{*5qE}ed zk&mv%cybt@Ym_FLe}F}eX?34^FZKb^PBm9~xoH~-Y8yEJjWef8KYQIaBSc2;zK#KX zacX5{>{rTNp8wt=k-<#hS7yvfpYDSP50J$v;;46AMgjTxH}dlGR-M!c%Q>_PCZQ1_ zh?<((?PmiQ0MffU&{Y!OG4q@t-;~&R_@la&ox*8R$h%`*W@UEeoz-Wcn!V z^wXHu+GZ3DTb0MtH^yG^E> zf{0SLsY6;VI33rK(9bKVRQ-AUbu|x@_T)0niXG@;GutIb>hoWq87< zz6K-|uDX|MWWiqO7~F*RO(1FvvLqnMUqr&0gZ@3tU=hmp!rK51D9{e~=n*5R|KYK* z0nmU`ffRs*+S;G1WjFVe7MJlC=<%=ydBZDL$jF#PL}&rg^wzZNjVlAagCD}Crltnc zdXCk@#SC5vw5?>#Gp-fx0rO^S&A~Yk0wWR<^6v^XZ1Nz^uC7cVd;cCUG3)r1tHmWK zEIb2xM%WMS<4}E!vL@q#ziSO8t74ri%uSFj*$PV z<9tA9hNwmPa7+oO4fQSK#)^Q@S=r4hI%ThNhoylOuuV_^^nvdgwrpg0OpO0bYuLG zfTCc-r}aO-IFEsW@jy=QD_q^fhY!8s2d7plC!_(DV>CWZ0)8n8u*Gg;y4mvR?u$RT zfai+s7kVt;aiDL-EGyyY$d53Hik=ozyafu0T4YzHgMZ0SVu19ZaUgQ%4kaKHSRn=` zL>&0=Fo?=4&Xl=E2SZf+RumOB6QO`(*zxWnXy=E%Kq7j)E~#JdPI>9lr7F)8A*QQW zBch_xn5W@M@a%`&n>{@~IeBDl9m4l)fB{zZ$&)9*>m(jNB&v2?!AIans=sU=p|;0z zF|*$~6O*-MtIC8Q5uHS!UqI-L?A9$B<*-G(QMg|sGO|qOV4wuKJpQJzI_+zqZ|{Sq zkkW6-ZTg+a>;#kmVlpyp@D4tTdC_rb=81zL)D7hf5r;z+%c+A&N=hmvBVz)~_5Q94 z4`6Hpomf~PRT@!u3cxWy%%S@26jW;&V#^uzyxd*ZxqRiy6o}GAB_*mPBXI9b+}s-x z^lw3rxP1BY{I%s6I9pQE($jI~iC@4LL=X^DB}`430q>_PaOFHZdDA)oLYxXbEo+}q z0Cu-6`*6u`>WhPFT@1X*esz=*sDd}MEV_K4;|D7pWe?F4KU(O?K=BAX;q#1Gq4Z** zfCll`8qP$)CoFKtXdEBFAs@(Gzj-@kwV^Zxz&REW7h zk=9HqEca0UQaXF;N?|kV@wy*@OGFvAJ+cs7hjz25;J*pKi;`>M`Kt+ z=_lM*bXEiMtEPm_&l@d%G?t85rUzbYr8!}uA=!c~r+X7#GU)E+GPGK^U<(`8j_yio zu$z$%+1gthuOpC++*bPAUa2+aJW%1;Own zE-o%Y30x_erLLkJ>8HIkGgDeQ?RZU=CoCvPM?&g3@{_ci zM@+0CUVMSZTsG1XbN*5?3vmXlupjJi!M2jS^0<%K{Pusgwwg;G>;~^-cRw9K_7x+U zyA}^GOXOXV__#FDaQ0GSzK(Wl3pS_@20|PJ6e57An*qUMXoquQt!QGNS1+BWBPrE@ z&*+NJc-NmOiKP26A`9p68++4+q=G`HhHPa09iZf|p|Q^)-kQ0z1jd);j4qey;1&~m zSA2bM`n}|%#_55@?GJqLpo_DIlET8e5=&Nsi6yiI_gBP>donTB;W+^4~JaYoQXnSdp zP<$ae44_c5)7tpnWl4{1op@?J4k{i~T;N`Qpr)|)YSFzeemY#n2E3}sr1cWCos9Or z_dY(DWtRQ;Qhq?((_r}!xrU5zW;_5oc_eBmeeR7Da#-{OX<0MqDs*r-viCqPjmA3s z>Q4ZcL8)rir%#`h)bvr%!iWWkXQ$u~IT_hkfH`n2eAD zBI1$hYZ&@hQ+ zO#EzYZI>VZ74*VmkdK|!KwQbl$=9x@&PFny;7$rKy%_~+G=U#~dnk+Ot2}OTLA9vK z`-ykRq5L+TOR=)hBgMx)&R!@E|WElGt8Et1; z5`n}}=q6$-xit;16Ea0SYwGbOZ zid)8F$oAUAnJF~Yo5Tq>8-@uGII~{rLrtro7H}}(Vxgqs|H930vq$>y<8waF-ZEfjcBi!8FCqcN^uV2@ghCowC zuVwk5A5o~;%fEAYjM$p{6;oMNRf1_YirGW3yhm0+PwSaw>pHT00ob&{P8tmi3bKo4 zW|PnA?blwNnR!|4UQ@zZ7|m?qq_3~9ZD=^Iz}VE@?y)vf*;TaAN3*P4X^7_RT_wE_kzwwVw`VIw>;b-F0+&q>!6 zKQy+r$ret$3EL}$RMs#H0=~tiI3S+87RxOI5VFyX8URkMCkM~LOWHB^f zGhcTKm3enp$KHZJ2T_Hg-@hMCef0;%7Ncs@`JNj!_QBd#(bmQV&j&(7k~VtQ!)4uW zOb;DS4vvn{A|~j#Ori8q@D(VWlVG=KwKQuVoS zoT;5({gSxsG|mNz@brGmE=a1>;U&Kd3ToSeppvUVH`P+1yPLzw@~aPGdI?HSpJR_~ zXrqzDzCrC)cNjMhk2F|}T62(?y52oYvVN=p0Y3=f(3LK~|5-Fo^f z*|Ni*XnvwW40Ko{YZqf<}!5XSx0JV-B!C>TO;Sy>vUApy0z!+tItUU+61!Fh$j*~ zzATqimde0X$9y59?V+asX1lJA-Xw2Udk7PS#wkydVZ;tDPzZ`XN;V~yFhi2E=#d(YclP! zU-cw0%lQb>6);?l7RK+be#NAjkPx9b5O6#7FpS%fL zTkEOXin-p1sLCV#3)?D7)V^nL;sYs7!Y(C}c0m{tTJ##HccDL#eET3CV~Iae`(95Z zb2*N&p1yuA%rx+$)%R9ZgWmh1Pb-rPw53a7|EQWXIE3t>*fy>x}QKD z5+dogL>ewo++q+F5jo-XjspBD&kwkSeI%&>TFZ*YnB%j^*jPvGjIhGx*`+0FHOCS% z4%x`~j104i;!Vrl0~{tQZ75MI)DDZ)bwWA2r6+HX@>FIU2s9gV;zc*or;D8hQLW5v z9v<5shBNrGS;vfDs2{q1dy=P_Yw)|l>x@?-aH8LGM<-v?tw<$J8t`+!;+EhIKf&yN z%bB33(XO}!QrK>2Vt$dEcyXB7TH z1Y<-7H{xIGGHPyVkp@z8C#Qe$xCF}~T{>-n$*<_f&6}dxnz`|x)N}Y}M;KC#6O`WN zsAjJcMZD$gc*lO-6a3N+z+QKBAQQ6pHMxYPYQBB?_OQ85JUyb2Q=p81Ty>(J)_p7! znO-0fc-^x6@EFvqTm`L-jg31*&VmYYHgh(WP0&7BxHr5qXYtfhi%^8NL{*mR__f7 ze+#Dm9l%IVRN{ru+ICAgD|xuN@64>MB5=vN2hJAQ68f;xykmS+K z&qu55uu|&Y@NjCVP``C>u<`+5Dn84;c}ty>_N2P;iTe&S-zePN@n$qY_UsRUC#57s z4-Y}Z^DdJ~SZ#QCIKtTE6!09|G`PP3HD7sow?J48+_*Bh1vml}P`oQs#1ruk>>2L; zxRy+bXL;Q;8~#)hCt%v>2{xf)p%zkV(bm{WYy#3+Nh)#oS?zU`yn5NlXev6o(_ak% zCw6cI^iFsuD30FdIfy+`!!3K5D{p0{Q<5Lf;#Qp} z5s>|L16MA_lnp~j(E za-AYPOm4{IQ;kG&{>GPm&K^;89#3yx-A#gIEXQM%1@UuhI#a#yn_l(zH$SX<;Rr^Y zPm^_A(>;Xm`UdmU&|lf=k;$DknfK$)1V?L>w0t6*D}SXJqR4s2j7u7_++bl9d@r(S^uk`UIsIHs(8OTBfdU1N0)63D;h?xSgoHHmKz?Q`^~(7j2;< z`4?(;vvTj56DQqbQlk#?yVw?aBio)_a;C0eP+e^F>Zv3~Emk9$UkiK8rCBvK2HfA9xwz?(eW-I#1 z9M|yNl0*iG9~7ykabj>?&6WR)?3ZQkVlm@SJ|l@fPx2cnk$o5|_fXTWSoVp@NT=n* zvhH(NpSeqj@M2jS_!~sdd6D}7SwSS?x2GWVZ*|}VbT&CPg$@(!4rM!E(SJ|&o5(nX zq`W+@Cjl>HPsl*6reB0~JRn&BD6L$f&%5V^(dj*P1e0f$mRtlvtftxGNCuu@__cF7 z3=xVY(PIi(KY1?iZDVy!Ajg_n31-2?t&NiLO|Jt29-}&{ko{B1*PHLq(6TKWO7(`c z7SPmNkj%GV8P>?&5)8Qy%4q%JA_t_h=z+-jM@5lBdL+<1(dF-}7CTUn{a(MG0i@1) z^JW0VHlK99e+8BwwUw5-y5C%)TS3c<7&(7%j|ZKqf+@>O+*0$~%f72#`<^3}RT7P* zgHd$--W+Tl5=+aLGYp# zkoV-@zX1TWDL&?;Y372gn#swfTZT(UM&`WrLjVJj2y75?-+iyMlxvaKQStnI%um&u zDtc{^R@bm}pwP&MU%}Wg3wmD8ba#4!c~UZ&f&n8Ai#bK%0b@|pWAxDb_+c~is7$d} z={}5=Vj4;Pq~a*vqjo=FnlNPV&3Pg>!kV8@XGQN`mURas0953E*^1WIs{#V#=087v z!J&8ehWsEEOpIuMesK-W3DewlCW>T6qj_Mm-Ur6DQ{e!<1*d)$5t{OaM>-Bsc2t5| znEO1J_zhx?uORqo}CBVIKLA}B}uM2GEU`Px?m+RmC{OB7t zs+lhh78W{EBH;C8DR@xceo6$w8Olb2>BZ>4&mISkf?fgO;Nq8aN)IB_%iMPQwIZU_ zT#G{kiNN{?=@hb`AV)ricrG8Ea0}{V7MKB)NFivH(<%9k5JG6MSL88k1V_bL!UicrC-kG|VGKZd0DK8#N66sR^F{EdIlYktWGidnyw(HBT=gFtzUkMBOb zAR1(Mn(!b;Q{P8x4Pj`;y`=>kwucZ5)c7YSGXP~xwwb6eU*x@c^AaRb3yQmd%!BN& z9aIP+2D&|zveXK`o~_t;eFGbc{-79`lZ=&>RSZ_W{(&bt3;-h{Xj&n;ccBPEJt!Zg z_t;h`pE1kxoHglyq>zO3G&KYL!sPcStNJE1IBCy5~ zJyj=%@ZoI;|YT!fT7e!~^k@*uNpZ}%!k`TL)TfturD>bD@c zV2Z!HX^>;*wy?0kEE_q#zdT(27V^(9NJ329&D(WX65Ofs0&t_)!)DMpZVOt_bStbV zAxVOMBZ$HCF%zF(%GkJ!R@u28>3?p31bI|Y5FX4FaiEhU-~0NaBcq~1Vh5WcKgP<; zY%1^I^)5b1j_2ZDFm=N)uTtsoRYSuSVxy|ztBLKNrkEmSTi##AHM$PjwflL$SeKiR zihUEA7Q3()NNBV|S;+`U;9Wo6hMT5aQ)~Wiu-@ZO9#UO?$?&ObfJAIwyEPeUuMm5= zm&+WFLszQ+sxd*)&HJb%Wf#Rv-$Z7X>z&!#rVV$|v5^{b!sZxf#Ma44Kz9xpj&`}_ zm7j?sZ)4n+` zsVX^_Su~F`4@F2MYmL4vv;&$Px4ZJD2mVw|6UX zQR{96>JJFAdtI7c`tjq39jJ#y5t}!pW_JVBm)F3hf!^2xVdm{cTt?f!os{4NQ*%1m z+ut5eVtjUYI>Geb7ajFm2H(G8lb9ly`x9zXNT7`?^9M#^r`6n2d`(B?GV9T*Mu{vn zo#^kXr=2q*T>a`!8eM*;?60)&ObHr&5CRPCoDfse zAR0ziweLMwBLC2Q?@^H~4xrfz#3FLBal?-`;49pTc?qyRPxS6>*;?IvdbwF@tgX$> z_2ts8$35w?5Gew&u0On;IsMTYvTQJZbrGsA z#qFmL%eh70m~^AFI669yz-P35`7*bH5Ht`-0Wg3x6K5EO4*QIu4xlD5v_}>eK@fTS zCn&jr~#X~h^(btQ80 zb5`al)QUt>=6WJCJVAsYnc`Y?Pl0-5EoCDCw#3crM8x5oShILK?W8`N4`ai9o6buf zQNO62>q0#F)nB6tk5P)_57mqizMcV*u>A$Z;J}YZla2eJhk;rf7*^=YH301}MryP1 z)j0_5&5Jawe-b?$g?RyhQJ?zqYxQ*wNY$Vce#&#BX-Nfcj!vb3C+he{J0BGl#qDuuA56uE4}}Rr zWhf|vSI12#*#5Bq&V?!+j;gT0Ia%EoSMKe0i1U=&19-( zuS3r^+5FR{4KtbmM14UJR`_rmk39xIl9`gTFn?*|b9m~DM|FgLI)X-s1v8d8SXEe1$OzNJ&;Xu6$6{tfz&nGE^mO$kmEND#3D@g@pwN8ooG; zVnho8lzb(Zq59XB`rn8Jco@xKuGW;zi;9d)*35-3KQ3#44hmtHZ_Ul;A#vnz zQ{ejDyEIw528VSc*&AZSx3C)-Fh1e2zKY1*z?`RtQ(pKpfd?&d_W)!ar{&$X^H|7u zMnkZ3Gv(l3fg$%SyFFFd2#=nx(5*7luZ zJ{6@E^Q=vgbbh+7eYX}1Yl>nTX~MuI*b6QtExE0aOLg9u=)pSgPjvUoe3v}3r`nzT zTvIaxSjl?+)}jHJnZ*!m2)HzpLPE9XAoAzE%pV|h-RJLUDw@gumAQ@HT^Nzl^qIuR zy8{N+Ez6#*F=FH%XMz)-Z`~eWf)E}$(_TF6#uT*=;U$##J^fvB4W@6oAz!*Yve$s~ z@_)}t74-7wK6?pCWGozJ0#eE+=2NbU3s7`eEqU*(O?FM&Snn~`x1jdKI$$M}Cnh^UcU zFaA8hWrP41METHIPY-!B^;0#MVQD3$OQ`h%LjW+q$#nbnWr)SAw95ojpyOriHs^nI zbbNzW0?}?=GkWNI=y(+%;zq#85JYVPZzkpin)Qt1#Q{~$7g`~d8oT}VM-a%zM6U}n zNSVq>5RBicaNGPNiyFc(Ot!wh-gtU)wA43;R-UCL0(p6P7>~@B8wJfD9ZST%K!L`Y zs;a7tfeXpGG;`;!R8bvT<){^VK;XoWNW&8n?;18o;NJ#wYfjL0Fpr0WXO{}cP`lQd z8}*jKK(5<_*w&ZcUQ&q3pC_Jz$Ax%9c>1E0ADon9m=E7y^E!JA{xy}A+HV-01^vz& zmT(FZSKtizNvEl_Uz7a`0HqkFGLc4s33p%5lS80=_3ahtpc=f}z1)5#c$6@d`2}pP zoybiH98H71DXFVV<+`^T0%3_6Se^$83Q{P6IoZ)VUjIf2Q}_VS&?bha1kusV^{HtAqSS{a?Q;R$SKyv%h&>MRa`QOzgR`!7dEQW7wL6Mx6NDF>*F@&LexA{Up9QzJIU4k?C|-vF z$M86pLI}O(6cqe)`*zFd&N&1*9*{`+m1rwy)xbOGkY8HbJ5XTojDU=@=tsPO-fgO# zM3@TcK0G|^X+Z}VU`k5BI_dDx^(9SfXQ#BZv_j-XLc*+I@(bAcH8mqGEiDk9>@;lf zw1!FEqF1jlYV2kLVjwqZZB*xK7RgB$=C%iuJe_NMBfoyZNOb?ez%V54>*fF^@g{Yd z(~Eg-ufk03Z;&TymxhORg*}g*zt#ftHII0}yu_`XAjHQ}2*lry8>EXlg9ewa7UsC6 z>e2zucn8I6E;f-PUHxak4=SGgprWRwW;~G`%9uh z@6zAA!8fRNR{8er8x=jhmY!a`uCA^=LYBnuQ)d+=ZQg0LHy49>{H8d_Et)8=_7AHqnns9-;<7nd4@C?R$T7CmBNk~ZO&(^^c5qKcw@Vgvti;5=NUT*5_ z19qf1{PF{vzImHJ0--NqQpu9 zmG{E(H=Ol>lvKOz6^z$=YiKhR{tedE)0^Epa)2fR1(JjD`HLiVi0$S;29bl}LQYPO9LTP~b4Lhg?PlAr^!N3B zN=dl~E(?q?CJ&E{fMSzM|3=^{&86I$8a*f + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.md5 new file mode 100644 index 00000000..72d92c9c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.md5 @@ -0,0 +1 @@ +2597b27f903bfd1b29c3041cd5eea5cd \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapColorOcTree__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7be2faa1815d3afca7cee7479b11a1463b937727 GIT binary patch literal 8280 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapEvent, including all inherited members.

+ + + + + + + + +
getClassName() constrtabmap::RtabmapEventinlinevirtual
getCode() constUEventinline
getStats() const (defined in rtabmap::RtabmapEvent)rtabmap::RtabmapEventinline
RtabmapEvent(const Statistics &stats) (defined in rtabmap::RtabmapEvent)rtabmap::RtabmapEventinline
UEvent(int code=0)UEventinlineprotected
~RtabmapEvent() (defined in rtabmap::RtabmapEvent)rtabmap::RtabmapEventinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.html new file mode 100644 index 00000000..f5e8da7d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.html @@ -0,0 +1,276 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapEvent Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

 RtabmapEvent (const Statistics &stats)
 
const Statistics & getStats () const
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+
+

Definition at line 42 of file RtabmapEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ RtabmapEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::RtabmapEvent::RtabmapEvent (const Statistics & stats)
+
+inline
+
+ +

Definition at line 45 of file RtabmapEvent.h.

+ +
+
+ +

◆ ~RtabmapEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapEvent::~RtabmapEvent ()
+
+inlinevirtual
+
+ +

Definition at line 49 of file RtabmapEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getStats()

+ +
+
+ + + + + +
+ + + + + + + +
const Statistics & rtabmap::RtabmapEvent::getStats () const
+
+inline
+
+ +

Definition at line 50 of file RtabmapEvent.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::RtabmapEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 51 of file RtabmapEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.js new file mode 100644 index 00000000..c46444f5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1RtabmapEvent = +[ + [ "getClassName", "classrtabmap_1_1RtabmapEvent.html#ae548b73bb3504a10a4e40592648f42b8", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap-members.html new file mode 100644 index 00000000..34c4ad7a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap-members.html @@ -0,0 +1,126 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapEvent3DMap Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapEvent3DMap, including all inherited members.

+ + + + + + + + + + + +
getClassName() constrtabmap::RtabmapEvent3DMapinlinevirtual
getCode() constUEventinline
getConstraints() const (defined in rtabmap::RtabmapEvent3DMap)rtabmap::RtabmapEvent3DMapinline
getPoses() const (defined in rtabmap::RtabmapEvent3DMap)rtabmap::RtabmapEvent3DMapinline
getSignatures() const (defined in rtabmap::RtabmapEvent3DMap)rtabmap::RtabmapEvent3DMapinline
RtabmapEvent3DMap(int codeError=0) (defined in rtabmap::RtabmapEvent3DMap)rtabmap::RtabmapEvent3DMapinline
RtabmapEvent3DMap(const std::map< int, Signature > &signatures, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints) (defined in rtabmap::RtabmapEvent3DMap)rtabmap::RtabmapEvent3DMapinline
UEvent(int code=0)UEventinlineprotected
~RtabmapEvent3DMap() (defined in rtabmap::RtabmapEvent3DMap)rtabmap::RtabmapEvent3DMapinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.html new file mode 100644 index 00000000..1eb169d2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.html @@ -0,0 +1,380 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapEvent3DMap Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapEvent3DMap Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapEvent3DMap:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapEvent3DMap:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 RtabmapEvent3DMap (int codeError=0)
 
 RtabmapEvent3DMap (const std::map< int, Signature > &signatures, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints)
 
const std::map< int, Signature > & getSignatures () const
 
const std::map< int, Transform > & getPoses () const
 
const std::multimap< int, Link > & getConstraints () const
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+
+

Definition at line 183 of file RtabmapEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ RtabmapEvent3DMap() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::RtabmapEvent3DMap::RtabmapEvent3DMap (int codeError = 0)
+
+inline
+
+ +

Definition at line 186 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapEvent3DMap() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapEvent3DMap::RtabmapEvent3DMap (const std::map< int, Signature > & signatures,
const std::map< int, Transform > & poses,
const std::multimap< int, Link > & constraints 
)
+
+inline
+
+ +

Definition at line 188 of file RtabmapEvent.h.

+ +
+
+ +

◆ ~RtabmapEvent3DMap()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapEvent3DMap::~RtabmapEvent3DMap ()
+
+inlinevirtual
+
+ +

Definition at line 198 of file RtabmapEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getSignatures()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Signature > & rtabmap::RtabmapEvent3DMap::getSignatures () const
+
+inline
+
+ +

Definition at line 200 of file RtabmapEvent.h.

+ +
+
+ +

◆ getPoses()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Transform > & rtabmap::RtabmapEvent3DMap::getPoses () const
+
+inline
+
+ +

Definition at line 201 of file RtabmapEvent.h.

+ +
+
+ +

◆ getConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
const std::multimap< int, Link > & rtabmap::RtabmapEvent3DMap::getConstraints () const
+
+inline
+
+ +

Definition at line 202 of file RtabmapEvent.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::RtabmapEvent3DMap::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 204 of file RtabmapEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.js new file mode 100644 index 00000000..89f262f2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1RtabmapEvent3DMap = +[ + [ "getClassName", "classrtabmap_1_1RtabmapEvent3DMap.html#ad2d9581145b56762e1d9ae5f04101db5", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.map new file mode 100644 index 00000000..b8b951d5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.md5 new file mode 100644 index 00000000..e00a7f6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.md5 @@ -0,0 +1 @@ +d3e3fa26003e31cdd40622b0d90d4052 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d15e86a598e67807c55d099c3f119c3fd14d86dd GIT binary patch literal 4353 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 U33}lTzG*UNR;0s#vw(*OVf literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.map new file mode 100644 index 00000000..b8b951d5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.md5 new file mode 100644 index 00000000..e00a7f6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.md5 @@ -0,0 +1 @@ +d3e3fa26003e31cdd40622b0d90d4052 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent3DMap__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d15e86a598e67807c55d099c3f119c3fd14d86dd GIT binary patch literal 4353 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 U33}lTzG*UNR;0s#vw(*OVf literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd-members.html new file mode 100644 index 00000000..fcd48e1a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd-members.html @@ -0,0 +1,154 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapEventCmd Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapEventCmd, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cmd enum namertabmap::RtabmapEventCmd
d enum value (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmd
dummy enum name (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmd
getClassName() constrtabmap::RtabmapEventCmdinlinevirtual
getCmd() const (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
getCode() constUEventinline
getParameters() const (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
kCmdCancelGoal enum valuertabmap::RtabmapEventCmd
kCmdCleanDataBuffer enum valuertabmap::RtabmapEventCmd
kCmdClose enum valuertabmap::RtabmapEventCmd
kCmdDumpMemory enum valuertabmap::RtabmapEventCmd
kCmdDumpPrediction enum valuertabmap::RtabmapEventCmd
kCmdExportPoses enum valuertabmap::RtabmapEventCmd
kCmdGenerateDOTGraph enum valuertabmap::RtabmapEventCmd
kCmdGoal enum valuertabmap::RtabmapEventCmd
kCmdInit enum valuertabmap::RtabmapEventCmd
kCmdLabel enum valuertabmap::RtabmapEventCmd
kCmdPause enum valuertabmap::RtabmapEventCmd
kCmdPublish3DMap enum valuertabmap::RtabmapEventCmd
kCmdRemoveLabel enum valuertabmap::RtabmapEventCmd
kCmdRepublishData enum valuertabmap::RtabmapEventCmd
kCmdResetMemory enum valuertabmap::RtabmapEventCmd
kCmdResume enum valuertabmap::RtabmapEventCmd
kCmdTriggerNewMap enum valuertabmap::RtabmapEventCmd
kCmdUndef enum valuertabmap::RtabmapEventCmd
kCmdUpdateParams enum valuertabmap::RtabmapEventCmd
RtabmapEventCmd(Cmd cmd, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
RtabmapEventCmd(Cmd cmd, const UVariant &value1, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
RtabmapEventCmd(Cmd cmd, const UVariant &value1, const UVariant &value2, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
RtabmapEventCmd(Cmd cmd, const UVariant &value1, const UVariant &value2, const UVariant &value3, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
RtabmapEventCmd(Cmd cmd, const UVariant &value1, const UVariant &value2, const UVariant &value3, const UVariant &value4, const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
UEvent(int code=0)UEventinlineprotected
value1() const (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
value2() const (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
value3() const (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
value4() const (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinline
~RtabmapEventCmd() (defined in rtabmap::RtabmapEventCmd)rtabmap::RtabmapEventCmdinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.html new file mode 100644 index 00000000..51e5e17e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.html @@ -0,0 +1,768 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapEventCmd Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapEventCmd Class Reference
+
+
+ +

Command sent to RtabmapThread, with its parameters. + More...

+ +

#include <RtabmapEvent.h>

+
+Inheritance diagram for rtabmap::RtabmapEventCmd:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapEventCmd:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + +

+Public Types

enum  dummy { d + }
 
enum  Cmd {
+  kCmdUndef +, kCmdInit +, kCmdResetMemory +, kCmdClose +,
+  kCmdUpdateParams +, kCmdDumpMemory +, kCmdDumpPrediction +, kCmdGenerateDOTGraph +,
+  kCmdExportPoses +, kCmdCleanDataBuffer +, kCmdPublish3DMap +, kCmdRepublishData +,
+  kCmdTriggerNewMap +, kCmdPause +, kCmdResume +, kCmdGoal +,
+  kCmdCancelGoal +, kCmdLabel +, kCmdRemoveLabel +
+ }
 What the receiving RtabmapThread should do. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RtabmapEventCmd (Cmd cmd, const ParametersMap &parameters=ParametersMap())
 
 RtabmapEventCmd (Cmd cmd, const UVariant &value1, const ParametersMap &parameters=ParametersMap())
 
 RtabmapEventCmd (Cmd cmd, const UVariant &value1, const UVariant &value2, const ParametersMap &parameters=ParametersMap())
 
 RtabmapEventCmd (Cmd cmd, const UVariant &value1, const UVariant &value2, const UVariant &value3, const ParametersMap &parameters=ParametersMap())
 
 RtabmapEventCmd (Cmd cmd, const UVariant &value1, const UVariant &value2, const UVariant &value3, const UVariant &value4, const ParametersMap &parameters=ParametersMap())
 
Cmd getCmd () const
 
const UVariant & value1 () const
 
const UVariant & value2 () const
 
const UVariant & value3 () const
 
const UVariant & value4 () const
 
const ParametersMap & getParameters () const
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

Command sent to RtabmapThread, with its parameters.

+

Posting one to UEventsManager is how the map is controlled from another thread: initializing or closing it, resetting the memory, requesting the graph, setting a goal, labelling a node... The arguments listed for each Cmd are passed as value1 / value2 to the constructor, and parameter maps through parameters.

+ +

Definition at line 67 of file RtabmapEvent.h.

+

Member Enumeration Documentation

+ +

◆ dummy

+ +
+
+ + + + +
enum rtabmap::RtabmapEventCmd::dummy
+
+ +

Definition at line 70 of file RtabmapEvent.h.

+ +
+
+ +

◆ Cmd

+ +
+
+ +

What the receiving RtabmapThread should do.

+ + + + + + + + + + + + + + + + + + + + +
Enumerator
kCmdUndef 

No command.

+
kCmdInit 

Initialize the map. Params: [string] database path + ParametersMap.

+
kCmdResetMemory 

Clear the map and start over from an empty memory.

+
kCmdClose 

Close the map. Params: [bool] database saved (default true), [string] output database path (empty=use same database to save, only work when Db/Sqlite3InMemory=true).

+
kCmdUpdateParams 

Apply new parameters. Params: ParametersMap.

+
kCmdDumpMemory 

Dump the memory content to text files in the working directory.

+
kCmdDumpPrediction 

Dump the Bayes filter prediction matrix to a text file.

+
kCmdGenerateDOTGraph 

Write the graph as a DOT file. Params: [bool] global, [string] path, if global=false: [int] id, [int] margin.

+
kCmdExportPoses 

Export the poses to a file. Params: [bool] global, [bool] optimized, [string] path, [int] type (0=raw format, 1=RGBD-SLAM format, 2=KITTI format, 3=TORO, 4=g2o).

+
kCmdCleanDataBuffer 

Drop the frames waiting in the thread's buffer.

+
kCmdPublish3DMap 

Ask for the map, answered with a RtabmapEvent3DMap. Params: [bool] global, [bool] optimized, [bool] graphOnly.

+
kCmdRepublishData 

Republish the data of some nodes. Params: [vector<int>] ids.

+
kCmdTriggerNewMap 

Start a new map session (see Rtabmap::triggerNewMap()).

+
kCmdPause 

Stop consuming incoming data.

+
kCmdResume 

Resume after a kCmdPause.

+
kCmdGoal 

Plan a path to a node. Params: [string] label or [int] location ID.

+
kCmdCancelGoal 

Abandon the current goal.

+
kCmdLabel 

Label a node. Params: [string] label, [int] location ID.

+
kCmdRemoveLabel 

Remove a label. Params: [string] label.

+
+ +

Definition at line 72 of file RtabmapEvent.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ RtabmapEventCmd() [1/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapEventCmd::RtabmapEventCmd (Cmd cmd,
const ParametersMap & parameters = ParametersMap() 
)
+
+inline
+
+ +

Definition at line 94 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapEventCmd() [2/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapEventCmd::RtabmapEventCmd (Cmd cmd,
const UVariant & value1,
const ParametersMap & parameters = ParametersMap() 
)
+
+inline
+
+ +

Definition at line 98 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapEventCmd() [3/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapEventCmd::RtabmapEventCmd (Cmd cmd,
const UVariant & value1,
const UVariant & value2,
const ParametersMap & parameters = ParametersMap() 
)
+
+inline
+
+ +

Definition at line 103 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapEventCmd() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapEventCmd::RtabmapEventCmd (Cmd cmd,
const UVariant & value1,
const UVariant & value2,
const UVariant & value3,
const ParametersMap & parameters = ParametersMap() 
)
+
+inline
+
+ +

Definition at line 109 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapEventCmd() [5/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapEventCmd::RtabmapEventCmd (Cmd cmd,
const UVariant & value1,
const UVariant & value2,
const UVariant & value3,
const UVariant & value4,
const ParametersMap & parameters = ParametersMap() 
)
+
+inline
+
+ +

Definition at line 116 of file RtabmapEvent.h.

+ +
+
+ +

◆ ~RtabmapEventCmd()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapEventCmd::~RtabmapEventCmd ()
+
+inlinevirtual
+
+ +

Definition at line 125 of file RtabmapEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getCmd()

+ +
+
+ + + + + +
+ + + + + + + +
Cmd rtabmap::RtabmapEventCmd::getCmd () const
+
+inline
+
+ +

Definition at line 126 of file RtabmapEvent.h.

+ +
+
+ +

◆ value1()

+ +
+
+ + + + + +
+ + + + + + + +
const UVariant & rtabmap::RtabmapEventCmd::value1 () const
+
+inline
+
+ +

Definition at line 128 of file RtabmapEvent.h.

+ +
+
+ +

◆ value2()

+ +
+
+ + + + + +
+ + + + + + + +
const UVariant & rtabmap::RtabmapEventCmd::value2 () const
+
+inline
+
+ +

Definition at line 129 of file RtabmapEvent.h.

+ +
+
+ +

◆ value3()

+ +
+
+ + + + + +
+ + + + + + + +
const UVariant & rtabmap::RtabmapEventCmd::value3 () const
+
+inline
+
+ +

Definition at line 130 of file RtabmapEvent.h.

+ +
+
+ +

◆ value4()

+ +
+
+ + + + + +
+ + + + + + + +
const UVariant & rtabmap::RtabmapEventCmd::value4 () const
+
+inline
+
+ +

Definition at line 131 of file RtabmapEvent.h.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + +
const ParametersMap & rtabmap::RtabmapEventCmd::getParameters () const
+
+inline
+
+ +

Definition at line 133 of file RtabmapEvent.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::RtabmapEventCmd::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 135 of file RtabmapEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.js new file mode 100644 index 00000000..0f1c95d3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd.js @@ -0,0 +1,25 @@ +var classrtabmap_1_1RtabmapEventCmd = +[ + [ "Cmd", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801", [ + [ "kCmdUndef", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a45df53bd895e7ae01cc2d5b684068fb2", null ], + [ "kCmdInit", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801af03efbff0b297b981f75f077aac49856", null ], + [ "kCmdResetMemory", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a02ced1d9f6f5c6210277b19d3b8bcdd9", null ], + [ "kCmdClose", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a38f200b1633df5e59891e739f74dfd18", null ], + [ "kCmdUpdateParams", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801afc8f39bbe51260a2743dc2b8dfc2b6f3", null ], + [ "kCmdDumpMemory", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ac502abc00c88395400bf9742c91bdf32", null ], + [ "kCmdDumpPrediction", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801aa0918b6878ef55d0490414c40f4afea6", null ], + [ "kCmdGenerateDOTGraph", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ab69181c7e5e81a85ec6f3888f995685d", null ], + [ "kCmdExportPoses", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a464be1b7dcf88f079ed9a7a2c1100fdd", null ], + [ "kCmdCleanDataBuffer", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a708e03e12a54f6525365376bc992e15c", null ], + [ "kCmdPublish3DMap", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a8bdd31ff2a969a5f73c86a14e5192fcc", null ], + [ "kCmdRepublishData", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a6c0888430b821a9b6094c66a6f42d9cf", null ], + [ "kCmdTriggerNewMap", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801af522eca014994dec79657ed6efff7fee", null ], + [ "kCmdPause", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a29a4641069f4cd19a332982291f63e57", null ], + [ "kCmdResume", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801abf715ad034353e5eaeb424c638aff0df", null ], + [ "kCmdGoal", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801aeced93a6e04c8115875c8d0fe588250d", null ], + [ "kCmdCancelGoal", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a01628ffc80300d04ed04e92e54ec45ae", null ], + [ "kCmdLabel", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a29d3e98121b70d06e0ca342cb3bcda4c", null ], + [ "kCmdRemoveLabel", "classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ad140704bb865de92427860545738bf7f", null ] + ] ], + [ "getClassName", "classrtabmap_1_1RtabmapEventCmd.html#a23c1b76dc2e8d6223cb52cb4fcaf7b5c", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.map new file mode 100644 index 00000000..100f2d9c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.md5 new file mode 100644 index 00000000..0e175870 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.md5 @@ -0,0 +1 @@ +5a95b1910563e35c92f6e5b97c65a8ec \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b86690893c6db2b0ac28a7bb546c0622c1b27059 GIT binary patch literal 4128 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.map new file mode 100644 index 00000000..100f2d9c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.md5 new file mode 100644 index 00000000..0e175870 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.md5 @@ -0,0 +1 @@ +5a95b1910563e35c92f6e5b97c65a8ec \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventCmd__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b86690893c6db2b0ac28a7bb546c0622c1b27059 GIT binary patch literal 4128 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit-members.html new file mode 100644 index 00000000..bf9b6355 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit-members.html @@ -0,0 +1,134 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapEventInit Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapEventInit, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
d enum value (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
dummy enum name (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
getClassName() constrtabmap::RtabmapEventInitinlinevirtual
getCode() constUEventinline
getInfo() const (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInitinline
getStatus() const (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInitinline
kClosed enum value (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
kClosing enum value (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
kError enum value (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
kInfo enum value (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
kInitialized enum value (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
kInitializing enum value (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
RtabmapEventInit(Status status, const std::string &info=std::string()) (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInitinline
RtabmapEventInit(const std::string &info) (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInitinline
Status enum name (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInit
UEvent(int code=0)UEventinlineprotected
~RtabmapEventInit() (defined in rtabmap::RtabmapEventInit)rtabmap::RtabmapEventInitinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.html new file mode 100644 index 00000000..424f7c8b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.html @@ -0,0 +1,396 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapEventInit Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapEventInit Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapEventInit:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapEventInit:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + +

+Public Types

enum  dummy { d + }
 
enum  Status {
+  kInitializing +, kInitialized +, kClosing +, kClosed +,
+  kInfo +, kError +
+ }
 
+ + + + + + + + + + + + + + +

+Public Member Functions

 RtabmapEventInit (Status status, const std::string &info=std::string())
 
 RtabmapEventInit (const std::string &info)
 
Status getStatus () const
 
const std::string & getInfo () const
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+
+

Definition at line 146 of file RtabmapEvent.h.

+

Member Enumeration Documentation

+ +

◆ dummy

+ +
+
+ + + + +
enum rtabmap::RtabmapEventInit::dummy
+
+ +

Definition at line 149 of file RtabmapEvent.h.

+ +
+
+ +

◆ Status

+ +
+
+ + + + +
enum rtabmap::RtabmapEventInit::Status
+
+ +

Definition at line 150 of file RtabmapEvent.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ RtabmapEventInit() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapEventInit::RtabmapEventInit (Status status,
const std::string & info = std::string() 
)
+
+inline
+
+ +

Definition at line 160 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapEventInit() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::RtabmapEventInit::RtabmapEventInit (const std::string & info)
+
+inline
+
+ +

Definition at line 167 of file RtabmapEvent.h.

+ +
+
+ +

◆ ~RtabmapEventInit()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapEventInit::~RtabmapEventInit ()
+
+inlinevirtual
+
+ +

Definition at line 176 of file RtabmapEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getStatus()

+ +
+
+ + + + + +
+ + + + + + + +
Status rtabmap::RtabmapEventInit::getStatus () const
+
+inline
+
+ +

Definition at line 173 of file RtabmapEvent.h.

+ +
+
+ +

◆ getInfo()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::RtabmapEventInit::getInfo () const
+
+inline
+
+ +

Definition at line 174 of file RtabmapEvent.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::RtabmapEventInit::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 177 of file RtabmapEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.js new file mode 100644 index 00000000..50704cd7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1RtabmapEventInit = +[ + [ "getClassName", "classrtabmap_1_1RtabmapEventInit.html#ac10fa3c98f98804d1059b2673233bf0c", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.map new file mode 100644 index 00000000..eca85389 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.md5 new file mode 100644 index 00000000..f4649cb5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.md5 @@ -0,0 +1 @@ +9842f404a1959dd038b2f25d066c34c8 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8c84aec5c7c7ba7416501fc3d9ee2a7c1494d733 GIT binary patch literal 3863 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.md5 new file mode 100644 index 00000000..f4649cb5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.md5 @@ -0,0 +1 @@ +9842f404a1959dd038b2f25d066c34c8 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEventInit__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8c84aec5c7c7ba7416501fc3d9ee2a7c1494d733 GIT binary patch literal 3863 zcmcgvXH*kiw~pmiq)L}AMG-`r5fIQwl@dY+frNlyl->mCAfPB!BuMYC^diy{N}^JN z0!k0PNUtKD(C*>>xa+R<-QRc3nlpQ5&dfP`pM9R^*>Cj_59z2msUZ*uou-DW0l4;q z(~0T=Xk~_kQo-fIW9^5kkdxCRt1&+w0-^8FR8=zaPFo%Gb2KupC;k1CQPV43&F;(L zm#Y^xVE*Mn^~YHmefsM2>+2V&*sihCKh}_(OM3RWtB-|IMe*Tg4wJanWi>U8tvi-q zRJA@)v8jsZXCt-RX|c)@qr(Whr|B^7Ausv#nzpjr*!g&<^}tHwKqa}u1@q@l?^$Ik z{;f|Fq$96a?otg5Zu^-1sS>>PBIvA4IU_?P&_i4}4ceEj(8{d=Y| zG;wWUysuAHQ}Yt&<2$l8R&Q40$T3ZdeK9g%yL3Rt@9cPKX=y#Pvs>J(SX0|T%&G{g zN3DD3_duf)(SgZyTrxN(3j>319m%)#wa&Osx6+LV?4mHgGIW%b&WzMJ_0~3et#Znw zMxVP#|LOUnL7q-(>vA~}VQ9z<*_`V3LLbpI|X^ zkv2Q#n{9|^a0OZ_vX^Z zh6d!BrRKNHz80>opMJEp>BV2y=?S8yp-C{%LgC%jUcG)@)YD_|5o@r$y)7yy_b4GD zLF6NrvNPh6&~I<7qod;+G!d|yu7yCDXo>W9b!9=SZAkP-$DOIN#ZghT;6u}LOXJ|8 zl9H9}im{Cm7h>Ujh96>oC+@F{yUvp=3$luMVteV)!0J!3w#WQW&-y%SI=X+Ziit&; zRbndKrq$iu-3LEEp(!jZw8db~y6&x8ry+#*_xCA;Teof*nVQz4YVYk$hEj;Rxw&?Z zj?mwdY79a~7a}4f1+QKW-kkq++rIBcBW9zhxF?VrEuxbCU`>{CiOsc2pIJ4h+0cA0Emj>%2h2%>X-; zB*pRxOMaRsYeu$&3_0cz2**1N23s1+Pd-&UkbAni9vB!f4Gj&^azfu|CyG}D9{I*P zCEl`_tDwACt`yYiy&)!MJNqL6o_Rk#Dd|c85sPJ!aT$kOTk|h2E=KX*OJNjL-;%FN z$y=o11}pi#9~Sz3G4tzdT8?iS_xwJMtjclIgGp*?X>ANTlVW&y$(E3~xHt+iQ5^Ln z>=N@88OJ1&S8u+qFbtMyn2(rxF0ZMpD}3VyRq(-DeQajXaq{5cqkw~w60sWRv7(7_ zoSPskD{Eh0-*dCfy=5Vz03i{P!V%$RkWzjtg3{7G%XioxSXo`Qv$I3hycm}d6^%$s zoYPiH1sP`8Rflu#Qe>QNtB=VdN$L47vdy}Kli*D@Wn zq_}p=RUAroJVkOYG8H)|!Shbs@JI{4@y{-WQ}N-22PG~=;hB^~JMxcCLfOOTx`Z-+ z_Puhxz7tVz#%P+*o%ec1|M~gtIq1`fYq@ z-yH4UZK2c2{Zh;NHbbM}Fg@~Y*7ihg2s9dBNi@QsKm2!Bn^RlIhHd@n8B(=>TP3GjvtdK zta{RcH4mDXOSOSBw3ew)S_}QGDgg$?vULP`aTKJoaO(Qub@!6OexOA%)N_|%=7o&G zzu)e|3KxiY(QX>>i>*Y`b2_^!Rf5qj2lk11KxP;pZ> zLC85Y><5ELi(%s+T*YQIghw=cUgyW>i?1rw=pjiYP3 zXU6R>JG+GC%u;_b@2aH=NZ9`Te=fPzIy`%}@EKKB7$%t%rbQL1SpW?5t0EjODd1pd zzmAr8)uUUssJIyKzwe$IGv%568)0m0Eaf`+;9FDEfjt$`s&>TA-u~E?k&DgO-=2)vWeheDzdO+xO8diaDP)S9bs;6UQk$=os$#t z?%n10@$qhQ+(=>|k52EKhzJ3B`MUOF0CMc&$gA@5DP3K9v2G!up#W+5rKR7$c|!%U zcW`i%Pj4oXn6K>3TW>=#r2F-pl>|aYd!od0=7=YO?p<R8>{W4;oOf!|Z$WbedaR-RC+ua&mK}lHpJp8TW-Q ze$ksZ-^Rw~XJrK+9qf8gw(OAN?5F-nNyS~${&1O_yJXjMeNw5$X++)ITMi7gwb{$f)S)=MqdU`GtheXOX02orYE6a9Y58 zs2F_EN#M@PP}9b2dws*0+2h9o*W)!|E-;W2z~!~URWHKcZ<=x6*pa^xIv#rl^<}&g)ARY}cFTwzobN zD8j?8Ex~ zaRshaZY)I%qSH%7P2Hm_>s*aTimQ-TG)c=*e~2d;Kwhr5a=ARO7x1e6`Ks1IGtr$jA5V_~_v7^M%WJJf1@R42k4U$mO3Wn{$i^5x5w@y66_m2d+TsHRV^|Z66O;+4*mL7ltQG zzv}Ah3cStUwSC7JiA+1btLyA64m;Xn_Vn~r-0Zkbk;%@^hNsIX>`nw_HZ&++pyzJG zd(7|6CZfGptI4A#B8`iRvFas#+iIC-(z&E>-@XmiNgeaCt5N_^M$03Q1v01c*0pP| zDxdyx2a>bOtAbYQ@wHHxEm)~S9B0f$G8 zD3}82|MXYJHA%^L&CSigPp|rPuy~@PqN9N&CdJ1?Kzq*)R@m6u+T!}pf;>=nbQGJN zo#loFrcF*-0V>!s{P~mgFZTD$_jpChLM~9K-W}6zaf0{ei23&crD-A%188{NQe`bC zCnqRz_KBev8Jt%K*R~T`KrsBq_Qy&94~iJ(c`Ke-Q + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.md5 new file mode 100644 index 00000000..dff5b920 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.md5 @@ -0,0 +1 @@ +f75098e2245b7633fb08db955d9c901d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8ada95ecb7c1ee334a517350d3905844d773ca58 GIT binary patch literal 3614 zcmc(i`9DQ3z=?mLw6wC`)!RGYE;1 zeHoN}kTJ6FzNg3cm+$xS{R6)DKHm2}?&ERqx#zskc|TvT6JvZ!hxOR0V-N(f>gnFN z4emq`Zbuoxb<^5i0o)kv40LWlhkwtkdMp~e*{gR$!!$61Iu>qhx=v{QL$R>2z`&4? z5g4Ik4~4l6Z)Zi&8790;%gq_c_0_*{Mhu(hbrbuLan(sqzIUyuK=1Zuux_S; z{|wfc-&i)@m@Xb3Ca$(eJ+f32?y2$s!;o8CQkb!6ADy(nIJ{r?gUNb#JCrRhfPEim zPbKG$S=R;1C@Lzt3pqGA2p0JKtP9#(>opRbcPZ(jI&_6kjyFUi9UN*ZczJoRJnRvn zZgl79Ftf8$`pq8rDN3rUh7n!p#V=j5AFcNK`_W5it!!@2+1uNDl&s+Kv*R%x)7D&0 zVtM7jz}-B{2{Ip)jdyXu$5|-F#nHm(kO6 z`|P=MLBBs$J&%u{c^mNa{pZiG+{Lkob_5Ma-cD6u;undgnG$8NagPol^N$IY8EXT31$9cBtCx zoI#2tgH2O3Ye(7@rU(p%=WdZ@TSFuh{}o3TXn1(o{L@`rVPQ;M9NqY9Gi%#Flg-fe zwJxn2IyycFdqJ;Wy*hgA*jX8w(pG-mwVOw}m>45r*xvbpC0`{OK1;FgQv23gDy+lt z3gk1}VY|N2FJV=itah*!c}^!`xrtp3TBf`U@A>(&^R!3Z#ELoGB>&^bz9TPFQ}f4o zd3YFoC372_nrO=s>w2K=?(Xis{{EVBMFF<-^z`R3F<#1*Rc7O$t0kTjnz3>&p=vHQ8$ij6d&>i3N*>M5umiZ?^}_tZ#78 z#Z4%58TS7D`|B&;&Y{9Gi9~hBj#Ld3lM`>`-Fh%;5HmBg$ocaow{L6u`^$qh_IIL3 zJP0Q^IeV}ac4p@HH8nLfF;OJrTpT=($7^L;Pdok;+|KSSi9{-|swxXwb=1_-vPz&n zWG_LsajvYaK!NkQDdiQYL4$l%RaI9oH^XI4tJ{=!VDj>DIJ<$57F%0eYXzNqd!g3h z`+k)kzi#R4$67Kh&@rnE@x^P)yABb_6)puh+}Uf_Qn$7OLs3@GX!V;vfB!jI{ks;m zxAkXn>`O{XiF8$~n5gJ&(04;aR&a=jh;VRoe;9jUYC8RSTJ}`@-`Dc<#j|`8lTuQ2 z{QTr#FxbBLQsi6uaiJ1(33CaIHO)v*Z@zaG>E!flrqo$Q;paCfP(agRWR9vdD*_=S5OC;rWrDx&reM@#?`b^Kk?Xwy{TP>*xrKR`n=B4?vp{gSt%X+59GMS2#}5N@AjDQ#nzH~ zDMb=(tFzSLElh*yyQ{&e;hAONO)&BEG zY!6lL)Xe7g`06=A?5j1McOq&+zGP1daWamzNjagQO)n|ATY(D&v4LA+9tzh$qg07<;0zH~4tOBJ63A9`x@RL%_`O zp^DGg+D@K$S-PBTtm?ekrLEnf?&oDTghwd@+5*gx$>jV`pBxs4O0OU8 zt%~bY5-k|p&3#n{i}H-#buLddG1VPD=4%aOCX$fpH$@i~7Cf&BSQ5hC?(78L%DDEp z4S7~x9z!PIE3&M4k}Ym7!PD5-7#ynltVu&li_X^8mY$KZc72LQGeV(Mw4z!50f35V zY0(y7V@gU&+S)nTEq5Pu8l)^1{Ft3}l(ekQ+PD0$>lV@1XX@CQQK0e*hbYuFFqk^n zrD2PT+`C@DH+`tM($b`a1U6UsHwL?HXt9{s*dE8D2*krjk0t>eSWe5csHv${9T-2jqzAJx5agC1-2PE%#5j-85cjlURapw z`Sa&Z5r_$2rH9VW!WS>bG92d_r_qX41}B=HZ7+SH9c5$7!{ajx?qFB8rV?HDpFVx+ zxv^;RBr>vegxZmzh@NUq?CtCOy8e6c&*mltB>pQ>7B*V>BmT4kr=Z|1KR>@j6ec-& zxm}7-V%Hoi=n=qs@?=zl%{b6fDEakk*7VZqlV8R<2R_}ms1KH7)S?W0#^GYw)%IR) z{t6eG+Y^<%c=7K*Q%R2Z?%z*S4v@^zNgUXzy7wtV(I+}9OZbtCOVC0A_8W;r^%J0( z5-vXm$^nG2k1?blhj8!h?<=@d@k3cjX$y>CxXMEafc##FmDQQ3s3_3rt+z_epm~0k z;PQ>{Jp%(RD>LnXR#)wRWU9Che~tpkMyI94^v)xjV^0bw`95DXr7s_gefPTMmwP2Ppu4aSSnM53%bVWbvQ#QH8H14xKM2k8i9uG41ntaY6@ykp zAjdL`5rwf(6Fu zX&bZ0p`oG12*j7Mp`mYh)NbJBSU?4d4AN1MpYIto3j7tnTG;h2MZ*!Qe@nudU7`Li zA=HKg*C@i>U6P4i5V^TDMt)^q@}img_3Kv-P)d4w%%HB2NTjn_V>IjO=xp(63I)_y zflAASXEpuy-P%O^aJ~`lkW8Q(eM zl-Ac64Ckp+`mU}L&CSig2?&O5O&sPkmJNrtq7HfuOB!r!R;JrR_tyt+W?V}m5{VjD zc)C^vZH7v0$ral#Ua*86Y&(H6NR@NJ_}{d#5k`v|PNI!e|4~p#>FP4>%v5PFCLDYR z{)XyZfm0Z3EmbQzvhC}kYiMYAm)k*mv)!V~d$xmra%w8(`SULF;@A)P<*ZddxUcY_~koPJrtqs(B;Bo^~1*NUMJtsFe%Dy$>grHz&oD^PHU0pqK zf3!{llbKnxKGM~tZfwi}q=7HKWn`l!{4gvtaFV&mx}I$R?yr@qsE`51Owa?Q9{55l zNBTD;ZQyF~c>E1G9MGa^< z*w|wiFI@se5>r!qaNplgO$>oh^jqLgRNWB=UeQg!V_=LIun8Jr6H*PWa|tOXaG=xE z$rLd{%H;?63{cXwsM0lO=|s4Ng+(HP!^fHJk*%SmX}H-ilyqzAusqe#={$-e+_VFh6T literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.map new file mode 100644 index 00000000..9dbd06ee --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.md5 new file mode 100644 index 00000000..dff5b920 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.md5 @@ -0,0 +1 @@ +f75098e2245b7633fb08db955d9c901d \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8ada95ecb7c1ee334a517350d3905844d773ca58 GIT binary patch literal 3614 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent-members.html new file mode 100644 index 00000000..e50e7280 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent-members.html @@ -0,0 +1,128 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapGlobalPathEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapGlobalPathEvent, including all inherited members.

+ + + + + + + + + + + + + +
getClassName() constrtabmap::RtabmapGlobalPathEventinlinevirtual
getCode() constUEventinline
getGoal() const (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinline
getGoalLabel() const (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinline
getPlanningTime() const (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinline
getPoses() const (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinline
RtabmapGlobalPathEvent() (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinline
RtabmapGlobalPathEvent(int goalId, const std::vector< std::pair< int, Transform > > &poses, double planningTime) (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinline
RtabmapGlobalPathEvent(int goalId, const std::string &goalLabel, const std::vector< std::pair< int, Transform > > &poses, double planningTime) (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinline
UEvent(int code=0)UEventinlineprotected
~RtabmapGlobalPathEvent() (defined in rtabmap::RtabmapGlobalPathEvent)rtabmap::RtabmapGlobalPathEventinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.html new file mode 100644 index 00000000..c375a4b9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.html @@ -0,0 +1,458 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapGlobalPathEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapGlobalPathEvent Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapGlobalPathEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapGlobalPathEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RtabmapGlobalPathEvent (int goalId, const std::vector< std::pair< int, Transform > > &poses, double planningTime)
 
 RtabmapGlobalPathEvent (int goalId, const std::string &goalLabel, const std::vector< std::pair< int, Transform > > &poses, double planningTime)
 
int getGoal () const
 
const std::string & getGoalLabel () const
 
double getPlanningTime () const
 
const std::vector< std::pair< int, Transform > > & getPoses () const
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+
+

Definition at line 212 of file RtabmapEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ RtabmapGlobalPathEvent() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::RtabmapGlobalPathEvent::RtabmapGlobalPathEvent ()
+
+inline
+
+ +

Definition at line 215 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapGlobalPathEvent() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapGlobalPathEvent::RtabmapGlobalPathEvent (int goalId,
const std::vector< std::pair< int, Transform > > & poses,
double planningTime 
)
+
+inline
+
+ +

Definition at line 218 of file RtabmapEvent.h.

+ +
+
+ +

◆ RtabmapGlobalPathEvent() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapGlobalPathEvent::RtabmapGlobalPathEvent (int goalId,
const std::string & goalLabel,
const std::vector< std::pair< int, Transform > > & poses,
double planningTime 
)
+
+inline
+
+ +

Definition at line 225 of file RtabmapEvent.h.

+ +
+
+ +

◆ ~RtabmapGlobalPathEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapGlobalPathEvent::~RtabmapGlobalPathEvent ()
+
+inlinevirtual
+
+ +

Definition at line 235 of file RtabmapEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getGoal()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RtabmapGlobalPathEvent::getGoal () const
+
+inline
+
+ +

Definition at line 236 of file RtabmapEvent.h.

+ +
+
+ +

◆ getGoalLabel()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::RtabmapGlobalPathEvent::getGoalLabel () const
+
+inline
+
+ +

Definition at line 237 of file RtabmapEvent.h.

+ +
+
+ +

◆ getPlanningTime()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::RtabmapGlobalPathEvent::getPlanningTime () const
+
+inline
+
+ +

Definition at line 238 of file RtabmapEvent.h.

+ +
+
+ +

◆ getPoses()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< std::pair< int, Transform > > & rtabmap::RtabmapGlobalPathEvent::getPoses () const
+
+inline
+
+ +

Definition at line 239 of file RtabmapEvent.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::RtabmapGlobalPathEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 240 of file RtabmapEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.js new file mode 100644 index 00000000..ed88e459 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1RtabmapGlobalPathEvent = +[ + [ "getClassName", "classrtabmap_1_1RtabmapGlobalPathEvent.html#a5dd474b3110c9d4bb53a832aaeda8145", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.map new file mode 100644 index 00000000..72c7cf9f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.md5 new file mode 100644 index 00000000..0f8a7ec5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.md5 @@ -0,0 +1 @@ +2e2de4c6fda1893459272ad27b69a405 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d088d1e6a5d1d5b1ff368851b028a34fb4ffbb41 GIT binary patch literal 4687 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.map new file mode 100644 index 00000000..72c7cf9f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.md5 new file mode 100644 index 00000000..0f8a7ec5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.md5 @@ -0,0 +1 @@ +2e2de4c6fda1893459272ad27b69a405 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGlobalPathEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d088d1e6a5d1d5b1ff368851b028a34fb4ffbb41 GIT binary patch literal 4687 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent-members.html new file mode 100644 index 00000000..444ef978 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent-members.html @@ -0,0 +1,122 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapGoalStatusEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapGoalStatusEvent, including all inherited members.

+ + + + + + + +
getClassName() constrtabmap::RtabmapGoalStatusEventinlinevirtual
getCode() constUEventinline
RtabmapGoalStatusEvent(int status) (defined in rtabmap::RtabmapGoalStatusEvent)rtabmap::RtabmapGoalStatusEventinline
UEvent(int code=0)UEventinlineprotected
~RtabmapGoalStatusEvent() (defined in rtabmap::RtabmapGoalStatusEvent)rtabmap::RtabmapGoalStatusEventinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.html new file mode 100644 index 00000000..a727919e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.html @@ -0,0 +1,247 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapGoalStatusEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapGoalStatusEvent Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapGoalStatusEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapGoalStatusEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

 RtabmapGoalStatusEvent (int status)
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+
+

Definition at line 264 of file RtabmapEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ RtabmapGoalStatusEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::RtabmapGoalStatusEvent::RtabmapGoalStatusEvent (int status)
+
+inline
+
+ +

Definition at line 267 of file RtabmapEvent.h.

+ +
+
+ +

◆ ~RtabmapGoalStatusEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapGoalStatusEvent::~RtabmapGoalStatusEvent ()
+
+inlinevirtual
+
+ +

Definition at line 270 of file RtabmapEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::RtabmapGoalStatusEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 271 of file RtabmapEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.js new file mode 100644 index 00000000..b6f966ac --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1RtabmapGoalStatusEvent = +[ + [ "getClassName", "classrtabmap_1_1RtabmapGoalStatusEvent.html#aa90a7d8a6afe4de12b28f68aaf4f2897", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.map new file mode 100644 index 00000000..44bb2a6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.md5 new file mode 100644 index 00000000..3d2c37ae --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.md5 @@ -0,0 +1 @@ +4d6e6759f0c9a32c8971cceef23085a1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..be0e145f94993e9e5dfdd1f086ab76f158ae3dc8 GIT binary patch literal 4920 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.map new file mode 100644 index 00000000..44bb2a6b --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.md5 new file mode 100644 index 00000000..3d2c37ae --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.md5 @@ -0,0 +1 @@ +4d6e6759f0c9a32c8971cceef23085a1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapGoalStatusEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..be0e145f94993e9e5dfdd1f086ab76f158ae3dc8 GIT binary patch literal 4920 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent-members.html new file mode 100644 index 00000000..36077d52 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent-members.html @@ -0,0 +1,124 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapLabelErrorEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapLabelErrorEvent, including all inherited members.

+ + + + + + + + + +
getClassName() constrtabmap::RtabmapLabelErrorEventinlinevirtual
getCode() constUEventinline
id() const (defined in rtabmap::RtabmapLabelErrorEvent)rtabmap::RtabmapLabelErrorEventinline
label() const (defined in rtabmap::RtabmapLabelErrorEvent)rtabmap::RtabmapLabelErrorEventinline
RtabmapLabelErrorEvent(int id, const std::string &label) (defined in rtabmap::RtabmapLabelErrorEvent)rtabmap::RtabmapLabelErrorEventinline
UEvent(int code=0)UEventinlineprotected
~RtabmapLabelErrorEvent() (defined in rtabmap::RtabmapLabelErrorEvent)rtabmap::RtabmapLabelErrorEventinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.html new file mode 100644 index 00000000..37d2c779 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.html @@ -0,0 +1,315 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapLabelErrorEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapLabelErrorEvent Class Reference
+
+
+
+Inheritance diagram for rtabmap::RtabmapLabelErrorEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapLabelErrorEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + +

+Public Member Functions

 RtabmapLabelErrorEvent (int id, const std::string &label)
 
int id () const
 
const std::string & label () const
 
virtual std::string getClassName () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+
+

Definition at line 248 of file RtabmapEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ RtabmapLabelErrorEvent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::RtabmapLabelErrorEvent::RtabmapLabelErrorEvent (int id,
const std::string & label 
)
+
+inline
+
+ +

Definition at line 251 of file RtabmapEvent.h.

+ +
+
+ +

◆ ~RtabmapLabelErrorEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::RtabmapLabelErrorEvent::~RtabmapLabelErrorEvent ()
+
+inlinevirtual
+
+ +

Definition at line 255 of file RtabmapEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::RtabmapLabelErrorEvent::id () const
+
+inline
+
+ +

Definition at line 256 of file RtabmapEvent.h.

+ +
+
+ +

◆ label()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::RtabmapLabelErrorEvent::label () const
+
+inline
+
+ +

Definition at line 257 of file RtabmapEvent.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::RtabmapLabelErrorEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 258 of file RtabmapEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.js new file mode 100644 index 00000000..75c83b17 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1RtabmapLabelErrorEvent = +[ + [ "getClassName", "classrtabmap_1_1RtabmapLabelErrorEvent.html#ab41ac9cdd98c1d94b1a8dc9a21364315", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.map new file mode 100644 index 00000000..02bc9b12 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.md5 new file mode 100644 index 00000000..325604df --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.md5 @@ -0,0 +1 @@ +305f7cec803123ec4bae24b768a45270 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7ee980bc62efb2466b8ab18f9f4e0389b9c9e6 GIT binary patch literal 4519 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 HIz|5nvk8_c literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.map new file mode 100644 index 00000000..02bc9b12 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.md5 new file mode 100644 index 00000000..325604df --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.md5 @@ -0,0 +1 @@ +305f7cec803123ec4bae24b768a45270 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapLabelErrorEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7ee980bc62efb2466b8ab18f9f4e0389b9c9e6 GIT binary patch literal 4519 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 HIz|5nvk8_c literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread-members.html new file mode 100644 index 00000000..3e55a0d3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread-members.html @@ -0,0 +1,176 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RtabmapThread Member List
+
+
+ +

This is the complete list of members for rtabmap::RtabmapThread, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
clearBufferedData()rtabmap::RtabmapThread
close(bool databaseSaved, const std::string &databasePath="")rtabmap::RtabmapThread
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
createIntermediateNodes(bool enabled)rtabmap::RtabmapThread
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getCreateIntermediateNodes() constrtabmap::RtabmapThreadinline
getDataBufferSize() constrtabmap::RtabmapThreadinline
getDetectorRate() constrtabmap::RtabmapThreadinline
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
handleEvent(UEvent *anEvent)rtabmap::RtabmapThreadprotectedvirtual
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isRunning() constUThread
join(bool killFirst=false)UThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
kStateDetecting enum valuertabmap::RtabmapThread
kStateProcessCommand enum valuertabmap::RtabmapThread
post(UEvent *event, bool async=true) constUEventsSenderprotected
Priority enum nameUThread
registerToEventsManager() (defined in UEventsHandler)UEventsHandler
RtabmapThread(Rtabmap *rtabmap)rtabmap::RtabmapThread
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
setAffinity(int cpu=0)UThread
setDataBufferSize(unsigned int bufferSize)rtabmap::RtabmapThread
setDetectorRate(float rate)rtabmap::RtabmapThread
setPriority(Priority priority)UThread
start()UThread
State enum namertabmap::RtabmapThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UEventsHandler()UEventsHandlerinlineprotected
UEventsSender() (defined in UEventsSender)UEventsSenderinline
unregisterFromEventsManager() (defined in UEventsHandler)UEventsHandler
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~RtabmapThread() (defined in rtabmap::RtabmapThread)rtabmap::RtabmapThreadvirtual
~UEventsHandler()UEventsHandlerprotectedvirtual
~UEventsSender() (defined in UEventsSender)UEventsSendervirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.html b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.html new file mode 100644 index 00000000..e5eb5823 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.html @@ -0,0 +1,614 @@ + + + + + + + + +RTAB-Map: rtabmap::RtabmapThread Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RtabmapThread Class Reference
+
+
+ +

Runs a Rtabmap instance in its own thread, driven by events. + More...

+ +

#include <RtabmapThread.h>

+
+Inheritance diagram for rtabmap::RtabmapThread:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::RtabmapThread:
+
+
Collaboration graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Types

enum  State { kStateDetecting +, kStateProcessCommand + }
 What the main loop does on its next wake-up. More...
 
- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RtabmapThread (Rtabmap *rtabmap)
 Constructor.
 
+void clearBufferedData ()
 Drops the buffered frames, the pending user data and the odometry state.
 
void setDetectorRate (float rate)
 Sets the maximum rate at which frames are processed (Hz, 0 = unlimited).
 
void setDataBufferSize (unsigned int bufferSize)
 Sets how many frames may wait in the buffer (0 = unlimited).
 
void createIntermediateNodes (bool enabled)
 Keeps the frames skipped by setDetectorRate() as intermediate nodes.
 
float getDetectorRate () const
 
unsigned int getDataBufferSize () const
 
bool getCreateIntermediateNodes () const
 
void close (bool databaseSaved, const std::string &databasePath="")
 Joins the thread and closes rtabmap. This will delete rtabmap object if set.
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
- Public Member Functions inherited from UEventsHandler
+void registerToEventsManager ()
 
+void unregisterFromEventsManager ()
 
+ + + + + + + + + + + + +

+Protected Member Functions

virtual bool handleEvent (UEvent *anEvent)
 Receives the events listed in the class description.
 
- Protected Member Functions inherited from UEventsHandler
 UEventsHandler ()
 
virtual ~UEventsHandler ()
 
- Protected Member Functions inherited from UEventsSender
void post (UEvent *event, bool async=true) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

Runs a Rtabmap instance in its own thread, driven by events.

+

The thread owns the Rtabmap object and calls Rtabmap::process() on the data it receives, so that mapping never blocks the sensor or odometry threads. It is the last stage of the event-based pipeline: SensorCaptureThread → OdometryThread → RtabmapThread.

+

Input events (handled in handleEvent(), i.e. in the caller's thread):

+

Output events, posted from the thread:

+

Input regulation, on top of what Rtabmap does:

    +
  • Frames are queued in a buffer of Parameters::kRtabmapImageBufferSize() elements; when it is full the oldest frame is dropped, so a slow map update never delays the live pipeline.
  • +
  • Frames arriving faster than Parameters::kRtabmapDetectionRate() are skipped, which is the rate limiting that Rtabmap::process() itself does not do. With Parameters::kRtabmapCreateIntermediateNodes() enabled they are kept instead, and added as intermediate nodes (odometry-only, not used for loop closure detection).
  • +
  • An identity odometry pose, or a covariance ≥ 9999, is read as an odometry reset and triggers a new map id on the next processed frame. The largest covariance seen between two processed frames is the one passed on, so the link weight does not depend on the odometry frame rate.
  • +
+

The object registers itself as a UEventsHandler, so posting an event to UEventsManager is enough to feed it:

rtabmap::RtabmapThread rtabmapThread(new rtabmap::Rtabmap()); // takes ownership
+
rtabmapThread.start();
+ +
UEventsManager::createPipe(&odomThread, &rtabmapThread, "OdometryEvent");
+
static void addHandler(UEventsHandler *handler)
+
Runs a Rtabmap instance in its own thread, driven by events.
+
Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure).
Definition Rtabmap.h:194
+
See also
Rtabmap
+
+OdometryThread
+
+SensorCaptureThread
+ +

Definition at line 104 of file RtabmapThread.h.

+

Member Enumeration Documentation

+ +

◆ State

+ +
+
+ +

What the main loop does on its next wake-up.

+ + + +
Enumerator
kStateDetecting 

Process the next buffered frame.

+
kStateProcessCommand 

Execute the next queued RtabmapEventCmd.

+
+ +

Definition at line 110 of file RtabmapThread.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ RtabmapThread()

+ +
+
+ + + + + + + + +
rtabmap::RtabmapThread::RtabmapThread (Rtabmap * rtabmap)
+
+ +

Constructor.

+
Parameters
+ + +
rtabmapThe map to run; must not be null. The thread takes ownership and deletes it in close(), which the destructor calls.
+
+
+

The buffer size, detection rate and intermediate node settings are taken from the default parameters here, then updated by every RtabmapEventCmd::kCmdInit and RtabmapEventCmd::kCmdUpdateParams command.

+ +
+
+

Member Function Documentation

+ +

◆ setDetectorRate()

+ +
+
+ + + + + + + + +
void rtabmap::RtabmapThread::setDetectorRate (float rate)
+
+ +

Sets the maximum rate at which frames are processed (Hz, 0 = unlimited).

+

Same setting as Parameters::kRtabmapDetectionRate(). Frames arriving faster are dropped, or added as intermediate nodes if createIntermediateNodes() is enabled.

+ +
+
+ +

◆ setDataBufferSize()

+ +
+
+ + + + + + + + +
void rtabmap::RtabmapThread::setDataBufferSize (unsigned int bufferSize)
+
+ +

Sets how many frames may wait in the buffer (0 = unlimited).

+

Same setting as Parameters::kRtabmapImageBufferSize(). Once full, the oldest frame is dropped to make room for the new one.

+ +
+
+ +

◆ createIntermediateNodes()

+ +
+
+ + + + + + + + +
void rtabmap::RtabmapThread::createIntermediateNodes (bool enabled)
+
+ +

Keeps the frames skipped by setDetectorRate() as intermediate nodes.

+

Same setting as Parameters::kRtabmapCreateIntermediateNodes(). Those nodes carry the odometry link but take no part in loop closure detection.

+ +
+
+ +

◆ getDetectorRate()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::RtabmapThread::getDetectorRate () const
+
+inline
+
+
Returns
Maximum processing rate in Hz (0 = unlimited).
+ +

Definition at line 155 of file RtabmapThread.h.

+ +
+
+ +

◆ getDataBufferSize()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int rtabmap::RtabmapThread::getDataBufferSize () const
+
+inline
+
+
Returns
Maximum number of buffered frames (0 = unlimited).
+ +

Definition at line 157 of file RtabmapThread.h.

+ +
+
+ +

◆ getCreateIntermediateNodes()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::RtabmapThread::getCreateIntermediateNodes () const
+
+inline
+
+
Returns
True if skipped frames are added as intermediate nodes.
+ +

Definition at line 159 of file RtabmapThread.h.

+ +
+
+ +

◆ close()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::RtabmapThread::close (bool databaseSaved,
const std::string & databasePath = "" 
)
+
+ +

Joins the thread and closes rtabmap. This will delete rtabmap object if set.

+
Parameters
+ + + +
databaseSavedtrue=database saved, false=database discarded.
databasePathoutput database file name, ignored if Db/Sqlite3InMemory=false (opened database is then overwritten).
+
+
+

Called by the destructor with databaseSaved true. The object cannot be used afterwards: the Rtabmap instance it owned is gone.

+ +
+
+ +

◆ handleEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool rtabmap::RtabmapThread::handleEvent (UEvent * anEvent)
+
+protectedvirtual
+
+ +

Receives the events listed in the class description.

+

Runs in the posting thread: data events are only queued here, the work happens in the thread's main loop. Events are ignored until the thread is started.

+
Returns
Always false, so the event keeps being dispatched to other handlers.
+ +

Implements UEventsHandler.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.js b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.js new file mode 100644 index 00000000..c7dfdf04 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread.js @@ -0,0 +1,17 @@ +var classrtabmap_1_1RtabmapThread = +[ + [ "State", "classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5fae", [ + [ "kStateDetecting", "classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5faea733e80c5ec27718bd9551646f99d352c", null ], + [ "kStateProcessCommand", "classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5faeab07a30b69b21efdccbb6c040a5208001", null ] + ] ], + [ "RtabmapThread", "classrtabmap_1_1RtabmapThread.html#a5c5752b0b0a0e05e8e97308c74f9b955", null ], + [ "clearBufferedData", "classrtabmap_1_1RtabmapThread.html#aea5c7a61adab9ed8382066806420bfac", null ], + [ "setDetectorRate", "classrtabmap_1_1RtabmapThread.html#a8ff95633544be0d87c1dc977cb52a064", null ], + [ "setDataBufferSize", "classrtabmap_1_1RtabmapThread.html#ab9b4e64c65264f12bfeb1814aff59cbe", null ], + [ "createIntermediateNodes", "classrtabmap_1_1RtabmapThread.html#a78271ce60d00219c4fdd86813136a116", null ], + [ "getDetectorRate", "classrtabmap_1_1RtabmapThread.html#ac788245b9aa70ebc9e7148fad3b92ed1", null ], + [ "getDataBufferSize", "classrtabmap_1_1RtabmapThread.html#a9aa2f05308498abcba0f01b2df25cac0", null ], + [ "getCreateIntermediateNodes", "classrtabmap_1_1RtabmapThread.html#a3dffee6fb4ae760c140144fd47923643", null ], + [ "close", "classrtabmap_1_1RtabmapThread.html#aabea5cf86e55d6669d41b0b569dac574", null ], + [ "handleEvent", "classrtabmap_1_1RtabmapThread.html#ab2556f7773329963038d876c86e97d09", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.map new file mode 100644 index 00000000..f49f525d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.md5 new file mode 100644 index 00000000..237fd9ce --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.md5 @@ -0,0 +1 @@ +b8bf5e43f72c4974e1fa02d7aec2c7ee \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..27f75f018bb08b8c9247886adcfe3dec442be72d GIT binary patch literal 11958 zcmZvi1yt2hx8Ml{K_#W6lnxO=k&sSlL8(hhr$|YI2uezabY2iC>5>u=kPbn*ySw4- z`>i+gW@gPYx%VIE?6dQ?ci;;pncKK`anaDwZp%KGR7FEW=YaoL-oS#tWh`!Z!#`Mt z@-mWWSEyfUbvaRJX!p=$CBrt3M9B+9Hq(jEmoDJL+VAH zBuAYbM^nMK*owl6H%0vyv3cccgeT>4tf~m@z=8tgyYiNLV#Yv*Hi6VB+FT3iioOR? z3iUm$&2z82xtAQ2x_>OW*Y71iPP0hJ{-571!ESGV#&T$TNM@CD1of@U_~TK>k_Weod|et23eE4P_s3=qcy5Ip?ElFsTWWNj6hX(W#Co70Ce)ywHBW;$Dz_Rg z6lL#QANWkk%lB?w)5kW)uqEh;^}p|pm6;>bN=p&x;Z}W56g!Bi5eeBO>;h#^6xr2- zUYURN^ZRZ$C!IJ%KuxV!`);Gk^Q=N~t&Q`rLL|Y)X7We;eTh&1%0AJNAl#2O8QIwW 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�rL!{@w71tvfaS#*w8 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 + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.md5 new file mode 100644 index 00000000..237fd9ce --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.md5 @@ -0,0 +1 @@ +b8bf5e43f72c4974e1fa02d7aec2c7ee \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1RtabmapThread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..27f75f018bb08b8c9247886adcfe3dec442be72d GIT binary patch literal 11958 zcmZvi1yt2hx8Ml{K_#W6lnxO=k&sSlL8(hhr$|YI2uezabY2iC>5>u=kPbn*ySw4- z`>i+gW@gPYx%VIE?6dQ?ci;;pncKK`anaDwZp%KGR7FEW=YaoL-oS#tWh`!Z!#`Mt z@-mWWSEyfUbvaRJX!p=$CBrt3M9B+9Hq(jEmoDJL+VAH zBuAYbM^nMK*owl6H%0vyv3cccgeT>4tf~m@z=8tgyYiNLV#Yv*Hi6VB+FT3iioOR? z3iUm$&2z82xtAQ2x_>OW*Y71iPP0hJ{-571!ESGV#&T$TNM@CD1of@U_~TK>k_Weod|et23eE4P_s3=qcy5Ip?ElFsTWWNj6hX(W#Co70Ce)ywHBW;$Dz_Rg z6lL#QANWkk%lB?w)5kW)uqEh;^}p|pm6;>bN=p&x;Z}W56g!Bi5eeBO>;h#^6xr2- zUYURN^ZRZ$C!IJ%KuxV!`);Gk^Q=N~t&Q`rLL|Y)X7We;eTh&1%0AJNAl#2O8QIwW zWb-gEGnd+oJylgzwMO`tOMkxGlE7nClB_>|D8oMbX1uB?MabP6AyJV^BOG#haW+t- zFXDEvYQiPN$M@xR^QXStm&^jrn@Jm|(wPwf0RiVMNYU|n&&1x|7hWd|WSf(9^2q{D zHHd`TplLpyd@-6}7 z9&U`q^Vu0@?~NF+90y01l|6y4qzw%-)H9)r4O)U>AtCG!a zf4RvA6Z>DKEv->&C{n^7&(Gg~Z^C)X?(EP8mfhUJ*$|SMNsngxV+ZS*^X4yuM=$E! zoIc&65Qmj_jmgW)&v{>+(T-Kxwt^tgF|jlU9~-w3tPT})go#|5+s%g32qjciRVf_g zAd$tOZ}sQ9^6CW$sVFAJFWe?_v8^UMvn}i6)ln3WO~2%{{QgZuMWtYF&cb6kC@T2{ zWS02UMx0gZ#fxyM)Sq8fGM6Xoo=wy`S6X`0%+Jg;)o#^y1Q60M59HuuV&l!XGp9c2 zw`I6qppq%Am6ABu8rIs=69&2$pJOvt@p)w+r__EyE?PA!E9;Tf&;yj(QBhN`Ow{t$ zxgTNOyMNy&C&eu&_hk+dDe3QOhb8mTGFDZ)$F)PrX$2{`bSxVG6Xrt@*27T}|f~F8TpSPEO8v zUR%BF6f- zobquGV@~##S5A4Ae(^d#wnLvE%ze3Nfs~7h+}_@PkZN{$elokXWX4rsJ5|qZImkjt$Q7^9 zU+?K|F;!oeuURZ!f4a(^ixP1BV;Mgehs;rQ?m&YjkVVy@pLZA0yhm9_m_!-zz(Oa)#6 z@07>D`SI>T2PtRO`}b&j=p=-Jp`oNQGBP8TwyCZNYwLVIetr{5axk7qaL)k&Z3k<^ zEe4M?lRAURIG@@&fKg(!!O=O4Uuo#MN}*9aGI$SX!Q5&>yFVYL{O4?|!PaXWl=mY{mGm==^NWkF ztD+a_7~x*+^D8Sjq9CTuJ>?`mF*!Nhx!<2lUGR{1A|fIN^R=R)n3Z==mQo#d=VghA zh^o9UYO3c>L5;vQ4}4Xj->ac`HoV0fVPs?kdg4~WbF@AZ1#X^*hNc^Qy6a~3lFR8z z4y$gBW8v8|$K@Bo$J3aTE_1g-sh|A@hkAT@wuR2;y32s&>$BLEm>6gK_ZvxWZf=sW zXF@BDd*^Jm{aEVwua=f#!xmg{=f5^5YFEI$PzyMIce}_~z2rZh=6Ac=@m(^%y1d{x zE&CJAiYZ!czu>YMZ+7G6%}ljCb(H^s@EU)G=Z{az#L5~7K`dcdQ9)sTwk4SK!W2Jc zuDG~(Wa#pIucy>?&lEg`G@R$kU@ozknAqY8s5rOL?~wc4+>sY&M~|IWUqN_ngAl%} z(-TO{Y~G)Rqoky?cmnQd9xT`O>qXabLKprC5kgp4Sf}<~mmxw`m8kN~#LwZQnfj1a zZT%qM=2XVo>gx1pLonxffe1<-OG$BYi~{XS)9FT^5Gwx25|fS+w*$*}o8uOGB3xV% zzkW&Xol+>L$Gk@sXV(e}$zo4d{a_{@+;ETy=I z;!z72Q%-uG?$03O^b8>uL(m!kHU0792O5ihy&wphfq`Lqbrn}sK_SF-(ieoC4=(@v zn+XAwut5^$eHqtL0R!SkrcSjzf1$R{t3n-$%)T~AsLa7jyPn3dYdj*q1!~=5c(Q(4 zcCRjMZzU(y^mKpaflgI;x`cniQgwB;3Q~?F7(aQ_!O;=%s>jmpWOo6qo&*O6 zXMM6R(Rs=<4gy8}@$Aju15nbPqoW*fexPmss3la>@bXqFEGhqP9TN8bJ#6jO78fS@ z;ll^bA1++OMf$wTV48O~H#eU^z!G^H!6+gka`%aOV^PDUoPoi;jnVQ<@H$iijyHID zc^~T5NGd4YB4$>~k_n?JGw=HVK`4Is=;)|*csNd3+Tvg;3K0CUX z*$S^OP7g@OCadh|A&ggkSzK9ZU+&8ssdMLbKU{BuupS;xz@(g#v>_bL`tp;o=jkKw zOAnBv@ebYg-d?6@SHk&G!xfM6*>Yys_R&$#;C;)kOXG!)WO~#3SEpo(2~TE@cjmx_ zegvV7DjJ}J6YEQtz&7npvhcdk$jHcL^!wImxz*8&)C97FxVLX?WP1mh`S7tRF3eFJ%M1k8(O;y$O{Jf;2W0~tHToV`)k_GQ^T>lpVdR$^P z{1DCS^2AI%U(=^8RYL`|UxHOChD~i(M>$6+`CqLwC**r*{r;B^G{4`QI^>-?j}b1& z%3`1pbomZhpE@WCQ@Q0|B7J@Rk?*f1Vmp=wa}NG$=*QDe)jIcN^vpD!(5+k$ftJRB zkCTHe3@QE*clQr_(Q^bMAq$C=h0Lp^xmkk7``iu$9^|;vFNLVEw$Srl8!Avu7r$=N zo96SXNKZG#^KeALQxtMgVtjmj)TK{sCw17=^I2faUFDg&40T~Fm6uuIe1cWwK+zc( z8Cwh|!G`JT>+4mE^n`MCYb(IB4UGHKMOM>KCS0^H|Ncx_z1iH%66A@1Wg?UXcl=!3 z+~gpC%!1soAC|1(-JE|~hJlH>0P?_^gj7xyp55Ghh?1Cq)9Q0D6pqulJw(s`$^a6C(_d!s61DmL)xRC%IR_dk zQwaWKnfTFXm z4rx|ABGk2jSwJ8GgfO$T)CyT@_1l>bQX*^3f(_;N0%4Bk7AN1n`p2pZ&O6eO zP_QrS-!aD7{h!@;uBw&!s3xq}+~n>e2cJZ>?-vxTvE0hVl9}s!HC2tp=$!axg{z`4 zhlQoOGN;q`^%}#imc2&)Dc!;NC$cMxvFi6e6~@)$#$vEY6`be}@@o$pTh%D96}@m2 z7rn#tuzc1+J1%pC6G@Jlg`R7eVfCgX?wUXuO@H|9*_*G#e25g}jw=hS`qu}-%lpyN zc?_=I%26@t zsO!YiSo*mY#(o`R- zDB{l_QO*+n9?3^6tRoV%j^^wY{}J<)HtFeuHYK zu4?{!wC+H<31d_*o;_dkwP*tZ7pGr(?S(wq79$B|QdHNZWj94K){X7cbYBm?xiT;u_33mMGS%GOpB=)Jr^=^{?{^%A{A!b(W zP+S1Qr_U3C-jDQ3F-&Sy?=cD#w5|{n5Yp5bOIGo{@yr$iWT_O z_UxPSJ;c5yM*&*Ms2oLOQWzgKyjz2*F!+)!OdV~ImV-ma_l<=~mIQmzElJi1 z!Xgqh-)Y?EG5P_OP8?E!cm;y0E0_v(m&Y!Mf!)vTev||v7Lk8e$jsMp2#CB%N&`{F<~hYT>L_13a7-99H}@p z$QbZGuKO)7$1x&X(j??N^u2XxR%3@y7sjY!NU{nwzUnYzB7Sq)(H{>|z{VKnS}EE! zKauyzTaHyny~T&9Fq0F%{533cJPT5-2Pi9?v6s?b(BlLSp@ z{{BtW9q1Xo>Bt30q+$YcVNRJd`TM_lylBWXbd%q%}+? zq~5bUX&$()AsW9QhA_^MV5iNZ7?5dsw(Q znv!Q%JhCuBUGFibF@ZTN`JXQWMK%$Z{Tv0@upg1(+y9Zoc!O1Llx$@g&8ubJLP{<} zzdMIdZ~EqTPrcX~R#B0$)|K-)oek#1T}Yx3_HfZhfw_O`Dh!2c>C#q%GqyImL5cxw zyRLhS2kn+A60gZHdy9=^AaD&5xkczfn!eHR_lqY!E&Bk2(xWrHE>72{8d9sO*8NKbPnR>V>n`fs@61Y} z)}JZ;d3%5ViL!{p;w|T`$%P0Rn&Q_^Ej>_#Y#$sTVaKEc&g=ig0N3ptDmBm_&NTZ& zG230{B`S&r+3a<_CD_qdfOj$M+PwK&+cV98iC*L=Q3tP_9c{HXH~Ze@vAiQ1Bc&06 zUw|)i9u7EAq2N<{6!YBlbYq58@D~wpVaWY4ry=pvsrQJ7YC0hGWFjxsHLZki%&)=j09#McB5GH6~6N(DT*H)>VH<+g7gywcRv^y6%^b}{x4@>G8N z`RCaLUj&@k!h{YreTGp#L!I9>-Q-(<0Nk*1e0KKO^VBhT1w=r{!V(}G#kAlZA*C6C z&tcV>A~be>75~_b8?LB$Gm)@RVqsyC#Ak;AwKd?9&H+e(6cLEKa7>F(001yq{hNo~ z2=KPbWrxmbbuiuIWOvaC^7voyloxU;xvGo+(}I0{7w+@KD^Q7eB|-M}vedLo;b8Ea zS}?8Gu@59%y){m2R7ZP1Ki-s-k(pas@(&K~kg#FSxnK!Qab1j8xR187BnG4^JN5#O zA4Q=~sse8;^`tJrkFcS+^>u5#cfcTzPft|~b@)M4K2VESAHWfE0ng;Oo4p2DwB_&L zm~6#Fj1})GO5Qgw8oWIJ#B!YVp6!p>HrTBVaoobfgtRdSs#4NDhi_~3P~Aa6{3$Ff zOl_>}kPlW*1*tTf+PD4Qvx9rJH#n@Mq@@8}iLUe``P~m6pbEu<)xRvrFZ>QnKyVj; zr&ZO|^aDu#giqW3{dF^7<21lYNrJACm6LA4C@lNDVg1WvGd#37PJL-f%{sU86Tb$x z12$!$gF7lJDlRTA(<>{o;^H5q6elMq_qV1}HS|4WfY+F6Ilp>!2kN7RUxCCf?(Pnk z=dMu8w7f^h%pXD?Qis6&H=>Mu6m{G;E(lVgMz4g)_B1+0& ze}8O^LY>!r8B&g`gE;TO=vD`Fn7wDXHts<7w33L8p*LJM$yKaM8dZ&3^Er(5bn{RhaEfrH~SidMAIhkdvF%LX7I z%1Rea@rW&~W*3x`5gY1U=;RV|McinerM^FQ{w0ZjDHq#v@fGqRPTzy!+R zR5G!6-;ASVc)mZNTn6RVdtYq)67MT7hnrUW%YDCo{d&97�rL!{@w71tvfaS#*w8 zsp&!;INYBR3)n$8H%H*P?)wiTpn=l?XRz5kUude0C%|1#XI%On48PIH_bXMwY+r(&Wh^U zyAbFlEbNjM>jmN#0LM>!#=)-k%`Y{T7PTOM^`-9QE}!e)0rKd1>_~ZC9BAy70qXDr zU%wZ80V;w5Ld(nMmcxZzW~rX0dhbA}0Cuhc^FxykA%E?q(eV}dghGm7Jjk>c5R}3m zR9>wguHWob+?t*?@bL5u39aPW6vd&CH!^1<6j8o5e zyvh!Z{1z6}qOD-9$qPHBhkSxp=X)o2HDBBk&x3LuP_;=yN_e=zfzy%aQDXZMKObLs zLV~5&`pnGh%Z7lr;91mR4WQ(m12L+Lm!FF2PlEtSQ9v_8P*4!Szzn!CsEB8P1$cP; zkeZ56g{@aUu)2wZ^ZIuP1!=l-Lnx{Xk!o38TT2W!8!%r*ZFShJhwANs0U4v-A8w&v zx;B78&TV`HdKY|LTwM9OwWQ9@&U+?ZAW;>$9cV9T=I;UKKqSdi^pu}nBvCAxy@E0x zk4CT!LXykOM>0O|OF__=@+!g3Zv>r-^z`N)TqS zaBkA6P=OF0h5pMEWShS_kQl9Mdq#-qeEi6%4?>KLAHg~kijr@BPz?gf5)u)injoD6 zQhv40TNo>Gx(AY|l9Jn%4Hvfw#aN|4gGNft@Hr4=X#FB1KY+Hyjy=Bn+2eet z^%nV~#*A`gbOszCkg2h8x{%MG7a-_C2w1B5k3a^C^izf04>c8ljF3BTj;DjotBWWD zO8u(eAS@sI;J%<>Qj;%sW;C~Lv%#ZB?uXVuqYU&w)1So)Q?-Xew+KSsVk^L}R|SX| z&|0(=>Q!`f^!@dbfmN~#=z_%aSdoIaeu}?w4B)5>RHFdV0McP#VzS>~R&hwR{vCVb zyF15st|ld1mg0TsDtt0e>~^$iBkT%{GN8}gV>$GX{{i$r`XDp_zen|H;vVYKJ$Mju zb$Qevxbuq`z}-jNh6_?K0kHQ!a1z$Vmwq_JO50CW@cDx$``{sjZ4kAleb_{}(8Q z+vp%QhI{uK4M*}%15ha1C1NW@u=sf?cqazrO2Gw`H+)KSeJplM-;>PZY9o6MGIuW{hur?~bx9d@EIQm`kT1Jg-=#S ze;9R}pS^1+kZ0QkTaKGM7suxy)Jhq^=ZYooW~NpYqjjvEy_213)HwR~h?VHetc&b~re-(K~2VZtCbc9EKNh08K+W4FGOv~E}QEKpryrjOG z>M1#4(S^l7toRR)2%G%qq?(fE?+Bli_}3V&jg~c-wqfn?+{pAHLnBimk4}r;-aRi| zEgc^kw$G91_=IH>iHpaoqZ+i&>5asWBRc*a{wLaX;;$@a+*d7DV_(5ffyEdXTn6HA zuMrR+s}>`r3n(U{-^eauQX`%|b*%HqxMQ@LI*-PpdX4H%{uAWR;mG~#(k(vbCgKpUlAtiQ~ z_CEhP$K?-4YgVSGx3oDqaC07Qh@~h03)n7r{?PVV{4N$=H$L5ua5;7^M{^SNn>Bei z$u+Mrm{o?bTq9;u+1Dq?DrvwkRR10wS>^I6;QQUS%Sh$dcV?WT`geY_t0$UPSxWTz z_Z+O`(Qf_xexmy~@@J7khg^IRd34}2rT~eENV}BxzOpV|>g6NPs1Z^DVmqNM!Rh$o zZst-sO^t+8@=ceWfu=D&lvyEMfqz+2o=}hnyq%=dS)onvpdD2+d6uEwK?ygu{kZ4! z3dhRljsq>}KFRXeJD&%rv_vd}{|$$ckUr)-zqhIMQ#!4TQqYQDUzxF?yIQxi|OOh_O8s0ed{!~^r|8J8CCH+vaa}fR5do~NK zl%!!T>TAcKiIJ9BLP6w=4^qgoLPx7!)n>znwf;$MU=2;+=bsHYy&X|+!^(}v5(%76 zQz*k(%U3cYhAl3cI24IoI(b!@tI2EkTZ(8qpGtSNL@O0I@ zwIbj0lgm2U@fsb$yR4XuJiPo2ASzr)-#mlcy3BPi^2K(Niyk+<-iWE!vL{TJ$Ri(U zQhNl1)|;)x-XLX5DP`E%oCV>S8cW^lsdHlX&+UY48-07{!#$p+p#yVZIwiycRlCn6 zZ;v(lH?CpKiTe&ZYR6@nDEh}z_ca|11DTQ5&{#y1kR+!WRr@$n!^Gh(P_`a|SLi=r z7SC5*Q+#8_f-vRw#<%^8q98tM#JlI%aZXro!ns3#;$Bz2x3ANyCiM^Qa)!I2@d}gb zwtcIZ`L{7&$i&}3^eR$+cT!Anax@>|qSnzmn`@OE!rY{D#M}5rXQLZsDg@6{!j3~W ztz~^uDOS0sb|;zaol2awZq(u1{b|)_IoN5J7HtTNX@hCA>54Drd6;=F{po5L%hMlb z*0QRb8lMt&GbAj3|DJd{F~nox{TZ)-D1!lexc8ucGAn@K9|@UE_~op_4jlD0*1#r` z61~g9ep`;cI$!3dsYA6Rcu_2`K$+Z^$U8a`!yWg07FfhRow>GyP1zWa%F8m8yxla# zN6vDB?ynh#uw-X899ug(%IEo&ERha>KiK6|Q6QV)q1HTd9!<3 zA%eM>dBzZQOme?sX|!RvD)j%u(m}_Nc$SxkxU7ac|-DFh+!DlN4%RK zUX^jI^;t{!$Hr!65a~2OeU7h^FQI9bFWSTD_O-U+t3)XrD5B7sTIc@SJilKI?oSWr z$D-al)y4ypJGyS|qtvTw+_zlTp zKi_7@6qOqTjf+FJlNes1OGEAE5t~-Nl37PF>!0(8@>?6s=ZeWX-p{G^9qR8@s6=)q z@)m^^ShaEDRXj|46t9r24#||;Zk%Tn;qo072;nBWmk@{slLC?Fp%=ZJg7Q|1YIO1#Pt( zFyPh!^DBXYfyGX&Pc^8*q*QWUds2i@mHN|ybQVCN5ZF~`g@rovpb~|;r5WZmlt1E< zSnDeJxb3u%$to&d?-y}8*x5-3<~I0M1@n8DksYMW!e{HH)=OtVra&U%`OiB(;{i$L z{IQJz-Pik2l|i433;M^xm&ZoYC1G~$w<(_*Z;n?lw!&OQrhbE0ne|A&;Kruz#l(6B z1gnRT{Akd#FgAeUP zE3f*b3fC+CvxBv`g{SDSsmFifID25wuf!usWu(LehLvtZ-NW?oAs(dlOiD@Sysba) z!uW$Jv{T1nG7eH$E|^Ub6cXy{N!<}V*>1*%Q5;ja6*_)cnSIY8S%voI@Ah`q;RJNx zm>n=HaRNQFTmX??US8_MmOapOc@3u$a+e2JS-HoWGjLPiFe^J7RhdAF>I(BH9I+$7 zfdKzyfH)rL{rJLJfBa!*t~GH<2GT&&PVx|G`c$t|R=_sd!23|-JMRIEgbW;pwc3_ay+dKD>+iuR`vjpa>cl`K z1&E=hCLidXL)){bFH?qN5m;NWTnw8E5I<-@YXN?ic=al}#RF>;vtf2-Hggr~HHVcGkgF|>=C?O&# z$(l=K&eeWzQ4y-0lJ#H83JO_JNb(O+5fewPd@g~ux%yv=E$Ap_$`?7s!tWZvH1L-|@p&aHF}JQn>ZpilyU5lR>sLZy)jr9u%+^}pj;vc!f)MkhP1 zw6ZW;1f?6a8_Gp3Io>$RuW>HJ=p;aa*WgQFDla}K)hhvpPac{4xg+WK={99QzzT)6 za_f;uC{YQ)FM#QD2-wl8!wdqhXCfMKyy>|xk!)bSC{ZjMMGylP(epe|L#aNDn><%k zL@FfMEgwB^RTTF_8==9;+1Wdr zVLV~+vUMBy_-h|s3=%TN6HP$l4lp^0n!~AeEm-T2_@9=0jdF)lbybz7hY*rsp!H`x z#GC(rS6)s>#>3K*t*@`I;-SO + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::RvlCodec Member List
+
+
+ +

This is the complete list of members for rtabmap::RvlCodec, including all inherited members.

+ + + + +
CompressRVL(const uint16_t *input, unsigned char *output, int numPixels) (defined in rtabmap::RvlCodec)rtabmap::RvlCodec
DecompressRVL(const unsigned char *input, uint16_t *output, int numPixels) (defined in rtabmap::RvlCodec)rtabmap::RvlCodec
RvlCodec() (defined in rtabmap::RvlCodec)rtabmap::RvlCodec
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1RvlCodec.html b/preview/pr-1773/api/latest/classrtabmap_1_1RvlCodec.html new file mode 100644 index 00000000..9130e04a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1RvlCodec.html @@ -0,0 +1,133 @@ + + + + + + + + +RTAB-Map: rtabmap::RvlCodec Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::RvlCodec Class Reference
+
+
+ + + + + + +

+Public Member Functions

+int CompressRVL (const uint16_t *input, unsigned char *output, int numPixels)
 
+void DecompressRVL (const unsigned char *input, uint16_t *output, int numPixels)
 
+

Detailed Description

+
+

Definition at line 14 of file rvl_codec.h.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT-members.html new file mode 100644 index 00000000..de3793a3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SIFT Member List
+
+
+ +

This is the complete list of members for rtabmap::SIFT, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::SIFT)rtabmap::SIFTinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::SIFTvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::SIFT)rtabmap::SIFTvirtual
SIFT(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SIFT)rtabmap::SIFT
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~SIFT() (defined in rtabmap::SIFT)rtabmap::SIFTvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT.html b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT.html new file mode 100644 index 00000000..6a2593d7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT.html @@ -0,0 +1,368 @@ + + + + + + + + +RTAB-Map: rtabmap::SIFT Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SIFT Class Reference
+
+
+ +

SIFT detector and descriptor (optional GPU / CudaSift). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::SIFT:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SIFT:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ SIFT (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

SIFT detector and descriptor (optional GPU / CudaSift).

+ +

Definition at line 348 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::SIFT::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::SIFT::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 355 of file Features2d.h.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::SIFT::isGpuAvailable () const
+
+overridevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT.js b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT.js new file mode 100644 index 00000000..d8d1c7de --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1SIFT = +[ + [ "isGpuAvailable", "classrtabmap_1_1SIFT.html#ad089f68ffc9ef1b42b5a9c2d5a5ecd81", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.map new file mode 100644 index 00000000..640719da --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.md5 new file mode 100644 index 00000000..f89ec220 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.md5 @@ -0,0 +1 @@ +90ab4dd941835dc75c8392627f4bedf1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..441462125d998c8a7cb9ccebcfad25b661d91365 GIT binary patch literal 3963 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.md5 new file mode 100644 index 00000000..f89ec220 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.md5 @@ -0,0 +1 @@ +90ab4dd941835dc75c8392627f4bedf1 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SIFT__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..441462125d998c8a7cb9ccebcfad25b661d91365 GIT binary patch literal 3963 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SURF Member List
+
+
+ +

This is the complete list of members for rtabmap::SURF, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::SURF)rtabmap::SURFinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::SURFvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::SURF)rtabmap::SURFvirtual
SURF(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SURF)rtabmap::SURF
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~SURF() (defined in rtabmap::SURF)rtabmap::SURFvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF.html b/preview/pr-1773/api/latest/classrtabmap_1_1SURF.html new file mode 100644 index 00000000..431850f4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF.html @@ -0,0 +1,372 @@ + + + + + + + + +RTAB-Map: rtabmap::SURF Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SURF Class Reference
+
+
+ +

SURF detector and descriptor (non-free / xfeatures2d depending on OpenCV build). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::SURF:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SURF:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ SURF (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

SURF detector and descriptor (non-free / xfeatures2d depending on OpenCV build).

+ +

Definition at line 320 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::SURF::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::SURF::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 327 of file Features2d.h.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::SURF::isGpuAvailable () const
+
+overridevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF.js b/preview/pr-1773/api/latest/classrtabmap_1_1SURF.js new file mode 100644 index 00000000..afba9711 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1SURF = +[ + [ "isGpuAvailable", "classrtabmap_1_1SURF.html#a1150923dbf7e1bfd066dba0c3b22db57", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY-members.html new file mode 100644 index 00000000..bd0574cb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SURF_DAISY Member List
+
+
+ +

This is the complete list of members for rtabmap::SURF_DAISY, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::SURF_DAISY)rtabmap::SURF_DAISYinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::SURFvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::SURF_DAISY)rtabmap::SURF_DAISYvirtual
SURF(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SURF)rtabmap::SURF
SURF_DAISY(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SURF_DAISY)rtabmap::SURF_DAISY
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~SURF() (defined in rtabmap::SURF)rtabmap::SURFvirtual
~SURF_DAISY() (defined in rtabmap::SURF_DAISY)rtabmap::SURF_DAISYvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY.html b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY.html new file mode 100644 index 00000000..65ad19d8 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::SURF_DAISY Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SURF_DAISY Class Reference
+
+
+ +

SURF detector + DAISY descriptors (OpenCV 3+ xfeatures2d). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::SURF_DAISY:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SURF_DAISY:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ SURF_DAISY (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::SURF
+ SURF (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

SURF detector + DAISY descriptors (OpenCV 3+ xfeatures2d).

+ +

Definition at line 747 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::SURF_DAISY::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::SURF.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::SURF_DAISY::getType () const
+
+inlineoverridevirtual
+
+ +

Reimplemented from rtabmap::SURF.

+ +

Definition at line 754 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.map new file mode 100644 index 00000000..6c810ebf --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.md5 new file mode 100644 index 00000000..7889bd87 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.md5 @@ -0,0 +1 @@ +223cb1c6f64173bd177a88a87270c568 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3bee643356023093ffad3f47249167ac00580c5e GIT binary patch literal 6732 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 CooOBb literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.map new file mode 100644 index 00000000..6c810ebf --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.md5 new file mode 100644 index 00000000..7889bd87 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.md5 @@ -0,0 +1 @@ +223cb1c6f64173bd177a88a87270c568 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__DAISY__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3bee643356023093ffad3f47249167ac00580c5e GIT binary patch literal 6732 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 CooOBb literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK-members.html new file mode 100644 index 00000000..13a98b3c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK-members.html @@ -0,0 +1,171 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SURF_FREAK Member List
+
+
+ +

This is the complete list of members for rtabmap::SURF_FREAK, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::SURF_FREAK)rtabmap::SURF_FREAKinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::SURFvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::SURF_FREAK)rtabmap::SURF_FREAKvirtual
SURF(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SURF)rtabmap::SURF
SURF_FREAK(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SURF_FREAK)rtabmap::SURF_FREAK
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~SURF() (defined in rtabmap::SURF)rtabmap::SURFvirtual
~SURF_FREAK() (defined in rtabmap::SURF_FREAK)rtabmap::SURF_FREAKvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK.html b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK.html new file mode 100644 index 00000000..08e00763 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK.html @@ -0,0 +1,347 @@ + + + + + + + + +RTAB-Map: rtabmap::SURF_FREAK Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SURF_FREAK Class Reference
+
+
+ +

SURF detector + FREAK descriptors. + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::SURF_FREAK:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SURF_FREAK:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ SURF_FREAK (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
- Public Member Functions inherited from rtabmap::SURF
+ SURF (const ParametersMap &parameters=ParametersMap())
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

SURF detector + FREAK descriptors.

+ +

Definition at line 559 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::SURF_FREAK::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::SURF.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::SURF_FREAK::getType () const
+
+inlineoverridevirtual
+
+ +

Reimplemented from rtabmap::SURF.

+ +

Definition at line 566 of file Features2d.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.map new file mode 100644 index 00000000..442aca12 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.md5 new file mode 100644 index 00000000..269b5b41 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.md5 @@ -0,0 +1 @@ +420b9b70d686f5fdea869302f8c06b14 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e71a30dfd99b35c2217472f26e1afab01656c130 GIT binary patch literal 6620 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 + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.md5 new file mode 100644 index 00000000..269b5b41 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.md5 @@ -0,0 +1 @@ +420b9b70d686f5fdea869302f8c06b14 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__FREAK__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e71a30dfd99b35c2217472f26e1afab01656c130 GIT binary patch literal 6620 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.md5 new file mode 100644 index 00000000..cbe85f74 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.md5 @@ -0,0 +1 @@ +bfe210593c625a739dd30ab626aa8a7e \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f72f9f3f9588aca26aa2151e9f5fd9015f75dd26 GIT binary patch literal 4255 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 XoidKeF$)3zIFM+nLRD}Nt={|}UmtIr literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.map new file mode 100644 index 00000000..e9f22d1f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.md5 new file mode 100644 index 00000000..0ffcc7f3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.md5 @@ -0,0 +1 @@ +329488b715667a6a6f20c7c0205e835e \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SURF__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7765d3864f11703997d8c8ce37b006ed31fcb7 GIT binary patch literal 10424 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SensorCapture Member List
+
+
+ +

This is the complete list of members for rtabmap::SensorCapture, including all inherited members.

+ + + + + + + + + + + + + + + +
captureData(SensorCaptureInfo *info=0)=0rtabmap::SensorCaptureprotectedpure virtual
getFrameRate() constrtabmap::SensorCaptureinline
getLocalTransform() constrtabmap::SensorCaptureinline
getNextSeqID()rtabmap::SensorCaptureinlineprotected
getPose(double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)rtabmap::SensorCaptureinlinevirtual
getSerial() const =0rtabmap::SensorCapturepure virtual
init(const std::string &calibrationFolder=".", const std::string &cameraName="")=0rtabmap::SensorCapturepure virtual
odomProvided() constrtabmap::SensorCaptureinlinevirtual
resetTimer()rtabmap::SensorCapture
SensorCapture(float frameRate=0, const Transform &localTransform=Transform::getIdentity())rtabmap::SensorCaptureprotected
setFrameRate(float frameRate)rtabmap::SensorCaptureinline
setLocalTransform(const Transform &localTransform)rtabmap::SensorCaptureinline
takeData(SensorCaptureInfo *info=0)rtabmap::SensorCapture
~SensorCapture()rtabmap::SensorCapturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.html new file mode 100644 index 00000000..90285c80 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.html @@ -0,0 +1,773 @@ + + + + + + + + +RTAB-Map: rtabmap::SensorCapture Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SensorCapture Class Referenceabstract
+
+
+ +

Abstract base class for sensor data capture (cameras, lidars, etc.) + More...

+ +

#include <SensorCapture.h>

+
+Inheritance diagram for rtabmap::SensorCapture:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~SensorCapture ()
 Virtual destructor.
 
SensorData takeData (SensorCaptureInfo *info=0)
 Captures sensor data with frame rate control.
 
virtual bool init (const std::string &calibrationFolder=".", const std::string &cameraName="")=0
 Initializes the sensor.
 
virtual std::string getSerial () const =0
 Returns the sensor's serial number or unique identifier.
 
virtual bool odomProvided () const
 Checks if the sensor provides odometry poses.
 
virtual bool getPose (double stamp, Transform &pose, cv::Mat &covariance, double maxWaitTime=0.06)
 Gets the sensor's pose estimate at a specific timestamp.
 
float getFrameRate () const
 Returns the target frame rate.
 
const Transform & getLocalTransform () const
 Returns the local transform from base frame to sensor frame.
 
void setFrameRate (float frameRate)
 Sets the target frame rate.
 
void setLocalTransform (const Transform &localTransform)
 Sets the local transform from base frame to sensor frame.
 
void resetTimer ()
 Resets the frame rate timer.
 
+ + + + + + + + + + +

+Protected Member Functions

 SensorCapture (float frameRate=0, const Transform &localTransform=Transform::getIdentity())
 Protected constructor.
 
virtual SensorData captureData (SensorCaptureInfo *info=0)=0
 Pure virtual method to capture sensor data.
 
int getNextSeqID ()
 Gets the next sequence ID.
 
+

Detailed Description

+

Abstract base class for sensor data capture (cameras, lidars, etc.)

+

SensorCapture provides a unified interface for capturing sensor data from various sensor types including cameras (RGB-D, stereo, mono) and lidars. It handles frame rate control, local transform management, and provides a common API for sensor initialization and data capture.

+

The class implements the Template Method pattern:

    +
  • takeData() handles frame rate control and timing, then calls the pure virtual captureData() method implemented by derived classes
  • +
  • Derived classes must implement captureData() to perform the actual sensor capture
  • +
+

Key features:

    +
  • Frame rate control: Automatic throttling to maintain target frame rate
  • +
  • Local transform: Transform from robot base frame to sensor frame
  • +
  • Capture timing: Tracks capture time and provides it via SensorCaptureInfo
  • +
  • Sequence IDs: Automatic sequence number generation for captured data
  • +
+

Derived classes include:

    +
  • Camera: Base class for all camera types (RGB-D, stereo, mono, file readers, etc.)
  • +
  • Lidar: Base class for lidar sensors
  • +
+
Note
This is an abstract class. Use concrete implementations like CameraRGBD, CameraStereo, LidarVLP16, etc., or create custom derived classes.
+
See also
Camera
+
+Lidar
+
+SensorData
+
+SensorCaptureInfo
+
+SensorCaptureThread
+ +

Definition at line 78 of file SensorCapture.h.

+

Constructor & Destructor Documentation

+ +

◆ SensorCapture()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::SensorCapture::SensorCapture (float frameRate = 0,
const Transform & localTransform = Transform::getIdentity() 
)
+
+protected
+
+ +

Protected constructor.

+

Creates a SensorCapture instance with the specified frame rate and local transform. This constructor is protected because SensorCapture is an abstract base class and should not be instantiated directly.

+
Parameters
+ + + +
frameRateTarget frame rate in Hz (0 = unlimited, capture as fast as possible)
localTransformTransform from base frame to sensor frame (default: identity)
+
+
+ +
+
+

Member Function Documentation

+ +

◆ takeData()

+ +
+
+ + + + + + + + +
SensorData rtabmap::SensorCapture::takeData (SensorCaptureInfo * info = 0)
+
+ +

Captures sensor data with frame rate control.

+

This method handles frame rate throttling and timing, then calls the pure virtual captureData() method to perform the actual capture.

+

The method:

    +
  • Enforces the target frame rate by sleeping if necessary
  • +
  • Measures capture time and stores it in SensorCaptureInfo
  • +
  • Assigns sequence IDs to captured data
  • +
  • Warns if the target frame rate cannot be reached
  • +
+
Parameters
+ + +
infoOptional pointer to SensorCaptureInfo to fill with capture metadata (ID, timestamp, capture time). If null, no info is filled.
+
+
+
Returns
SensorData containing the captured sensor data
+
Note
If frame rate is 0, data is captured as fast as possible without throttling.
+
+The returned SensorData should have rectified images if calibration was loaded.
+
See also
captureData()
+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::SensorCapture::init (const std::string & calibrationFolder = ".",
const std::string & cameraName = "" 
)
+
+pure virtual
+
+ +

Initializes the sensor.

+

Pure virtual method that must be implemented by derived classes to initialize the sensor hardware or data source. This typically involves:

    +
  • Opening device connections or file streams
  • +
  • Loading camera calibration parameters
  • +
  • Configuring sensor settings
  • +
+
Parameters
+ + + +
calibrationFolderDirectory path where calibration files are located (default: current directory ".")
cameraNameBase name of the camera for loading calibration files (default: empty string)
+
+
+
Returns
True if initialization was successful, false otherwise
+
Note
Must be called before calling takeData() or captureData()
+ +

Implemented in rtabmap::CameraDepthAI, rtabmap::CameraFreenect, rtabmap::CameraFreenect2, rtabmap::CameraImages, rtabmap::CameraK4A, rtabmap::CameraK4W2, rtabmap::CameraMyntEye, rtabmap::CameraOpenni, rtabmap::CameraOpenNI2, rtabmap::CameraOpenNICV, rtabmap::CameraOrbbecSDK, rtabmap::CameraRealSense, rtabmap::CameraRealSense2, rtabmap::CameraRGBDImages, rtabmap::CameraSeerSense, rtabmap::CameraStereoDC1394, rtabmap::CameraStereoFlyCapture2, rtabmap::CameraStereoImages, rtabmap::CameraStereoTara, rtabmap::CameraStereoVideo, rtabmap::CameraStereoZed, rtabmap::CameraStereoZedOC, rtabmap::CameraVideo, rtabmap::DBReader, and rtabmap::LidarVLP16.

+ +
+
+ +

◆ getSerial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::SensorCapture::getSerial () const
+
+pure virtual
+
+
+ +

◆ odomProvided()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::SensorCapture::odomProvided () const
+
+inlinevirtual
+
+ +

Checks if the sensor provides odometry poses.

+

Some sensors (e.g., visual-inertial cameras) can provide pose estimates directly. This method indicates whether the sensor supports pose queries.

+
Returns
True if the sensor provides odometry poses, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
getPose()
+ +

Reimplemented in rtabmap::CameraImages, rtabmap::CameraMyntEye, rtabmap::CameraRealSense, rtabmap::CameraRealSense2, rtabmap::CameraSeerSense, rtabmap::CameraStereoZed, and rtabmap::DBReader.

+ +

Definition at line 152 of file SensorCapture.h.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool rtabmap::SensorCapture::getPose (double stamp,
Transform & pose,
cv::Mat & covariance,
double maxWaitTime = 0.06 
)
+
+inlinevirtual
+
+ +

Gets the sensor's pose estimate at a specific timestamp.

+

Queries the sensor for its pose estimate at the given timestamp. This is typically used for sensors that provide visual-inertial odometry or other pose estimation capabilities.

+
Parameters
+ + + + + +
stampTimestamp in seconds for which to query the pose
[out]poseOutput transform representing the sensor pose
[out]covarianceOutput covariance matrix (6x6) representing twist uncertainty
maxWaitTimeMaximum time in seconds to wait for pose data (default: 0.06)
+
+
+
Returns
True if pose was successfully retrieved, false otherwise
+
Note
Default implementation returns false. Derived classes should override if they support pose estimation.
+
See also
odomProvided()
+ +

Reimplemented in rtabmap::CameraSeerSense, rtabmap::CameraStereoZed, rtabmap::CameraRealSense2, and rtabmap::DBReader.

+ +

Definition at line 172 of file SensorCapture.h.

+ +
+
+ +

◆ getFrameRate()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::SensorCapture::getFrameRate () const
+
+inline
+
+ +

Returns the target frame rate.

+
Returns
Frame rate in Hz (0 = unlimited, capture as fast as possible)
+ +

Definition at line 180 of file SensorCapture.h.

+ +
+
+ +

◆ getLocalTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::SensorCapture::getLocalTransform () const
+
+inline
+
+ +

Returns the local transform from base frame to sensor frame.

+
Returns
Const reference to the local transform
+ +

Definition at line 186 of file SensorCapture.h.

+ +
+
+ +

◆ setFrameRate()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCapture::setFrameRate (float frameRate)
+
+inline
+
+ +

Sets the target frame rate.

+

Controls how often takeData() will capture data. The method will throttle captures to maintain the target rate.

+
Parameters
+ + +
frameRateTarget frame rate in Hz (0 = unlimited, capture as fast as possible)
+
+
+
Note
Setting frame rate to 0 disables throttling and captures as fast as possible.
+ +

Definition at line 200 of file SensorCapture.h.

+ +
+
+ +

◆ setLocalTransform()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCapture::setLocalTransform (const Transform & localTransform)
+
+inline
+
+ +

Sets the local transform from base frame to sensor frame.

+

The local transform represents the pose of the sensor relative to the robot's base frame. This is used to transform sensor data into the robot's coordinate system.

+
Parameters
+ + +
localTransformTransform from base frame to sensor frame
+
+
+ +

Definition at line 210 of file SensorCapture.h.

+ +
+
+ +

◆ resetTimer()

+ +
+
+ + + + + + + +
void rtabmap::SensorCapture::resetTimer ()
+
+ +

Resets the frame rate timer.

+

Resets the internal timer used for frame rate control. This is useful when starting a new capture session or after a pause.

+ +
+
+ +

◆ captureData()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SensorData rtabmap::SensorCapture::captureData (SensorCaptureInfo * info = 0)
+
+protectedpure virtual
+
+ +

Pure virtual method to capture sensor data.

+

This method must be implemented by derived classes to perform the actual sensor data capture. It is called by takeData() after frame rate throttling.

+

The returned SensorData should:

    +
  • Have rectified images if calibration was loaded during init()
  • +
  • Include proper timestamps
  • +
  • Contain valid sensor data (images, depth, laser scans, etc.)
  • +
+
Parameters
+ + +
infoOptional pointer to SensorCaptureInfo to fill with capture metadata. The base class will fill ID, timestamp, and capture time, but derived classes can add additional information.
+
+
+
Returns
SensorData containing the captured sensor data
+
Note
If capture fails, return an empty SensorData (id=0, stamp=0.0).
+
+RGB and depth images should be already rectified if calibration was loaded.
+
See also
takeData()
+ +

Implemented in rtabmap::LidarVLP16.

+ +
+
+ +

◆ getNextSeqID()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::SensorCapture::getNextSeqID ()
+
+inlineprotected
+
+ +

Gets the next sequence ID.

+

Returns and increments the internal sequence counter. This is used to assign unique sequence numbers to captured data.

+
Returns
Next sequence ID (starts at 1, increments with each call)
+ +

Definition at line 264 of file SensorCapture.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.js b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.js new file mode 100644 index 00000000..d6e4e140 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture.js @@ -0,0 +1,17 @@ +var classrtabmap_1_1SensorCapture = +[ + [ "~SensorCapture", "classrtabmap_1_1SensorCapture.html#a0578f6540ecdf8c4b3b747d511ecb625", null ], + [ "SensorCapture", "classrtabmap_1_1SensorCapture.html#adf4b1dfd8e5b45b8eecf938a92dbae94", null ], + [ "takeData", "classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf", null ], + [ "init", "classrtabmap_1_1SensorCapture.html#a1c0cd843969fab53f157cbe0fd333b8a", null ], + [ "getSerial", "classrtabmap_1_1SensorCapture.html#a7830e571e45752f9d8f30fa806f6aa64", null ], + [ "odomProvided", "classrtabmap_1_1SensorCapture.html#aee217767808a9df9c63a27b284461c89", null ], + [ "getPose", "classrtabmap_1_1SensorCapture.html#a2f940d75366088bfae0164e1803ffe9a", null ], + [ "getFrameRate", "classrtabmap_1_1SensorCapture.html#af7de847c118ec1ba77a5c9f29f7efece", null ], + [ "getLocalTransform", "classrtabmap_1_1SensorCapture.html#a99829249c51fd08c32310b788b00b663", null ], + [ "setFrameRate", "classrtabmap_1_1SensorCapture.html#a1e195970f52334094174783c5fd06456", null ], + [ "setLocalTransform", "classrtabmap_1_1SensorCapture.html#a0ea4e217047c234bcfcb9866e36ea7c0", null ], + [ "resetTimer", "classrtabmap_1_1SensorCapture.html#afa9923bb4a3b88e6dbf4c8ae7f060437", null ], + [ "captureData", "classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958", null ], + [ "getNextSeqID", "classrtabmap_1_1SensorCapture.html#acbffaf17772639bc65b0a5457bc56b22", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo-members.html new file mode 100644 index 00000000..4d7b8b9a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo-members.html @@ -0,0 +1,135 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.html new file mode 100644 index 00000000..d231d53c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.html @@ -0,0 +1,597 @@ + + + + + + + + +RTAB-Map: rtabmap::SensorCaptureInfo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SensorCaptureInfo Class Reference
+
+
+ +

Metadata structure for sensor data capture and processing. + More...

+ +

#include <SensorCaptureInfo.h>

+
+Collaboration diagram for rtabmap::SensorCaptureInfo:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

 SensorCaptureInfo ()
 Default constructor.
 
virtual ~SensorCaptureInfo ()
 Virtual destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

std::string cameraName
 Camera/sensor name identifier.
 
int id
 Capture ID (typically matches SensorData ID)
 
double stamp
 Timestamp in seconds (typically matches SensorData stamp)
 
float timeCapture
 Time to capture data from the sensor (seconds)
 
float timeDeskewing
 Time for laser scan deskewing (seconds)
 
float timeDisparity
 Time to compute stereo disparity (seconds)
 
float timeMirroring
 Time for image mirroring/flipping (seconds)
 
float timeStereoExposureCompensation
 Time for stereo exposure compensation (seconds)
 
float timeImageDecimation
 Time for image decimation/downsampling (seconds)
 
float timeHistogramEqualization
 Time for histogram equalization (seconds)
 
float timeScanFromDepth
 Time to convert depth image to laser scan (seconds)
 
float timeUndistortDepth
 Time to undistort depth image (seconds)
 
float timeBilateralFiltering
 Time for bilateral filtering of depth (seconds)
 
float timeTotal
 Total processing time (seconds)
 
Transform odomPose
 Odometry pose at the time of capture (in odometry coordinate frame)
 
cv::Mat odomCovariance
 Odometry twist covariance matrix (6x6, CV_64FC1). Default: identity matrix.
 
std::vector< float > odomVelocity
 6DOF odometry velocity [vx, vy, vz, vroll, vpitch, vyaw] (m/s, rad/s)
 
+

Detailed Description

+

Metadata structure for sensor data capture and processing.

+

SensorCaptureInfo contains metadata about sensor data capture, including timing information for various processing steps, camera identification, and odometry information. This information is typically attached to SensorEvent objects to provide context about how the sensor data was captured and processed.

+

The class tracks timing for various processing stages:

    +
  • Capture: Time to capture data from the sensor
  • +
  • Processing: Time for various image processing steps (deskewing, disparity, mirroring, exposure compensation, decimation, histogram equalization, etc.)
  • +
  • Depth processing: Time for depth-related operations (scan from depth, undistort depth, bilateral filtering)
  • +
  • Total: Total processing time
  • +
+

Odometry information includes:

    +
  • Pose: The odometry pose at the time of capture
  • +
  • Covariance: Uncertainty of the odometry twist (6x6 matrix)
  • +
  • Velocity: 6DOF velocity vector [vx, vy, vz, vroll, vpitch, vyaw]
  • +
+
Note
All timing values are in seconds (float).
+
+The odometry covariance matrix is initialized to identity by default.
+
See also
SensorEvent
+
+SensorData
+ +

Definition at line 64 of file SensorCaptureInfo.h.

+

Constructor & Destructor Documentation

+ +

◆ SensorCaptureInfo()

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::SensorCaptureInfo::SensorCaptureInfo ()
+
+inline
+
+ +

Default constructor.

+

Initializes all fields to default values:

    +
  • cameraName: empty string
  • +
  • id: 0
  • +
  • stamp: 0.0
  • +
  • All timing fields: 0.0f
  • +
  • odomPose: null transform
  • +
  • odomCovariance: 6x6 identity matrix
  • +
  • odomVelocity: empty vector
  • +
+ +

Definition at line 80 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ ~SensorCaptureInfo()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::SensorCaptureInfo::~SensorCaptureInfo ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 102 of file SensorCaptureInfo.h.

+ +
+
+

Member Data Documentation

+ +

◆ cameraName

+ +
+
+ + + + +
std::string rtabmap::SensorCaptureInfo::cameraName
+
+ +

Camera/sensor name identifier.

+ +

Definition at line 104 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ id

+ +
+
+ + + + +
int rtabmap::SensorCaptureInfo::id
+
+ +

Capture ID (typically matches SensorData ID)

+ +

Definition at line 105 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ stamp

+ +
+
+ + + + +
double rtabmap::SensorCaptureInfo::stamp
+
+ +

Timestamp in seconds (typically matches SensorData stamp)

+ +

Definition at line 106 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeCapture

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeCapture
+
+ +

Time to capture data from the sensor (seconds)

+ +

Definition at line 109 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeDeskewing

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeDeskewing
+
+ +

Time for laser scan deskewing (seconds)

+ +

Definition at line 110 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeDisparity

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeDisparity
+
+ +

Time to compute stereo disparity (seconds)

+ +

Definition at line 111 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeMirroring

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeMirroring
+
+ +

Time for image mirroring/flipping (seconds)

+ +

Definition at line 112 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeStereoExposureCompensation

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeStereoExposureCompensation
+
+ +

Time for stereo exposure compensation (seconds)

+ +

Definition at line 113 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeImageDecimation

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeImageDecimation
+
+ +

Time for image decimation/downsampling (seconds)

+ +

Definition at line 114 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeHistogramEqualization

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeHistogramEqualization
+
+ +

Time for histogram equalization (seconds)

+ +

Definition at line 115 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeScanFromDepth

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeScanFromDepth
+
+ +

Time to convert depth image to laser scan (seconds)

+ +

Definition at line 116 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeUndistortDepth

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeUndistortDepth
+
+ +

Time to undistort depth image (seconds)

+ +

Definition at line 117 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeBilateralFiltering

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeBilateralFiltering
+
+ +

Time for bilateral filtering of depth (seconds)

+ +

Definition at line 118 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ timeTotal

+ +
+
+ + + + +
float rtabmap::SensorCaptureInfo::timeTotal
+
+ +

Total processing time (seconds)

+ +

Definition at line 119 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ odomPose

+ +
+
+ + + + +
Transform rtabmap::SensorCaptureInfo::odomPose
+
+ +

Odometry pose at the time of capture (in odometry coordinate frame)

+ +

Definition at line 122 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ odomCovariance

+ +
+
+ + + + +
cv::Mat rtabmap::SensorCaptureInfo::odomCovariance
+
+ +

Odometry twist covariance matrix (6x6, CV_64FC1). Default: identity matrix.

+ +

Definition at line 123 of file SensorCaptureInfo.h.

+ +
+
+ +

◆ odomVelocity

+ +
+
+ + + + +
std::vector<float> rtabmap::SensorCaptureInfo::odomVelocity
+
+ +

6DOF odometry velocity [vx, vy, vz, vroll, vpitch, vyaw] (m/s, rad/s)

+ +

Definition at line 124 of file SensorCaptureInfo.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.js b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.js new file mode 100644 index 00000000..c9df6645 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo.js @@ -0,0 +1,22 @@ +var classrtabmap_1_1SensorCaptureInfo = +[ + [ "SensorCaptureInfo", "classrtabmap_1_1SensorCaptureInfo.html#a8f315fb6fe3a16b77e3252d66088db09", null ], + [ "~SensorCaptureInfo", "classrtabmap_1_1SensorCaptureInfo.html#a31eca8aee2a61df0d35d91edbc54ac53", null ], + [ "cameraName", "classrtabmap_1_1SensorCaptureInfo.html#a8f4c2fb07970cb40bf2fe7ad19743d23", null ], + [ "id", "classrtabmap_1_1SensorCaptureInfo.html#a2cd84bbdd9bd60f906b9b925ab0d302c", null ], + [ "stamp", "classrtabmap_1_1SensorCaptureInfo.html#ab9f52d419f810e3044f56583ed230902", null ], + [ "timeCapture", "classrtabmap_1_1SensorCaptureInfo.html#a14653b32350b0e5437d0effd8af03ddd", null ], + [ "timeDeskewing", "classrtabmap_1_1SensorCaptureInfo.html#a94779ab38ab44408fd81df43338a03dd", null ], + [ "timeDisparity", "classrtabmap_1_1SensorCaptureInfo.html#ae7178e4a406254614a227904c08035a7", null ], + [ "timeMirroring", "classrtabmap_1_1SensorCaptureInfo.html#a2e95b64dd13e9960460965f7121dc948", null ], + [ "timeStereoExposureCompensation", "classrtabmap_1_1SensorCaptureInfo.html#a319070f2296632120e1101bf8ea18cda", null ], + [ "timeImageDecimation", "classrtabmap_1_1SensorCaptureInfo.html#ad270963d02944fa0e93751304d7a14ae", null ], + [ "timeHistogramEqualization", "classrtabmap_1_1SensorCaptureInfo.html#aa5b8ab859cae2ef8b71b2768c9119204", null ], + [ "timeScanFromDepth", "classrtabmap_1_1SensorCaptureInfo.html#a0903975d22d60fe339a18c7f3f114934", null ], + [ "timeUndistortDepth", "classrtabmap_1_1SensorCaptureInfo.html#afddf554ad1f8a400d3c96c3ec1be61bf", null ], + [ "timeBilateralFiltering", "classrtabmap_1_1SensorCaptureInfo.html#a0052a472c18e314445e2af75f11e3fe2", null ], + [ "timeTotal", "classrtabmap_1_1SensorCaptureInfo.html#a974419b0d05f9c56db0ec40258b56535", null ], + [ "odomPose", "classrtabmap_1_1SensorCaptureInfo.html#a5c086f941e4fa816ec608779ac03f640", null ], + [ "odomCovariance", "classrtabmap_1_1SensorCaptureInfo.html#a8f5b899e1120bc8e68cdfd1b46327107", null ], + [ "odomVelocity", "classrtabmap_1_1SensorCaptureInfo.html#a5f544019df408896fed21c48fb3c0197", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.map new file mode 100644 index 00000000..d534dd64 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.md5 new file mode 100644 index 00000000..3f7b9e08 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.md5 @@ -0,0 +1 @@ +42df1b3b486aff70ed73c08ec3cc7905 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureInfo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..de0a6a9b1ef78c192cc9be6b017da4c17b3172c9 GIT binary patch literal 6246 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread-members.html new file mode 100644 index 00000000..6938d4ec --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread-members.html @@ -0,0 +1,190 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SensorCaptureThread Member List
+
+
+ +

This is the complete list of members for rtabmap::SensorCaptureThread, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
camera()rtabmap::SensorCaptureThreadinline
Create(const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Create(unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const (defined in UThreadC< void >)UThreadC< void >inline
currentThreadId() (defined in UThread)UThreadinlinestatic
Detach(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
disableBilateralFiltering()rtabmap::SensorCaptureThreadinline
disableFeatureDetection()rtabmap::SensorCaptureThread
disableIMUFiltering()rtabmap::SensorCaptureThread
enableBilateralFiltering(float sigmaS, float sigmaR)rtabmap::SensorCaptureThread
enableFeatureDetection(const ParametersMap &parameters=ParametersMap())rtabmap::SensorCaptureThread
enableIMUFiltering(int filteringStrategy=1, const ParametersMap &parameters=ParametersMap(), bool baseFrameConversion=false)rtabmap::SensorCaptureThread
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Exit() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
getThreadHandle() const (defined in UThread)UThreadinline
getThreadId() const (defined in UThread)UThreadinline
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handle typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
Handler typedef (defined in UThreadC< void >)UThreadC< void >
isCapturing() constrtabmap::SensorCaptureThreadinline
isCreating() constUThread
isIdle() constUThread
isKilled() constUThread
isPaused() constrtabmap::SensorCaptureThreadinline
isRunning() constUThread
join(bool killFirst=false)UThread
Join(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
Kill(const Handle &H) (defined in UThreadC< void >)UThreadC< void >inlinestatic
kill()UThread
kPAboveNormal enum value (defined in UThread)UThread
kPBelowNormal enum value (defined in UThread)UThread
kPLow enum value (defined in UThread)UThread
kPNormal enum value (defined in UThread)UThread
kPRealTime enum value (defined in UThread)UThread
lidar()rtabmap::SensorCaptureThreadinline
odomProvided() constrtabmap::SensorCaptureThread
odomSensor()rtabmap::SensorCaptureThreadinline
post(UEvent *event, bool async=true) constUEventsSenderprotected
postUpdate(SensorData *data, SensorCaptureInfo *info=0) constrtabmap::SensorCaptureThread
Priority enum nameUThread
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
Self() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
SensorCaptureThread(Camera *camera, const ParametersMap &parameters=ParametersMap())rtabmap::SensorCaptureThread
SensorCaptureThread(Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())rtabmap::SensorCaptureThread
SensorCaptureThread(Lidar *lidar, const ParametersMap &parameters=ParametersMap())rtabmap::SensorCaptureThread
SensorCaptureThread(Lidar *lidar, Camera *camera, const ParametersMap &parameters=ParametersMap())rtabmap::SensorCaptureThread
SensorCaptureThread(Lidar *lidar, SensorCapture *odomSensor, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())rtabmap::SensorCaptureThread
SensorCaptureThread(Lidar *lidar, Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())rtabmap::SensorCaptureThread
setAffinity(int cpu=0)UThread
setColorOnly(bool colorOnly)rtabmap::SensorCaptureThreadinline
setDistortionModel(const std::string &path)rtabmap::SensorCaptureThread
setFrameRate(float frameRate)rtabmap::SensorCaptureThread
setHistogramMethod(int histogramMethod)rtabmap::SensorCaptureThreadinline
setImageDecimation(int decimation)rtabmap::SensorCaptureThreadinline
setImageRate(float frameRate)rtabmap::SensorCaptureThreadinline
setMirroringEnabled(bool enabled)rtabmap::SensorCaptureThreadinline
setOdomAsGroundTruth(bool enabled)rtabmap::SensorCaptureThreadinline
setPriority(Priority priority)UThread
setScanParameters(bool fromDepth, int downsampleStep, float rangeMin, float rangeMax, float voxelSize, int normalsK, float normalsRadius, bool forceGroundNormalsUp, bool deskewing)rtabmap::SensorCaptureThread
setScanParameters(bool fromDepth, int downsampleStep=1, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalsK=0, float normalsRadius=0.0f, float groundNormalsUp=0.0f, bool deskewing=false)rtabmap::SensorCaptureThread
setStereoExposureCompensation(bool enabled)rtabmap::SensorCaptureThreadinline
setStereoToDepth(bool enabled)rtabmap::SensorCaptureThreadinline
start()UThread
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
TestCancel() (defined in UThreadC< void >)UThreadC< void >inlineprotectedstatic
UEventsSender() (defined in UEventsSender)UEventsSenderinline
UThread(Priority priority=kPNormal)UThread
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
UThreadC() (defined in UThreadC< void >)UThreadC< void >inlineprotected
~SensorCaptureThread()rtabmap::SensorCaptureThreadvirtual
~UEventsSender() (defined in UEventsSender)UEventsSendervirtual
~UThread()UThreadvirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
~UThreadC() (defined in UThreadC< void >)UThreadC< void >inlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.html new file mode 100644 index 00000000..322fdd38 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.html @@ -0,0 +1,1642 @@ + + + + + + + + +RTAB-Map: rtabmap::SensorCaptureThread Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SensorCaptureThread Class Reference
+
+
+ +

Thread-based sensor data capture and event posting for RTAB-Map. + More...

+ +

#include <SensorCaptureThread.h>

+
+Inheritance diagram for rtabmap::SensorCaptureThread:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SensorCaptureThread:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SensorCaptureThread (Camera *camera, const ParametersMap &parameters=ParametersMap())
 Constructor for camera-only capture.
 
 SensorCaptureThread (Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())
 Constructor for camera with odometry sensor.
 
 SensorCaptureThread (Lidar *lidar, const ParametersMap &parameters=ParametersMap())
 Constructor for lidar-only capture.
 
 SensorCaptureThread (Lidar *lidar, Camera *camera, const ParametersMap &parameters=ParametersMap())
 Constructor for lidar with camera.
 
 SensorCaptureThread (Lidar *lidar, SensorCapture *odomSensor, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())
 Constructor for lidar with odometry sensor.
 
 SensorCaptureThread (Lidar *lidar, Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())
 Constructor for lidar with camera and odometry sensor.
 
virtual ~SensorCaptureThread ()
 Virtual destructor.
 
void setMirroringEnabled (bool enabled)
 Enables or disables image mirroring (horizontal flip)
 
void setStereoExposureCompensation (bool enabled)
 Enables or disables stereo exposure compensation.
 
void setColorOnly (bool colorOnly)
 Sets whether to capture color images only (skip depth)
 
void setImageDecimation (int decimation)
 Sets image decimation factor.
 
void setHistogramMethod (int histogramMethod)
 Sets histogram equalization method.
 
void setStereoToDepth (bool enabled)
 Enables or disables stereo-to-depth conversion.
 
void setFrameRate (float frameRate)
 Sets the target frame rate for capture.
 
RTABMAP_DEPRECATED void setImageRate (float frameRate)
 Sets the target image capture rate (deprecated)
 
void setDistortionModel (const std::string &path)
 Sets the depth distortion model file path.
 
void setOdomAsGroundTruth (bool enabled)
 Sets whether odometry poses should be treated as ground truth.
 
void enableBilateralFiltering (float sigmaS, float sigmaR)
 Enables bilateral filtering for depth images.
 
void disableBilateralFiltering ()
 Disables bilateral filtering.
 
void enableIMUFiltering (int filteringStrategy=1, const ParametersMap &parameters=ParametersMap(), bool baseFrameConversion=false)
 Enables IMU data filtering.
 
+void disableIMUFiltering ()
 Disables IMU data filtering.
 
void enableFeatureDetection (const ParametersMap &parameters=ParametersMap())
 Enables automatic feature detection on captured images.
 
+void disableFeatureDetection ()
 Disables automatic feature detection.
 
RTABMAP_DEPRECATED void setScanParameters (bool fromDepth, int downsampleStep, float rangeMin, float rangeMax, float voxelSize, int normalsK, float normalsRadius, bool forceGroundNormalsUp, bool deskewing)
 Sets lidar scan processing parameters (deprecated)
 
void setScanParameters (bool fromDepth, int downsampleStep=1, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalsK=0, float normalsRadius=0.0f, float groundNormalsUp=0.0f, bool deskewing=false)
 Sets lidar scan processing parameters.
 
void postUpdate (SensorData *data, SensorCaptureInfo *info=0) const
 Post-processing hook called before posting SensorEvent.
 
bool isPaused () const
 Checks if the capture thread is paused.
 
bool isCapturing () const
 Checks if the capture thread is actively capturing.
 
bool odomProvided () const
 Checks if odometry is provided by the sensors.
 
Camera * camera ()
 Returns the camera pointer.
 
SensorCapture * odomSensor ()
 Returns the odometry sensor pointer.
 
Lidar * lidar ()
 Returns the lidar pointer.
 
- Public Member Functions inherited from UThread
 UThread (Priority priority=kPNormal)
 
virtual ~UThread ()
 
void start ()
 
void kill ()
 
void join (bool killFirst=false)
 
void setPriority (Priority priority)
 
void setAffinity (int cpu=0)
 
bool isCreating () const
 
bool isRunning () const
 
bool isIdle () const
 
bool isKilled () const
 
Handle getThreadHandle () const
 
unsigned long getThreadId () const
 
- Public Member Functions inherited from UThreadC< void >
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
int Create (unsigned long &ThreadId, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from UThread
enum  Priority {
+  kPLow +, kPBelowNormal +, kPNormal +, kPAboveNormal +,
+  kPRealTime +
+ }
 
- Public Types inherited from UThreadC< void >
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
typedef THREAD_HANDLE Handle
 
typedef void(* Handler) ()
 
- Static Public Member Functions inherited from UThread
static unsigned long currentThreadId ()
 
- Static Public Member Functions inherited from UThreadC< void >
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (Handle H)
 
static int Kill (Handle H)
 
static int Detach (Handle H)
 
static int Create (const Handler &Function, Handle *const &H=0, const bool &CreateDetached=false, const unsigned int &StackSize=0, const bool &CancelEnable=false, const bool &CancelAsync=false)
 
static int Join (const Handle &H)
 
static int Kill (const Handle &H)
 
static int Detach (const Handle &H)
 
- Protected Member Functions inherited from UEventsSender
void post (UEvent *event, bool async=true) const
 
- Static Protected Member Functions inherited from UThreadC< void >
static void Exit ()
 
static void TestCancel ()
 
static Handle Self ()
 
static void Exit ()
 
static void TestCancel ()
 
static int Self ()
 
+

Detailed Description

+

Thread-based sensor data capture and event posting for RTAB-Map.

+

SensorCaptureThread is a multi-threaded class that continuously captures sensor data from cameras and/or lidars in a background thread. It processes the data, optionally applies filtering and transformations, and posts SensorEvent events to registered handlers through RTAB-Map's event system.

+

The class supports various sensor configurations:

    +
  • Camera-only: Single or multiple cameras for RGB-D or stereo imaging
  • +
  • Lidar-only: Single lidar for 3D point cloud capture
  • +
  • Camera + Lidar: Combined visual and range sensing
  • +
  • With odometry: Optional odometry sensor for pose estimation and deskewing
  • +
+

Key features:

    +
  • Automatic data synchronization: Synchronizes camera and lidar data by timestamp
  • +
  • Deskewing: Corrects lidar scans using odometry poses
  • +
  • Image processing: Supports mirroring, decimation, histogram equalization, stereo-to-depth conversion
  • +
  • Depth filtering: Optional bilateral filtering for depth images
  • +
  • IMU filtering: Optional IMU data filtering and fusion
  • +
  • Feature detection: Optional automatic feature detection on captured images
  • +
  • Frame rate control: Configurable capture rate
  • +
  • Event-driven architecture: Posts SensorEvent events for downstream processing
  • +
+

The class inherits from UThread (for threading) and UEventsSender (for event posting).

+
Note
Ownership of Camera, Lidar, and SensorCapture pointers is transferred to this class.
+
+The thread must be started with start() and stopped with kill() or join().
+
Warning
Thread Safety: All configuration parameters (setters) should be called before starting the thread with start(). Changing configuration after the thread is started is not thread-safe and may lead to race conditions or undefined behavior. If you need to change parameters at runtime, stop the thread first, modify the configuration, then restart it.
+
See also
Camera
+
+Lidar
+
+SensorCapture
+
+SensorEvent
+
+SensorData
+
+UThread
+
+UEventsSender
+ +

Definition at line 97 of file SensorCaptureThread.h.

+

Constructor & Destructor Documentation

+ +

◆ SensorCaptureThread() [1/6]

+ +
+
+ + + + + + + + + + + + + + + + + + +
rtabmap::SensorCaptureThread::SensorCaptureThread (Camera * camera,
const ParametersMap & parameters = ParametersMap() 
)
+
+ +

Constructor for camera-only capture.

+

Creates a SensorCaptureThread that captures images from a single camera. The camera can be RGB-D, stereo, or mono.

+
Parameters
+ + + +
cameraPointer to the camera to capture from (ownership transferred)
parametersOptional parameters map for configuration
+
+
+
Note
The camera pointer is owned by this class and will be deleted on destruction.
+ +
+
+ +

◆ SensorCaptureThread() [2/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorCaptureThread::SensorCaptureThread (Camera * camera,
SensorCapture * odomSensor,
const Transform & extrinsics,
double poseTimeOffset = 0.0,
float poseScaleFactor = 1.0f,
double poseWaitTime = 0.1,
const ParametersMap & parameters = ParametersMap() 
)
+
+ +

Constructor for camera with odometry sensor.

+

Creates a SensorCaptureThread that captures images from a camera and uses an odometry sensor for pose estimation. The odometry sensor can be the same as the camera or a different sensor.

+
Parameters
+ + + + + + + + +
cameraPointer to the camera to capture images from (ownership transferred)
odomSensorPointer to the odometry sensor for pose estimation (can be the same as camera)
extrinsicsStatic transform from odometry sensor's left lens frame to camera's left lens frame (without optical rotation applied)
poseTimeOffsetTime offset in seconds to add to data timestamp when querying pose (default: 0.0)
poseScaleFactorScale factor to apply to pose translation (default: 1.0, no scaling)
poseWaitTimeMaximum time in seconds to wait for pose data (default: 0.1)
parametersOptional parameters map for configuration
+
+
+
Note
If odomAsGt is set to true via setOdomAsGroundTruth(), the odometry pose will be used as ground truth instead of odometry.
+ +
+
+ +

◆ SensorCaptureThread() [3/6]

+ +
+
+ + + + + + + + + + + + + + + + + + +
rtabmap::SensorCaptureThread::SensorCaptureThread (Lidar * lidar,
const ParametersMap & parameters = ParametersMap() 
)
+
+ +

Constructor for lidar-only capture.

+

Creates a SensorCaptureThread that captures 3D point clouds from a lidar.

+
Parameters
+ + + +
lidarPointer to the lidar to capture scans from (ownership transferred)
parametersOptional parameters map for configuration
+
+
+
Note
The lidar pointer is owned by this class and will be deleted on destruction.
+ +
+
+ +

◆ SensorCaptureThread() [4/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorCaptureThread::SensorCaptureThread (Lidar * lidar,
Camera * camera,
const ParametersMap & parameters = ParametersMap() 
)
+
+ +

Constructor for lidar with camera.

+

Creates a SensorCaptureThread that captures both lidar scans and camera images. If the camera provides pose information, it can be used for deskewing lidar scans.

+
Parameters
+ + + + +
lidarPointer to the lidar to capture scans from (ownership transferred)
cameraPointer to the camera to capture images from (ownership transferred). If the camera provides pose, it can be used for deskewing.
parametersOptional parameters map for configuration
+
+
+ +
+
+ +

◆ SensorCaptureThread() [5/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorCaptureThread::SensorCaptureThread (Lidar * lidar,
SensorCapture * odomSensor,
double poseTimeOffset = 0.0,
float poseScaleFactor = 1.0f,
double poseWaitTime = 0.1,
const ParametersMap & parameters = ParametersMap() 
)
+
+ +

Constructor for lidar with odometry sensor.

+

Creates a SensorCaptureThread that captures lidar scans and uses an odometry sensor for pose estimation and deskewing. The odometry sensor can be the same as the lidar or a different sensor.

+
Parameters
+ + + + + + + +
lidarPointer to the lidar to capture scans from (ownership transferred)
odomSensorPointer to the odometry sensor for pose estimation and deskewing (can be the same as lidar)
poseTimeOffsetTime offset in seconds to add to data timestamp when querying pose (default: 0.0)
poseScaleFactorScale factor to apply to pose translation (default: 1.0, no scaling)
poseWaitTimeMaximum time in seconds to wait for pose data (default: 0.1)
parametersOptional parameters map for configuration
+
+
+
Note
Deskewing is enabled by default when an odometry sensor is provided. Use setScanParameters() to configure deskewing behavior.
+
+The lidar's local transform should be set as the extrinsics between odometry sensor's frame and lidar's frame.
+ +
+
+ +

◆ SensorCaptureThread() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorCaptureThread::SensorCaptureThread (Lidar * lidar,
Camera * camera,
SensorCapture * odomSensor,
const Transform & extrinsics,
double poseTimeOffset = 0.0,
float poseScaleFactor = 1.0f,
double poseWaitTime = 0.1,
const ParametersMap & parameters = ParametersMap() 
)
+
+ +

Constructor for lidar with camera and odometry sensor.

+

Creates a SensorCaptureThread that captures both lidar scans and camera images, and uses an odometry sensor for pose estimation and deskewing. This is the most comprehensive configuration, supporting multi-modal sensing with pose correction.

+
Parameters
+ + + + + + + + + +
lidarPointer to the lidar to capture scans from (ownership transferred)
cameraPointer to the camera to capture images from (ownership transferred)
odomSensorPointer to the odometry sensor for pose estimation and deskewing (can be the same as camera or lidar)
extrinsicsStatic transform from odometry frame to camera frame (without optical rotation applied)
poseTimeOffsetTime offset in seconds to add to data timestamp when querying pose (default: 0.0)
poseScaleFactorScale factor to apply to pose translation (default: 1.0, no scaling)
poseWaitTimeMaximum time in seconds to wait for pose data (default: 0.1)
parametersOptional parameters map for configuration
+
+
+
Note
The camera and lidar data are synchronized by timestamp, with the camera frame being at least as recent as the lidar frame.
+
+The lidar's local transform should be set as the extrinsics between odometry sensor's frame and lidar's frame.
+ +
+
+ +

◆ ~SensorCaptureThread()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::SensorCaptureThread::~SensorCaptureThread ()
+
+virtual
+
+ +

Virtual destructor.

+

Stops the capture thread if running and deletes owned sensor pointers.

+ +
+
+

Member Function Documentation

+ +

◆ setMirroringEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setMirroringEnabled (bool enabled)
+
+inline
+
+ +

Enables or disables image mirroring (horizontal flip)

+
Parameters
+ + +
enabledTrue to enable mirroring, false to disable
+
+
+ +

Definition at line 245 of file SensorCaptureThread.h.

+ +
+
+ +

◆ setStereoExposureCompensation()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setStereoExposureCompensation (bool enabled)
+
+inline
+
+ +

Enables or disables stereo exposure compensation.

+

When enabled, adjusts exposure between left and right stereo cameras to improve matching quality.

+
Parameters
+ + +
enabledTrue to enable exposure compensation, false to disable
+
+
+ +

Definition at line 255 of file SensorCaptureThread.h.

+ +
+
+ +

◆ setColorOnly()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setColorOnly (bool colorOnly)
+
+inline
+
+ +

Sets whether to capture color images only (skip depth)

+
Parameters
+ + +
colorOnlyTrue to capture color only, false to capture both color and depth
+
+
+ +

Definition at line 261 of file SensorCaptureThread.h.

+ +
+
+ +

◆ setImageDecimation()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setImageDecimation (int decimation)
+
+inline
+
+ +

Sets image decimation factor.

+

Decimation reduces image resolution by skipping pixels. A decimation of N means every Nth pixel is kept (e.g., 2 = half resolution, 4 = quarter resolution).

+
Parameters
+ + +
decimationDecimation factor (1 = no decimation, 2 = half resolution, etc.)
+
+
+ +

Definition at line 271 of file SensorCaptureThread.h.

+ +
+
+ +

◆ setHistogramMethod()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setHistogramMethod (int histogramMethod)
+
+inline
+
+ +

Sets histogram equalization method.

+

Controls the type of histogram equalization applied to captured images. Histogram equalization improves image contrast by redistributing pixel intensities.

+
Parameters
+ + +
histogramMethodHistogram equalization method:
    +
  • 0 = None (disabled)
  • +
  • 1 = Standard histogram equalization (cv::equalizeHist)
  • +
  • 2 = CLAHE - Contrast Limited Adaptive Histogram Equalization (cv::createCLAHE)
  • +
+
+
+
+
Note
For color images, histogram equalization is applied only to the luminance channel (Y in YCrCb color space).
+
+For stereo images, histogram equalization is applied to both left and right images.
+ +

Definition at line 287 of file SensorCaptureThread.h.

+ +
+
+ +

◆ setStereoToDepth()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setStereoToDepth (bool enabled)
+
+inline
+
+ +

Enables or disables stereo-to-depth conversion.

+

When enabled, converts stereo images to depth images using dense stereo matching.

+
Parameters
+ + +
enabledTrue to enable stereo-to-depth conversion, false to disable
+
+
+ +

Definition at line 296 of file SensorCaptureThread.h.

+ +
+
+ +

◆ setFrameRate()

+ +
+
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setFrameRate (float frameRate)
+
+ +

Sets the target frame rate for capture.

+

Controls how often the capture loop runs. A frame rate of 0 means capture as fast as possible.

+
Parameters
+ + +
frameRateTarget frame rate in Hz (0 = unlimited)
+
+
+ +
+
+ +

◆ setImageRate()

+ +
+
+ + + + + +
+ + + + + + + + +
RTABMAP_DEPRECATED void rtabmap::SensorCaptureThread::setImageRate (float frameRate)
+
+inline
+
+ +

Sets the target image capture rate (deprecated)

+
Deprecated:
Use setFrameRate() instead
+ +

Definition at line 312 of file SensorCaptureThread.h.

+ +
+
+ +

◆ setDistortionModel()

+ +
+
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setDistortionModel (const std::string & path)
+
+ +

Sets the depth distortion model file path.

+

Loads a discrete depth distortion model from the specified file path. This is used to correct systematic depth errors at longer ranges using the CLAMS (Calibration, Localization, And Mapping System) approach.

+

The distortion model is typically created using RTAB-Map's depth calibration tool, which uses visual odometry and 3D mapping to generate ground truth depth for calibration.

+
Parameters
+ + +
pathPath to the distortion model file
+
+
+
See also
https://github.com/introlab/rtabmap/wiki/Depth-Calibration for detailed instructions on how to create and use depth distortion models
+ +
+
+ +

◆ setOdomAsGroundTruth()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorCaptureThread::setOdomAsGroundTruth (bool enabled)
+
+inline
+
+ +

Sets whether odometry poses should be treated as ground truth.

+

When enabled, odometry poses from the odometry sensor are stored as ground truth poses instead of odometry poses in the SensorData.

+
Parameters
+ + +
enabledTrue to use odometry as ground truth, false to use as odometry
+
+
+ +

Definition at line 340 of file SensorCaptureThread.h.

+ +
+
+ +

◆ enableBilateralFiltering()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::SensorCaptureThread::enableBilateralFiltering (float sigmaS,
float sigmaR 
)
+
+ +

Enables bilateral filtering for depth images.

+

Bilateral filtering reduces noise in depth images while preserving edges.

+
Parameters
+ + + +
sigmaSSpatial standard deviation (pixels)
sigmaRRange standard deviation (depth units)
+
+
+ +
+
+ +

◆ disableBilateralFiltering()

+ +
+
+ + + + + +
+ + + + + + + +
void rtabmap::SensorCaptureThread::disableBilateralFiltering ()
+
+inline
+
+ +

Disables bilateral filtering.

+ +

Definition at line 355 of file SensorCaptureThread.h.

+ +
+
+ +

◆ enableIMUFiltering()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorCaptureThread::enableIMUFiltering (int filteringStrategy = 1,
const ParametersMap & parameters = ParametersMap(),
bool baseFrameConversion = false 
)
+
+ +

Enables IMU data filtering.

+

Enables filtering and fusion of IMU data from the sensor. The filtering strategy determines how IMU data is processed to estimate orientation.

+
Parameters
+ + + + +
filteringStrategyFiltering strategy:
    +
  • 0 = Madgwick filter (requires RTAB-Map built with RTABMAP_MADGWICK option)
  • +
  • 1 = Complementary filter (default)
  • +
+
parametersOptional parameters map for IMU filter configuration
baseFrameConversionIf true, converts IMU data to base frame
+
+
+
Note
If Madgwick filter is requested but RTAB-Map is not built with the option enabled, the Complementary filter will be used instead.
+
See also
IMUFilter
+ +
+
+ +

◆ enableFeatureDetection()

+ +
+
+ + + + + + + + +
void rtabmap::SensorCaptureThread::enableFeatureDetection (const ParametersMap & parameters = ParametersMap())
+
+ +

Enables automatic feature detection on captured images.

+

When enabled, automatically detects and extracts visual features (keypoints, descriptors) from captured images.

+
Parameters
+ + +
parametersOptional parameters map for feature detector configuration. Parameters from the "Vis/" group (e.g., Vis/FeatureType, Vis/MaxFeatures) are automatically converted to "Kp/" parameters internally. If both Vis/ and Kp/ parameters are provided, Vis/ parameters take precedence.
+
+
+
Note
The function converts Vis/ parameters to Kp/ parameters before creating the Feature2D detector.
+ +
+
+ +

◆ setScanParameters() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RTABMAP_DEPRECATED void rtabmap::SensorCaptureThread::setScanParameters (bool fromDepth,
int downsampleStep,
float rangeMin,
float rangeMax,
float voxelSize,
int normalsK,
float normalsRadius,
bool forceGroundNormalsUp,
bool deskewing 
)
+
+ +

Sets lidar scan processing parameters (deprecated)

+
Deprecated:
Use the new version with groundNormalsUp parameter instead
+

Use the new version with groundNormalsUp parameter:

    +
  • groundNormalsUp=0.8 for forceGroundNormalsUp=True
  • +
  • groundNormalsUp=0.0 for forceGroundNormalsUp=False
  • +
+ +
+
+ +

◆ setScanParameters() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorCaptureThread::setScanParameters (bool fromDepth,
int downsampleStep = 1,
float rangeMin = 0.0f,
float rangeMax = 0.0f,
float voxelSize = 0.0f,
int normalsK = 0,
float normalsRadius = 0.0f,
float groundNormalsUp = 0.0f,
bool deskewing = false 
)
+
+ +

Sets lidar scan processing parameters.

+

Configures how lidar scans are processed, including conversion from depth images, filtering, normal estimation, and deskewing.

+
Parameters
+ + + + + + + + + + +
fromDepthIf true, generate scans from depth images instead of raw lidar data
downsampleStepDownsampling step:
    +
  • If fromDepth is true: Image decimation step for depth images (1 = no decimation, 2 = every other pixel in both dimensions, etc.)
  • +
  • If fromDepth is false: Point skipping step for laser scan data (1 = no skipping, 2 = every other point, etc.)
  • +
+
rangeMinMinimum range in meters (points closer are filtered out, 0 = no minimum)
rangeMaxMaximum range in meters (points farther are filtered out, 0 = no maximum)
voxelSizeVoxel size in meters for downsampling (0 = no voxelization)
normalsKNumber of neighbors for K-nearest neighbors normal estimation (0 = no normals)
normalsRadiusRadius in meters for radius-based normal estimation (0 = use K-nearest)
groundNormalsUpThreshold for forcing ground normals upward (0.0-1.0, 0.8 = strong, 0.0 = disabled)
deskewingIf true, apply deskewing using odometry poses
+
+
+ +
+
+ +

◆ postUpdate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::SensorCaptureThread::postUpdate (SensorData * data,
SensorCaptureInfo * info = 0 
) const
+
+ +

Post-processing hook called before posting SensorEvent.

+

This method is called after all processing is complete but before the SensorEvent is posted. Derived classes can override this to perform additional processing or modifications to the data.

+
Parameters
+ + + +
dataPointer to the processed sensor data (can be modified)
infoPointer to the sensor capture info (can be modified, may be null)
+
+
+ +
+
+ +

◆ isPaused()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::SensorCaptureThread::isPaused () const
+
+inline
+
+ +

Checks if the capture thread is paused.

+
Returns
True if paused (not running), false if running
+ +

Definition at line 469 of file SensorCaptureThread.h.

+ +
+
+ +

◆ isCapturing()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::SensorCaptureThread::isCapturing () const
+
+inline
+
+ +

Checks if the capture thread is actively capturing.

+
Returns
True if capturing (running), false if not running
+ +

Definition at line 475 of file SensorCaptureThread.h.

+ +
+
+ +

◆ odomProvided()

+ +
+
+ + + + + + + +
bool rtabmap::SensorCaptureThread::odomProvided () const
+
+ +

Checks if odometry is provided by the sensors.

+
Returns
True if an odometry sensor is configured, false otherwise
+ +
+
+ +

◆ camera()

+ +
+
+ + + + + +
+ + + + + + + +
Camera * rtabmap::SensorCaptureThread::camera ()
+
+inline
+
+ +

Returns the camera pointer.

+
Returns
Pointer to the camera (null if not set). Valid until SensorCaptureThread is deleted.
+ +

Definition at line 487 of file SensorCaptureThread.h.

+ +
+
+ +

◆ odomSensor()

+ +
+
+ + + + + +
+ + + + + + + +
SensorCapture * rtabmap::SensorCaptureThread::odomSensor ()
+
+inline
+
+ +

Returns the odometry sensor pointer.

+
Returns
Pointer to the odometry sensor (null if not set). Valid until SensorCaptureThread is deleted.
+ +

Definition at line 493 of file SensorCaptureThread.h.

+ +
+
+ +

◆ lidar()

+ +
+
+ + + + + +
+ + + + + + + +
Lidar * rtabmap::SensorCaptureThread::lidar ()
+
+inline
+
+ +

Returns the lidar pointer.

+
Returns
Pointer to the lidar (null if not set). Valid until SensorCaptureThread is deleted.
+ +

Definition at line 499 of file SensorCaptureThread.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.js b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.js new file mode 100644 index 00000000..c5dceb15 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread.js @@ -0,0 +1,35 @@ +var classrtabmap_1_1SensorCaptureThread = +[ + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html#acae15b44b2fb05da9421dc88ff0be75c", null ], + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html#a76ad33a55009b7a7f7ec51acccbe0492", null ], + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html#a834d1e5c389e7ef8eb23bf1361916ae2", null ], + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html#a9cf0e883ace51a2a656395327beb74e5", null ], + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html#a590aee9497d8a3b6e14b68e1e17f9c6a", null ], + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html#a2a64df180f19d0a2ea9a8d66ea58fc42", null ], + [ "~SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html#af8133c1b2332568c4699282f59c141c9", null ], + [ "setMirroringEnabled", "classrtabmap_1_1SensorCaptureThread.html#a1cfabc2a5451ffe913f5691b80de514d", null ], + [ "setStereoExposureCompensation", "classrtabmap_1_1SensorCaptureThread.html#a2c43f41518d914f2a3ae6959abcde989", null ], + [ "setColorOnly", "classrtabmap_1_1SensorCaptureThread.html#a6308c79599bd90b77d243febff024a15", null ], + [ "setImageDecimation", "classrtabmap_1_1SensorCaptureThread.html#a74383f4e31ed642520511eb822ed1d89", null ], + [ "setHistogramMethod", "classrtabmap_1_1SensorCaptureThread.html#a3e55c70032141f75802b2339c102c063", null ], + [ "setStereoToDepth", "classrtabmap_1_1SensorCaptureThread.html#ae0658121bc03f0eafd469ee114bc61f8", null ], + [ "setFrameRate", "classrtabmap_1_1SensorCaptureThread.html#a416f1596701d6b9dbd8512cd1c617788", null ], + [ "setImageRate", "classrtabmap_1_1SensorCaptureThread.html#a2a40e01eb8e61aae54feeb1458efb88e", null ], + [ "setDistortionModel", "classrtabmap_1_1SensorCaptureThread.html#aa7f6dcffcd6646994c2a87d8b888edcc", null ], + [ "setOdomAsGroundTruth", "classrtabmap_1_1SensorCaptureThread.html#a5a6a9ad20c75150f86ef479fe74ae6f7", null ], + [ "enableBilateralFiltering", "classrtabmap_1_1SensorCaptureThread.html#a429011ef7b39d30fc98413d727cccf4b", null ], + [ "disableBilateralFiltering", "classrtabmap_1_1SensorCaptureThread.html#a57beeb2c34d4430e37da05ef8e400a9b", null ], + [ "enableIMUFiltering", "classrtabmap_1_1SensorCaptureThread.html#a97ef5e49b994fcd2a3c87d6f7ef244ec", null ], + [ "disableIMUFiltering", "classrtabmap_1_1SensorCaptureThread.html#a75c2426adc532854f1d7119256b1cf0d", null ], + [ "enableFeatureDetection", "classrtabmap_1_1SensorCaptureThread.html#aa0a6c975417a655029470aea2ea5d01a", null ], + [ "disableFeatureDetection", "classrtabmap_1_1SensorCaptureThread.html#aeddec5c0c55aab261b31d0a980a7d327", null ], + [ "setScanParameters", "classrtabmap_1_1SensorCaptureThread.html#a40f1016ea142c6117ffb080f64b4a854", null ], + [ "setScanParameters", "classrtabmap_1_1SensorCaptureThread.html#a00a7a0e4f5277f6c6ed53bf832624c00", null ], + [ "postUpdate", "classrtabmap_1_1SensorCaptureThread.html#a43cb04de41b589b3f6069fff553a4dd7", null ], + [ "isPaused", "classrtabmap_1_1SensorCaptureThread.html#a435f89b6a3186462f6ee860afa88644c", null ], + [ "isCapturing", "classrtabmap_1_1SensorCaptureThread.html#ab2654b31ebdf06b375045fadbc83731a", null ], + [ "odomProvided", "classrtabmap_1_1SensorCaptureThread.html#a88269150d6fd6fd39685fe9e926d98e6", null ], + [ "camera", "classrtabmap_1_1SensorCaptureThread.html#ad6750f6280bdcbb386a051ba9cc36857", null ], + [ "odomSensor", "classrtabmap_1_1SensorCaptureThread.html#a0f4e3814d203ded5735ebb7abba1451e", null ], + [ "lidar", "classrtabmap_1_1SensorCaptureThread.html#aa6e5a6a53d621cda6e0b7f2ff35d33f0", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.map new file mode 100644 index 00000000..3367f11e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.md5 new file mode 100644 index 00000000..b569d1da --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.md5 @@ -0,0 +1 @@ +c3591c70239d3706cac3c4c234c63d6b \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbc532e3f5a17335e60d5a18d038652fe374a63 GIT binary patch literal 9602 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.map new file mode 100644 index 00000000..3367f11e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.md5 new file mode 100644 index 00000000..b569d1da --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.md5 @@ -0,0 +1 @@ +c3591c70239d3706cac3c4c234c63d6b \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCaptureThread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbc532e3f5a17335e60d5a18d038652fe374a63 GIT binary patch literal 9602 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.map new file mode 100644 index 00000000..ccc1d967 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.map @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.md5 new file mode 100644 index 00000000..6733a402 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.md5 @@ -0,0 +1 @@ +1fd499c5dc390fc0c5deb0ff559d5bc4 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SensorCapture__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb4f268f1fbbcfea39c7d84555a553eed6951f5 GIT binary patch literal 139601 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorData-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorData-members.html new file mode 100644 index 00000000..6f776d58 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorData-members.html @@ -0,0 +1,206 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SensorData Member List
+
+
+ +

This is the complete list of members for rtabmap::SensorData, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addEnvSensor(const EnvSensor &sensor)rtabmap::SensorDatainline
addGlobalDescriptor(const GlobalDescriptor &descriptor)rtabmap::SensorDatainline
cameraModels() constrtabmap::SensorDatainline
clearCompressedData(bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)rtabmap::SensorData
clearGlobalDescriptors()rtabmap::SensorDatainline
clearRawData(bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)rtabmap::SensorData
depthConfidenceCompressed() constrtabmap::SensorDatainline
depthConfidenceRaw() constrtabmap::SensorDatainline
depthOrRightCompressed() constrtabmap::SensorDatainline
depthOrRightRaw() constrtabmap::SensorDatainline
depthRaw() constrtabmap::SensorDatainline
descriptors() constrtabmap::SensorDatainline
envSensors() constrtabmap::SensorDatainline
getMemoryUsed() constrtabmap::SensorData
globalDescriptors() constrtabmap::SensorDatainline
globalPose() constrtabmap::SensorDatainline
globalPoseCovariance() constrtabmap::SensorDatainline
gps() constrtabmap::SensorDatainline
gridCellSize() constrtabmap::SensorDatainline
gridEmptyCellsCompressed() constrtabmap::SensorDatainline
gridEmptyCellsRaw() constrtabmap::SensorDatainline
gridGroundCellsCompressed() constrtabmap::SensorDatainline
gridGroundCellsRaw() constrtabmap::SensorDatainline
gridObstacleCellsCompressed() constrtabmap::SensorDatainline
gridObstacleCellsRaw() constrtabmap::SensorDatainline
gridViewPoint() constrtabmap::SensorDatainline
groundTruth() constrtabmap::SensorDatainline
id() constrtabmap::SensorDatainline
imageCompressed() constrtabmap::SensorDatainline
imageRaw() constrtabmap::SensorDatainline
imu() constrtabmap::SensorDatainline
isPointVisibleFromCameras(const cv::Point3f &pt) constrtabmap::SensorData
isValid() constrtabmap::SensorDatainline
keypoints() constrtabmap::SensorDatainline
keypoints3D() constrtabmap::SensorDatainline
landmarks() constrtabmap::SensorDatainline
laserScanCompressed() constrtabmap::SensorDatainline
laserScanRaw() constrtabmap::SensorDatainline
rightRaw() constrtabmap::SensorDatainline
SensorData()rtabmap::SensorData
SensorData(const cv::Mat &image, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const cv::Mat &image, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const LaserScan &laserScan, const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())rtabmap::SensorData
SensorData(const IMU &imu, int id=0, double stamp=0.0)rtabmap::SensorData
setCameraModel(const CameraModel &model)rtabmap::SensorDatainline
setCameraModels(const std::vector< CameraModel > &models)rtabmap::SensorDatainline
setDepthOrRightRaw(const cv::Mat &image) (defined in rtabmap::SensorData)rtabmap::SensorData
setEnvSensors(const EnvSensors &sensors)rtabmap::SensorDatainline
setFeatures(const std::vector< cv::KeyPoint > &keypoints, const std::vector< cv::Point3f > &keypoints3D, const cv::Mat &descriptors)rtabmap::SensorData
setGlobalDescriptors(const std::vector< GlobalDescriptor > &descriptors)rtabmap::SensorDatainline
setGlobalPose(const Transform &pose, const cv::Mat &covariance)rtabmap::SensorDatainline
setGPS(const GPS &gps)rtabmap::SensorDatainline
setGroundTruth(const Transform &pose)rtabmap::SensorDatainline
setId(int id)rtabmap::SensorDatainline
setImageRaw(const cv::Mat &image) (defined in rtabmap::SensorData)rtabmap::SensorData
setIMU(const IMU &imu)rtabmap::SensorData
setLandmarks(const Landmarks &landmarks)rtabmap::SensorDatainline
setLaserScan(const LaserScan &laserScan, bool clearPreviousData=true)rtabmap::SensorData
setLaserScanRaw(const LaserScan &scan) (defined in rtabmap::SensorData)rtabmap::SensorData
setOccupancyGrid(const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint)rtabmap::SensorData
setRGBDImage(const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &model, bool clearPreviousData=true)rtabmap::SensorData
setRGBDImage(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &model, bool clearPreviousData=true) (defined in rtabmap::SensorData)rtabmap::SensorData
setRGBDImage(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &models, bool clearPreviousData=true) (defined in rtabmap::SensorData)rtabmap::SensorData
setRGBDImage(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const std::vector< CameraModel > &models, bool clearPreviousData=true) (defined in rtabmap::SensorData)rtabmap::SensorData
setStamp(double stamp)rtabmap::SensorDatainline
setStereoCameraModel(const StereoCameraModel &stereoCameraModel)rtabmap::SensorDatainline
setStereoCameraModels(const std::vector< StereoCameraModel > &stereoCameraModels)rtabmap::SensorDatainline
setStereoImage(const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &stereoCameraModel, bool clearPreviousData=true) (defined in rtabmap::SensorData)rtabmap::SensorData
setStereoImage(const cv::Mat &left, const cv::Mat &right, const std::vector< StereoCameraModel > &stereoCameraModels, bool clearPreviousData=true) (defined in rtabmap::SensorData)rtabmap::SensorData
setUserData(const cv::Mat &userData, bool clearPreviousData=true)rtabmap::SensorData
setUserDataRaw(const cv::Mat &data) (defined in rtabmap::SensorData)rtabmap::SensorData
stamp() constrtabmap::SensorDatainline
stereoCameraModels() constrtabmap::SensorDatainline
uncompressData()rtabmap::SensorData
uncompressData(cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0)rtabmap::SensorData
uncompressDataConst(cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0) constrtabmap::SensorData
userDataCompressed() const (defined in rtabmap::SensorData)rtabmap::SensorDatainline
userDataRaw() const (defined in rtabmap::SensorData)rtabmap::SensorDatainline
~SensorData()rtabmap::SensorDatavirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorData.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorData.html new file mode 100644 index 00000000..aafadaf9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorData.html @@ -0,0 +1,3716 @@ + + + + + + + + +RTAB-Map: rtabmap::SensorData Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SensorData Class Reference
+
+
+ +

Container class for all sensor data captured at a specific time. + More...

+ +

#include <SensorData.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SensorData ()
 Default constructor.
 
 SensorData (const cv::Mat &image, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Appearance-only constructor.
 
 SensorData (const cv::Mat &image, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Mono camera constructor.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor with depth confidence.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor with laser scan.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 RGB-D constructor with depth confidence and laser scan.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor with depth confidence.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor with laser scan.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera RGB-D constructor with depth confidence and laser scan.
 
 SensorData (const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Stereo camera constructor.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Stereo camera constructor with laser scan.
 
 SensorData (const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera stereo constructor.
 
 SensorData (const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())
 Multi-camera stereo constructor with laser scan.
 
 SensorData (const IMU &imu, int id=0, double stamp=0.0)
 IMU-only constructor.
 
+virtual ~SensorData ()
 Virtual destructor.
 
bool isValid () const
 Checks if the sensor data is valid.
 
int id () const
 Returns the sensor data ID.
 
void setId (int id)
 Sets the sensor data ID.
 
double stamp () const
 Returns the timestamp.
 
void setStamp (double stamp)
 Sets the timestamp.
 
const cv::Mat & imageCompressed () const
 Returns the compressed RGB/grayscale image.
 
const cv::Mat & depthOrRightCompressed () const
 Returns the compressed depth or right stereo image.
 
const cv::Mat & depthConfidenceCompressed () const
 Returns the compressed depth confidence map.
 
const LaserScan & laserScanCompressed () const
 Returns the compressed laser scan.
 
const cv::Mat & imageRaw () const
 Returns the raw RGB/grayscale image.
 
const cv::Mat & depthOrRightRaw () const
 Returns the raw depth or right stereo image.
 
const cv::Mat & depthConfidenceRaw () const
 Returns the raw depth confidence map.
 
const LaserScan & laserScanRaw () const
 Returns the raw laser scan.
 
void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &model, bool clearPreviousData=true)
 
+void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &model, bool clearPreviousData=true)
 
+void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &models, bool clearPreviousData=true)
 
+void setRGBDImage (const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const std::vector< CameraModel > &models, bool clearPreviousData=true)
 
+void setStereoImage (const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &stereoCameraModel, bool clearPreviousData=true)
 
+void setStereoImage (const cv::Mat &left, const cv::Mat &right, const std::vector< StereoCameraModel > &stereoCameraModels, bool clearPreviousData=true)
 
void setLaserScan (const LaserScan &laserScan, bool clearPreviousData=true)
 
void setCameraModel (const CameraModel &model)
 Sets a single camera model (clears previous models)
 
void setCameraModels (const std::vector< CameraModel > &models)
 Sets multiple camera models.
 
void setStereoCameraModel (const StereoCameraModel &stereoCameraModel)
 Sets a single stereo camera model (clears previous models)
 
void setStereoCameraModels (const std::vector< StereoCameraModel > &stereoCameraModels)
 Sets multiple stereo camera models.
 
cv::Mat depthRaw () const
 Returns the depth image (convenience method)
 
cv::Mat rightRaw () const
 Returns the right stereo image (convenience method)
 
+RTABMAP_DEPRECATED void setImageRaw (const cv::Mat &image)
 
+RTABMAP_DEPRECATED void setDepthOrRightRaw (const cv::Mat &image)
 
+RTABMAP_DEPRECATED void setLaserScanRaw (const LaserScan &scan)
 
+RTABMAP_DEPRECATED void setUserDataRaw (const cv::Mat &data)
 
void uncompressData ()
 Uncompresses all compressed data in-place.
 
void uncompressData (cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0)
 Uncompresses compressed data into provided output buffers.
 
void uncompressDataConst (cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0) const
 Uncompresses compressed data into provided output buffers (const version)
 
const std::vector< CameraModel > & cameraModels () const
 Returns the camera models.
 
const std::vector< StereoCameraModel > & stereoCameraModels () const
 Returns the stereo camera models.
 
void setUserData (const cv::Mat &userData, bool clearPreviousData=true)
 
const cv::Mat & userDataRaw () const
 
const cv::Mat & userDataCompressed () const
 
void setOccupancyGrid (const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint)
 Sets occupancy grid data.
 
const cv::Mat & gridGroundCellsRaw () const
 Returns raw ground cells.
 
const cv::Mat & gridGroundCellsCompressed () const
 Returns compressed ground cells.
 
const cv::Mat & gridObstacleCellsRaw () const
 Returns raw obstacle cells.
 
const cv::Mat & gridObstacleCellsCompressed () const
 Returns compressed obstacle cells.
 
const cv::Mat & gridEmptyCellsRaw () const
 Returns raw empty cells.
 
const cv::Mat & gridEmptyCellsCompressed () const
 Returns compressed empty cells.
 
float gridCellSize () const
 Returns the occupancy grid cell size.
 
const cv::Point3f & gridViewPoint () const
 Returns the occupancy grid viewpoint.
 
void setFeatures (const std::vector< cv::KeyPoint > &keypoints, const std::vector< cv::Point3f > &keypoints3D, const cv::Mat &descriptors)
 Sets visual features (keypoints, 3D points, descriptors)
 
const std::vector< cv::KeyPoint > & keypoints () const
 Returns the 2D keypoints.
 
const std::vector< cv::Point3f > & keypoints3D () const
 Returns the 3D keypoints.
 
const cv::Mat & descriptors () const
 Returns the feature descriptors.
 
void addGlobalDescriptor (const GlobalDescriptor &descriptor)
 Adds a global descriptor.
 
void setGlobalDescriptors (const std::vector< GlobalDescriptor > &descriptors)
 Sets all global descriptors.
 
void clearGlobalDescriptors ()
 Clears all global descriptors.
 
const std::vector< GlobalDescriptor > & globalDescriptors () const
 Returns all global descriptors.
 
void setGroundTruth (const Transform &pose)
 Sets the ground truth pose.
 
const Transform & groundTruth () const
 Returns the ground truth pose.
 
void setGlobalPose (const Transform &pose, const cv::Mat &covariance)
 Sets the global pose with covariance.
 
const Transform & globalPose () const
 Returns the global pose.
 
const cv::Mat & globalPoseCovariance () const
 Returns the global pose covariance.
 
void setGPS (const GPS &gps)
 Sets GPS data.
 
const GPS & gps () const
 Returns GPS data.
 
void setIMU (const IMU &imu)
 Sets IMU data.
 
const IMU & imu () const
 Returns IMU data.
 
void setEnvSensors (const EnvSensors &sensors)
 Sets all environmental sensors.
 
void addEnvSensor (const EnvSensor &sensor)
 Adds a single environmental sensor.
 
const EnvSensors & envSensors () const
 Returns all environmental sensors.
 
void setLandmarks (const Landmarks &landmarks)
 Sets landmarks.
 
const Landmarks & landmarks () const
 Returns landmarks.
 
unsigned long getMemoryUsed () const
 Computes the memory usage of this sensor data.
 
void clearCompressedData (bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
 
void clearRawData (bool images=true, bool scan=true, bool userData=true, bool occupancyGrid=true)
 
int isPointVisibleFromCameras (const cv::Point3f &pt) const
 Checks if a 3D point is visible from any camera.
 
+

Detailed Description

+

Container class for all sensor data captured at a specific time.

+

SensorData is a comprehensive container class that holds all types of sensor data captured at a specific timestamp, including:

+
    +
  • Visual data: RGB images, depth images, stereo image pairs (left/right)
  • +
  • 3D data: Laser scans, 3D point clouds
  • +
  • Camera models: Mono camera models, stereo camera models (single or multiple)
  • +
  • Features: Keypoints, 3D keypoints, descriptors
  • +
  • Global descriptors: Scene-level descriptors for place recognition
  • +
  • Sensor fusion: IMU data, GPS data, environmental sensors
  • +
  • Metadata: Ground truth poses, global poses with covariance, landmarks
  • +
  • User data: Custom data matrices
  • +
  • Occupancy grids: Ground, obstacle, and empty cells
  • +
+

The class supports both raw and compressed data formats:

    +
  • Raw data: Uncompressed images, depth maps, laser scans
  • +
  • Compressed data: JPEG-compressed images, compressed depth, compressed scans
  • +
+

Data compression is automatically detected when setting data:

    +
  • A matrix of type CV_8UC1 with 1 row is considered compressed
  • +
  • Use uncompressData() to decompress compressed data
  • +
+

The class supports multiple sensor configurations:

    +
  • Appearance-only: Single RGB image
  • +
  • Mono: RGB image with camera model
  • +
  • RGB-D: RGB + depth with camera model(s)
  • +
  • Stereo: Left + right images with stereo camera model(s)
  • +
  • IMU-only: IMU data without images
  • +
  • Multi-camera: Multiple camera models (RGB-D or stereo)
  • +
  • Combined: Any combination with laser scans, IMU, GPS, etc.
  • +
+
Note
If id=0 is provided to constructors, an ID is automatically generated.
+
+The class manages memory efficiently by storing either raw or compressed data (or both), allowing for memory optimization in large datasets.
+
See also
CameraModel
+
+StereoCameraModel
+
+LaserScan
+
+IMU
+
+GPS
+
+SensorEvent
+ +

Definition at line 96 of file SensorData.h.

+

Constructor & Destructor Documentation

+ +

◆ SensorData() [1/16]

+ +
+
+ + + + + + + +
rtabmap::SensorData::SensorData ()
+
+ +

Default constructor.

+

Creates an empty SensorData object with all fields initialized to default values. The ID will be 0 (invalid), and no sensor data will be present.

+ +
+
+ +

◆ SensorData() [2/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & image,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Appearance-only constructor.

+

Creates a SensorData object with a single RGB or grayscale image. No camera model is provided, so this is suitable for appearance-based place recognition without 3D reconstruction.

+
Parameters
+ + + + + +
imageRGB or grayscale image (CV_8UC1 or CV_8UC3)
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [3/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & image,
const CameraModel & cameraModel,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Mono camera constructor.

+

Creates a SensorData object with a single RGB or grayscale image and a mono camera model for 3D projection.

+
Parameters
+ + + + + + +
imageRGB or grayscale image (CV_8UC1 or CV_8UC3)
cameraModelCamera model for the image
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [4/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & rgb,
const cv::Mat & depth,
const CameraModel & cameraModel,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

RGB-D constructor.

+

Creates a SensorData object with RGB and depth images and a camera model.

+
Parameters
+ + + + + + + +
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [5/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & rgb,
const cv::Mat & depth,
const cv::Mat & depth_confidence,
const CameraModel & cameraModel,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

RGB-D constructor with depth confidence.

+

Creates a SensorData object with RGB, depth, and depth confidence images.

+
Parameters
+ + + + + + + + +
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depth_confidenceDepth confidence map (CV_8UC1, typically 0-100)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [6/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const LaserScan & laserScan,
const cv::Mat & rgb,
const cv::Mat & depth,
const CameraModel & cameraModel,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

RGB-D constructor with laser scan.

+

Creates a SensorData object with RGB, depth, camera model, and laser scan.

+
Parameters
+ + + + + + + + +
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [7/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const LaserScan & laserScan,
const cv::Mat & rgb,
const cv::Mat & depth,
const cv::Mat & depthConfidence,
const CameraModel & cameraModel,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

RGB-D constructor with depth confidence and laser scan.

+

Creates a SensorData object with RGB, depth, depth confidence, camera model, and laser scan.

+
Parameters
+ + + + + + + + + +
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depthConfidenceDepth confidence map (CV_8UC1)
cameraModelCamera model for RGB-D projection
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [8/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & rgb,
const cv::Mat & depth,
const std::vector< CameraModel > & cameraModels,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Multi-camera RGB-D constructor.

+

Creates a SensorData object with RGB, depth, and multiple camera models. rgb and depth images should contain stitched images from multiple cameras. All stitched images should have the same resolution.

+
Parameters
+ + + + + + + +
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+
Example: Stitching two camera images horizontally
#include <rtabmap/core/Camera.h>
+
#include <opencv2/imgproc/imgproc.hpp>
+
+
// Assume camera1 and camera2 are Camera* instances
+
Camera* camera1 = ...; // First camera
+
Camera* camera2 = ...; // Second camera
+
+
// Capture SensorData from both cameras
+
SensorData data1 = camera1->takeImage();
+
SensorData data2 = camera2->takeImage();
+
+
// Extract images and depth
+
cv::Mat image1 = data1.imageRaw(); // 640x480
+
cv::Mat depth1 = data1.depthOrRightRaw(); // 640x480
+
cv::Mat image2 = data2.imageRaw(); // 640x480
+
cv::Mat depth2 = data2.depthOrRightRaw(); // 640x480
+
+
// Stitch images horizontally
+
cv::Mat stitchedRgb;
+
cv::hconcat(image1, image2, stitchedRgb); // Result: 1280x480
+
+
cv::Mat stitchedDepth;
+
cv::hconcat(depth1, depth2, stitchedDepth); // Result: 1280x480
+
+
// Get camera models from both SensorData objects
+
std::vector<CameraModel> models = data1.cameraModels();
+
std::vector<CameraModel> models2 = data2.cameraModels();
+
models.insert(models.end(), models2.begin(), models2.end());
+
+
// Create SensorData with stitched images
+
SensorData stitchedData(stitchedRgb, stitchedDepth, models, 0, data1.stamp());
+ +
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
+
const cv::Mat & depthOrRightRaw() const
Returns the raw depth or right stereo image.
Definition SensorData.h:573
+
double stamp() const
Returns the timestamp.
Definition SensorData.h:527
+
const std::vector< CameraModel > & cameraModels() const
Returns the camera models.
Definition SensorData.h:724
+
const cv::Mat & imageRaw() const
Returns the raw RGB/grayscale image.
Definition SensorData.h:566
+
+ +
+
+ +

◆ SensorData() [9/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & rgb,
const cv::Mat & depth,
const cv::Mat & depthConfidence,
const std::vector< CameraModel > & cameraModels,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Multi-camera RGB-D constructor with depth confidence.

+

Creates a SensorData object with RGB, depth, depth confidence, and multiple camera models.

+
Parameters
+ + + + + + + + +
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depthConfidenceDepth confidence map (CV_8UC1)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.
+ +
+
+ +

◆ SensorData() [10/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const LaserScan & laserScan,
const cv::Mat & rgb,
const cv::Mat & depth,
const std::vector< CameraModel > & cameraModels,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Multi-camera RGB-D constructor with laser scan.

+

Creates a SensorData object with RGB, depth, multiple camera models, and laser scan.

+
Parameters
+ + + + + + + + +
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.
+ +
+
+ +

◆ SensorData() [11/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const LaserScan & laserScan,
const cv::Mat & rgb,
const cv::Mat & depth,
const cv::Mat & depthConfidence,
const std::vector< CameraModel > & cameraModels,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Multi-camera RGB-D constructor with depth confidence and laser scan.

+

Creates a SensorData object with RGB, depth, depth confidence, multiple camera models, and laser scan.

+
Parameters
+ + + + + + + + + +
laserScan2D or 3D laser scan
rgbRGB or grayscale image (CV_8UC1 or CV_8UC3)
depthDepth image (CV_16UC1 for millimeters or CV_32FC1 for meters)
depthConfidenceDepth confidence map (CV_8UC1)
cameraModelsVector of camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.
+ +
+
+ +

◆ SensorData() [12/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & left,
const cv::Mat & right,
const StereoCameraModel & cameraModel,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Stereo camera constructor.

+

Creates a SensorData object with left and right stereo images and a stereo camera model.

+
Parameters
+ + + + + + + +
leftLeft stereo image (CV_8UC1 or CV_8UC3)
rightRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelStereo camera model for disparity computation
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [13/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const LaserScan & laserScan,
const cv::Mat & left,
const cv::Mat & right,
const StereoCameraModel & cameraModel,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Stereo camera constructor with laser scan.

+

Creates a SensorData object with left and right stereo images, stereo camera model, and laser scan.

+
Parameters
+ + + + + + + + +
laserScan2D or 3D laser scan
leftLeft stereo image (CV_8UC1 or CV_8UC3)
rightRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelStereo camera model for disparity computation
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [14/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const cv::Mat & rgb,
const cv::Mat & depth,
const std::vector< StereoCameraModel > & cameraModels,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Multi-camera stereo constructor.

+

Creates a SensorData object with left and right stereo images and multiple stereo camera models.

+
Parameters
+ + + + + + + +
rgbLeft stereo image (CV_8UC1 or CV_8UC3)
depthRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelsVector of stereo camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+
See also
SensorData(const cv::Mat&, const cv::Mat&, const std::vector<CameraModel>&, int, double, const cv::Mat&) for an example of stitching images from multiple cameras.
+ +
+
+ +

◆ SensorData() [15/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const LaserScan & laserScan,
const cv::Mat & rgb,
const cv::Mat & depth,
const std::vector< StereoCameraModel > & cameraModels,
int id = 0,
double stamp = 0.0,
const cv::Mat & userData = cv::Mat() 
)
+
+ +

Multi-camera stereo constructor with laser scan.

+

Creates a SensorData object with left and right stereo images, multiple stereo camera models, and laser scan.

+
Parameters
+ + + + + + + + +
laserScan2D or 3D laser scan
rgbLeft stereo image (CV_8UC1 or CV_8UC3)
depthRight stereo image (CV_8UC1 or CV_8UC3)
cameraModelsVector of stereo camera models
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
userDataOptional user-defined data matrix
+
+
+ +
+
+ +

◆ SensorData() [16/16]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorData::SensorData (const IMU & imu,
int id = 0,
double stamp = 0.0 
)
+
+ +

IMU-only constructor.

+

Creates a SensorData object with only IMU data (no images). Useful for IMU-only odometry or sensor fusion scenarios.

+
Parameters
+ + + + +
imuIMU data (accelerometer, gyroscope, orientation)
idSensor data ID (0 to auto-generate)
stampTimestamp in seconds
+
+
+ +
+
+

Member Function Documentation

+ +

◆ isValid()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::SensorData::isValid () const
+
+inline
+
+ +

Checks if the sensor data is valid.

+

Returns true if the sensor data contains at least one of:

    +
  • Valid ID (> 0) or non-zero stamp
  • +
  • Images (raw or compressed)
  • +
  • Depth/right images (raw or compressed)
  • +
  • Depth confidence (raw or compressed)
  • +
  • Laser scan (raw or compressed)
  • +
  • Camera models (mono or stereo)
  • +
  • User data (raw or compressed)
  • +
  • Keypoints and descriptors
  • +
  • IMU data
  • +
+
Returns
True if the sensor data contains any valid information, false otherwise
+ +

Definition at line 485 of file SensorData.h.

+ +
+
+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::SensorData::id () const
+
+inline
+
+ +

Returns the sensor data ID.

+
Returns
The unique sensor data ID (0 if invalid/uninitialized)
+ +

Definition at line 515 of file SensorData.h.

+ +
+
+ +

◆ setId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setId (int id)
+
+inline
+
+ +

Sets the sensor data ID.

+
Parameters
+ + +
idThe unique sensor data ID
+
+
+ +

Definition at line 521 of file SensorData.h.

+ +
+
+ +

◆ stamp()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::SensorData::stamp () const
+
+inline
+
+ +

Returns the timestamp.

+
Returns
Timestamp in seconds (typically seconds since epoch)
+ +

Definition at line 527 of file SensorData.h.

+ +
+
+ +

◆ setStamp()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setStamp (double stamp)
+
+inline
+
+ +

Sets the timestamp.

+
Parameters
+ + +
stampTimestamp in seconds
+
+
+ +

Definition at line 533 of file SensorData.h.

+ +
+
+ +

◆ imageCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::imageCompressed () const
+
+inline
+
+ +

Returns the compressed RGB/grayscale image.

+
Returns
Compressed image (CV_8UC1 with 1 row, JPEG/PNG-compressed bytes)
+
Note
Use Compression::uncompressImage() to uncompress the image.
+ +

Definition at line 540 of file SensorData.h.

+ +
+
+ +

◆ depthOrRightCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::depthOrRightCompressed () const
+
+inline
+
+ +

Returns the compressed depth or right stereo image.

+
Returns
Compressed depth/right image (CV_8UC1 with 1 row, compressed bytes)
+
Note
Use Compression::uncompressImage() to uncompress the image.
+ +

Definition at line 547 of file SensorData.h.

+ +
+
+ +

◆ depthConfidenceCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::depthConfidenceCompressed () const
+
+inline
+
+ +

Returns the compressed depth confidence map.

+
Returns
Compressed depth confidence (CV_8UC1 with 1 row, compressed bytes)
+
Note
Use Compression::uncompressData() to uncompress the data.
+ +

Definition at line 554 of file SensorData.h.

+ +
+
+ +

◆ laserScanCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const LaserScan & rtabmap::SensorData::laserScanCompressed () const
+
+inline
+
+ +

Returns the compressed laser scan.

+
Returns
Compressed laser scan
+ +

Definition at line 560 of file SensorData.h.

+ +
+
+ +

◆ imageRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::imageRaw () const
+
+inline
+
+ +

Returns the raw RGB/grayscale image.

+
Returns
Raw image (CV_8UC1 for grayscale or CV_8UC3 for RGB)
+ +

Definition at line 566 of file SensorData.h.

+ +
+
+ +

◆ depthOrRightRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::depthOrRightRaw () const
+
+inline
+
+ +

Returns the raw depth or right stereo image.

+
Returns
Raw depth (CV_16UC1 for millimeters or CV_32FC1 for meters) or right stereo image (CV_8UC1 or CV_8UC3)
+ +

Definition at line 573 of file SensorData.h.

+ +
+
+ +

◆ depthConfidenceRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::depthConfidenceRaw () const
+
+inline
+
+ +

Returns the raw depth confidence map.

+
Returns
Raw depth confidence (CV_8UC1, typically 0-100)
+ +

Definition at line 579 of file SensorData.h.

+ +
+
+ +

◆ laserScanRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const LaserScan & rtabmap::SensorData::laserScanRaw () const
+
+inline
+
+ +

Returns the raw laser scan.

+
Returns
Raw laser scan (2D or 3D)
+ +

Definition at line 585 of file SensorData.h.

+ +
+
+ +

◆ setRGBDImage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::setRGBDImage (const cv::Mat & rgb,
const cv::Mat & depth,
const CameraModel & model,
bool clearPreviousData = true 
)
+
+

Set image data. Detect automatically if raw or compressed. A matrix of type CV_8UC1 with 1 row is considered as compressed.

Parameters
+ + +
clearPreviousData,clearprevious raw and compressed images before setting the new ones.
+
+
+ +
+
+ +

◆ setLaserScan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::setLaserScan (const LaserScan & laserScan,
bool clearPreviousData = true 
)
+
+

Set laser scan data. Detect automatically if raw or compressed. A matrix of type CV_8UC1 with 1 row is considered as compressed.

Parameters
+ + +
clearPreviousData,clearprevious raw and compressed scans before setting the new one.
+
+
+ +
+
+ +

◆ setCameraModel()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setCameraModel (const CameraModel & model)
+
+inline
+
+ +

Sets a single camera model (clears previous models)

+
Parameters
+ + +
modelCamera model to set
+
+
+ +

Definition at line 610 of file SensorData.h.

+ +
+
+ +

◆ setCameraModels()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setCameraModels (const std::vector< CameraModel > & models)
+
+inline
+
+ +

Sets multiple camera models.

+
Parameters
+ + +
modelsVector of camera models
+
+
+ +

Definition at line 616 of file SensorData.h.

+ +
+
+ +

◆ setStereoCameraModel()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setStereoCameraModel (const StereoCameraModel & stereoCameraModel)
+
+inline
+
+ +

Sets a single stereo camera model (clears previous models)

+
Parameters
+ + +
stereoCameraModelStereo camera model to set
+
+
+ +

Definition at line 622 of file SensorData.h.

+ +
+
+ +

◆ setStereoCameraModels()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setStereoCameraModels (const std::vector< StereoCameraModel > & stereoCameraModels)
+
+inline
+
+ +

Sets multiple stereo camera models.

+
Parameters
+ + +
stereoCameraModelsVector of stereo camera models
+
+
+ +

Definition at line 628 of file SensorData.h.

+ +
+
+ +

◆ depthRaw()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::SensorData::depthRaw () const
+
+inline
+
+ +

Returns the depth image (convenience method)

+

Returns the depth image if _depthOrRightRaw contains depth data (not a right stereo image). Depth images are CV_16UC1 or CV_32FC1, while right stereo images are CV_8UC1 or CV_8UC3.

+
Returns
Depth image if available, empty Mat if right stereo image or empty
+ +

Definition at line 639 of file SensorData.h.

+ +
+
+ +

◆ rightRaw()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Mat rtabmap::SensorData::rightRaw () const
+
+inline
+
+ +

Returns the right stereo image (convenience method)

+

Returns the right stereo image if _depthOrRightRaw contains stereo data (not a depth image). Right stereo images are CV_8UC1 or CV_8UC3, while depth images are CV_16UC1 or CV_32FC1.

+
Returns
Right stereo image if available, empty Mat if depth image or empty
+ +

Definition at line 650 of file SensorData.h.

+ +
+
+ +

◆ uncompressData() [1/2]

+ +
+
+ + + + + + + +
void rtabmap::SensorData::uncompressData ()
+
+ +

Uncompresses all compressed data in-place.

+

Decompresses all compressed images, depth, laser scans, and user data, storing the results in the raw data members. This modifies the object.

+ +
+
+ +

◆ uncompressData() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::uncompressData (cv::Mat * imageRaw,
cv::Mat * depthOrRightRaw,
LaserScan * laserScanRaw = 0,
cv::Mat * userDataRaw = 0,
cv::Mat * groundCellsRaw = 0,
cv::Mat * obstacleCellsRaw = 0,
cv::Mat * emptyCellsRaw = 0,
cv::Mat * depthConfidenceRaw = 0 
)
+
+ +

Uncompresses compressed data into provided output buffers.

+

Decompresses compressed data and stores results in the provided output buffers. If a buffer pointer is null, that data type is skipped. The raw fields of the object is updated with the uncompressed data so that consecutive calls with same field should not trigger a uncompression again.

+
Parameters
+ + + + + + + + + +
imageRawOutput buffer for uncompressed RGB/grayscale image
depthOrRightRawOutput buffer for uncompressed depth or right stereo image
laserScanRawOutput buffer for uncompressed laser scan
userDataRawOutput buffer for uncompressed user data
groundCellsRawOutput buffer for uncompressed ground occupancy grid cells
obstacleCellsRawOutput buffer for uncompressed obstacle occupancy grid cells
emptyCellsRawOutput buffer for uncompressed empty occupancy grid cells
depthConfidenceRawOutput buffer for uncompressed depth confidence
+
+
+ +
+
+ +

◆ uncompressDataConst()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::uncompressDataConst (cv::Mat * imageRaw,
cv::Mat * depthOrRightRaw,
LaserScan * laserScanRaw = 0,
cv::Mat * userDataRaw = 0,
cv::Mat * groundCellsRaw = 0,
cv::Mat * obstacleCellsRaw = 0,
cv::Mat * emptyCellsRaw = 0,
cv::Mat * depthConfidenceRaw = 0 
) const
+
+ +

Uncompresses compressed data into provided output buffers (const version)

+

Same as uncompressData() but does not modify the object's internal state.

+
Parameters
+ + + + + + + + + +
imageRawOutput buffer for uncompressed RGB/grayscale image
depthOrRightRawOutput buffer for uncompressed depth or right stereo image
laserScanRawOutput buffer for uncompressed laser scan
userDataRawOutput buffer for uncompressed user data
groundCellsRawOutput buffer for uncompressed ground occupancy grid cells
obstacleCellsRawOutput buffer for uncompressed obstacle occupancy grid cells
emptyCellsRawOutput buffer for uncompressed empty occupancy grid cells
depthConfidenceRawOutput buffer for uncompressed depth confidence
+
+
+ +
+
+ +

◆ cameraModels()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< CameraModel > & rtabmap::SensorData::cameraModels () const
+
+inline
+
+ +

Returns the camera models.

+
Returns
Const reference to vector of mono camera models
+ +

Definition at line 724 of file SensorData.h.

+ +
+
+ +

◆ stereoCameraModels()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< StereoCameraModel > & rtabmap::SensorData::stereoCameraModels () const
+
+inline
+
+ +

Returns the stereo camera models.

+
Returns
Const reference to vector of stereo camera models
+ +

Definition at line 730 of file SensorData.h.

+ +
+
+ +

◆ setUserData()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::setUserData (const cv::Mat & userData,
bool clearPreviousData = true 
)
+
+

Set user data. Detect automatically if raw or compressed. If raw, the data is compressed too, unless compressed user data is already set (only possible with clearPreviousData=false), which is then assumed to be that raw data compressed and kept as is. A matrix of type CV_8UC1 with 1 row is considered as compressed. If you have one dimension unsigned 8 bits raw data, make sure to transpose it (to have multiple rows instead of multiple columns) in order to be detected as not compressed.

Parameters
+ + +
clearPreviousData,clearprevious raw and compressed user data before setting the new one. With false, setting the raw data of compressed user data already set keeps the compressed one, like setLaserScan() and setRGBDImage() do.
+
+
+ +
+
+ +

◆ userDataRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::userDataRaw () const
+
+inline
+
+ +

Definition at line 745 of file SensorData.h.

+ +
+
+ +

◆ userDataCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::userDataCompressed () const
+
+inline
+
+ +

Definition at line 746 of file SensorData.h.

+ +
+
+ +

◆ setOccupancyGrid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::setOccupancyGrid (const cv::Mat & ground,
const cv::Mat & obstacles,
const cv::Mat & empty,
float cellSize,
const cv::Point3f & viewPoint 
)
+
+ +

Sets occupancy grid data.

+

Sets the occupancy grid with ground, obstacle, and empty cells. The data is automatically detected as raw or compressed. If raw, it will be compressed automatically.

+
Parameters
+ + + + + + +
groundGround cells matrix
obstaclesObstacle cells matrix
emptyEmpty cells matrix
cellSizeSize of each grid cell in meters
viewPointViewpoint/origin of the occupancy grid (3D point)
+
+
+ +
+
+ +

◆ gridGroundCellsRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::gridGroundCellsRaw () const
+
+inline
+
+ +

Returns raw ground cells.

+
Returns
Const reference to raw ground cells matrix
+ +

Definition at line 771 of file SensorData.h.

+ +
+
+ +

◆ gridGroundCellsCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::gridGroundCellsCompressed () const
+
+inline
+
+ +

Returns compressed ground cells.

+
Returns
Const reference to compressed ground cells matrix
+
Note
Use Compression::uncompressData() to uncompress the data.
+ +

Definition at line 778 of file SensorData.h.

+ +
+
+ +

◆ gridObstacleCellsRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::gridObstacleCellsRaw () const
+
+inline
+
+ +

Returns raw obstacle cells.

+
Returns
Const reference to raw obstacle cells matrix
+ +

Definition at line 784 of file SensorData.h.

+ +
+
+ +

◆ gridObstacleCellsCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::gridObstacleCellsCompressed () const
+
+inline
+
+ +

Returns compressed obstacle cells.

+
Returns
Const reference to compressed obstacle cells matrix
+
Note
Use Compression::uncompressData() to uncompress the data.
+ +

Definition at line 791 of file SensorData.h.

+ +
+
+ +

◆ gridEmptyCellsRaw()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::gridEmptyCellsRaw () const
+
+inline
+
+ +

Returns raw empty cells.

+
Returns
Const reference to raw empty cells matrix
+ +

Definition at line 797 of file SensorData.h.

+ +
+
+ +

◆ gridEmptyCellsCompressed()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::gridEmptyCellsCompressed () const
+
+inline
+
+ +

Returns compressed empty cells.

+
Returns
Const reference to compressed empty cells matrix
+
Note
Use Compression::uncompressData() to uncompress the data.
+ +

Definition at line 804 of file SensorData.h.

+ +
+
+ +

◆ gridCellSize()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::SensorData::gridCellSize () const
+
+inline
+
+ +

Returns the occupancy grid cell size.

+
Returns
Cell size in meters
+ +

Definition at line 810 of file SensorData.h.

+ +
+
+ +

◆ gridViewPoint()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Point3f & rtabmap::SensorData::gridViewPoint () const
+
+inline
+
+ +

Returns the occupancy grid viewpoint.

+
Returns
Const reference to viewpoint/origin 3D point
+ +

Definition at line 816 of file SensorData.h.

+ +
+
+ +

◆ setFeatures()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::setFeatures (const std::vector< cv::KeyPoint > & keypoints,
const std::vector< cv::Point3f > & keypoints3D,
const cv::Mat & descriptors 
)
+
+ +

Sets visual features (keypoints, 3D points, descriptors)

+

Sets the visual features extracted from the images. All arrays must have matching sizes (one keypoint per 3D point and descriptor).

+
Parameters
+ + + + +
keypoints2D keypoints in image coordinates
keypoints3D3D points corresponding to keypoints (in base_link frame)
descriptorsFeature descriptors matrix (one row per keypoint)
+
+
+ +
+
+ +

◆ keypoints()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< cv::KeyPoint > & rtabmap::SensorData::keypoints () const
+
+inline
+
+ +

Returns the 2D keypoints.

+
Returns
Const reference to vector of 2D keypoints
+ +

Definition at line 834 of file SensorData.h.

+ +
+
+ +

◆ keypoints3D()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< cv::Point3f > & rtabmap::SensorData::keypoints3D () const
+
+inline
+
+ +

Returns the 3D keypoints.

+
Returns
Const reference to vector of 3D points (in base_link frame)
+ +

Definition at line 840 of file SensorData.h.

+ +
+
+ +

◆ descriptors()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::descriptors () const
+
+inline
+
+ +

Returns the feature descriptors.

+
Returns
Const reference to descriptors matrix (one row per keypoint)
+ +

Definition at line 846 of file SensorData.h.

+ +
+
+ +

◆ addGlobalDescriptor()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::addGlobalDescriptor (const GlobalDescriptor & descriptor)
+
+inline
+
+ +

Adds a global descriptor.

+
Parameters
+ + +
descriptorGlobal descriptor to add
+
+
+ +

Definition at line 852 of file SensorData.h.

+ +
+
+ +

◆ setGlobalDescriptors()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setGlobalDescriptors (const std::vector< GlobalDescriptor > & descriptors)
+
+inline
+
+ +

Sets all global descriptors.

+
Parameters
+ + +
descriptorsVector of global descriptors
+
+
+ +

Definition at line 858 of file SensorData.h.

+ +
+
+ +

◆ clearGlobalDescriptors()

+ +
+
+ + + + + +
+ + + + + + + +
void rtabmap::SensorData::clearGlobalDescriptors ()
+
+inline
+
+ +

Clears all global descriptors.

+ +

Definition at line 863 of file SensorData.h.

+ +
+
+ +

◆ globalDescriptors()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< GlobalDescriptor > & rtabmap::SensorData::globalDescriptors () const
+
+inline
+
+ +

Returns all global descriptors.

+
Returns
Const reference to vector of global descriptors
+ +

Definition at line 869 of file SensorData.h.

+ +
+
+ +

◆ setGroundTruth()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setGroundTruth (const Transform & pose)
+
+inline
+
+ +

Sets the ground truth pose.

+
Parameters
+ + +
poseGround truth transform (for evaluation purposes)
+
+
+ +

Definition at line 875 of file SensorData.h.

+ +
+
+ +

◆ groundTruth()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::SensorData::groundTruth () const
+
+inline
+
+ +

Returns the ground truth pose.

+
Returns
Const reference to ground truth transform
+ +

Definition at line 881 of file SensorData.h.

+ +
+
+ +

◆ setGlobalPose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::setGlobalPose (const Transform & pose,
const cv::Mat & covariance 
)
+
+inline
+
+ +

Sets the global pose with covariance.

+
Parameters
+ + + +
poseGlobal pose transform
covariancePose covariance matrix (6x6, CV_64FC1)
+
+
+ +

Definition at line 888 of file SensorData.h.

+ +
+
+ +

◆ globalPose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::SensorData::globalPose () const
+
+inline
+
+ +

Returns the global pose.

+
Returns
Const reference to global pose transform
+ +

Definition at line 894 of file SensorData.h.

+ +
+
+ +

◆ globalPoseCovariance()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::SensorData::globalPoseCovariance () const
+
+inline
+
+ +

Returns the global pose covariance.

+
Returns
Const reference to pose covariance matrix (6x6, CV_64FC1)
+ +

Definition at line 900 of file SensorData.h.

+ +
+
+ +

◆ setGPS()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setGPS (const GPS & gps)
+
+inline
+
+ +

Sets GPS data.

+
Parameters
+ + +
gpsGPS data (latitude, longitude, altitude, etc.)
+
+
+ +

Definition at line 906 of file SensorData.h.

+ +
+
+ +

◆ gps()

+ +
+
+ + + + + +
+ + + + + + + +
const GPS & rtabmap::SensorData::gps () const
+
+inline
+
+ +

Returns GPS data.

+
Returns
Const reference to GPS data
+ +

Definition at line 912 of file SensorData.h.

+ +
+
+ +

◆ setIMU()

+ +
+
+ + + + + + + + +
void rtabmap::SensorData::setIMU (const IMU & imu)
+
+ +

Sets IMU data.

+
Parameters
+ + +
imuIMU data (accelerometer, gyroscope, orientation)
+
+
+
Warning
Asserts that all orientation, angular velocity and linear acceleration values are finite.
+ +
+
+ +

◆ imu()

+ +
+
+ + + + + +
+ + + + + + + +
const IMU & rtabmap::SensorData::imu () const
+
+inline
+
+ +

Returns IMU data.

+
Returns
Const reference to IMU data
+ +

Definition at line 926 of file SensorData.h.

+ +
+
+ +

◆ setEnvSensors()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setEnvSensors (const EnvSensors & sensors)
+
+inline
+
+ +

Sets all environmental sensors.

+
Parameters
+ + +
sensorsMap of environmental sensor types to sensor data
+
+
+ +

Definition at line 932 of file SensorData.h.

+ +
+
+ +

◆ addEnvSensor()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::addEnvSensor (const EnvSensor & sensor)
+
+inline
+
+ +

Adds a single environmental sensor.

+
Parameters
+ + +
sensorEnvironmental sensor to add
+
+
+ +

Definition at line 938 of file SensorData.h.

+ +
+
+ +

◆ envSensors()

+ +
+
+ + + + + +
+ + + + + + + +
const EnvSensors & rtabmap::SensorData::envSensors () const
+
+inline
+
+ +

Returns all environmental sensors.

+
Returns
Const reference to map of environmental sensors
+ +

Definition at line 944 of file SensorData.h.

+ +
+
+ +

◆ setLandmarks()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::SensorData::setLandmarks (const Landmarks & landmarks)
+
+inline
+
+ +

Sets landmarks.

+
Parameters
+ + +
landmarksMap of landmark IDs to landmark data
+
+
+
Note
Landmark IDs should be positive and non-zero.
+ +

Definition at line 951 of file SensorData.h.

+ +
+
+ +

◆ landmarks()

+ +
+
+ + + + + +
+ + + + + + + +
const Landmarks & rtabmap::SensorData::landmarks () const
+
+inline
+
+ +

Returns landmarks.

+
Returns
Const reference to map of landmarks
+ +

Definition at line 957 of file SensorData.h.

+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + + + +
unsigned long rtabmap::SensorData::getMemoryUsed () const
+
+ +

Computes the memory usage of this sensor data.

+

Calculates the approximate memory footprint including all images, laser scans, features, descriptors, and other data structures.

+
Returns
Memory usage in bytes
+ +
+
+ +

◆ clearCompressedData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::clearCompressedData (bool images = true,
bool scan = true,
bool userData = true,
bool occupancyGrid = true 
)
+
+

Clear compressed rgb/depth (left/right) images, compressed laser scan and compressed user data. Raw data are kept is set.

+ +
+
+ +

◆ clearRawData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::SensorData::clearRawData (bool images = true,
bool scan = true,
bool userData = true,
bool occupancyGrid = true 
)
+
+

Clear raw rgb/depth (left/right) images, raw laser scan and raw user data. Compressed data are kept is set.

+ +
+
+ +

◆ isPointVisibleFromCameras()

+ +
+
+ + + + + + + + +
int rtabmap::SensorData::isPointVisibleFromCameras (const cv::Point3f & pt) const
+
+ +

Checks if a 3D point is visible from any camera.

+

Projects the 3D point into all camera models and checks if it falls within the image bounds.

+
Parameters
+ + +
pt3D point in robot frame (base_link)
+
+
+
Returns
Camera index (>=0) of the first camera found with the point visible, -1 if the point is not visible by any camera.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorData.js b/preview/pr-1773/api/latest/classrtabmap_1_1SensorData.js new file mode 100644 index 00000000..5efae710 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorData.js @@ -0,0 +1,82 @@ +var classrtabmap_1_1SensorData = +[ + [ "SensorData", "classrtabmap_1_1SensorData.html#a941f907890fe9e0e9becec0a665581cd", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#ab6201ea27482207308f000bd4cc90081", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#a14f7a5c64b5d27842cb654e247d1fd20", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#aead598774e0cb15375828a2965b3ab80", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#a87424cc9915dababe9aa3bc418e85197", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#ac06b8207850c5412cc52f5f0e0e4ba7b", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#a52b215e8d320bbcbd464e3b7181a077b", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#ae4498a6d017e83202dfe86618e91fa57", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#a72a0250435fc194b1189241d4a47254d", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#ada69a11125b0b3072add73a3a2f1b5f2", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#ae0370b88671bb41812c2d39fd0cfc3ce", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#a1534d36fee45c3df70679438ec9d00a3", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#abdd07b6e248e165959468bb31897bc20", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#a6ccaccf892f950b0caa03c07de3eab98", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#ad34a0a4ca3eac4a1c91fb7fb5068fb04", null ], + [ "SensorData", "classrtabmap_1_1SensorData.html#a25efb0e7904a3daa7f4ee7cd814a24ff", null ], + [ "~SensorData", "classrtabmap_1_1SensorData.html#a94f4e8970ae34d652100dce131cc9e44", null ], + [ "isValid", "classrtabmap_1_1SensorData.html#ad620676ab1a971846ab80ef646aa5882", null ], + [ "id", "classrtabmap_1_1SensorData.html#a84fbcb16e51018d96065d3ce240650c6", null ], + [ "setId", "classrtabmap_1_1SensorData.html#a4d0f4615a747eaef142b51a1ab1e5527", null ], + [ "stamp", "classrtabmap_1_1SensorData.html#a566e5600bc0369f2f88ff0c597cefcfb", null ], + [ "setStamp", "classrtabmap_1_1SensorData.html#a5c0844e94d3fff50a8bfec2decf2f94c", null ], + [ "imageCompressed", "classrtabmap_1_1SensorData.html#aafcc6b483798b7a99fafa8f929db1029", null ], + [ "depthOrRightCompressed", "classrtabmap_1_1SensorData.html#a85b36ca12b0936a99d61b768908097da", null ], + [ "depthConfidenceCompressed", "classrtabmap_1_1SensorData.html#aebbab80906082f6e35ce5731fa67ca26", null ], + [ "laserScanCompressed", "classrtabmap_1_1SensorData.html#a1522af81a95c27b76e316919df95a869", null ], + [ "imageRaw", "classrtabmap_1_1SensorData.html#ae9e44401d0d6faee8fcb801090936fef", null ], + [ "depthOrRightRaw", "classrtabmap_1_1SensorData.html#a2476c59283ef2e24d7a3f10301433327", null ], + [ "depthConfidenceRaw", "classrtabmap_1_1SensorData.html#a0cfb7cee085b7959c9ddf1d7854ed910", null ], + [ "laserScanRaw", "classrtabmap_1_1SensorData.html#aeebafe56f302f9e8e4f06c5ad750248d", null ], + [ "setRGBDImage", "classrtabmap_1_1SensorData.html#a203770ef217dfdc67b98ca593b2cab24", null ], + [ "setLaserScan", "classrtabmap_1_1SensorData.html#a8fc1c848518793a1fe65c47a3ff729b0", null ], + [ "setCameraModel", "classrtabmap_1_1SensorData.html#ad8ae172220b7bfffeb09bb1eac60f28f", null ], + [ "setCameraModels", "classrtabmap_1_1SensorData.html#af841bbc9ea6de17124f8c871fa5d0719", null ], + [ "setStereoCameraModel", "classrtabmap_1_1SensorData.html#ab2f74509af5e3f56d1c4d5e31c0c6003", null ], + [ "setStereoCameraModels", "classrtabmap_1_1SensorData.html#ab4e6b5d917155b94d8b4b6242fe56c6e", null ], + [ "depthRaw", "classrtabmap_1_1SensorData.html#a1970cd319999fb371873553b53b07d73", null ], + [ "rightRaw", "classrtabmap_1_1SensorData.html#aaa7408cb13ea2cbe33438e007b80de30", null ], + [ "uncompressData", "classrtabmap_1_1SensorData.html#aa356c9d5e9e7ea55ccdbe99c215bcb52", null ], + [ "uncompressData", "classrtabmap_1_1SensorData.html#a8c3364f43f7c0a57261720408a088158", null ], + [ "uncompressDataConst", "classrtabmap_1_1SensorData.html#a2e0be45871fa8dbce1c3cf727953358f", null ], + [ "cameraModels", "classrtabmap_1_1SensorData.html#a6ace7b2b8ebae5f7ab18e159fe6e8a92", null ], + [ "stereoCameraModels", "classrtabmap_1_1SensorData.html#ab02d686ac7ef8b389655e913768b4d87", null ], + [ "setUserData", "classrtabmap_1_1SensorData.html#accb5f254667af3074993a073a4e1f072", null ], + [ "setOccupancyGrid", "classrtabmap_1_1SensorData.html#a5c12949c62c65281bade9ffcc681462b", null ], + [ "gridGroundCellsRaw", "classrtabmap_1_1SensorData.html#a2db9b9dbbe3d0943a47cdc4a5a9051d4", null ], + [ "gridGroundCellsCompressed", "classrtabmap_1_1SensorData.html#ab3c515b23322cd31c3fcbcb054588e43", null ], + [ "gridObstacleCellsRaw", "classrtabmap_1_1SensorData.html#a0f2e804ebbcff5be648a43f0a41e9dfc", null ], + [ "gridObstacleCellsCompressed", "classrtabmap_1_1SensorData.html#a50b09c52de6c8c6a6a95ee08886845a0", null ], + [ "gridEmptyCellsRaw", "classrtabmap_1_1SensorData.html#a490e96f3f1d16cc559b3a004e2ec4fbe", null ], + [ "gridEmptyCellsCompressed", "classrtabmap_1_1SensorData.html#ac2bae4f0747795f778275102b4ebf1b3", null ], + [ "gridCellSize", "classrtabmap_1_1SensorData.html#a984ce55b6b75152a63441bd07288dc6c", null ], + [ "gridViewPoint", "classrtabmap_1_1SensorData.html#a51f21b98088ceec4c5d108d0fbe03200", null ], + [ "setFeatures", "classrtabmap_1_1SensorData.html#ad083f0a1e7769ff62183a0fa47279ae3", null ], + [ "keypoints", "classrtabmap_1_1SensorData.html#afdc0db8c8176c4108e78e66df54b7d94", null ], + [ "keypoints3D", "classrtabmap_1_1SensorData.html#ab17daf3d7c2cd1253306e6d5991549df", null ], + [ "descriptors", "classrtabmap_1_1SensorData.html#a5cf732793c05b16bb67f144524882b26", null ], + [ "addGlobalDescriptor", "classrtabmap_1_1SensorData.html#acc0ac26f01ad9f5185f80f8f09da252e", null ], + [ "setGlobalDescriptors", "classrtabmap_1_1SensorData.html#ab6f18f2eb0340c8f6e800a695424bbbe", null ], + [ "clearGlobalDescriptors", "classrtabmap_1_1SensorData.html#a37c2569419731afc855a3ce984c11505", null ], + [ "globalDescriptors", "classrtabmap_1_1SensorData.html#acd46b940bac6e1d53ff2826be309b4c8", null ], + [ "setGroundTruth", "classrtabmap_1_1SensorData.html#a7051ea8c13bafd7eaffb5f5a93064808", null ], + [ "groundTruth", "classrtabmap_1_1SensorData.html#aef9e0c36efdc8915536c3bc082108689", null ], + [ "setGlobalPose", "classrtabmap_1_1SensorData.html#a72f0ce5a2989f478149f5cf2d5a36556", null ], + [ "globalPose", "classrtabmap_1_1SensorData.html#a55e6ca21bfd11b7afb375451a2a77b87", null ], + [ "globalPoseCovariance", "classrtabmap_1_1SensorData.html#a569af71e8757105dc040251a3805fe97", null ], + [ "setGPS", "classrtabmap_1_1SensorData.html#ad09e3e0fc1f60d233d81288a4cf8f56a", null ], + [ "gps", "classrtabmap_1_1SensorData.html#a176b8160afc549fc6eaa2d0567c12957", null ], + [ "setIMU", "classrtabmap_1_1SensorData.html#a2297bfc9d81c077852d8f832231ba139", null ], + [ "imu", "classrtabmap_1_1SensorData.html#a056056de80edf1bc20505fd992cdc6e7", null ], + [ "setEnvSensors", "classrtabmap_1_1SensorData.html#ab3a5ebf180d5f2f106877b78aee6d1d1", null ], + [ "addEnvSensor", "classrtabmap_1_1SensorData.html#a1006dbcfb640b599f0587af3b0ba46ae", null ], + [ "envSensors", "classrtabmap_1_1SensorData.html#a4cce095c69f9fa8f0035c9f2f51c0ff9", null ], + [ "setLandmarks", "classrtabmap_1_1SensorData.html#af0873bbd79209dca371792e94e020e14", null ], + [ "landmarks", "classrtabmap_1_1SensorData.html#a73ba0bb1cb31a3438b3ffee161b16ff8", null ], + [ "getMemoryUsed", "classrtabmap_1_1SensorData.html#a60b3b2366bb66c914cfa7799204828fc", null ], + [ "clearCompressedData", "classrtabmap_1_1SensorData.html#a33244e8049bfae5bea9ecf80057bcd29", null ], + [ "clearRawData", "classrtabmap_1_1SensorData.html#a53040403970a08a677e69d824a31f7b2", null ], + [ "isPointVisibleFromCameras", "classrtabmap_1_1SensorData.html#a30f069ee8ffa263ec2c18bc714713e03", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent-members.html new file mode 100644 index 00000000..73c01aeb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent-members.html @@ -0,0 +1,132 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SensorEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::SensorEvent, including all inherited members.

+ + + + + + + + + + + + + + + + + +
cameraName() constrtabmap::SensorEventinline
Code enum namertabmap::SensorEvent
data() constrtabmap::SensorEventinline
getClassName() constrtabmap::SensorEventinlinevirtual
getCode() constUEventinline
info() constrtabmap::SensorEventinline
kCodeData enum valuertabmap::SensorEvent
kCodeNoMoreImages enum valuertabmap::SensorEvent
SensorEvent(const cv::Mat &image, int seq=0, double stamp=0.0, const std::string &cameraName=std::string())rtabmap::SensorEventinline
SensorEvent()rtabmap::SensorEventinline
SensorEvent(const SensorData &data)rtabmap::SensorEventinline
SensorEvent(const SensorData &data, const std::string &cameraName)rtabmap::SensorEventinline
SensorEvent(const SensorData &data, const SensorCaptureInfo &sensorCaptureInfo)rtabmap::SensorEventinline
UEvent(int code=0)UEventinlineprotected
~SensorEvent()rtabmap::SensorEventinlinevirtual
~UEvent() (defined in UEvent)UEventinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.html new file mode 100644 index 00000000..0a50a128 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.html @@ -0,0 +1,628 @@ + + + + + + + + +RTAB-Map: rtabmap::SensorEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SensorEvent Class Reference
+
+
+ +

Event class for sensor data communication in RTAB-Map's event system. + More...

+ +

#include <SensorEvent.h>

+
+Inheritance diagram for rtabmap::SensorEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SensorEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + +

+Public Types

enum  Code { kCodeData +, kCodeNoMoreImages + }
 Event codes for SensorEvent. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SensorEvent (const cv::Mat &image, int seq=0, double stamp=0.0, const std::string &cameraName=std::string())
 Constructor from a single image.
 
 SensorEvent ()
 Constructor for end-of-stream event.
 
 SensorEvent (const SensorData &data)
 Constructor from SensorData.
 
 SensorEvent (const SensorData &data, const std::string &cameraName)
 Constructor from SensorData with camera name.
 
 SensorEvent (const SensorData &data, const SensorCaptureInfo &sensorCaptureInfo)
 Constructor from SensorData with full capture info.
 
const SensorData & data () const
 Returns the sensor data contained in this event.
 
const std::string & cameraName () const
 Returns the camera name.
 
const SensorCaptureInfo & info () const
 Returns the sensor capture information.
 
virtual ~SensorEvent ()
 Virtual destructor.
 
virtual std::string getClassName () const
 Returns the class name for event identification.
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

Event class for sensor data communication in RTAB-Map's event system.

+

SensorEvent is an event class that extends UEvent and is used to communicate sensor data (images, depth, laser scans, etc.) through RTAB-Map's event-driven architecture. It is typically posted by sensor capture threads and handled by event handlers (e.g., RtabmapThread, DataRecorder, CalibrationDialog).

+

The class supports two event codes:

    +
  • kCodeData: Indicates that new sensor data is available
  • +
  • kCodeNoMoreImages: Indicates that the sensor stream has ended (end of file, camera disconnected, etc.)
  • +
+

SensorEvent carries:

    +
  • SensorData: The actual sensor data (images, depth, scans, camera models, etc.)
  • +
  • SensorCaptureInfo: Metadata about the capture (camera name, timing information, odometry pose, etc.)
  • +
+
Note
This class is part of RTAB-Map's event system. Handlers should check the event code and class name before processing the event.
+
See also
UEvent
+
+SensorData
+
+SensorCaptureInfo
+
+UEventsHandler
+
+UEventsManager
+ +

Definition at line 63 of file SensorEvent.h.

+

Member Enumeration Documentation

+ +

◆ Code

+ +
+
+ + + + +
enum rtabmap::SensorEvent::Code
+
+ +

Event codes for SensorEvent.

+ + + +
Enumerator
kCodeData 

Event code indicating new sensor data is available.

+
kCodeNoMoreImages 

Event code indicating the sensor stream has ended.

+
+ +

Definition at line 71 of file SensorEvent.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ SensorEvent() [1/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::SensorEvent::SensorEvent (const cv::Mat & image,
int seq = 0,
double stamp = 0.0,
const std::string & cameraName = std::string() 
)
+
+inline
+
+ +

Constructor from a single image.

+

Creates a SensorEvent with kCodeData containing a single image. This is a convenience constructor for simple image-only sensor data.

+
Parameters
+ + + + + +
imageThe image to include in the sensor data
seqSequence number (default: 0)
stampTimestamp in seconds (default: 0.0)
cameraNameOptional camera name identifier (default: empty)
+
+
+ +

Definition at line 88 of file SensorEvent.h.

+ +
+
+ +

◆ SensorEvent() [2/5]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::SensorEvent::SensorEvent ()
+
+inline
+
+ +

Constructor for end-of-stream event.

+

Creates a SensorEvent with kCodeNoMoreImages to signal that the sensor stream has ended (e.g., end of file, camera disconnected).

+
Note
This constructor does not include any sensor data.
+ +

Definition at line 103 of file SensorEvent.h.

+ +
+
+ +

◆ SensorEvent() [3/5]

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::SensorEvent::SensorEvent (const SensorData & data)
+
+inline
+
+ +

Constructor from SensorData.

+

Creates a SensorEvent with kCodeData containing the provided SensorData.

+
Parameters
+ + +
dataThe sensor data to include in the event
+
+
+ +

Definition at line 115 of file SensorEvent.h.

+ +
+
+ +

◆ SensorEvent() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::SensorEvent::SensorEvent (const SensorData & data,
const std::string & cameraName 
)
+
+inline
+
+ +

Constructor from SensorData with camera name.

+

Creates a SensorEvent with kCodeData containing the provided SensorData and camera name.

+
Parameters
+ + + +
dataThe sensor data to include in the event
cameraNameCamera name identifier
+
+
+ +

Definition at line 130 of file SensorEvent.h.

+ +
+
+ +

◆ SensorEvent() [5/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::SensorEvent::SensorEvent (const SensorData & data,
const SensorCaptureInfo & sensorCaptureInfo 
)
+
+inline
+
+ +

Constructor from SensorData with full capture info.

+

Creates a SensorEvent with kCodeData containing the provided SensorData and complete sensor capture information (camera name, timing, odometry, etc.).

+
Parameters
+ + + +
dataThe sensor data to include in the event
sensorCaptureInfoComplete sensor capture information
+
+
+ +

Definition at line 146 of file SensorEvent.h.

+ +
+
+ +

◆ ~SensorEvent()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::SensorEvent::~SensorEvent ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 185 of file SensorEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ data()

+ +
+
+ + + + + +
+ + + + + + + +
const SensorData & rtabmap::SensorEvent::data () const
+
+inline
+
+ +

Returns the sensor data contained in this event.

+

Returns the SensorData object containing images, depth, laser scans, camera models, and other sensor information.

+
Returns
Const reference to the sensor data
+ +

Definition at line 161 of file SensorEvent.h.

+ +
+
+ +

◆ cameraName()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::SensorEvent::cameraName () const
+
+inline
+
+ +

Returns the camera name.

+

Returns the camera name identifier from the sensor capture info.

+
Returns
Const reference to the camera name string
+ +

Definition at line 170 of file SensorEvent.h.

+ +
+
+ +

◆ info()

+ +
+
+ + + + + +
+ + + + + + + +
const SensorCaptureInfo & rtabmap::SensorEvent::info () const
+
+inline
+
+ +

Returns the sensor capture information.

+

Returns the complete sensor capture information including camera name, timing information, odometry pose, covariance, and other metadata.

+
Returns
Const reference to the sensor capture info
+ +

Definition at line 180 of file SensorEvent.h.

+ +
+
+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::SensorEvent::getClassName () const
+
+inlinevirtual
+
+ +

Returns the class name for event identification.

+

Returns "SensorEvent" to allow event handlers to identify this event type.

+
Returns
Class name string "SensorEvent"
+ +

Implements UEvent.

+ +

Definition at line 194 of file SensorEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.js new file mode 100644 index 00000000..2b0c7fb5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent.js @@ -0,0 +1,17 @@ +var classrtabmap_1_1SensorEvent = +[ + [ "Code", "classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66", [ + [ "kCodeData", "classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66a96386fbcb6a0fd382113f188c193ed61", null ], + [ "kCodeNoMoreImages", "classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66a377f61ebd393e5db46b02121270abdf2", null ] + ] ], + [ "SensorEvent", "classrtabmap_1_1SensorEvent.html#aa6c0584b85a70fe240f745c759948591", null ], + [ "SensorEvent", "classrtabmap_1_1SensorEvent.html#aef6624e43c3f7f29684072782a377e20", null ], + [ "SensorEvent", "classrtabmap_1_1SensorEvent.html#a6e120cf7c4aea9201462c9cbb224b787", null ], + [ "SensorEvent", "classrtabmap_1_1SensorEvent.html#a1a47910aed70809eabfc195ca2515f85", null ], + [ "SensorEvent", "classrtabmap_1_1SensorEvent.html#a1e35f9e5433d00628dd51876bc74fec5", null ], + [ "~SensorEvent", "classrtabmap_1_1SensorEvent.html#a2794fb8f052c08efdfd4b379e359fecb", null ], + [ "data", "classrtabmap_1_1SensorEvent.html#a02d0ef0c42eab24adb8013a9693e02b1", null ], + [ "cameraName", "classrtabmap_1_1SensorEvent.html#adaf11817f3e0338ab63b1e8fee4a3c01", null ], + [ "info", "classrtabmap_1_1SensorEvent.html#a89ec0e00ab443a71b4735e392e419331", null ], + [ "getClassName", "classrtabmap_1_1SensorEvent.html#a7bb8ca3a235aa8b58227bc50e19d7493", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.map new file mode 100644 index 00000000..1800c8b5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.md5 new file mode 100644 index 00000000..b5fe59ae --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.md5 @@ -0,0 +1 @@ +23610fe71f38dabc17e82f31a37fd248 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..31db2728df42aa199c8a4aada340645a07373075 GIT binary patch literal 4084 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 Y1r5CT#bLHou*O473@r4k^;}>42d_~vBLDyZ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.map new file mode 100644 index 00000000..1800c8b5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.md5 new file mode 100644 index 00000000..b5fe59ae --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.md5 @@ -0,0 +1 @@ +23610fe71f38dabc17e82f31a37fd248 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SensorEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..31db2728df42aa199c8a4aada340645a07373075 GIT binary patch literal 4084 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 Y1r5CT#bLHou*O473@r4k^;}>42d_~vBLDyZ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Signature-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Signature-members.html new file mode 100644 index 00000000..dd125727 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Signature-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Signature Member List
+
+
+ +

This is the complete list of members for rtabmap::Signature, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addLandmark(const Link &landmark)rtabmap::Signature
addLink(const Link &link)rtabmap::Signature
addLinks(const std::list< Link > &links)rtabmap::Signature
addLinks(const std::map< int, Link > &links)rtabmap::Signature
changeLinkIds(int idFrom, int idTo)rtabmap::Signature
changeWordsRef(int oldWordId, int activeWordId)rtabmap::Signature
compareTo(const Signature &signature) constrtabmap::Signature
getGroundTruthPose() constrtabmap::Signatureinline
getInvalidWordsCount() constrtabmap::Signatureinline
getLabel() constrtabmap::Signatureinline
getLandmarks() constrtabmap::Signatureinline
getLinks() constrtabmap::Signatureinline
getMemoryUsed(bool withSensorData=true) constrtabmap::Signature
getPose() constrtabmap::Signatureinline
getPoseCovariance() constrtabmap::Signature
getStamp() constrtabmap::Signatureinline
getVelocity() constrtabmap::Signatureinline
getWeight() constrtabmap::Signatureinline
getWords() constrtabmap::Signatureinline
getWords3() constrtabmap::Signatureinline
getWordsChanged() constrtabmap::Signatureinline
getWordsDescriptors() constrtabmap::Signatureinline
getWordsKpts() constrtabmap::Signatureinline
hasLink(int idTo, Link::Type type=Link::kUndef) constrtabmap::Signature
id() constrtabmap::Signatureinline
isBadSignature() constrtabmap::Signature
isEnabled() constrtabmap::Signatureinline
isLinksModified() constrtabmap::Signatureinline
isModified() constrtabmap::Signatureinline
isSaved() constrtabmap::Signatureinline
mapId() constrtabmap::Signatureinline
removeAllWords()rtabmap::Signature
removeLandmark(int landmarkId)rtabmap::Signature
removeLandmarks()rtabmap::Signature
removeLink(int idTo)rtabmap::Signature
removeLinks(bool keepSelfReferringLinks=false)rtabmap::Signature
removeVirtualLinks()rtabmap::Signature
sensorData()rtabmap::Signatureinline
sensorData() constrtabmap::Signatureinline
setEnabled(bool enabled)rtabmap::Signatureinline
setGroundTruthPose(const Transform &pose)rtabmap::Signatureinline
setLabel(const std::string &label)rtabmap::Signatureinline
setModified(bool modified)rtabmap::Signatureinline
setPose(const Transform &pose)rtabmap::Signatureinline
setSaved(bool saved)rtabmap::Signatureinline
setVelocity(float vx, float vy, float vz, float vroll, float vpitch, float vyaw)rtabmap::Signatureinline
setWeight(int weight)rtabmap::Signatureinline
setWords(const std::multimap< int, int > &words, const std::vector< cv::KeyPoint > &keypoints, const std::vector< cv::Point3f > &words3, const cv::Mat &descriptors)rtabmap::Signature
setWordsDescriptors(const cv::Mat &descriptors)rtabmap::Signature
Signature()rtabmap::Signature
Signature(int id, int mapId=-1, int weight=0, double stamp=0.0, const std::string &label=std::string(), const Transform &pose=Transform(), const Transform &groundTruthPose=Transform(), const SensorData &sensorData=SensorData())rtabmap::Signature
Signature(const SensorData &data)rtabmap::Signature
~Signature()rtabmap::Signaturevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Signature.html b/preview/pr-1773/api/latest/classrtabmap_1_1Signature.html new file mode 100644 index 00000000..f1749163 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Signature.html @@ -0,0 +1,2005 @@ + + + + + + + + +RTAB-Map: rtabmap::Signature Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Signature Class Reference
+
+
+ +

Represents a node in RTAB-Map's pose graph. + More...

+ +

#include <Signature.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Signature ()
 Default constructor.
 
 Signature (int id, int mapId=-1, int weight=0, double stamp=0.0, const std::string &label=std::string(), const Transform &pose=Transform(), const Transform &groundTruthPose=Transform(), const SensorData &sensorData=SensorData())
 Constructor with explicit parameters.
 
 Signature (const SensorData &data)
 Constructor from sensor data.
 
+virtual ~Signature ()
 Virtual destructor.
 
float compareTo (const Signature &signature) const
 Compares this signature to another signature.
 
bool isBadSignature () const
 Checks if this signature is considered "bad".
 
int id () const
 Returns the signature ID.
 
int mapId () const
 Returns the map ID.
 
void setWeight (int weight)
 Sets the weight/importance of this signature.
 
int getWeight () const
 Returns the weight/importance of this signature.
 
void setLabel (const std::string &label)
 Sets a label/name for this signature.
 
const std::string & getLabel () const
 Returns the label/name of this signature.
 
double getStamp () const
 Returns the timestamp of this signature.
 
void addLinks (const std::list< Link > &links)
 Adds multiple links from a list.
 
void addLinks (const std::map< int, Link > &links)
 Adds multiple links from a map.
 
void addLink (const Link &link)
 Adds a single link to this signature.
 
bool hasLink (int idTo, Link::Type type=Link::kUndef) const
 Checks if this signature has a link to a target signature.
 
void changeLinkIds (int idFrom, int idTo)
 Changes all link target IDs from one value to another.
 
void removeLinks (bool keepSelfReferringLinks=false)
 Removes all links from this signature.
 
void removeLink (int idTo)
 Removes a specific link to a target signature.
 
void removeVirtualLinks ()
 Removes all virtual links from this signature.
 
void addLandmark (const Link &landmark)
 Adds a landmark observation to this signature.
 
const std::map< int, Link > & getLandmarks () const
 Returns all landmark observations.
 
+void removeLandmarks ()
 Removes all landmark observations.
 
void removeLandmark (int landmarkId)
 Removes a specific landmark observation.
 
void setSaved (bool saved)
 Sets whether this signature has been saved to the database.
 
void setModified (bool modified)
 Sets the modification flag for this signature.
 
const std::multimap< int, Link > & getLinks () const
 Returns all links from this signature.
 
bool isSaved () const
 Checks if this signature has been saved to the database.
 
bool isModified () const
 Checks if this signature has been modified.
 
bool isLinksModified () const
 Checks if the links have been modified.
 
void removeAllWords ()
 Removes all visual words from this signature.
 
void changeWordsRef (int oldWordId, int activeWordId)
 Changes visual word references from one word ID to another.
 
void setWords (const std::multimap< int, int > &words, const std::vector< cv::KeyPoint > &keypoints, const std::vector< cv::Point3f > &words3, const cv::Mat &descriptors)
 Sets all visual words for this signature.
 
bool isEnabled () const
 Checks if this signature is enabled.
 
void setEnabled (bool enabled)
 Sets whether this signature is enabled.
 
const std::multimap< int, int > & getWords () const
 Returns the visual words map.
 
const std::vector< cv::KeyPoint > & getWordsKpts () const
 Returns the keypoints associated with visual words.
 
int getInvalidWordsCount () const
 Returns the count of invalid visual words.
 
const std::map< int, int > & getWordsChanged () const
 Returns the word ID change mapping.
 
const cv::Mat & getWordsDescriptors () const
 Returns the feature descriptors for visual words.
 
void setWordsDescriptors (const cv::Mat &descriptors)
 Sets the feature descriptors for visual words.
 
void setPose (const Transform &pose)
 Sets the pose of this signature.
 
void setGroundTruthPose (const Transform &pose)
 Sets the ground truth pose for evaluation.
 
void setVelocity (float vx, float vy, float vz, float vroll, float vpitch, float vyaw)
 Sets the velocity of this signature.
 
const std::vector< cv::Point3f > & getWords3 () const
 Returns the 3D points of visual words.
 
const Transform & getPose () const
 Returns the pose of this signature.
 
cv::Mat getPoseCovariance () const
 Gets the pose covariance matrix.
 
const Transform & getGroundTruthPose () const
 Returns the ground truth pose.
 
const std::vector< float > & getVelocity () const
 Returns the velocity of this signature.
 
SensorData & sensorData ()
 Returns mutable access to the sensor data.
 
const SensorData & sensorData () const
 Returns const access to the sensor data.
 
unsigned long getMemoryUsed (bool withSensorData=true) const
 Computes the memory usage of this signature.
 
+

Detailed Description

+

Represents a node in RTAB-Map's pose graph.

+

The Signature class is a fundamental building block of RTAB-Map's graph-based mapping system. Each signature represents a unique location or pose in the map and contains:

+
    +
  • Visual words: Bag-of-words representation using visual features (keypoints, descriptors, 3D points) for place recognition
  • +
  • Links: Connections to other signatures (neighbors, loop closures, landmarks)
  • +
  • Pose information: Current pose, ground truth pose, velocity
  • +
  • Sensor data: Images, depth, laser scans, etc. captured at this location
  • +
  • Metadata: ID, map ID, timestamp, label, weight, modification flags
  • +
+

Signatures are used for:

    +
  • Place recognition: Comparing signatures to detect loop closures
  • +
  • Graph construction: Building the pose graph through links
  • +
  • Localization: Matching current observations to stored signatures
  • +
  • Mapping: Storing sensor data, visual features and local occupancy grid for each location
  • +
+

The class tracks modification state to optimize database updates, and provides methods to manage visual words, links, landmarks, and pose information.

+
Note
Signatures are typically managed by the Memory class, which handles storage, retrieval, and graph operations.
+
See also
Link
+
+SensorData
+
+Memory
+ +

Definition at line 83 of file Signature.h.

+

Constructor & Destructor Documentation

+ +

◆ Signature() [1/3]

+ +
+
+ + + + + + + +
rtabmap::Signature::Signature ()
+
+ +

Default constructor.

+

Creates an empty signature with invalid ID (0), default map ID (-1), and all fields initialized to default values.

+ +
+
+ +

◆ Signature() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::Signature::Signature (int id,
int mapId = -1,
int weight = 0,
double stamp = 0.0,
const std::string & label = std::string(),
const Transform & pose = Transform(),
const Transform & groundTruthPose = Transform(),
const SensorData & sensorData = SensorData() 
)
+
+ +

Constructor with explicit parameters.

+

Creates a signature with the specified parameters. The sensor data ID will be automatically set to match the signature ID if not already set.

+
Parameters
+ + + + + + + + + +
idUnique signature ID (must be > 0 for valid signature)
mapIdMap ID this signature belongs to (default: -1 for no map)
weightWeight/importance of this signature (default: 0)
stampTimestamp in seconds (default: 0.0)
labelOptional label/name for this signature (default: empty)
poseCurrent pose of the signature (default: identity null transform)
groundTruthPoseGround truth pose for evaluation (default: null transform)
sensorDataSensor data captured at this location (default: empty)
+
+
+
Note
The signature is marked as modified and not saved by default.
+ +
+
+ +

◆ Signature() [3/3]

+ +
+
+ + + + + + + + +
rtabmap::Signature::Signature (const SensorData & data)
+
+ +

Constructor from sensor data.

+

Creates a signature from sensor data. The signature ID is taken from the sensor data ID, and the ground truth pose is extracted from the sensor data if available.

+
Parameters
+ + +
dataSensor data to create signature from
+
+
+
Note
The signature pose is initialized to identity transform.
+ +
+
+

Member Function Documentation

+ +

◆ compareTo()

+ +
+
+ + + + + + + + +
float rtabmap::Signature::compareTo (const Signature & signature) const
+
+ +

Compares this signature to another signature.

+

Computes a similarity score between this signature and another signature based on their visual words. The comparison uses bag-of-words matching to determine how similar the two locations are.

+
Parameters
+ + +
signatureThe signature to compare against
+
+
+
Returns
Similarity score between 0.0 and 1.0, where 1.0 means 100% similarity
+
Note
This method is used for loop closure detection and place recognition.
+ +
+
+ +

◆ isBadSignature()

+ +
+
+ + + + + + + +
bool rtabmap::Signature::isBadSignature () const
+
+ +

Checks if this signature is considered "bad".

+

A signature is considered bad if it has no valid visual words (all words are invalid or the signature has no words at all). Bad signatures cannot be used for place recognition.

+
Returns
True if the signature has no valid visual words, false otherwise
+ +
+
+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Signature::id () const
+
+inline
+
+ +

Returns the signature ID.

+
Returns
The unique signature ID (0 if invalid/uninitialized)
+ +

Definition at line 168 of file Signature.h.

+ +
+
+ +

◆ mapId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Signature::mapId () const
+
+inline
+
+ +

Returns the map ID.

+
Returns
The map ID this signature belongs to (-1 if no map assigned)
+ +

Definition at line 174 of file Signature.h.

+ +
+
+ +

◆ setWeight()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Signature::setWeight (int weight)
+
+inline
+
+ +

Sets the weight/importance of this signature.

+

The weight represents the importance or priority of this signature, typically set by Rehearsal mechanism (see Memory::rehearsal). Higher weights may be used to prioritize certain signatures during memory management or loop closure detection.

+
Parameters
+ + +
weightThe weight value
+
+
+
Note
Marks the signature as modified if the weight changes. A signature already flagged as modified stays modified.
+ +

Definition at line 189 of file Signature.h.

+ +
+
+ +

◆ getWeight()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Signature::getWeight () const
+
+inline
+
+ +

Returns the weight/importance of this signature.

+
Returns
The weight value
+ +

Definition at line 195 of file Signature.h.

+ +
+
+ +

◆ setLabel()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Signature::setLabel (const std::string & label)
+
+inline
+
+ +

Sets a label/name for this signature.

+

Labels are optional text identifiers that can be used to tag or categorize signatures (e.g., "room1", "corridor", "entrance").

+
Parameters
+ + +
labelThe label string
+
+
+
Note
Marks the signature as modified if the label changes. A signature already flagged as modified stays modified.
+ +

Definition at line 208 of file Signature.h.

+ +
+
+ +

◆ getLabel()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::Signature::getLabel () const
+
+inline
+
+ +

Returns the label/name of this signature.

+
Returns
The label string (empty if not set)
+ +

Definition at line 214 of file Signature.h.

+ +
+
+ +

◆ getStamp()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::Signature::getStamp () const
+
+inline
+
+ +

Returns the timestamp of this signature.

+
Returns
Timestamp in seconds (typically seconds since epoch)
+ +

Definition at line 220 of file Signature.h.

+ +
+
+ +

◆ addLinks() [1/2]

+ +
+
+ + + + + + + + +
void rtabmap::Signature::addLinks (const std::list< Link > & links)
+
+ +

Adds multiple links from a list.

+

Adds all links from the provided list to this signature's link collection.

+
Parameters
+ + +
linksList of links to add
+
+
+
Note
Each link must have from() equal to this signature's ID.
+
+Automatically marks links as modified.
+
See also
addLink()
+ +
+
+ +

◆ addLinks() [2/2]

+ +
+
+ + + + + + + + +
void rtabmap::Signature::addLinks (const std::map< int, Link > & links)
+
+ +

Adds multiple links from a map.

+

Adds all links from the provided map to this signature's link collection.

+
Parameters
+ + +
linksMap of target IDs to links
+
+
+
Note
Each link must have from() equal to this signature's ID.
+
+The map's keys are the target IDs (to() values of the links).
+
+Automatically marks links as modified.
+
See also
addLink()
+ +
+
+ +

◆ addLink()

+ +
+
+ + + + + + + + +
void rtabmap::Signature::addLink (const Link & link)
+
+ +

Adds a single link to this signature.

+

Adds a link connecting this signature to another signature. The link represents a constraint in the pose graph (e.g., neighbor, loop closure).

+
Parameters
+ + +
linkThe link to add
+
+
+
Note
The link's from() must equal this signature's ID.
+
+The link's to() must be different from this signature's ID (except for self-referring links like pose priors or gravity).
+
+Duplicate links to the same target are not allowed (assertion failure).
+
+Automatically marks links as modified.
+ +
+
+ +

◆ hasLink()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::Signature::hasLink (int idTo,
Link::Type type = Link::kUndef 
) const
+
+ +

Checks if this signature has a link to a target signature.

+
Parameters
+ + + +
idToTarget signature ID (0 to check for any link of the specified type)
typeLink type to check for (default: Link::kUndef to check any type)
+
+
+
Returns
True if a matching link exists, false otherwise
+ +
+
+ +

◆ changeLinkIds()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::Signature::changeLinkIds (int idFrom,
int idTo 
)
+
+ +

Changes all link target IDs from one value to another.

+

Updates all links that point to idFrom to point to idTo instead. This is useful when merging or reorganizing the graph.

+
Parameters
+ + + +
idFromOriginal target ID
idToNew target ID
+
+
+
Note
Automatically marks links as modified.
+ +
+
+ +

◆ removeLinks()

+ +
+
+ + + + + + + + +
void rtabmap::Signature::removeLinks (bool keepSelfReferringLinks = false)
+
+ +

Removes all links from this signature.

+
Parameters
+ + +
keepSelfReferringLinksIf true, preserves self-referring links (pose priors, gravity) that have from() == to()
+
+
+
Note
Automatically marks links as modified.
+ +
+
+ +

◆ removeLink()

+ +
+
+ + + + + + + + +
void rtabmap::Signature::removeLink (int idTo)
+
+ +

Removes a specific link to a target signature.

+
Parameters
+ + +
idToTarget signature ID of the link to remove
+
+
+
Note
Automatically marks links as modified.
+ +
+
+ +

◆ removeVirtualLinks()

+ +
+
+ + + + + + + +
void rtabmap::Signature::removeVirtualLinks ()
+
+ +

Removes all virtual links from this signature.

+

Virtual links are links of type Link::kVirtualClosure.

+
Note
Automatically marks links as modified.
+ +
+
+ +

◆ addLandmark()

+ +
+
+ + + + + + + + +
void rtabmap::Signature::addLandmark (const Link & landmark)
+
+ +

Adds a landmark observation to this signature.

+

Landmarks are persistent features in the environment that can be observed from multiple locations. This method adds a link representing the observation of a landmark from this signature's location.

+
Parameters
+ + +
landmarkLink representing the landmark observation
+
+
+
Note
Landmark IDs are typically negative to distinguish them from regular nodes.
+ +
+
+ +

◆ getLandmarks()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Link > & rtabmap::Signature::getLandmarks () const
+
+inline
+
+ +

Returns all landmark observations.

+
Returns
Const reference to the map of landmark IDs to landmark links
+ +

Definition at line 332 of file Signature.h.

+ +
+
+ +

◆ removeLandmark()

+ +
+
+ + + + + + + + +
void rtabmap::Signature::removeLandmark (int landmarkId)
+
+ +

Removes a specific landmark observation.

+
Parameters
+ + +
landmarkIdThe landmark ID to remove
+
+
+ +
+
+ +

◆ setSaved()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Signature::setSaved (bool saved)
+
+inline
+
+ +

Sets whether this signature has been saved to the database.

+
Parameters
+ + +
savedTrue if saved, false otherwise
+
+
+ +

Definition at line 349 of file Signature.h.

+ +
+
+ +

◆ setModified()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Signature::setModified (bool modified)
+
+inline
+
+ +

Sets the modification flag for this signature.

+

Marks the signature as modified (or unmodified). When set to true, also marks links as modified.

+
Parameters
+ + +
modifiedTrue if modified, false otherwise
+
+
+ +

Definition at line 359 of file Signature.h.

+ +
+
+ +

◆ getLinks()

+ +
+
+ + + + + +
+ + + + + + + +
const std::multimap< int, Link > & rtabmap::Signature::getLinks () const
+
+inline
+
+ +

Returns all links from this signature.

+
Returns
Const reference to the multimap of target IDs to links
+ +

Definition at line 365 of file Signature.h.

+ +
+
+ +

◆ isSaved()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Signature::isSaved () const
+
+inline
+
+ +

Checks if this signature has been saved to the database.

+
Returns
True if saved, false otherwise
+ +

Definition at line 371 of file Signature.h.

+ +
+
+ +

◆ isModified()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Signature::isModified () const
+
+inline
+
+ +

Checks if this signature has been modified.

+

Returns true if either the signature data or links have been modified.

+
Returns
True if modified, false otherwise
+ +

Definition at line 380 of file Signature.h.

+ +
+
+ +

◆ isLinksModified()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Signature::isLinksModified () const
+
+inline
+
+ +

Checks if the links have been modified.

+
Returns
True if links are modified, false otherwise
+ +

Definition at line 386 of file Signature.h.

+ +
+
+ +

◆ removeAllWords()

+ +
+
+ + + + + + + +
void rtabmap::Signature::removeAllWords ()
+
+ +

Removes all visual words from this signature.

+

Clears all visual words, keypoints, 3D points, and descriptors. The signature will be disabled after this operation.

+ +
+
+ +

◆ changeWordsRef()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::Signature::changeWordsRef (int oldWordId,
int activeWordId 
)
+
+ +

Changes visual word references from one word ID to another.

+

Updates all occurrences of oldWordId to activeWordId in the visual words. This is used when words are merged or reorganized in the dictionary.

+
Parameters
+ + + +
oldWordIdThe original word ID to replace
activeWordIdThe new word ID to use
+
+
+
Note
Tracks word ID changes in _wordsChanged for reference.
+ +
+
+ +

◆ setWords()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Signature::setWords (const std::multimap< int, int > & words,
const std::vector< cv::KeyPoint > & keypoints,
const std::vector< cv::Point3f > & words3,
const cv::Mat & descriptors 
)
+
+ +

Sets all visual words for this signature.

+

Sets the complete visual word representation including word IDs, keypoints, 3D points, and descriptors. All arrays must have matching sizes.

+
Parameters
+ + + + + +
wordsMultimap of word IDs to keypoint indices (allows duplicate words). The keypoint indices match the keypoints, points and descriptors.
keypointsVector of 2D keypoints in image coordinates. The keypoints must be in the same order as the words.
words3Vector of 3D points in base_link frame (with localTransform applied). The points must be in the same order as the words.
descriptorsFeature descriptors matrix (one row per word). The descriptors must be in the same order as the words.
+
+
+
Note
The signature is disabled after setting words (must be explicitly enabled).
+
+Invalid words (ID <= 0) are counted in _invalidWordsCount.
+
+All arrays must have the same size (number of words).
+ +
+
+ +

◆ isEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Signature::isEnabled () const
+
+inline
+
+ +

Checks if this signature is enabled.

+

Enabled signatures can be used for place recognition and loop closure detection. More explicitly, it means that the signature is registered to the VWDictionary (see Memory::enableWordsRef).

+
Returns
True if enabled, false otherwise
+ +

Definition at line 436 of file Signature.h.

+ +
+
+ +

◆ setEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Signature::setEnabled (bool enabled)
+
+inline
+
+ +

Sets whether this signature is enabled.

+
Parameters
+ + +
enabledTrue to enable, false to disable
+
+
+ +

Definition at line 442 of file Signature.h.

+ +
+
+ +

◆ getWords()

+ +
+
+ + + + + +
+ + + + + + + +
const std::multimap< int, int > & rtabmap::Signature::getWords () const
+
+inline
+
+ +

Returns the visual words map.

+

Returns a multimap of word IDs to keypoint indices. The multimap allows duplicate word IDs (a word can appear multiple times in the signature).

+
Returns
Const reference to the words multimap
+ +

Definition at line 452 of file Signature.h.

+ +
+
+ +

◆ getWordsKpts()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< cv::KeyPoint > & rtabmap::Signature::getWordsKpts () const
+
+inline
+
+ +

Returns the keypoints associated with visual words.

+
Returns
Const reference to the vector of 2D keypoints
+ +

Definition at line 458 of file Signature.h.

+ +
+
+ +

◆ getInvalidWordsCount()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Signature::getInvalidWordsCount () const
+
+inline
+
+ +

Returns the count of invalid visual words.

+

Invalid words are those with ID <= 0. These words cannot be used for place recognition. However, they are still used for transform estimation after loop closures are detected with the valid words.

+
Returns
Number of invalid words
+ +

Definition at line 469 of file Signature.h.

+ +
+
+ +

◆ getWordsChanged()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, int > & rtabmap::Signature::getWordsChanged () const
+
+inline
+
+ +

Returns the word ID change mapping.

+

Returns a map of old word IDs to new word IDs, tracking changes made through changeWordsRef().

+
Returns
Const reference to the word ID change map
+ +

Definition at line 479 of file Signature.h.

+ +
+
+ +

◆ getWordsDescriptors()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::Signature::getWordsDescriptors () const
+
+inline
+
+ +

Returns the feature descriptors for visual words.

+
Returns
Const reference to the descriptors matrix (one row per word)
+ +

Definition at line 485 of file Signature.h.

+ +
+
+ +

◆ setWordsDescriptors()

+ +
+
+ + + + + + + + +
void rtabmap::Signature::setWordsDescriptors (const cv::Mat & descriptors)
+
+ +

Sets the feature descriptors for visual words.

+

Updates the descriptors matrix. The number of rows must match the number of visual words.

+
Parameters
+ + +
descriptorsDescriptors matrix (one row per word)
+
+
+ +
+
+ +

◆ setPose()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Signature::setPose (const Transform & pose)
+
+inline
+
+ +

Sets the pose of this signature.

+

The pose represents the position and orientation of this signature in the odometry coordinate frame. To get the pose in map coordinate frame, use the map correction transform computed by graph optimization and apply it to this pose.

+
Parameters
+ + +
poseThe transform representing the pose in the odometry coordinate frame.
+
+
+
// Get pose in map coordinate frame
+
Statistics stats;
+
Transform poseInMapFrame = stats.mapCorrection() * signature.getPose();
+
// poseInMapFrame is the pose in map coordinate frame
+
// signature.getPose() returns the pose in odometry coordinate frame
+
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
+
const Transform & mapCorrection() const
Returns the map correction transform.
Definition Statistics.h:657
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
See also
Statistics::mapCorrection()
+
+getPose()
+ +

Definition at line 519 of file Signature.h.

+ +
+
+ +

◆ setGroundTruthPose()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Signature::setGroundTruthPose (const Transform & pose)
+
+inline
+
+ +

Sets the ground truth pose for evaluation.

+

Ground truth poses are used for evaluating localization accuracy and comparing against the estimated pose.

+
Parameters
+ + +
poseThe ground truth transform
+
+
+ +

Definition at line 529 of file Signature.h.

+ +
+
+ +

◆ setVelocity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::Signature::setVelocity (float vx,
float vy,
float vz,
float vroll,
float vpitch,
float vyaw 
)
+
+inline
+
+ +

Sets the velocity of this signature.

+

Sets the 6DOF velocity (linear and angular) at the time this signature was captured.

+
Parameters
+ + + + + + + +
vxLinear velocity in x direction (m/s)
vyLinear velocity in y direction (m/s)
vzLinear velocity in z direction (m/s)
vrollAngular velocity around x axis (rad/s)
vpitchAngular velocity around y axis (rad/s)
vyawAngular velocity around z axis (rad/s)
+
+
+ +

Definition at line 544 of file Signature.h.

+ +
+
+ +

◆ getWords3()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< cv::Point3f > & rtabmap::Signature::getWords3 () const
+
+inline
+
+ +

Returns the 3D points of visual words.

+

Returns the 3D coordinates of visual words in the base_link frame (with localTransform applied).

+
Returns
Const reference to the vector of 3D points
+ +

Definition at line 562 of file Signature.h.

+ +
+
+ +

◆ getPose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Signature::getPose () const
+
+inline
+
+ +

Returns the pose of this signature.

+
Returns
Const reference to the pose transform in the odometry coordinate frame.
+
See also
setPose() for an example of how to get the pose in map coordinate frame.
+ +

Definition at line 569 of file Signature.h.

+ +
+
+ +

◆ getPoseCovariance()

+ +
+
+ + + + + + + +
cv::Mat rtabmap::Signature::getPoseCovariance () const
+
+ +

Gets the pose covariance matrix.

+

Gets the covariance matrix representing the uncertainty between the current pose and the previous pose (e.g, from the odometry link with the previous signature).

+
Returns
6x6 covariance matrix (3x3 for translation, 3x3 for rotation)
+ +
+
+ +

◆ getGroundTruthPose()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Signature::getGroundTruthPose () const
+
+inline
+
+ +

Returns the ground truth pose.

+
Returns
Const reference to the ground truth transform
+ +

Definition at line 585 of file Signature.h.

+ +
+
+ +

◆ getVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< float > & rtabmap::Signature::getVelocity () const
+
+inline
+
+ +

Returns the velocity of this signature.

+
Returns
Const reference to the velocity vector [vx, vy, vz, vroll, vpitch, vyaw]
+ +

Definition at line 591 of file Signature.h.

+ +
+
+ +

◆ sensorData() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SensorData & rtabmap::Signature::sensorData ()
+
+inline
+
+ +

Returns mutable access to the sensor data.

+
Returns
Reference to the sensor data
+ +

Definition at line 597 of file Signature.h.

+ +
+
+ +

◆ sensorData() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const SensorData & rtabmap::Signature::sensorData () const
+
+inline
+
+ +

Returns const access to the sensor data.

+
Returns
Const reference to the sensor data
+ +

Definition at line 603 of file Signature.h.

+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + + + + +
unsigned long rtabmap::Signature::getMemoryUsed (bool withSensorData = true) const
+
+ +

Computes the memory usage of this signature.

+

Calculates the approximate memory footprint of this signature, including visual words, links, sensor data, and other internal structures.

+
Parameters
+ + +
withSensorDataIf true, includes sensor data in the calculation
+
+
+
Returns
Memory usage in bytes
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Signature.js b/preview/pr-1773/api/latest/classrtabmap_1_1Signature.js new file mode 100644 index 00000000..6fea24e3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Signature.js @@ -0,0 +1,56 @@ +var classrtabmap_1_1Signature = +[ + [ "Signature", "classrtabmap_1_1Signature.html#a8e079b11910a45639a792158c40693ad", null ], + [ "Signature", "classrtabmap_1_1Signature.html#aa3367bba5b890341238d93e642f847a7", null ], + [ "Signature", "classrtabmap_1_1Signature.html#af106b6a37909c236e22f5cac6150ce62", null ], + [ "~Signature", "classrtabmap_1_1Signature.html#a67c41f31ff6fd72815190cc1bbba9569", null ], + [ "compareTo", "classrtabmap_1_1Signature.html#abe3b712a3c74599007b1974f592d82bd", null ], + [ "isBadSignature", "classrtabmap_1_1Signature.html#a693874de0d6ede4fe5c5d43d6f4d8b55", null ], + [ "id", "classrtabmap_1_1Signature.html#a31c6e7b7e720eca20fb5935e0ee1d9f9", null ], + [ "mapId", "classrtabmap_1_1Signature.html#ac6a75872fb4cb64bd088794df6e897bb", null ], + [ "setWeight", "classrtabmap_1_1Signature.html#a28cc9f0c8d553a24ef9e5227be1c99fe", null ], + [ "getWeight", "classrtabmap_1_1Signature.html#a701b32c562d789929a18a19c08bac4ca", null ], + [ "setLabel", "classrtabmap_1_1Signature.html#aa6dc3ad065ae2fd29afbbe69429f3a7b", null ], + [ "getLabel", "classrtabmap_1_1Signature.html#a78a9ae9059257c60cf1d50ef415520cd", null ], + [ "getStamp", "classrtabmap_1_1Signature.html#aa9c4ed8d3617b039181cf44a0e30eca2", null ], + [ "addLinks", "classrtabmap_1_1Signature.html#aa8513c4ecb77c38b95610834c66e893e", null ], + [ "addLinks", "classrtabmap_1_1Signature.html#af92465ad9cbfab36ffbc6d372781170c", null ], + [ "addLink", "classrtabmap_1_1Signature.html#a3bb2e6a8de8e615e51385c4113630f93", null ], + [ "hasLink", "classrtabmap_1_1Signature.html#ad71fa7c0466dbb5c5062953043c3fcb0", null ], + [ "changeLinkIds", "classrtabmap_1_1Signature.html#a10d3bce2c3e4ec2de31aa5fa0c4b5934", null ], + [ "removeLinks", "classrtabmap_1_1Signature.html#a8d3e01853af1365fce62dd460dea816f", null ], + [ "removeLink", "classrtabmap_1_1Signature.html#abbd9806c2b20182217d2269c7398541e", null ], + [ "removeVirtualLinks", "classrtabmap_1_1Signature.html#a328419f90f9dd8113dee4e38c9e30367", null ], + [ "addLandmark", "classrtabmap_1_1Signature.html#a71621ac6411f778342c23fbc4e695a12", null ], + [ "getLandmarks", "classrtabmap_1_1Signature.html#a2257cfc6c620d726484f1c6c2b11257a", null ], + [ "removeLandmarks", "classrtabmap_1_1Signature.html#aa482e98fb247d40368a9aaa838fe3a5a", null ], + [ "removeLandmark", "classrtabmap_1_1Signature.html#a6fe5edded7922a34c3f52e71e8be458d", null ], + [ "setSaved", "classrtabmap_1_1Signature.html#a02c5d305492e3534e3799b8b7c78d912", null ], + [ "setModified", "classrtabmap_1_1Signature.html#a245c8af68f7adec3813e3b062395769f", null ], + [ "getLinks", "classrtabmap_1_1Signature.html#a1496e2f2ae46f2b6efcf7ece309ffd22", null ], + [ "isSaved", "classrtabmap_1_1Signature.html#a0d15326165e9d01f0b91b247f5da23ea", null ], + [ "isModified", "classrtabmap_1_1Signature.html#ab63ee6d2a0e2cd456748a64d9990f969", null ], + [ "isLinksModified", "classrtabmap_1_1Signature.html#a93dcbd3cffc84808fe5652bf0f542ca9", null ], + [ "removeAllWords", "classrtabmap_1_1Signature.html#aac24301e6aff593fdcd679485b2c0e0e", null ], + [ "changeWordsRef", "classrtabmap_1_1Signature.html#a0fbef54e89583c0ee919f938d57c8759", null ], + [ "setWords", "classrtabmap_1_1Signature.html#a6fb8d04c4c2c8ee6f82d1eb65fd750a4", null ], + [ "isEnabled", "classrtabmap_1_1Signature.html#a343a565680d03c45cc29dff7392b275e", null ], + [ "setEnabled", "classrtabmap_1_1Signature.html#a51a08cbabd87eb0fd5045ffdb4cb3c00", null ], + [ "getWords", "classrtabmap_1_1Signature.html#a68eaa67c81d08e20d2b7a43b0659b1d4", null ], + [ "getWordsKpts", "classrtabmap_1_1Signature.html#a471f71821ceeec9a25e9e4e16673d14f", null ], + [ "getInvalidWordsCount", "classrtabmap_1_1Signature.html#ac2d1526d87df9ff5d4885b16c460ebcf", null ], + [ "getWordsChanged", "classrtabmap_1_1Signature.html#a01f6eac0e5836aa921d65108b75249f6", null ], + [ "getWordsDescriptors", "classrtabmap_1_1Signature.html#a1ed4181ac5cc7b477482459d680c63b1", null ], + [ "setWordsDescriptors", "classrtabmap_1_1Signature.html#a80565e1439be473d9c783d5c624b1a02", null ], + [ "setPose", "classrtabmap_1_1Signature.html#aca4bf5db794637f0780f6eb2139a16f0", null ], + [ "setGroundTruthPose", "classrtabmap_1_1Signature.html#aa8be86850b1277ce7c5eb4a5998e35e9", null ], + [ "setVelocity", "classrtabmap_1_1Signature.html#a1e48a2cde44ad1ecc2daaf5e8245e86a", null ], + [ "getWords3", "classrtabmap_1_1Signature.html#ab902bfc7cdde2542ffe7e5d441f90a66", null ], + [ "getPose", "classrtabmap_1_1Signature.html#a5166864f276c921963033e8852c13076", null ], + [ "getPoseCovariance", "classrtabmap_1_1Signature.html#afc81cb91421dcd36e2f5e3dc84a77b44", null ], + [ "getGroundTruthPose", "classrtabmap_1_1Signature.html#a5d5f3aa41c0d9404654ebc5628a5189c", null ], + [ "getVelocity", "classrtabmap_1_1Signature.html#ae97f22fcb6799a5312c1948cb9f42c99", null ], + [ "sensorData", "classrtabmap_1_1Signature.html#a24c257c2ff3fe156910ac82c41de8738", null ], + [ "sensorData", "classrtabmap_1_1Signature.html#a0e7b1874613a7438ec1b2d9aa2634da8", null ], + [ "getMemoryUsed", "classrtabmap_1_1Signature.html#a014fd12ee6cd47004e94ef4bb4753459", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Statistics-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Statistics-members.html new file mode 100644 index 00000000..6dd1fba7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Statistics-members.html @@ -0,0 +1,176 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Statistics Member List
+
+
+ +

This is the complete list of members for rtabmap::Statistics, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addSignatureData(const Signature &data)rtabmap::Statisticsinline
addStatistic(const std::string &name, float value)rtabmap::Statistics
constraints() constrtabmap::Statisticsinline
currentGoalId() constrtabmap::Statisticsinline
data() constrtabmap::Statisticsinline
defaultData()rtabmap::Statisticsstatic
deserializeData(const std::string &data)rtabmap::Statisticsstatic
extended() constrtabmap::Statisticsinline
getLastSignatureData() constrtabmap::Statisticsinline
getSignaturesData() constrtabmap::Statisticsinline
labels() constrtabmap::Statisticsinline
likelihood() constrtabmap::Statisticsinline
localizationCovariance() constrtabmap::Statisticsinline
localPath() constrtabmap::Statisticsinline
loopClosureId() constrtabmap::Statisticsinline
loopClosureMapId() constrtabmap::Statisticsinline
loopClosureTransform() constrtabmap::Statisticsinline
mapCorrection() constrtabmap::Statisticsinline
odomCacheConstraints() constrtabmap::Statisticsinline
odomCachePoses() constrtabmap::Statisticsinline
poses() constrtabmap::Statisticsinline
posterior() constrtabmap::Statisticsinline
proximityDetectionId() constrtabmap::Statisticsinline
proximityDetectionMapId() constrtabmap::Statisticsinline
rawLikelihood() constrtabmap::Statisticsinline
reducedIds() constrtabmap::Statisticsinline
refImageId() constrtabmap::Statisticsinline
refImageMapId() constrtabmap::Statisticsinline
serializeData(const std::map< std::string, float > &data)rtabmap::Statisticsstatic
setConstraints(const std::multimap< int, Link > &constraints)rtabmap::Statisticsinline
setCurrentGoalId(int goal)rtabmap::Statisticsinline
setExtended(bool extended)rtabmap::Statisticsinline
setLabels(const std::map< int, std::string > &labels)rtabmap::Statisticsinline
setLastSignatureData(const Signature &data)rtabmap::Statistics
setLikelihood(const std::map< int, float > &likelihood)rtabmap::Statisticsinline
setLocalizationCovariance(const cv::Mat &covariance)rtabmap::Statisticsinline
setLocalPath(const std::vector< int > &localPath)rtabmap::Statisticsinline
setLoopClosureId(int id)rtabmap::Statisticsinline
setLoopClosureMapId(int id)rtabmap::Statisticsinline
setLoopClosureTransform(const Transform &loopClosureTransform)rtabmap::Statisticsinline
setMapCorrection(const Transform &mapCorrection)rtabmap::Statisticsinline
setOdomCacheConstraints(const std::multimap< int, Link > &constraints)rtabmap::Statisticsinline
setOdomCachePoses(const std::map< int, Transform > &poses)rtabmap::Statisticsinline
setPoses(const std::map< int, Transform > &poses)rtabmap::Statisticsinline
setPosterior(const std::map< int, float > &posterior)rtabmap::Statisticsinline
setProximityDetectionId(int id)rtabmap::Statisticsinline
setProximityDetectionMapId(int id)rtabmap::Statisticsinline
setRawLikelihood(const std::map< int, float > &rawLikelihood)rtabmap::Statisticsinline
setReducedIds(const std::map< int, int > &reducedIds)rtabmap::Statisticsinline
setRefImageId(int id)rtabmap::Statisticsinline
setRefImageMapId(int id)rtabmap::Statisticsinline
setSignaturesData(const std::map< int, Signature > &data)rtabmap::Statisticsinline
setStamp(double stamp)rtabmap::Statisticsinline
setWeights(const std::map< int, int > &weights)rtabmap::Statisticsinline
setWmState(const std::vector< int > &state)rtabmap::Statisticsinline
stamp() constrtabmap::Statisticsinline
Statistics()rtabmap::Statistics
weights() constrtabmap::Statisticsinline
wmState() constrtabmap::Statisticsinline
~Statistics()rtabmap::Statisticsvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Statistics.html b/preview/pr-1773/api/latest/classrtabmap_1_1Statistics.html new file mode 100644 index 00000000..918f9895 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Statistics.html @@ -0,0 +1,2291 @@ + + + + + + + + +RTAB-Map: rtabmap::Statistics Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Statistics Class Reference
+
+
+ +

Collects and manages runtime statistics for RTAB-Map. + More...

+ +

#include <Statistics.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Statistics ()
 Default constructor.
 
+virtual ~Statistics ()
 Virtual destructor.
 
void addStatistic (const std::string &name, float value)
 Adds a statistic value to the data map.
 
void setExtended (bool extended)
 Sets whether extended statistics mode is enabled.
 
void setRefImageId (int id)
 Sets the reference image ID (current/last processed signature ID)
 
void setRefImageMapId (int id)
 Sets the reference image map ID.
 
void setLoopClosureId (int id)
 Sets the loop closure detection ID.
 
void setLoopClosureMapId (int id)
 Sets the loop closure map ID.
 
void setProximityDetectionId (int id)
 Sets the proximity detection ID.
 
void setProximityDetectionMapId (int id)
 Sets the proximity detection map ID.
 
void setStamp (double stamp)
 Sets the timestamp for these statistics.
 
RTABMAP_DEPRECATED void setLastSignatureData (const Signature &data)
 Sets the last signature data (deprecated)
 
void addSignatureData (const Signature &data)
 Adds signature data to the statistics.
 
void setSignaturesData (const std::map< int, Signature > &data)
 Sets all signature data at once.
 
void setPoses (const std::map< int, Transform > &poses)
 Sets the pose graph (node poses)
 
void setConstraints (const std::multimap< int, Link > &constraints)
 Sets the constraint graph (links between nodes)
 
void setMapCorrection (const Transform &mapCorrection)
 Sets the map correction transform.
 
void setLoopClosureTransform (const Transform &loopClosureTransform)
 Sets the loop closure transform.
 
void setLocalizationCovariance (const cv::Mat &covariance)
 Sets the localization covariance matrix.
 
void setLabels (const std::map< int, std::string > &labels)
 Sets node labels.
 
void setWeights (const std::map< int, int > &weights)
 Sets node weights.
 
void setPosterior (const std::map< int, float > &posterior)
 Sets posterior probabilities for loop closure hypotheses.
 
void setLikelihood (const std::map< int, float > &likelihood)
 Sets likelihood values for loop closure hypotheses.
 
void setRawLikelihood (const std::map< int, float > &rawLikelihood)
 Sets raw likelihood values (before normalization)
 
void setLocalPath (const std::vector< int > &localPath)
 Sets the local path (sequence of node IDs)
 
void setCurrentGoalId (int goal)
 Sets the current goal node ID.
 
void setReducedIds (const std::map< int, int > &reducedIds)
 Sets the reduced IDs mapping.
 
void setWmState (const std::vector< int > &state)
 Sets the working memory state.
 
void setOdomCachePoses (const std::map< int, Transform > &poses)
 Sets odometry cache poses.
 
void setOdomCacheConstraints (const std::multimap< int, Link > &constraints)
 Sets odometry cache constraints.
 
bool extended () const
 Returns whether extended statistics mode is enabled.
 
int refImageId () const
 Returns the reference image ID.
 
int refImageMapId () const
 Returns the reference image map ID.
 
int loopClosureId () const
 Returns the loop closure detection ID.
 
int loopClosureMapId () const
 Returns the loop closure map ID.
 
int proximityDetectionId () const
 Returns the proximity detection ID.
 
int proximityDetectionMapId () const
 Returns the proximity detection map ID.
 
double stamp () const
 Returns the timestamp.
 
const Signature & getLastSignatureData () const
 Returns the last signature data.
 
const std::map< int, Signature > & getSignaturesData () const
 Returns all signature data.
 
const std::map< int, Transform > & poses () const
 Returns the pose graph.
 
const std::multimap< int, Link > & constraints () const
 Returns the constraint graph.
 
const Transform & mapCorrection () const
 Returns the map correction transform.
 
const Transform & loopClosureTransform () const
 Returns the loop closure transform.
 
const cv::Mat & localizationCovariance () const
 Returns the localization covariance matrix.
 
const std::map< int, std::string > & labels () const
 Returns node labels.
 
const std::map< int, int > & weights () const
 Returns node weights.
 
const std::map< int, float > & posterior () const
 Returns posterior probabilities.
 
const std::map< int, float > & likelihood () const
 Returns likelihood values.
 
const std::map< int, float > & rawLikelihood () const
 Returns raw likelihood values.
 
const std::vector< int > & localPath () const
 Returns the local path.
 
int currentGoalId () const
 Returns the current goal node ID.
 
const std::map< int, int > & reducedIds () const
 Returns the reduced IDs mapping.
 
const std::vector< int > & wmState () const
 Returns the working memory state.
 
const std::map< int, Transform > & odomCachePoses () const
 Returns odometry cache poses.
 
const std::multimap< int, Link > & odomCacheConstraints () const
 Returns odometry cache constraints.
 
const std::map< std::string, float > & data () const
 Returns the statistics data map.
 
+ + + + + + + + + + +

+Static Public Member Functions

static const std::map< std::string, float > & defaultData ()
 Returns the default statistics data map.
 
static std::string serializeData (const std::map< std::string, float > &data)
 Serializes a statistics data map to a string.
 
static std::map< std::string, float > deserializeData (const std::string &data)
 Deserializes a statistics data map from a string.
 
+

Detailed Description

+

Collects and manages runtime statistics for RTAB-Map.

+

The Statistics class provides a comprehensive system for collecting, storing, and managing various runtime statistics about RTAB-Map's operation. Statistics are organized into groups such as:

    +
  • Loop: Loop closure detection, hypothesis validation, optimization errors
  • +
  • Proximity: Proximity-based detection statistics
  • +
  • Memory: Working memory size, database usage, signature management
  • +
  • Timing: Performance measurements for various operations
  • +
  • Keypoint: Visual word dictionary and feature statistics
  • +
  • Gt: Ground truth comparison statistics
  • +
+

Statistics are stored in a map with keys in the format "Group/Name/Unit" (e.g., "Timing/Total time/ms"). This hierarchical naming allows for easy categorization and plotting.

+

The class supports two modes:

    +
  • Basic mode (extended() == false): Only stores loop closure and last signature ID fields
  • +
  • Extended mode (extended() == true): Stores all available statistics including poses, constraints, likelihoods, posteriors, and detailed timing information
  • +
+

Statistics can be serialized to/from strings for storage in databases or transmission over networks.

+
Note
Statistics are typically created by RTAB-Map's core components (Rtabmap, Memory, etc.) and can be retrieved for analysis, visualization, or debugging purposes.
+ +

Definition at line 107 of file Statistics.h.

+

Constructor & Destructor Documentation

+ +

◆ Statistics()

+ +
+
+ + + + + + + +
rtabmap::Statistics::Statistics ()
+
+ +

Default constructor.

+

Creates a new Statistics object in basic mode (extended = false). Initializes all ID fields to 0 or -1, and timestamp to 0.0.

+
Note
The first Statistics object constructed will initialize the default data map.
+ +
+
+

Member Function Documentation

+ +

◆ defaultData()

+ +
+
+ + + + + +
+ + + + + + + +
static const std::map< std::string, float > & rtabmap::Statistics::defaultData ()
+
+static
+
+ +

Returns the default statistics data map.

+

Returns a map containing all predefined statistics with their default values (0.0). This map is initialized when the first Statistics object is constructed.

+
Returns
Const reference to the default statistics data map
+ +
+
+ +

◆ serializeData()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::Statistics::serializeData (const std::map< std::string, float > & data)
+
+static
+
+ +

Serializes a statistics data map to a string.

+

Converts a statistics data map into a serialized string format suitable for storage or transmission. The format is: "key1:value1;key2:value2;..." where values are formatted as numbers with dots (not commas) as decimal separators (independent of the system's locale).

+
Parameters
+ + +
dataThe statistics data map to serialize
+
+
+
Returns
Serialized string representation of the data
+
Note
Empty maps result in empty strings
+
See also
deserializeData()
+ +
+
+ +

◆ deserializeData()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::map< std::string, float > rtabmap::Statistics::deserializeData (const std::string & data)
+
+static
+
+ +

Deserializes a statistics data map from a string.

+

Parses a serialized statistics string back into a data map. The string format should be: "key1:value1;key2:value2;..." as produced by serializeData().

+
Parameters
+ + +
dataThe serialized string to parse
+
+
+
Returns
Deserialized statistics data map
+
Note
Invalid entries (missing colons, malformed values) are silently skipped
+
See also
serializeData()
+ +
+
+ +

◆ addStatistic()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::Statistics::addStatistic (const std::string & name,
float value 
)
+
+ +

Adds a statistic value to the data map.

+

Adds or updates a statistic in the internal data map. The name should follow the format "Group/Name/Unit" (e.g., "Timing/Total time/ms").

+
Parameters
+ + + +
nameThe statistic name in the format "Group/Name/Unit"
valueThe statistic value to store
+
+
+
Note
If a statistic with the same name already exists, it will be overwritten.
+
+Use the static methods generated by RTABMAP_STATS() to get standardized names:
statistics.addStatistic(Statistics::kTimingTotal(), 500.0f);
+
+ +
+
+ +

◆ setExtended()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setExtended (bool extended)
+
+inline
+
+ +

Sets whether extended statistics mode is enabled.

+

In basic mode (extended = false), only loop closure and last signature ID fields are filled. In extended mode (extended = true), all available statistics including poses, constraints, likelihoods, posteriors, and detailed timing information are stored.

+
Parameters
+ + +
extendedTrue to enable extended mode, false for basic mode
+
+
+ +

Definition at line 367 of file Statistics.h.

+ +
+
+ +

◆ setRefImageId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setRefImageId (int id)
+
+inline
+
+ +

Sets the reference image ID (current/last processed signature ID)

+
Parameters
+ + +
idThe signature ID
+
+
+ +

Definition at line 373 of file Statistics.h.

+ +
+
+ +

◆ setRefImageMapId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setRefImageMapId (int id)
+
+inline
+
+ +

Sets the reference image map ID.

+
Parameters
+ + +
idThe map ID associated with the reference image
+
+
+ +

Definition at line 379 of file Statistics.h.

+ +
+
+ +

◆ setLoopClosureId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setLoopClosureId (int id)
+
+inline
+
+ +

Sets the loop closure detection ID.

+
Parameters
+ + +
idThe signature ID where a loop closure was detected (0 if none)
+
+
+ +

Definition at line 385 of file Statistics.h.

+ +
+
+ +

◆ setLoopClosureMapId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setLoopClosureMapId (int id)
+
+inline
+
+ +

Sets the loop closure map ID.

+
Parameters
+ + +
idThe map ID associated with the loop closure
+
+
+ +

Definition at line 391 of file Statistics.h.

+ +
+
+ +

◆ setProximityDetectionId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setProximityDetectionId (int id)
+
+inline
+
+ +

Sets the proximity detection ID.

+
Parameters
+ + +
idThe signature ID where proximity was detected (0 if none)
+
+
+ +

Definition at line 397 of file Statistics.h.

+ +
+
+ +

◆ setProximityDetectionMapId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setProximityDetectionMapId (int id)
+
+inline
+
+ +

Sets the proximity detection map ID.

+
Parameters
+ + +
idThe map ID associated with the proximity detection
+
+
+ +

Definition at line 403 of file Statistics.h.

+ +
+
+ +

◆ setStamp()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setStamp (double stamp)
+
+inline
+
+ +

Sets the timestamp for these statistics.

+
Parameters
+ + +
stampThe timestamp (typically in seconds since epoch)
+
+
+ +

Definition at line 409 of file Statistics.h.

+ +
+
+ +

◆ setLastSignatureData()

+ +
+
+ + + + + + + + +
RTABMAP_DEPRECATED void rtabmap::Statistics::setLastSignatureData (const Signature & data)
+
+ +

Sets the last signature data (deprecated)

+
Deprecated:
Use addSignatureData() instead
+

This method is deprecated. Use addSignatureData() instead, which allows storing multiple signatures.

+ +
+
+ +

◆ addSignatureData()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::addSignatureData (const Signature & data)
+
+inline
+
+ +

Adds signature data to the statistics.

+

Adds a signature to the internal signatures data map. Multiple signatures can be stored, indexed by their ID.

+
Parameters
+ + +
dataThe signature to add
+
+
+
Note
If a signature with the same ID already exists, it will be overwritten.
+ +

Definition at line 430 of file Statistics.h.

+ +
+
+ +

◆ setSignaturesData()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setSignaturesData (const std::map< int, Signature > & data)
+
+inline
+
+ +

Sets all signature data at once.

+
Parameters
+ + +
dataMap of signature IDs to Signature objects
+
+
+ +

Definition at line 436 of file Statistics.h.

+ +
+
+ +

◆ setPoses()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setPoses (const std::map< int, Transform > & poses)
+
+inline
+
+ +

Sets the pose graph (node poses)

+

Sets the complete pose graph, mapping node IDs to their Transform poses. Used in extended mode for visualization and analysis.

+
Parameters
+ + +
posesMap of node IDs to their poses
+
+
+ +

Definition at line 446 of file Statistics.h.

+ +
+
+ +

◆ setConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setConstraints (const std::multimap< int, Link > & constraints)
+
+inline
+
+ +

Sets the constraint graph (links between nodes)

+

Sets the complete constraint graph, mapping node IDs to their Link constraints. Used in extended mode for visualization and analysis.

+
Parameters
+ + +
constraintsMultimap of node IDs to their links (a node can have multiple links)
+
+
+ +

Definition at line 456 of file Statistics.h.

+ +
+
+ +

◆ setMapCorrection()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setMapCorrection (const Transform & mapCorrection)
+
+inline
+
+ +

Sets the map correction transform.

+

The map correction transform represents the transformation from the map fixed frame to the odometry fixed frame. This transform is typically updated after graph optimization to transform the odometry pose in map frame.

+
Parameters
+ + +
mapCorrectionThe pose of odometry frame in map coordinate system
+
+
+ +

Definition at line 467 of file Statistics.h.

+ +
+
+ +

◆ setLoopClosureTransform()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setLoopClosureTransform (const Transform & loopClosureTransform)
+
+inline
+
+ +

Sets the loop closure transform.

+

The transform between the current pose and the loop closure pose.

+
Parameters
+ + +
loopClosureTransformThe loop closure transform
+
+
+ +

Definition at line 476 of file Statistics.h.

+ +
+
+ +

◆ setLocalizationCovariance()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setLocalizationCovariance (const cv::Mat & covariance)
+
+inline
+
+ +

Sets the localization covariance matrix.

+

The covariance matrix representing the uncertainty in the current localization estimate.

+
Parameters
+ + +
covarianceThe covariance matrix (typically 6x6 for 3D pose)
+
+
+ +

Definition at line 485 of file Statistics.h.

+ +
+
+ +

◆ setLabels()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setLabels (const std::map< int, std::string > & labels)
+
+inline
+
+ +

Sets node labels.

+
Parameters
+ + +
labelsMap of node IDs to their string labels
+
+
+ +

Definition at line 491 of file Statistics.h.

+ +
+
+ +

◆ setWeights()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setWeights (const std::map< int, int > & weights)
+
+inline
+
+ +

Sets node weights.

+
Parameters
+ + +
weightsMap of node IDs to their integer weights
+
+
+ +

Definition at line 497 of file Statistics.h.

+ +
+
+ +

◆ setPosterior()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setPosterior (const std::map< int, float > & posterior)
+
+inline
+
+ +

Sets posterior probabilities for loop closure hypotheses.

+
Parameters
+ + +
posteriorMap of node IDs to their posterior probabilities
+
+
+ +

Definition at line 504 of file Statistics.h.

+ +
+
+ +

◆ setLikelihood()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setLikelihood (const std::map< int, float > & likelihood)
+
+inline
+
+ +

Sets likelihood values for loop closure hypotheses.

+

Likelihood values represent how well each hypothesis matches the current observation.

+
Parameters
+ + +
likelihoodMap of node IDs to their likelihood values
+
+
+ +

Definition at line 513 of file Statistics.h.

+ +
+
+ +

◆ setRawLikelihood()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setRawLikelihood (const std::map< int, float > & rawLikelihood)
+
+inline
+
+ +

Sets raw likelihood values (before normalization)

+
Parameters
+ + +
rawLikelihoodMap of node IDs to their raw likelihood values
+
+
+ +

Definition at line 519 of file Statistics.h.

+ +
+
+ +

◆ setLocalPath()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setLocalPath (const std::vector< int > & localPath)
+
+inline
+
+ +

Sets the local path (sequence of node IDs)

+

The local path represents the sequence of next nodes to visit for path planning.

+
Parameters
+ + +
localPathVector of node IDs in order of next nodes to visit
+
+
+ +

Definition at line 528 of file Statistics.h.

+ +
+
+ +

◆ setCurrentGoalId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setCurrentGoalId (int goal)
+
+inline
+
+ +

Sets the current goal node ID.

+
Parameters
+ + +
goalThe goal node ID (0 if no goal)
+
+
+ +

Definition at line 534 of file Statistics.h.

+ +
+
+ +

◆ setReducedIds()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setReducedIds (const std::map< int, int > & reducedIds)
+
+inline
+
+ +

Sets the reduced IDs mapping.

+

Maps original node IDs to reduced IDs, used for memory optimization.

+
Parameters
+ + +
reducedIdsMap of original IDs to reduced IDs
+
+
+ +

Definition at line 543 of file Statistics.h.

+ +
+
+ +

◆ setWmState()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setWmState (const std::vector< int > & state)
+
+inline
+
+ +

Sets the working memory state.

+

The working memory state is a vector of node IDs currently in working memory.

+
Parameters
+ + +
stateVector of node IDs in working memory
+
+
+ +

Definition at line 552 of file Statistics.h.

+ +
+
+ +

◆ setOdomCachePoses()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setOdomCachePoses (const std::map< int, Transform > & poses)
+
+inline
+
+ +

Sets odometry cache poses.

+

Cached odometry poses during localization mode.

+
Parameters
+ + +
posesMap of node IDs to their cached odometry poses
+
+
+ +

Definition at line 561 of file Statistics.h.

+ +
+
+ +

◆ setOdomCacheConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::Statistics::setOdomCacheConstraints (const std::multimap< int, Link > & constraints)
+
+inline
+
+ +

Sets odometry cache constraints.

+

Cached odometry constraints (links) between nodes.

+
Parameters
+ + +
constraintsMultimap of node IDs to their cached odometry links
+
+
+ +

Definition at line 570 of file Statistics.h.

+ +
+
+ +

◆ extended()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Statistics::extended () const
+
+inline
+
+ +

Returns whether extended statistics mode is enabled.

+
Returns
True if extended mode, false if basic mode
+ +

Definition at line 578 of file Statistics.h.

+ +
+
+ +

◆ refImageId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Statistics::refImageId () const
+
+inline
+
+ +

Returns the reference image ID.

+
Returns
The signature ID (0 if not set)
+ +

Definition at line 584 of file Statistics.h.

+ +
+
+ +

◆ refImageMapId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Statistics::refImageMapId () const
+
+inline
+
+ +

Returns the reference image map ID.

+
Returns
The map ID (-1 if not set)
+ +

Definition at line 590 of file Statistics.h.

+ +
+
+ +

◆ loopClosureId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Statistics::loopClosureId () const
+
+inline
+
+ +

Returns the loop closure detection ID.

+
Returns
The signature ID where loop closure was detected (0 if none)
+ +

Definition at line 596 of file Statistics.h.

+ +
+
+ +

◆ loopClosureMapId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Statistics::loopClosureMapId () const
+
+inline
+
+ +

Returns the loop closure map ID.

+
Returns
The map ID associated with the loop closure (-1 if not set)
+ +

Definition at line 602 of file Statistics.h.

+ +
+
+ +

◆ proximityDetectionId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Statistics::proximityDetectionId () const
+
+inline
+
+ +

Returns the proximity detection ID.

+
Returns
The signature ID where proximity was detected (0 if none)
+ +

Definition at line 608 of file Statistics.h.

+ +
+
+ +

◆ proximityDetectionMapId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Statistics::proximityDetectionMapId () const
+
+inline
+
+ +

Returns the proximity detection map ID.

+
Returns
The map ID associated with the proximity detection (-1 if not set)
+ +

Definition at line 614 of file Statistics.h.

+ +
+
+ +

◆ stamp()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::Statistics::stamp () const
+
+inline
+
+ +

Returns the timestamp.

+
Returns
The timestamp (0.0 if not set)
+ +

Definition at line 620 of file Statistics.h.

+ +
+
+ +

◆ getLastSignatureData()

+ +
+
+ + + + + +
+ + + + + + + +
const Signature & rtabmap::Statistics::getLastSignatureData () const
+
+inline
+
+ +

Returns the last signature data.

+

Returns the most recently added signature (by ID). If no signatures are stored, returns a dummy empty signature.

+
Returns
Reference to the last signature data
+ +

Definition at line 630 of file Statistics.h.

+ +
+
+ +

◆ getSignaturesData()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Signature > & rtabmap::Statistics::getSignaturesData () const
+
+inline
+
+ +

Returns all signature data.

+
Returns
Const reference to the map of signature IDs to Signature objects
+ +

Definition at line 636 of file Statistics.h.

+ +
+
+ +

◆ poses()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Transform > & rtabmap::Statistics::poses () const
+
+inline
+
+ +

Returns the pose graph.

+
Returns
Const reference to the map of node IDs to poses
+ +

Definition at line 642 of file Statistics.h.

+ +
+
+ +

◆ constraints()

+ +
+
+ + + + + +
+ + + + + + + +
const std::multimap< int, Link > & rtabmap::Statistics::constraints () const
+
+inline
+
+ +

Returns the constraint graph.

+
Returns
Const reference to the multimap of node IDs to links
+ +

Definition at line 648 of file Statistics.h.

+ +
+
+ +

◆ mapCorrection()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Statistics::mapCorrection () const
+
+inline
+
+ +

Returns the map correction transform.

+

Returns the transform from the map fixed frame to the odometry fixed frame.

+
Returns
Const reference to the map correction transform
+ +

Definition at line 657 of file Statistics.h.

+ +
+
+ +

◆ loopClosureTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::Statistics::loopClosureTransform () const
+
+inline
+
+ +

Returns the loop closure transform.

+
Returns
Const reference to the loop closure transform
+ +

Definition at line 663 of file Statistics.h.

+ +
+
+ +

◆ localizationCovariance()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::Statistics::localizationCovariance () const
+
+inline
+
+ +

Returns the localization covariance matrix.

+
Returns
Const reference to the covariance matrix (may be empty)
+ +

Definition at line 669 of file Statistics.h.

+ +
+
+ +

◆ labels()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, std::string > & rtabmap::Statistics::labels () const
+
+inline
+
+ +

Returns node labels.

+
Returns
Const reference to the map of node IDs to labels
+ +

Definition at line 675 of file Statistics.h.

+ +
+
+ +

◆ weights()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, int > & rtabmap::Statistics::weights () const
+
+inline
+
+ +

Returns node weights.

+
Returns
Const reference to the map of node IDs to weights
+ +

Definition at line 681 of file Statistics.h.

+ +
+
+ +

◆ posterior()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, float > & rtabmap::Statistics::posterior () const
+
+inline
+
+ +

Returns posterior probabilities.

+
Returns
Const reference to the map of node IDs to posterior probabilities
+ +

Definition at line 687 of file Statistics.h.

+ +
+
+ +

◆ likelihood()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, float > & rtabmap::Statistics::likelihood () const
+
+inline
+
+ +

Returns likelihood values.

+
Returns
Const reference to the map of node IDs to likelihood values
+ +

Definition at line 693 of file Statistics.h.

+ +
+
+ +

◆ rawLikelihood()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, float > & rtabmap::Statistics::rawLikelihood () const
+
+inline
+
+ +

Returns raw likelihood values.

+
Returns
Const reference to the map of node IDs to raw likelihood values
+ +

Definition at line 699 of file Statistics.h.

+ +
+
+ +

◆ localPath()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< int > & rtabmap::Statistics::localPath () const
+
+inline
+
+ +

Returns the local path.

+
Returns
Const reference to the vector of node IDs
+ +

Definition at line 705 of file Statistics.h.

+ +
+
+ +

◆ currentGoalId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Statistics::currentGoalId () const
+
+inline
+
+ +

Returns the current goal node ID.

+
Returns
The goal node ID (0 if no goal)
+ +

Definition at line 711 of file Statistics.h.

+ +
+
+ +

◆ reducedIds()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, int > & rtabmap::Statistics::reducedIds () const
+
+inline
+
+ +

Returns the reduced IDs mapping.

+
Returns
Const reference to the map of original IDs to reduced IDs
+ +

Definition at line 717 of file Statistics.h.

+ +
+
+ +

◆ wmState()

+ +
+
+ + + + + +
+ + + + + + + +
const std::vector< int > & rtabmap::Statistics::wmState () const
+
+inline
+
+ +

Returns the working memory state.

+
Returns
Const reference to the vector of node IDs in working memory
+ +

Definition at line 723 of file Statistics.h.

+ +
+
+ +

◆ odomCachePoses()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, Transform > & rtabmap::Statistics::odomCachePoses () const
+
+inline
+
+ +

Returns odometry cache poses.

+
Returns
Const reference to the map of node IDs to cached odometry poses
+ +

Definition at line 729 of file Statistics.h.

+ +
+
+ +

◆ odomCacheConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
const std::multimap< int, Link > & rtabmap::Statistics::odomCacheConstraints () const
+
+inline
+
+ +

Returns odometry cache constraints.

+
Returns
Const reference to the multimap of node IDs to cached odometry links
+ +

Definition at line 735 of file Statistics.h.

+ +
+
+ +

◆ data()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< std::string, float > & rtabmap::Statistics::data () const
+
+inline
+
+ +

Returns the statistics data map.

+

Returns the map containing all plottable statistics in the format "Group/Name/Unit" -> value. This is the main data structure for storing numeric statistics.

+
Returns
Const reference to the statistics data map
+
Note
Use addStatistic() to add values to this map
+
+Use serializeData() to convert this map to a string for storage
+ +

Definition at line 748 of file Statistics.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Statistics.js b/preview/pr-1773/api/latest/classrtabmap_1_1Statistics.js new file mode 100644 index 00000000..986252c9 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Statistics.js @@ -0,0 +1,60 @@ +var classrtabmap_1_1Statistics = +[ + [ "Statistics", "classrtabmap_1_1Statistics.html#a5f5bf8e57410944ec46be25a5bf8ab46", null ], + [ "~Statistics", "classrtabmap_1_1Statistics.html#af7ecfdb141de651d094d28a2d035dca0", null ], + [ "addStatistic", "classrtabmap_1_1Statistics.html#a24d85beaf52fd03ad67c6d9d417efd79", null ], + [ "setExtended", "classrtabmap_1_1Statistics.html#a938202c5836ba75d8eb06b0317712d06", null ], + [ "setRefImageId", "classrtabmap_1_1Statistics.html#a4fa0c5aafea26effea2ed63d5bf3a31f", null ], + [ "setRefImageMapId", "classrtabmap_1_1Statistics.html#a39895f500676995e2cc830169b80c7ca", null ], + [ "setLoopClosureId", "classrtabmap_1_1Statistics.html#a19272faba1c28279bb565464afa84645", null ], + [ "setLoopClosureMapId", "classrtabmap_1_1Statistics.html#a3b92ac9f165c77b2cc92f3fc6d7242cd", null ], + [ "setProximityDetectionId", "classrtabmap_1_1Statistics.html#a25b8a9b50054a80dc09423b6fe9f68ff", null ], + [ "setProximityDetectionMapId", "classrtabmap_1_1Statistics.html#a5e6df533a3c7a70d0391f7fe129e5eef", null ], + [ "setStamp", "classrtabmap_1_1Statistics.html#a12bfc3ce8eb232a6ac3942af504bedef", null ], + [ "setLastSignatureData", "classrtabmap_1_1Statistics.html#ae5de0aae15a10ed18cc30c2656bd4d6a", null ], + [ "addSignatureData", "classrtabmap_1_1Statistics.html#a55748a17bc6348a83dc184fb1b2631fd", null ], + [ "setSignaturesData", "classrtabmap_1_1Statistics.html#ad23568ea07d4ad167fcbd83a9083a2ef", null ], + [ "setPoses", "classrtabmap_1_1Statistics.html#acf7df1c7a8958a24988239fc40ece1ea", null ], + [ "setConstraints", "classrtabmap_1_1Statistics.html#ac4761222db6faee6c34c53c1d4d00ec2", null ], + [ "setMapCorrection", "classrtabmap_1_1Statistics.html#a6a70e49f42639395a89edbde4659bf88", null ], + [ "setLoopClosureTransform", "classrtabmap_1_1Statistics.html#ac323334656165fd230cbe396836c6939", null ], + [ "setLocalizationCovariance", "classrtabmap_1_1Statistics.html#a747aee7cd90f8318de6d0b82bedcd971", null ], + [ "setLabels", "classrtabmap_1_1Statistics.html#aaa519c598aa7a56eda73653ab34d6b48", null ], + [ "setWeights", "classrtabmap_1_1Statistics.html#a918d447083cfcea3ab040e985461ae45", null ], + [ "setPosterior", "classrtabmap_1_1Statistics.html#a915bb9bd90193a92f565f56024d61586", null ], + [ "setLikelihood", "classrtabmap_1_1Statistics.html#a8988eb66288df6a4d676b3cbd7b3a7ff", null ], + [ "setRawLikelihood", "classrtabmap_1_1Statistics.html#a20a3634b3fbd36d86b1803f7427b105f", null ], + [ "setLocalPath", "classrtabmap_1_1Statistics.html#a3c80bf518d943d9b86e5088a9269b455", null ], + [ "setCurrentGoalId", "classrtabmap_1_1Statistics.html#a845a35143a149c9670fb46938594fcb9", null ], + [ "setReducedIds", "classrtabmap_1_1Statistics.html#abf88d8f411f811549d91d29a5b78d308", null ], + [ "setWmState", "classrtabmap_1_1Statistics.html#aa43870ba13369f23c122bff62f6654c8", null ], + [ "setOdomCachePoses", "classrtabmap_1_1Statistics.html#a6032903dc163f7bc5d36c0520ccdfcef", null ], + [ "setOdomCacheConstraints", "classrtabmap_1_1Statistics.html#ae3d58759c1cc237b2e297c2c5f608725", null ], + [ "extended", "classrtabmap_1_1Statistics.html#a1e1ba8f7429fa212aa32897877dec122", null ], + [ "refImageId", "classrtabmap_1_1Statistics.html#a4ba41e262e2af21bfb2c9d1b6e493d6d", null ], + [ "refImageMapId", "classrtabmap_1_1Statistics.html#a45abfdd8f164e0c457d64b80919d5052", null ], + [ "loopClosureId", "classrtabmap_1_1Statistics.html#a6a81189f2327a8b8f05a5f93d68fa3b7", null ], + [ "loopClosureMapId", "classrtabmap_1_1Statistics.html#a1cf32a26d3ca103c22104015a3de8929", null ], + [ "proximityDetectionId", "classrtabmap_1_1Statistics.html#a0aeff90b40410ef769e63ef6b000328b", null ], + [ "proximityDetectionMapId", "classrtabmap_1_1Statistics.html#ae973bc5dc35b89888a67d5e416536c53", null ], + [ "stamp", "classrtabmap_1_1Statistics.html#a24a86b496c06f7d027ebb803b0ce70dd", null ], + [ "getLastSignatureData", "classrtabmap_1_1Statistics.html#a582cb4d6d0b3034062d508a6cac77081", null ], + [ "getSignaturesData", "classrtabmap_1_1Statistics.html#abd89f302128c32d07b0dea07e50b742b", null ], + [ "poses", "classrtabmap_1_1Statistics.html#acb80fff8690d88228ebda369e0e06289", null ], + [ "constraints", "classrtabmap_1_1Statistics.html#a30275a92af2f9fb08f3955c5b9e8b661", null ], + [ "mapCorrection", "classrtabmap_1_1Statistics.html#a775992631cd8d976a94ea6c1560dad0d", null ], + [ "loopClosureTransform", "classrtabmap_1_1Statistics.html#a38c88cb8327baa290bf476326d24b54c", null ], + [ "localizationCovariance", "classrtabmap_1_1Statistics.html#a4c05e2dd7412e875333f3edea70ffbb3", null ], + [ "labels", "classrtabmap_1_1Statistics.html#afeb2fd18d35f6a760ffa46ca0ebe4e49", null ], + [ "weights", "classrtabmap_1_1Statistics.html#ab29fce77b8debf381356e27ac039fafc", null ], + [ "posterior", "classrtabmap_1_1Statistics.html#ac50fb91120fdc16266460678088ac12f", null ], + [ "likelihood", "classrtabmap_1_1Statistics.html#a4f3492b5cf6ff082d0061c9d7c67536f", null ], + [ "rawLikelihood", "classrtabmap_1_1Statistics.html#a472f50deace411e1fbbef95f4fb698de", null ], + [ "localPath", "classrtabmap_1_1Statistics.html#a82f7c8f962fd5fcea9a5d4fc087cb2ce", null ], + [ "currentGoalId", "classrtabmap_1_1Statistics.html#adae0424da0557be95b6968eecdbc628e", null ], + [ "reducedIds", "classrtabmap_1_1Statistics.html#a8c1e9a5c04232909f62447656d6bcbce", null ], + [ "wmState", "classrtabmap_1_1Statistics.html#a0b0bb69d788a142a7b51ae2e916798b6", null ], + [ "odomCachePoses", "classrtabmap_1_1Statistics.html#a8d88d70935ef4e110cd2c92b07ed74b2", null ], + [ "odomCacheConstraints", "classrtabmap_1_1Statistics.html#a44b7a6c4d5b8bd58efcce2fdf3f2a9fd", null ], + [ "data", "classrtabmap_1_1Statistics.html#ab5c8be76435cdfb98c656ccc236f029a", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Stereo-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo-members.html new file mode 100644 index 00000000..267cff93 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo-members.html @@ -0,0 +1,128 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Stereo Member List
+
+
+ +

This is the complete list of members for rtabmap::Stereo, including all inherited members.

+ + + + + + + + + + + + + +
computeCorrespondences(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status) constrtabmap::Stereovirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Stereostatic
isGpuEnabled() constrtabmap::Stereoinlinevirtual
iterations() constrtabmap::Stereoinline
maxDisparity() constrtabmap::Stereoinline
maxLevel() constrtabmap::Stereoinline
minDisparity() constrtabmap::Stereoinline
parseParameters(const ParametersMap &parameters)rtabmap::Stereovirtual
Stereo(const ParametersMap &parameters=ParametersMap())rtabmap::Stereo
winSize() constrtabmap::Stereoinline
winSSD() constrtabmap::Stereoinline
~Stereo()rtabmap::Stereoinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Stereo.html b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo.html new file mode 100644 index 00000000..7eeb5d7d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo.html @@ -0,0 +1,606 @@ + + + + + + + + +RTAB-Map: rtabmap::Stereo Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Stereo Class Reference
+
+
+ +

Sparse stereo matching using block matching. + More...

+ +

#include <Stereo.h>

+
+Inheritance diagram for rtabmap::Stereo:
+
+
Inheritance graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Stereo (const ParametersMap &parameters=ParametersMap())
 Constructor.
 
virtual ~Stereo ()
 Virtual destructor.
 
virtual void parseParameters (const ParametersMap &parameters)
 Parse parameters from a parameters map.
 
virtual std::vector< cv::Point2f > computeCorrespondences (const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status) const
 Compute stereo correspondences using block matching.
 
cv::Size winSize () const
 Get the search window size.
 
int iterations () const
 Get the number of iterations.
 
int maxLevel () const
 Get the maximum pyramid level.
 
float minDisparity () const
 Get the minimum disparity value.
 
float maxDisparity () const
 Get the maximum disparity value.
 
bool winSSD () const
 Check if SSD (Sum of Squared Differences) is used.
 
virtual bool isGpuEnabled () const
 Check if GPU acceleration is enabled.
 
+ + + + +

+Static Public Member Functions

static Stereo * create (const ParametersMap &parameters=ParametersMap())
 Factory method to create a Stereo instance.
 
+

Detailed Description

+

Sparse stereo matching using block matching.

+

This class implements sparse stereo matching to find corresponding feature points between stereo image pairs using block matching with a search window. Unlike dense stereo matching, this class works with sparse feature points rather than computing disparity for every pixel.

+

The algorithm uses a pyramidal approach for efficiency, searching for correspondences within a specified disparity range using either SAD (Sum of Absolute Differences) or SSD (Sum of Squared Differences) as the matching cost.

+
Note
Input images must be grayscale (CV_8UC1).
+
See also
StereoOpticalFlow for an alternative implementation using optical flow
+
+StereoDense for dense stereo matching
+ +

Definition at line 55 of file Stereo.h.

+

Constructor & Destructor Documentation

+ +

◆ Stereo()

+ +
+
+ + + + + + + + +
rtabmap::Stereo::Stereo (const ParametersMap & parameters = ParametersMap())
+
+ +

Constructor.

+

Initializes a Stereo instance with default parameter values and then parses the provided parameters map to override defaults.

+
Parameters
+ + +
parametersOptional parameters map containing configuration values. If empty, default values are used.
+
+
+ +
+
+ +

◆ ~Stereo()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::Stereo::~Stereo ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 87 of file Stereo.h.

+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
static Stereo * rtabmap::Stereo::create (const ParametersMap & parameters = ParametersMap())
+
+static
+
+ +

Factory method to create a Stereo instance.

+

Creates a Stereo instance based on the stereo optical flow parameter in the provided parameters map. If optical flow is enabled, creates a StereoOpticalFlow instance; otherwise, creates a standard Stereo instance.

+
Parameters
+ + +
parametersParameters map containing configuration values. The Parameters::kStereoOpticalFlow() parameter determines which implementation to create.
+
+
+
Returns
Pointer to the created Stereo instance (caller owns the memory). Returns StereoOpticalFlow if optical flow is enabled, otherwise Stereo.
+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::Stereo::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Parse parameters from a parameters map.

+

Updates the algorithm's configuration based on the provided parameters map. Supported parameters:

+
Parameters
+ + +
parametersParameters map containing configuration values
+
+
+ +

Reimplemented in rtabmap::StereoOpticalFlow.

+ +
+
+ +

◆ computeCorrespondences()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::vector< cv::Point2f > rtabmap::Stereo::computeCorrespondences (const cv::Mat & leftImage,
const cv::Mat & rightImage,
const std::vector< cv::Point2f > & leftCorners,
std::vector< unsigned char > & status 
) const
+
+virtual
+
+ +

Compute stereo correspondences using block matching.

+

Finds corresponding points in the right stereo image for the given points in the left stereo image using block matching with a search window. The algorithm uses a pyramidal approach for efficiency.

+
Parameters
+ + + + + +
leftImageLeft stereo image (must be CV_8UC1 grayscale)
rightImageRight stereo image (must be CV_8UC1 grayscale)
leftCornersInput vector of feature points in the left image
statusOutput vector indicating which correspondences are valid (1) or invalid (0). The size matches leftCorners.size().
+
+
+
Returns
Vector of corresponding points in the right image. The size matches leftCorners.size(). Invalid correspondences may have coordinates outside the image bounds.
+
Note
Both input images must be grayscale (CV_8UC1).
+
+The algorithm searches for correspondences within the disparity range [minDisparity(), maxDisparity()] and uses a search window of size winSize().
+ +

Reimplemented in rtabmap::StereoOpticalFlow.

+ +
+
+ +

◆ winSize()

+ +
+
+ + + + + +
+ + + + + + + +
cv::Size rtabmap::Stereo::winSize () const
+
+inline
+
+ +

Get the search window size.

+
Returns
Search window size as cv::Size(winWidth_, winHeight_)
+ +

Definition at line 154 of file Stereo.h.

+ +
+
+ +

◆ iterations()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Stereo::iterations () const
+
+inline
+
+ +

Get the number of iterations.

+
Returns
Number of iterations for the matching algorithm
+ +

Definition at line 160 of file Stereo.h.

+ +
+
+ +

◆ maxLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Stereo::maxLevel () const
+
+inline
+
+ +

Get the maximum pyramid level.

+
Returns
Maximum pyramid level used in the pyramidal approach
+ +

Definition at line 166 of file Stereo.h.

+ +
+
+ +

◆ minDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Stereo::minDisparity () const
+
+inline
+
+ +

Get the minimum disparity value.

+
Returns
Minimum disparity value to search (in pixels)
+ +

Definition at line 172 of file Stereo.h.

+ +
+
+ +

◆ maxDisparity()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Stereo::maxDisparity () const
+
+inline
+
+ +

Get the maximum disparity value.

+
Returns
Maximum disparity value to search (in pixels)
+ +

Definition at line 178 of file Stereo.h.

+ +
+
+ +

◆ winSSD()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::Stereo::winSSD () const
+
+inline
+
+ +

Check if SSD (Sum of Squared Differences) is used.

+
Returns
true if SSD is used, false if SAD (Sum of Absolute Differences) is used
+ +

Definition at line 184 of file Stereo.h.

+ +
+
+ +

◆ isGpuEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::Stereo::isGpuEnabled () const
+
+inlinevirtual
+
+ +

Check if GPU acceleration is enabled.

+
Returns
Always returns false for the base Stereo class
+ +

Reimplemented in rtabmap::StereoOpticalFlow.

+ +

Definition at line 190 of file Stereo.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/Stereo.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Stereo.js b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo.js new file mode 100644 index 00000000..93704977 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo.js @@ -0,0 +1,14 @@ +var classrtabmap_1_1Stereo = +[ + [ "Stereo", "classrtabmap_1_1Stereo.html#a1031c68f4e66690da216718382af0ab3", null ], + [ "~Stereo", "classrtabmap_1_1Stereo.html#aca70a15916baf916d6d66c93dad6b3d5", null ], + [ "parseParameters", "classrtabmap_1_1Stereo.html#a405d17f179327670251fca395728584b", null ], + [ "computeCorrespondences", "classrtabmap_1_1Stereo.html#aefb9a38643b353727430c4bb6a551382", null ], + [ "winSize", "classrtabmap_1_1Stereo.html#a5474ebbc178bcc29ebaff3d9d4e22e54", null ], + [ "iterations", "classrtabmap_1_1Stereo.html#abde66966de114cd5649fd22602d27816", null ], + [ "maxLevel", "classrtabmap_1_1Stereo.html#a3834923d75c9453e885bea01cb5ecfa5", null ], + [ "minDisparity", "classrtabmap_1_1Stereo.html#aaeec1e0e5470b1b1268b4e04bff81742", null ], + [ "maxDisparity", "classrtabmap_1_1Stereo.html#a83319186c8c434ad0482d2eb911ecd31", null ], + [ "winSSD", "classrtabmap_1_1Stereo.html#aed372a471e6d3ea72713e239709da978", null ], + [ "isGpuEnabled", "classrtabmap_1_1Stereo.html#ac1db900d4dbca15de73a81d32f0be179", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM-members.html new file mode 100644 index 00000000..38becc6f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM-members.html @@ -0,0 +1,128 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::StereoBM Member List
+
+
+ +

This is the complete list of members for rtabmap::StereoBM, including all inherited members.

+ + + + + + + + + + + + + +
computeDisparity(const cv::Mat &leftImage, const cv::Mat &rightImage) constrtabmap::StereoBMvirtual
create(const ParametersMap &parameters)rtabmap::StereoDensestatic
create(StereoDense::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::StereoDensestatic
kTypeBM enum valuertabmap::StereoDense
kTypeSGBM enum valuertabmap::StereoDense
parseParameters(const ParametersMap &parameters)rtabmap::StereoBMvirtual
StereoBM(int blockSize, int numDisparities)rtabmap::StereoBM
StereoBM(const ParametersMap &parameters=ParametersMap())rtabmap::StereoBM
StereoDense(const ParametersMap &parameters=ParametersMap())rtabmap::StereoDenseinlineprotected
Type enum namertabmap::StereoDense
~StereoBM()rtabmap::StereoBMinlinevirtual
~StereoDense()rtabmap::StereoDenseinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.html new file mode 100644 index 00000000..2d01d55a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.html @@ -0,0 +1,388 @@ + + + + + + + + +RTAB-Map: rtabmap::StereoBM Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::StereoBM Class Reference
+
+
+ +

Block Matching algorithm for dense stereo matching. + More...

+ +

#include <StereoBM.h>

+
+Inheritance diagram for rtabmap::StereoBM:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::StereoBM:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StereoBM (int blockSize, int numDisparities)
 Constructor with explicit block size and number of disparities.
 
 StereoBM (const ParametersMap &parameters=ParametersMap())
 Constructor with parameters map.
 
virtual ~StereoBM ()
 Virtual destructor.
 
virtual void parseParameters (const ParametersMap &parameters)
 Parse parameters from a parameters map.
 
virtual cv::Mat computeDisparity (const cv::Mat &leftImage, const cv::Mat &rightImage) const
 Compute disparity map from stereo image pair.
 
- Public Member Functions inherited from rtabmap::StereoDense
virtual ~StereoDense ()
 Virtual destructor.
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::StereoDense
enum  Type { kTypeBM = 0 +, kTypeSGBM = 1 + }
 Enumeration of available stereo matching algorithm types. More...
 
- Static Public Member Functions inherited from rtabmap::StereoDense
static StereoDense * create (const ParametersMap &parameters)
 Factory method to create a StereoDense instance from parameters.
 
static StereoDense * create (StereoDense::Type type, const ParametersMap &parameters=ParametersMap())
 Factory method to create a StereoDense instance of a specific type.
 
- Protected Member Functions inherited from rtabmap::StereoDense
 StereoDense (const ParametersMap &parameters=ParametersMap())
 Protected constructor.
 
+

Detailed Description

+

Block Matching algorithm for dense stereo matching.

+

This class implements the Block Matching (BM) algorithm for computing disparity maps from stereo image pairs.

+
Note
This class wraps OpenCV's cv::StereoBM implementation.
+
See also
StereoSGBM for a more accurate but slower alternative
+ +

Definition at line 47 of file StereoBM.h.

+

Constructor & Destructor Documentation

+ +

◆ StereoBM() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
rtabmap::StereoBM::StereoBM (int blockSize,
int numDisparities 
)
+
+ +

Constructor with explicit block size and number of disparities.

+
Parameters
+ + + +
blockSizeSize of the block window for matching (must be odd, typically 5-21)
numDisparitiesNumber of disparity levels to search (must be divisible by 16)
+
+
+ +
+
+ +

◆ StereoBM() [2/2]

+ +
+
+ + + + + + + + +
rtabmap::StereoBM::StereoBM (const ParametersMap & parameters = ParametersMap())
+
+ +

Constructor with parameters map.

+

Creates a StereoBM instance and initializes it from the provided parameters map.

+
Parameters
+ + +
parametersParameters map containing configuration values
+
+
+ +
+
+ +

◆ ~StereoBM()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::StereoBM::~StereoBM ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 69 of file StereoBM.h.

+ +
+
+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::StereoBM::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+
+ +

◆ computeDisparity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual cv::Mat rtabmap::StereoBM::computeDisparity (const cv::Mat & leftImage,
const cv::Mat & rightImage 
) const
+
+virtual
+
+ +

Compute disparity map from stereo image pair.

+

Computes a disparity map using the Block Matching algorithm. The images must have the same size and be either grayscale (CV_8UC1) or color (CV_8UC3). Color images are automatically converted to grayscale.

+
Parameters
+ + + +
leftImageLeft stereo image (CV_8UC1 or CV_8UC3)
rightImageRight stereo image (CV_8UC1 or CV_8UC3), must have same size as leftImage
+
+
+
Returns
Disparity map as a 16-bit signed integer image (CV_16SC1)
+
Note
The disparity values are stored as fixed-point numbers with 4 fractional bits. To get the actual disparity, divide by 16.
+ +

Implements rtabmap::StereoDense.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/stereo/StereoBM.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.js b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.js new file mode 100644 index 00000000..be22a4db --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM.js @@ -0,0 +1,8 @@ +var classrtabmap_1_1StereoBM = +[ + [ "StereoBM", "classrtabmap_1_1StereoBM.html#a33ff25f4afacce93201f509b78e5ca6f", null ], + [ "StereoBM", "classrtabmap_1_1StereoBM.html#a74970c7517eec90828dd03510c3e3db0", null ], + [ "~StereoBM", "classrtabmap_1_1StereoBM.html#a6d5e4ac8698669323dff297c01f7ee4b", null ], + [ "parseParameters", "classrtabmap_1_1StereoBM.html#ab3960fcf495a6dcacfab58ed144b4cc7", null ], + [ "computeDisparity", "classrtabmap_1_1StereoBM.html#a94b6d71050cf4b784f87853175c57b00", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.map new file mode 100644 index 00000000..154994a5 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.md5 new file mode 100644 index 00000000..d3a5b30e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.md5 @@ -0,0 +1 @@ +4ba0f69779a58d73257cf8deb27d6255 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8f567b5aa4b95ea94a1fe12d766606155783e6b2 GIT binary patch literal 4967 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.md5 new file mode 100644 index 00000000..d3a5b30e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.md5 @@ -0,0 +1 @@ +4ba0f69779a58d73257cf8deb27d6255 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1StereoBM__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8f567b5aa4b95ea94a1fe12d766606155783e6b2 GIT binary patch literal 4967 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::StereoCameraModel Member List
+
+
+ +

This is the complete list of members for rtabmap::StereoCameraModel, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
baseline() constrtabmap::StereoCameraModelinline
computeDepth(float disparity) constrtabmap::StereoCameraModel
computeDisparity(float depth) constrtabmap::StereoCameraModel
computeDisparity(unsigned short depth) constrtabmap::StereoCameraModel
deserialize(const std::vector< unsigned char > &data)rtabmap::StereoCameraModel
deserialize(const unsigned char *data, unsigned int dataSize)rtabmap::StereoCameraModel
E() constrtabmap::StereoCameraModelinline
F() constrtabmap::StereoCameraModelinline
getLeftSuffix() constrtabmap::StereoCameraModelinline
getRightSuffix() constrtabmap::StereoCameraModelinline
initRectificationMap()rtabmap::StereoCameraModelinline
isRectificationMapInitialized() constrtabmap::StereoCameraModelinline
isValidForProjection() constrtabmap::StereoCameraModelinline
isValidForRectification() constrtabmap::StereoCameraModelinline
left() constrtabmap::StereoCameraModelinline
load(const std::string &directory, const std::string &cameraName, bool ignoreStereoTransform=true, bool initRectificationMaps=true)rtabmap::StereoCameraModel
localTransform() constrtabmap::StereoCameraModelinline
name() constrtabmap::StereoCameraModelinline
R() constrtabmap::StereoCameraModelinline
reproject(float x, float y, float z, float &uLeft, float &vLeft, float &uRight, float &vRight) constrtabmap::StereoCameraModel
reproject(float x, float y, float z, int &uLeft, int &vLeft, int &uRight, int &vRight) constrtabmap::StereoCameraModel
right() constrtabmap::StereoCameraModelinline
roi(const cv::Rect &roi)rtabmap::StereoCameraModel
save(const std::string &directory, bool ignoreStereoTransform=true) constrtabmap::StereoCameraModel
saveStereoTransform(const std::string &directory) constrtabmap::StereoCameraModel
scale(double scale)rtabmap::StereoCameraModel
serialize() constrtabmap::StereoCameraModel
setImageSize(const cv::Size &size)rtabmap::StereoCameraModelinline
setLocalTransform(const Transform &transform)rtabmap::StereoCameraModelinline
setName(const std::string &name, const std::string &leftSuffix="left", const std::string &rightSuffix="right")rtabmap::StereoCameraModel
StereoCameraModel()rtabmap::StereoCameraModelinline
StereoCameraModel(const std::string &name, const cv::Size &imageSize1, const cv::Mat &K1, const cv::Mat &D1, const cv::Mat &R1, const cv::Mat &P1, const cv::Size &imageSize2, const cv::Mat &K2, const cv::Mat &D2, const cv::Mat &R2, const cv::Mat &P2, const cv::Mat &R, const cv::Mat &T, const cv::Mat &E, const cv::Mat &F, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0))rtabmap::StereoCameraModel
StereoCameraModel(const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const cv::Mat &R=cv::Mat(), const cv::Mat &T=cv::Mat(), const cv::Mat &E=cv::Mat(), const cv::Mat &F=cv::Mat())rtabmap::StereoCameraModel
StereoCameraModel(const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const Transform &extrinsics)rtabmap::StereoCameraModel
StereoCameraModel(double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))rtabmap::StereoCameraModel
StereoCameraModel(const std::string &name, double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))rtabmap::StereoCameraModel
stereoTransform() constrtabmap::StereoCameraModel
T() constrtabmap::StereoCameraModelinline
~StereoCameraModel()rtabmap::StereoCameraModelinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.html new file mode 100644 index 00000000..b42733dc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.html @@ -0,0 +1,1861 @@ + + + + + + + + +RTAB-Map: rtabmap::StereoCameraModel Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::StereoCameraModel Class Reference
+
+
+ +

A class representing a calibrated stereo camera system. + More...

+ +

#include <StereoCameraModel.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StereoCameraModel ()
 Default constructor. Creates an empty stereo model with default suffixes ("left", "right").
 
 StereoCameraModel (const std::string &name, const cv::Size &imageSize1, const cv::Mat &K1, const cv::Mat &D1, const cv::Mat &R1, const cv::Mat &P1, const cv::Size &imageSize2, const cv::Mat &K2, const cv::Mat &D2, const cv::Mat &R2, const cv::Mat &P2, const cv::Mat &R, const cv::Mat &T, const cv::Mat &E, const cv::Mat &F, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0))
 Constructs a StereoCameraModel from detailed intrinsic and extrinsic parameters for both cameras.
 
 StereoCameraModel (const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const cv::Mat &R=cv::Mat(), const cv::Mat &T=cv::Mat(), const cv::Mat &E=cv::Mat(), const cv::Mat &F=cv::Mat())
 Constructs a StereoCameraModel from two individual camera models and optional stereo extrinsic parameters.
 
 StereoCameraModel (const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const Transform &extrinsics)
 Constructs a StereoCameraModel from two camera models and an extrinsic Transform between them.
 
 StereoCameraModel (double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))
 Minimal constructor using focal lengths and baseline only.
 
 StereoCameraModel (const std::string &name, double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))
 Minimal constructor that also sets a name, required if we want to save it to a file.
 
virtual ~StereoCameraModel ()
 Destructor.
 
bool isValidForProjection () const
 Returns true if both left and right models are valid for projection and the baseline is positive.
 
bool isValidForRectification () const
 Returns true if both left and right models are valid for rectification.
 
void initRectificationMap ()
 Initializes the rectification maps for both cameras.
 
bool isRectificationMapInitialized () const
 Returns true if rectification maps are initialized.
 
void setName (const std::string &name, const std::string &leftSuffix="left", const std::string &rightSuffix="right")
 Sets the camera name and optional image suffixes for the left and right cameras.
 
const std::string & name () const
 Gets the camera name.
 
void setImageSize (const cv::Size &size)
 Sets the image size for both left and right cameras.
 
bool load (const std::string &directory, const std::string &cameraName, bool ignoreStereoTransform=true, bool initRectificationMaps=true)
 Loads stereo camera calibration data from disk.
 
bool save (const std::string &directory, bool ignoreStereoTransform=true) const
 Saves stereo camera calibration data to disk.
 
bool saveStereoTransform (const std::string &directory) const
 Saves stereo extrinsic parameters to a YAML file in ROS format.
 
std::vector< unsigned char > serialize () const
 Serializes the stereo camera model into a byte vector.
 
unsigned int deserialize (const std::vector< unsigned char > &data)
 Deserializes stereo camera model data from a byte vector.
 
unsigned int deserialize (const unsigned char *data, unsigned int dataSize)
 Deserializes stereo camera model data from a raw byte array.
 
double baseline () const
 Returns the stereo baseline in meters.
 
float computeDepth (float disparity) const
 Computes the depth (Z coordinate) from a given disparity value.
 
float computeDisparity (float depth) const
 Computes the disparity value from a given depth.
 
float computeDisparity (unsigned short depth) const
 Computes the disparity value from a depth given in unsigned short format (millimeters).
 
void reproject (float x, float y, float z, float &uLeft, float &vLeft, float &uRight, float &vRight) const
 Reprojects a 3D point of the left camera frame into both image planes (floating-point).
 
void reproject (float x, float y, float z, int &uLeft, int &vLeft, int &uRight, int &vRight) const
 Reprojects a 3D point of the left camera frame into both image planes (rounded to int).
 
const cv::Mat & R () const
 Stereo extrinsic rotation matrix.
 
const cv::Mat & T () const
 Stereo extrinsic translation vector.
 
const cv::Mat & E () const
 Essential matrix.
 
const cv::Mat & F () const
 Fundamental matrix.
 
void scale (double scale)
 Scales both cameras' calibration by a factor.
 
void roi (const cv::Rect &roi)
 Applies region-of-interest (ROI) cropping to both cameras.
 
void setLocalTransform (const Transform &transform)
 Sets the local transform from left camera to robot base.
 
const Transform & localTransform () const
 Gets the local transform from left camera to robot base.
 
Transform stereoTransform () const
 Returns the stereo transform (left camera relative to right camera coordinate system).
 
const CameraModel & left () const
 Returns the left camera model.
 
const CameraModel & right () const
 Returns the right camera model.
 
const std::string & getLeftSuffix () const
 Gets the suffix used for the left camera calibration file.
 
const std::string & getRightSuffix () const
 Gets the suffix used for the right camera calibration file.
 
+

Detailed Description

+

A class representing a calibrated stereo camera system.

+

This class encapsulates the calibration data and operations associated with a stereo camera setup, including intrinsic and extrinsic parameters for both left and right cameras, stereo rectification, and methods for computing depth or disparity from stereo images.

+

It relies internally on two CameraModel instances for the left and right cameras.

+

Typical uses include:

    +
  • Stereo rectification
  • +
  • Stereo disparity-to-depth conversion
  • +
  • Saving and loading stereo camera calibration data
  • +
  • Projecting or reprojecting points
  • +
+
See also
CameraModel
+ +

Definition at line 53 of file StereoCameraModel.h.

+

Constructor & Destructor Documentation

+ +

◆ StereoCameraModel() [1/6]

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::StereoCameraModel::StereoCameraModel ()
+
+inline
+
+ +

Default constructor. Creates an empty stereo model with default suffixes ("left", "right").

+ +

Definition at line 59 of file StereoCameraModel.h.

+ +
+
+ +

◆ StereoCameraModel() [2/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::StereoCameraModel::StereoCameraModel (const std::string & name,
const cv::Size & imageSize1,
const cv::Mat & K1,
const cv::Mat & D1,
const cv::Mat & R1,
const cv::Mat & P1,
const cv::Size & imageSize2,
const cv::Mat & K2,
const cv::Mat & D2,
const cv::Mat & R2,
const cv::Mat & P2,
const cv::Mat & R,
const cv::Mat & T,
const cv::Mat & E,
const cv::Mat & F,
const Transform & localTransform = Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0) 
)
+
+ +

Constructs a StereoCameraModel from detailed intrinsic and extrinsic parameters for both cameras.

+

Initializes the stereo camera model by specifying the calibration parameters for the left and right cameras, along with the stereo extrinsic parameters.

+
Parameters
+ + + + + + + + + + + + + + + + + +
nameName identifier for the stereo camera.
imageSize1Image size (width, height) of the left camera.
K1Intrinsic camera matrix (3x3, CV_64FC1) for the left camera.
D1Distortion coefficients for the left camera.
R1Rectification matrix (3x3, CV_64FC1) for the left camera.
P1Projection matrix (3x4, CV_64FC1) for the left camera.
imageSize2Image size (width, height) of the right camera.
K2Intrinsic camera matrix (3x3, CV_64FC1) for the right camera.
D2Distortion coefficients for the right camera.
R2Rectification matrix (3x3, CV_64FC1) for the right camera.
P2Projection matrix (3x4, CV_64FC1) for the right camera.
RRotation matrix (3x3, CV_64FC1) representing the rotation from left to right camera coordinate system. Can be empty if unknown.
TTranslation vector (3x1, CV_64FC1) representing the translation from left to right camera coordinate system. Can be empty if unknown.
EEssential matrix (3x3, CV_64FC1) encoding the stereo camera epipolar geometry. Can be empty if unknown.
FFundamental matrix (3x3, CV_64FC1) encoding the stereo camera epipolar constraints. Can be empty if unknown.
localTransformThe local transform associated with the stereo camera model.
+
+
+
Note
All matrices must have correct sizes and types as specified. The rectification and projection matrices (R1, P1, R2, P2) are used to define the stereo rectification parameters. The rotation and translation (R, T) define the relative pose between the cameras.
+ +
+
+ +

◆ StereoCameraModel() [3/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::StereoCameraModel::StereoCameraModel (const std::string & name,
const CameraModel & leftCameraModel,
const CameraModel & rightCameraModel,
const cv::Mat & R = cv::Mat(),
const cv::Mat & T = cv::Mat(),
const cv::Mat & E = cv::Mat(),
const cv::Mat & F = cv::Mat() 
)
+
+ +

Constructs a StereoCameraModel from two individual camera models and optional stereo extrinsic parameters.

+

This constructor initializes the stereo camera model by assigning the provided left and right camera models. If the stereo extrinsics (R, T) are provided and valid, stereo rectification will be attempted—provided both cameras are valid for rectification and their image dimensions match.

+

Each camera model will automatically have its name updated using the name parameter and default suffixes ("left", "right").

+
Parameters
+ + + + + + + + +
nameThe base name for the stereo camera model.
leftCameraModelThe camera model representing the left camera.
rightCameraModelThe camera model representing the right camera.
R(Optional) Rotation matrix of the left camera relative to the right camera coordinate system (3x3, CV_64FC1).
T(Optional) Translation vector of the left camera relative to the right camera coordinate system (3x1, CV_64FC1).
E(Optional) Essential matrix between the two cameras (3x3, CV_64FC1).
F(Optional) Fundamental matrix between the two cameras (3x3, CV_64FC1).
+
+
+
Exceptions
+ + + +
UExceptionif any of the provided matrices (R, T, E, F) are non-empty and not of the expected type/shape.
UExceptionif R and T are provided but the camera models are not valid for rectification.
+
+
+
Note
Stereo rectification is only attempted if both R and T are non-empty, the cameras are valid, and their image sizes match.
+
See also
updateStereoRectification()
+ +
+
+ +

◆ StereoCameraModel() [4/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::StereoCameraModel::StereoCameraModel (const std::string & name,
const CameraModel & leftCameraModel,
const CameraModel & rightCameraModel,
const Transform & extrinsics 
)
+
+ +

Constructs a StereoCameraModel from two camera models and an extrinsic Transform between them.

+

This constructor sets up a stereo camera model using the given left and right camera models along with an optional 3D transform (extrinsics) representing the pose of the left camera relative to the right camera coordinate system.

+

If a valid (non-null) transform is provided, the corresponding rotation and translation matrices are extracted and stored as the stereo extrinsic parameters. Stereo rectification will be attempted if both camera models are valid for rectification and their image sizes match.

+

Each camera model will be renamed using the provided name and default suffixes ("left", "right").

+
Parameters
+ + + + + +
nameBase name for the stereo camera model.
leftCameraModelCamera model for the left camera.
rightCameraModelCamera model for the right camera.
extrinsics(Optional) Transform of the left camera relative to the right camera coordinate system. If null, no extrinsics are used.
+
+
+
Exceptions
+ + +
UExceptionif extrinsics is not null and either camera model is not valid for rectification.
+
+
+
Note
Stereo rectification is performed only when extrinsics is valid and both camera models are rectifiable with matching image dimensions.
+
See also
updateStereoRectification()
+ +
+
+ +

◆ StereoCameraModel() [5/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::StereoCameraModel::StereoCameraModel (double fx,
double fy,
double cx,
double cy,
double baseline,
const Transform & localTransform = Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0),
const cv::Size & imageSize = cv::Size(0, 0) 
)
+
+ +

Minimal constructor using focal lengths and baseline only.

+

Creates a simplified stereo camera model using only the essential intrinsic parameters and baseline. This constructor assumes the images are already rectified and both cameras have the same intrinsic parameters.

+
Parameters
+ + + + + + + + +
fxFocal length in x direction (pixels).
fyFocal length in y direction (pixels).
cxPrincipal point x coordinate (pixels).
cyPrincipal point y coordinate (pixels).
baselineStereo baseline distance in meters.
localTransformLocal transform from camera to robot base frame (default: optical rotation).
imageSizeImage size (width, height). Optional, can be set later.
+
+
+
Note
This constructor creates a simplified model suitable for rectified stereo pairs. For full calibration with distortion, use the constructors that accept camera matrices.
+ +
+
+ +

◆ StereoCameraModel() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::StereoCameraModel::StereoCameraModel (const std::string & name,
double fx,
double fy,
double cx,
double cy,
double baseline,
const Transform & localTransform = Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0),
const cv::Size & imageSize = cv::Size(0, 0) 
)
+
+ +

Minimal constructor that also sets a name, required if we want to save it to a file.

+

Same as the minimal constructor but also sets the camera name, which is required when saving the calibration to disk.

+
Parameters
+ + + + + + + + + +
nameCamera name identifier (used for saving calibration files).
fxFocal length in x direction (pixels).
fyFocal length in y direction (pixels).
cxPrincipal point x coordinate (pixels).
cyPrincipal point y coordinate (pixels).
baselineStereo baseline distance in meters.
localTransformLocal transform from camera to robot base frame (default: optical rotation).
imageSizeImage size (width, height). Optional, can be set later.
+
+
+
Note
Use this constructor when you plan to save the calibration to a file.
+ +
+
+ +

◆ ~StereoCameraModel()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::StereoCameraModel::~StereoCameraModel ()
+
+inlinevirtual
+
+ +

Destructor.

+ +

Definition at line 219 of file StereoCameraModel.h.

+ +
+
+

Member Function Documentation

+ +

◆ isValidForProjection()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::StereoCameraModel::isValidForProjection () const
+
+inline
+
+ +

Returns true if both left and right models are valid for projection and the baseline is positive.

+ +

Definition at line 224 of file StereoCameraModel.h.

+ +
+
+ +

◆ isValidForRectification()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::StereoCameraModel::isValidForRectification () const
+
+inline
+
+ +

Returns true if both left and right models are valid for rectification.

+ +

Definition at line 229 of file StereoCameraModel.h.

+ +
+
+ +

◆ initRectificationMap()

+ +
+
+ + + + + +
+ + + + + + + +
void rtabmap::StereoCameraModel::initRectificationMap ()
+
+inline
+
+ +

Initializes the rectification maps for both cameras.

+ +

Definition at line 234 of file StereoCameraModel.h.

+ +
+
+ +

◆ isRectificationMapInitialized()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::StereoCameraModel::isRectificationMapInitialized () const
+
+inline
+
+ +

Returns true if rectification maps are initialized.

+ +

Definition at line 239 of file StereoCameraModel.h.

+ +
+
+ +

◆ setName()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::StereoCameraModel::setName (const std::string & name,
const std::string & leftSuffix = "left",
const std::string & rightSuffix = "right" 
)
+
+ +

Sets the camera name and optional image suffixes for the left and right cameras.

+

Updates the stereo camera model name and the suffixes used for identifying left and right camera calibration files. The suffixes are used when loading/saving calibration data from disk.

+
Parameters
+ + + + +
nameBase name for the stereo camera model.
leftSuffixSuffix for the left camera (default: "left"). Used in filenames like "cameraName_left.yaml".
rightSuffixSuffix for the right camera (default: "right"). Used in filenames like "cameraName_right.yaml".
+
+
+
Note
The suffixes are used by load() and save() methods to construct filenames for each camera.
+ +
+
+ +

◆ name()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::StereoCameraModel::name () const
+
+inline
+
+ +

Gets the camera name.

+ +

Definition at line 258 of file StereoCameraModel.h.

+ +
+
+ +

◆ setImageSize()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::StereoCameraModel::setImageSize (const cv::Size & size)
+
+inline
+
+ +

Sets the image size for both left and right cameras.

+ +

Definition at line 263 of file StereoCameraModel.h.

+ +
+
+ +

◆ load()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool rtabmap::StereoCameraModel::load (const std::string & directory,
const std::string & cameraName,
bool ignoreStereoTransform = true,
bool initRectificationMaps = true 
)
+
+ +

Loads stereo camera calibration data from disk.

+

This method loads the intrinsic parameters for both the left and right cameras from files in the specified directory, using the provided camera name and internal suffixes. If ignoreStereoTransform is false, it also attempts to load the stereo extrinsic parameters (rotation, translation, essential, and fundamental matrices) from a YAML file.

+

The stereo extrinsics are expected in the file: directory/cameraName_pose.yaml, following the ROS calibration format.

+
Parameters
+ + + + + +
directoryThe directory where the calibration files are located.
cameraNameThe base name of the stereo camera (used to derive filenames).
ignoreStereoTransformIf true, skips loading stereo extrinsic parameters.
initRectificationMapsSet to false to skip building the (potentially large) left/right rectification maps when rectification won't be used (saves time and memory).
+
+
+
Returns
true if loading is successful, false otherwise.
+
See also
save(), saveStereoTransform(), CameraModel::initRectificationMap()
+ +
+
+ +

◆ save()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::StereoCameraModel::save (const std::string & directory,
bool ignoreStereoTransform = true 
) const
+
+ +

Saves stereo camera calibration data to disk.

+

This method saves the intrinsic parameters of both left and right cameras to the specified directory. If ignoreStereoTransform is false, it also saves the stereo extrinsic parameters (rotation, translation, essential, and fundamental matrices) in a ROS-compatible YAML file named cameraName_pose.yaml.

+
Parameters
+ + + +
directoryThe directory where calibration files should be saved.
ignoreStereoTransformIf true, skips saving stereo extrinsic parameters.
+
+
+
Returns
true if saving was successful, false otherwise.
+
See also
load(), saveStereoTransform()
+ +
+
+ +

◆ saveStereoTransform()

+ +
+
+ + + + + + + + +
bool rtabmap::StereoCameraModel::saveStereoTransform (const std::string & directory) const
+
+ +

Saves stereo extrinsic parameters to a YAML file in ROS format.

+

This method exports the stereo transform, including rotation, translation, essential, and fundamental matrices, into a YAML file named cameraName_pose.yaml located in the specified directory. The file format is compatible with ROS camera calibration tools.

+
Parameters
+ + +
directoryThe target directory for saving the calibration file.
+
+
+
Returns
true if saving was successful, false if required matrices are missing or invalid.
+
Warning
If extrinsics (R_, T_, E_, F_) are empty or invalid, nothing will be saved and a warning is printed.
+
See also
load(), save()
+ +
+
+ +

◆ serialize()

+ +
+
+ + + + + + + +
std::vector< unsigned char > rtabmap::StereoCameraModel::serialize () const
+
+ +

Serializes the stereo camera model into a byte vector.

+

This method serializes the left and right camera models along with the stereo extrinsic parameters (rotation matrix R_, translation vector T_, essential matrix E_, and fundamental matrix F_) into a contiguous byte array. The serialization format starts with a fixed-size integer header containing version info, stereo type, matrix sizes, and serialized data sizes, followed by the actual matrices and serialized camera data.

+

The serialized data can later be restored using the corresponding deserialize() method.

+
Returns
A vector of unsigned char containing the serialized stereo camera data.
+ +
+
+ +

◆ deserialize() [1/2]

+ +
+
+ + + + + + + + +
unsigned int rtabmap::StereoCameraModel::deserialize (const std::vector< unsigned char > & data)
+
+ +

Deserializes stereo camera model data from a byte vector.

+

This method wraps the pointer-based deserialize() and attempts to restore the stereo camera model from the given serialized byte vector.

+
Parameters
+ + +
dataThe vector of bytes containing previously serialized stereo camera model data.
+
+
+
Returns
The number of bytes read from the data if successful, 0 otherwise.
+
See also
deserialize(const unsigned char*, unsigned int)
+ +
+
+ +

◆ deserialize() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
unsigned int rtabmap::StereoCameraModel::deserialize (const unsigned char * data,
unsigned int dataSize 
)
+
+ +

Deserializes stereo camera model data from a raw byte array.

+

This method reconstructs the stereo camera model from the provided serialized data buffer. It expects the data format to match the one produced by serialize(), including a header with version info, matrix sizes, and data sizes, followed by the serialized extrinsic matrices and serialized left and right camera data.

+

The method performs various sanity checks on data sizes and matrix dimensions and will fail if the data format or sizes are inconsistent.

+
Parameters
+ + + +
dataPointer to the raw serialized data buffer.
dataSizeSize in bytes of the data buffer.
+
+
+
Returns
The number of bytes consumed during deserialization if successful, or 0 on failure.
+
Warning
The stereo camera model is reset to a default empty state before deserialization.
+
+If the serialized data type is not stereo (type != 1), deserialization will fail.
+
See also
serialize()
+ +
+
+ +

◆ baseline()

+ +
+
+ + + + + +
+ + + + + + + +
double rtabmap::StereoCameraModel::baseline () const
+
+inline
+
+ +

Returns the stereo baseline in meters.

+

Computes the baseline distance between the left and right cameras using the projection matrices. The baseline is calculated as the difference in x-translation (Tx) normalized by the focal length.

+
Returns
The baseline distance in meters. Returns 0.0 if focal lengths are invalid or zero.
+
Note
The baseline is a physical distance and is essential for depth computation from disparity.
+ +

Definition at line 378 of file StereoCameraModel.h.

+ +
+
+ +

◆ computeDepth()

+ +
+
+ + + + + + + + +
float rtabmap::StereoCameraModel::computeDepth (float disparity) const
+
+ +

Computes the depth (Z coordinate) from a given disparity value.

+

Uses the stereo camera model parameters to convert disparity to depth using the formula:

+\[
+    \text{depth} = \frac{\text{baseline} \times f_x}{\text{disparity} + (c_{x_{right}} - c_{x_{left}})}
+\] +

+

where ( f_x ) is the focal length of the left camera and ( c_x ) are principal points.

+
Parameters
+ + +
disparityThe disparity value (difference in pixel coordinates between left and right images).
+
+
+
Returns
The computed depth in the same unit as the baseline (typically meters). Returns 0 if disparity is zero or if the model is not valid for projection.
+
Note
This function requires the stereo camera to be valid for projection (i.e., calibrated and rectified).
+ +
+
+ +

◆ computeDisparity() [1/2]

+ +
+
+ + + + + + + + +
float rtabmap::StereoCameraModel::computeDisparity (float depth) const
+
+ +

Computes the disparity value from a given depth.

+

Converts depth back to disparity using the inverse formula:

+\[
+    \text{disparity} = \frac{\text{baseline} \times f_x}{\text{depth}} - (c_{x_{right}} - c_{x_{left}})
+\] +

+
Parameters
+ + +
depthDepth value in the same unit as the baseline (typically meters).
+
+
+
Returns
The computed disparity in pixels. Returns 0 if depth is zero or if the model is not valid for projection.
+
Note
This function requires the stereo camera to be valid for projection (i.e., calibrated and rectified).
+ +
+
+ +

◆ computeDisparity() [2/2]

+ +
+
+ + + + + + + + +
float rtabmap::StereoCameraModel::computeDisparity (unsigned short depth) const
+
+ +

Computes the disparity value from a depth given in unsigned short format (millimeters).

+

Converts depth expressed as an unsigned short (in millimeters) to disparity. The depth is first converted to meters before computing disparity using the formula:

+\[
+    \text{disparity} = \frac{\text{baseline} \times f_x}{\text{depth (meters)}} - (c_{x_{right}} - c_{x_{left}})
+\] +

+
Parameters
+ + +
depthDepth value in millimeters as an unsigned short.
+
+
+
Returns
The computed disparity in pixels. Returns 0 if depth is zero or if the model is not valid for projection.
+
Note
This function requires the stereo camera to be valid for projection (i.e., calibrated and rectified).
+ +
+
+ +

◆ reproject() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::StereoCameraModel::reproject (float x,
float y,
float z,
float & uLeft,
float & vLeft,
float & uRight,
float & vRight 
) const
+
+ +

Reprojects a 3D point of the left camera frame into both image planes (floating-point).

+

The point is given in the rectified left camera frame (/camera_link), the same frame used by CameraModel::reproject() of left(). The baseline is taken from the Tx of the rectified projection matrices, so the horizontal shift between uLeft and uRight is the disparity of that point. On a rectified stereo pair the rows are aligned, thus vRight equals vLeft.

+
Note
Unlike this function, CameraModel::reproject() ignores Tx, because a Tx set on a single camera model is also used to tag a left camera having stereo observations (see the stereo edges built by the BA optimizers).
+
Parameters
+ + + + + + + + +
xX coordinate in the left camera space.
yY coordinate in the left camera space.
zZ coordinate in the left camera space (must be non-zero).
[out]uLeftOutput horizontal image coordinate in the left image (float).
[out]vLeftOutput vertical image coordinate in the left image (float).
[out]uRightOutput horizontal image coordinate in the right image (float).
[out]vRightOutput vertical image coordinate in the right image (float).
+
+
+
Precondition
z != 0
+
See also
CameraModel::reproject(), reproject(int&, int&, int&, int&)
+ +
+
+ +

◆ reproject() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void rtabmap::StereoCameraModel::reproject (float x,
float y,
float z,
int & uLeft,
int & vLeft,
int & uRight,
int & vRight 
) const
+
+ +

Reprojects a 3D point of the left camera frame into both image planes (rounded to int).

+

This version of reproject() returns integer pixel indices, computed from the 3D position.

+
Parameters
+ + + + + + + + +
xX coordinate in the left camera space.
yY coordinate in the left camera space.
zZ coordinate in the left camera space (must be non-zero).
[out]uLeftOutput horizontal image coordinate in the left image (integer pixel).
[out]vLeftOutput vertical image coordinate in the left image (integer pixel).
[out]uRightOutput horizontal image coordinate in the right image (integer pixel).
[out]vRightOutput vertical image coordinate in the right image (integer pixel).
+
+
+
Precondition
z != 0
+
See also
CameraModel::reproject(), reproject(float&, float&, float&, float&)
+ +
+
+ +

◆ R()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::StereoCameraModel::R () const
+
+inline
+
+ +

Stereo extrinsic rotation matrix.

+ +

Definition at line 475 of file StereoCameraModel.h.

+ +
+
+ +

◆ T()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::StereoCameraModel::T () const
+
+inline
+
+ +

Stereo extrinsic translation vector.

+ +

Definition at line 476 of file StereoCameraModel.h.

+ +
+
+ +

◆ E()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::StereoCameraModel::E () const
+
+inline
+
+ +

Essential matrix.

+ +

Definition at line 477 of file StereoCameraModel.h.

+ +
+
+ +

◆ F()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::StereoCameraModel::F () const
+
+inline
+
+ +

Fundamental matrix.

+ +

Definition at line 478 of file StereoCameraModel.h.

+ +
+
+ +

◆ scale()

+ +
+
+ + + + + + + + +
void rtabmap::StereoCameraModel::scale (double scale)
+
+ +

Scales both cameras' calibration by a factor.

+

Scales the intrinsic parameters (focal lengths, principal points) and image sizes of both left and right cameras by the given scale factor. This is useful when working with downscaled or upscaled images.

+
Parameters
+ + +
scaleScaling factor (> 0). For example, use 0.5 to downscale or 2.0 to upscale.
+
+
+
Note
The baseline is not scaled, as it represents a physical distance between cameras.
+
+Only valid camera models are scaled. Invalid models are left unchanged.
+ +
+
+ +

◆ roi()

+ +
+
+ + + + + + + + +
void rtabmap::StereoCameraModel::roi (const cv::Rect & roi)
+
+ +

Applies region-of-interest (ROI) cropping to both cameras.

+

Adjusts both camera models for a region of interest by shifting the principal points and updating the image sizes. This is useful when working with cropped or subwindowed images.

+
Parameters
+ + +
roiRegion of interest rectangle. The top-left corner defines the offset for principal points.
+
+
+
Note
The principal points (cx, cy) are adjusted by subtracting the ROI's top-left coordinates.
+
+The image size is set to the ROI size.
+
+Only valid camera models are adjusted. Invalid models are left unchanged.
+ +
+
+ +

◆ setLocalTransform()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::StereoCameraModel::setLocalTransform (const Transform & transform)
+
+inline
+
+ +

Sets the local transform from left camera to robot base.

+ +

Definition at line 511 of file StereoCameraModel.h.

+ +
+
+ +

◆ localTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::StereoCameraModel::localTransform () const
+
+inline
+
+ +

Gets the local transform from left camera to robot base.

+ +

Definition at line 516 of file StereoCameraModel.h.

+ +
+
+ +

◆ stereoTransform()

+ +
+
+ + + + + + + +
Transform rtabmap::StereoCameraModel::stereoTransform () const
+
+ +

Returns the stereo transform (left camera relative to right camera coordinate system).

+

The stereo transform brings points given in the first (left) camera's coordinate system to points in the second (right) camera's coordinate system. In more technical terms, it performs a change of basis from the first camera's coordinate system to the second camera's coordinate system. Due to its duality, it is equivalent to the position of the first camera with respect to the second camera coordinate system.

+
Returns
Transform from left camera to right camera coordinate system. Returns identity if R_ or T_ are empty.
+
Note
The transform is constructed from the stereo extrinsic parameters R_ and T_.
+
Example:
For a stereo camera with a baseline of 15 cm, where the right camera is positioned to the right of the left camera, the x value of the returned Transform would be -0.15 (negative because it represents the position of the left camera in the right camera's coordinate system).
StereoCameraModel stereo(...);
+
Transform transform = stereo.stereoTransform();
+
// If baseline is 0.15 m, transform.x() would be approximately -0.15
+
A class representing a calibrated stereo camera system.
+
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
+
+ +
+
+ +

◆ left()

+ +
+
+ + + + + +
+ + + + + + + +
const CameraModel & rtabmap::StereoCameraModel::left () const
+
+inline
+
+ +

Returns the left camera model.

+ +

Definition at line 547 of file StereoCameraModel.h.

+ +
+
+ +

◆ right()

+ +
+
+ + + + + +
+ + + + + + + +
const CameraModel & rtabmap::StereoCameraModel::right () const
+
+inline
+
+ +

Returns the right camera model.

+ +

Definition at line 551 of file StereoCameraModel.h.

+ +
+
+ +

◆ getLeftSuffix()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::StereoCameraModel::getLeftSuffix () const
+
+inline
+
+ +

Gets the suffix used for the left camera calibration file.

+ +

Definition at line 556 of file StereoCameraModel.h.

+ +
+
+ +

◆ getRightSuffix()

+ +
+
+ + + + + +
+ + + + + + + +
const std::string & rtabmap::StereoCameraModel::getRightSuffix () const
+
+inline
+
+ +

Gets the suffix used for the right camera calibration file.

+ +

Definition at line 560 of file StereoCameraModel.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.js b/preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.js new file mode 100644 index 00000000..c913ed85 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoCameraModel.js @@ -0,0 +1,42 @@ +var classrtabmap_1_1StereoCameraModel = +[ + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html#a179ffcbc49ff3a281ef33cb4381e061c", null ], + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html#a1887639053ef5c09c3f650b5a7f280d8", null ], + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html#ae91c2717319f3cd7b6f40768e5adbb9f", null ], + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html#a76bab07a51033de989fc522064ede024", null ], + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html#a0bdbbaa6e3ab315b0c5fce03247cea6c", null ], + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html#a8e3a5c32e13727545f2d22dda05c96b0", null ], + [ "~StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html#afaa6d8cf4c9b503cc8c8a03fb25ecdf3", null ], + [ "isValidForProjection", "classrtabmap_1_1StereoCameraModel.html#a6c16870b83978d286003b166fd6949cf", null ], + [ "isValidForRectification", "classrtabmap_1_1StereoCameraModel.html#ac5e22eec7815cb27e436afada2b5769f", null ], + [ "initRectificationMap", "classrtabmap_1_1StereoCameraModel.html#a544ee7d540dfe57c94863190d87898aa", null ], + [ "isRectificationMapInitialized", "classrtabmap_1_1StereoCameraModel.html#aa35a73db2fc272f0f33b40220b75fa43", null ], + [ "setName", "classrtabmap_1_1StereoCameraModel.html#adc404f0be63eedd0e0a9d6d5b5b36a94", null ], + [ "name", "classrtabmap_1_1StereoCameraModel.html#ae759fe4ff0862f5305cf85257e0367a1", null ], + [ "setImageSize", "classrtabmap_1_1StereoCameraModel.html#a898c2eff7bfc4977703f8edb86ca1187", null ], + [ "load", "classrtabmap_1_1StereoCameraModel.html#a9c2d94b9bc335fdec7f5fa4f4c45a07c", null ], + [ "save", "classrtabmap_1_1StereoCameraModel.html#abfafd0a24795186f3bf623082663b4cd", null ], + [ "saveStereoTransform", "classrtabmap_1_1StereoCameraModel.html#a1d016f499dbcce889ce7b7062c83b660", null ], + [ "serialize", "classrtabmap_1_1StereoCameraModel.html#a4eab6254ef808719ca2d0543c89e0722", null ], + [ "deserialize", "classrtabmap_1_1StereoCameraModel.html#a7467f3a9a7961e643d0cd152286a13dd", null ], + [ "deserialize", "classrtabmap_1_1StereoCameraModel.html#afdec3f5bab7ab9b4c339edaa30e639db", null ], + [ "baseline", "classrtabmap_1_1StereoCameraModel.html#a8dc48f95fcf68eb81da96941f778535f", null ], + [ "computeDepth", "classrtabmap_1_1StereoCameraModel.html#a514f7d1baff8b4be96d760b27279f5d6", null ], + [ "computeDisparity", "classrtabmap_1_1StereoCameraModel.html#aecf8b2a628ead0bc422dbf791d683f5b", null ], + [ "computeDisparity", "classrtabmap_1_1StereoCameraModel.html#a28230b8236ed778729ed1e1ceb590f31", null ], + [ "reproject", "classrtabmap_1_1StereoCameraModel.html#a084e3e40c8b0caf66269d508a8fcffbc", null ], + [ "reproject", "classrtabmap_1_1StereoCameraModel.html#a626b8f54940ebc77ec504921004dda3a", null ], + [ "R", "classrtabmap_1_1StereoCameraModel.html#a7afd347afb3909a2039f154b3a048035", null ], + [ "T", "classrtabmap_1_1StereoCameraModel.html#a82d60ddca8d0cdbe939b043ed02334b6", null ], + [ "E", "classrtabmap_1_1StereoCameraModel.html#a8ab6c698248837e4dcfe36c2e7b02546", null ], + [ "F", "classrtabmap_1_1StereoCameraModel.html#a1e4ffc9baa8dfee0a79ea32bac9b7c1c", null ], + [ "scale", "classrtabmap_1_1StereoCameraModel.html#a264d57ca1e0f6b41d03ffe1d89afc382", null ], + [ "roi", "classrtabmap_1_1StereoCameraModel.html#ac2fb1c489ae60bd7e4c104515db3c3a9", null ], + [ "setLocalTransform", "classrtabmap_1_1StereoCameraModel.html#aee77882ceca428a560f5fd3713a330fb", null ], + [ "localTransform", "classrtabmap_1_1StereoCameraModel.html#a5257cde3d51bbee7c51c3f36d0c7741f", null ], + [ "stereoTransform", "classrtabmap_1_1StereoCameraModel.html#a506f83654d7f772a3743d24869c05742", null ], + [ "left", "classrtabmap_1_1StereoCameraModel.html#a064d29601c0ba13fc47584849e26b81b", null ], + [ "right", "classrtabmap_1_1StereoCameraModel.html#ab8061141407d8cc55d7f83211708af85", null ], + [ "getLeftSuffix", "classrtabmap_1_1StereoCameraModel.html#a799e3f787d015b5cbd0189768f5b673c", null ], + [ "getRightSuffix", "classrtabmap_1_1StereoCameraModel.html#a3ecae21bbf6bc9914d0bb553c99f9e09", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense-members.html new file mode 100644 index 00000000..d5dd930c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense-members.html @@ -0,0 +1,125 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::StereoDense Member List
+
+
+ +

This is the complete list of members for rtabmap::StereoDense, including all inherited members.

+ + + + + + + + + + +
computeDisparity(const cv::Mat &leftImage, const cv::Mat &rightImage) const =0rtabmap::StereoDensepure virtual
create(const ParametersMap &parameters)rtabmap::StereoDensestatic
create(StereoDense::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::StereoDensestatic
kTypeBM enum valuertabmap::StereoDense
kTypeSGBM enum valuertabmap::StereoDense
parseParameters(const ParametersMap &parameters)rtabmap::StereoDenseinlinevirtual
StereoDense(const ParametersMap &parameters=ParametersMap())rtabmap::StereoDenseinlineprotected
Type enum namertabmap::StereoDense
~StereoDense()rtabmap::StereoDenseinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.html new file mode 100644 index 00000000..bac0ed0c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.html @@ -0,0 +1,451 @@ + + + + + + + + +RTAB-Map: rtabmap::StereoDense Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract base class for dense stereo matching algorithms. + More...

+ +

#include <StereoDense.h>

+
+Inheritance diagram for rtabmap::StereoDense:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+ + + + + +

+Public Types

enum  Type { kTypeBM = 0 +, kTypeSGBM = 1 + }
 Enumeration of available stereo matching algorithm types. More...
 
+ + + + + + + + + + +

+Public Member Functions

virtual ~StereoDense ()
 Virtual destructor.
 
virtual void parseParameters (const ParametersMap &parameters)
 Parse parameters from a parameters map.
 
virtual cv::Mat computeDisparity (const cv::Mat &leftImage, const cv::Mat &rightImage) const =0
 Compute disparity map from stereo image pair.
 
+ + + + + + + +

+Static Public Member Functions

static StereoDense * create (const ParametersMap &parameters)
 Factory method to create a StereoDense instance from parameters.
 
static StereoDense * create (StereoDense::Type type, const ParametersMap &parameters=ParametersMap())
 Factory method to create a StereoDense instance of a specific type.
 
+ + + + +

+Protected Member Functions

 StereoDense (const ParametersMap &parameters=ParametersMap())
 Protected constructor.
 
+

Detailed Description

+

Abstract base class for dense stereo matching algorithms.

+

This class provides the interface for dense stereo matching algorithms that compute disparity maps from stereo image pairs. It uses a factory pattern to create specific implementations (Block Matching or Semi-Global Block Matching).

+

The disparity map is a 16-bit signed integer image (CV_16SC1) where each pixel value represents the horizontal displacement between corresponding pixels in the left and right stereo images. Higher disparity values indicate closer objects.

+
Note
Both input images must have the same size and be either grayscale (CV_8UC1) or color (CV_8UC3). Color images are automatically converted to grayscale.
+ +

Definition at line 53 of file StereoDense.h.

+

Member Enumeration Documentation

+ +

◆ Type

+ +
+
+ + + + +
enum rtabmap::StereoDense::Type
+
+ +

Enumeration of available stereo matching algorithm types.

+ + + +
Enumerator
kTypeBM 

Block Matching algorithm (faster, less accurate)

+
kTypeSGBM 

Semi-Global Block Matching algorithm (slower, more accurate)

+
+ +

Definition at line 59 of file StereoDense.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~StereoDense()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::StereoDense::~StereoDense ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 93 of file StereoDense.h.

+ +
+
+ +

◆ StereoDense()

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::StereoDense::StereoDense (const ParametersMap & parameters = ParametersMap())
+
+inlineprotected
+
+ +

Protected constructor.

+
Parameters
+ + +
parametersOptional parameters map for initialization
+
+
+ +

Definition at line 129 of file StereoDense.h.

+ +
+
+

Member Function Documentation

+ +

◆ create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
static StereoDense * rtabmap::StereoDense::create (const ParametersMap & parameters)
+
+static
+
+ +

Factory method to create a StereoDense instance from parameters.

+

Creates a StereoDense instance based on the stereo dense strategy parameter in the provided parameters map. The strategy is determined by the Parameters::kStereoDenseStrategy() parameter.

+
Parameters
+ + +
parametersParameters map containing configuration values
+
+
+
Returns
Pointer to the created StereoDense instance (caller owns the memory)
+
See also
create(Type, const ParametersMap&)
+ +
+
+ +

◆ create() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static StereoDense * rtabmap::StereoDense::create (StereoDense::Type type,
const ParametersMap & parameters = ParametersMap() 
)
+
+static
+
+ +

Factory method to create a StereoDense instance of a specific type.

+

Creates a StereoDense instance of the specified type with the given parameters.

+
Parameters
+ + + +
typeThe type of stereo matching algorithm to create
parametersOptional parameters map containing configuration values
+
+
+
Returns
Pointer to the created StereoDense instance (caller owns the memory)
+
See also
create(const ParametersMap&)
+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::StereoDense::parseParameters (const ParametersMap & parameters)
+
+inlinevirtual
+
+ +

Parse parameters from a parameters map.

+

Updates the algorithm's configuration based on the provided parameters map. Derived classes should override this method to parse their specific parameters.

+
Parameters
+ + +
parametersParameters map containing configuration values
+
+
+ +

Reimplemented in rtabmap::StereoBM, and rtabmap::StereoSGBM.

+ +

Definition at line 103 of file StereoDense.h.

+ +
+
+ +

◆ computeDisparity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual cv::Mat rtabmap::StereoDense::computeDisparity (const cv::Mat & leftImage,
const cv::Mat & rightImage 
) const
+
+pure virtual
+
+ +

Compute disparity map from stereo image pair.

+

Computes a disparity map from the given left and right stereo images. The images must have the same size and be either grayscale (CV_8UC1) or color (CV_8UC3). Color images are automatically converted to grayscale.

+
Parameters
+ + + +
leftImageLeft stereo image (CV_8UC1 or CV_8UC3)
rightImageRight stereo image (CV_8UC1 or CV_8UC3), must have same size as leftImage
+
+
+
Returns
Disparity map as a 16-bit signed integer image (CV_16SC1)
+
Note
The disparity values are stored as fixed-point numbers with 4 fractional bits. To get the actual disparity, divide by 16.
+
+Invalid disparities are typically represented by negative values or zero.
+ +

Implemented in rtabmap::StereoBM, and rtabmap::StereoSGBM.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.js b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.js new file mode 100644 index 00000000..10a2434a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense.js @@ -0,0 +1,11 @@ +var classrtabmap_1_1StereoDense = +[ + [ "Type", "classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803", [ + [ "kTypeBM", "classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803a393267c04896dd353dc66ade56c8d5f1", null ], + [ "kTypeSGBM", "classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803abf3465f1ebb12576596dc4b605c1ffae", null ] + ] ], + [ "~StereoDense", "classrtabmap_1_1StereoDense.html#a5c720eb11114c19540d30886cb0ba1e6", null ], + [ "StereoDense", "classrtabmap_1_1StereoDense.html#a57f0c431678a2c9db1b5f7dd46cbf49f", null ], + [ "parseParameters", "classrtabmap_1_1StereoDense.html#ac2f693ca52897501450f2bda985c5cf5", null ], + [ "computeDisparity", "classrtabmap_1_1StereoDense.html#ac394d1dad3fa899f310e4c3eb3e428c4", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.map new file mode 100644 index 00000000..aaa7ca62 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.md5 new file mode 100644 index 00000000..fa375e5f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.md5 @@ -0,0 +1 @@ +b03f09303c9a2b43674589b33087fc93 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1StereoDense__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e09afa11be5ddf56af4e52cb081a5584e2e464 GIT binary patch literal 7453 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 Vzt`)+;C&~Kih`zmg{=Ae{{hCT4X*$I literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow-members.html new file mode 100644 index 00000000..593f15e7 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow-members.html @@ -0,0 +1,134 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::StereoOpticalFlow Member List
+
+
+ +

This is the complete list of members for rtabmap::StereoOpticalFlow, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
computeCorrespondences(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status) constrtabmap::StereoOpticalFlowvirtual
create(const ParametersMap &parameters=ParametersMap())rtabmap::Stereostatic
epsilon() constrtabmap::StereoOpticalFlowinline
errorThreshold() const (defined in rtabmap::StereoOpticalFlow)rtabmap::StereoOpticalFlowinline
isGpuEnabled() constrtabmap::StereoOpticalFlowvirtual
iterations() constrtabmap::Stereoinline
maxDisparity() constrtabmap::Stereoinline
maxLevel() constrtabmap::Stereoinline
minDisparity() constrtabmap::Stereoinline
minEigThreshold() const (defined in rtabmap::StereoOpticalFlow)rtabmap::StereoOpticalFlowinline
parseParameters(const ParametersMap &parameters)rtabmap::StereoOpticalFlowvirtual
Stereo(const ParametersMap &parameters=ParametersMap())rtabmap::Stereo
StereoOpticalFlow(const ParametersMap &parameters=ParametersMap())rtabmap::StereoOpticalFlow
usingMinEigenVals() const (defined in rtabmap::StereoOpticalFlow)rtabmap::StereoOpticalFlowinline
winSize() constrtabmap::Stereoinline
winSSD() constrtabmap::Stereoinline
~Stereo()rtabmap::Stereoinlinevirtual
~StereoOpticalFlow()rtabmap::StereoOpticalFlowinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.html new file mode 100644 index 00000000..7f519777 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.html @@ -0,0 +1,522 @@ + + + + + + + + +RTAB-Map: rtabmap::StereoOpticalFlow Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::StereoOpticalFlow Class Reference
+
+
+ +

Sparse stereo matching using optical flow. + More...

+ +

#include <Stereo.h>

+
+Inheritance diagram for rtabmap::StereoOpticalFlow:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::StereoOpticalFlow:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StereoOpticalFlow (const ParametersMap &parameters=ParametersMap())
 Constructor.
 
virtual ~StereoOpticalFlow ()
 Virtual destructor.
 
virtual void parseParameters (const ParametersMap &parameters)
 Parse parameters from a parameters map.
 
virtual std::vector< cv::Point2f > computeCorrespondences (const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status) const
 Compute stereo correspondences using optical flow.
 
float epsilon () const
 Get the convergence threshold (epsilon)
 
virtual bool isGpuEnabled () const
 Check if GPU acceleration is enabled.
 
bool usingMinEigenVals () const
 
float minEigThreshold () const
 
float errorThreshold () const
 
- Public Member Functions inherited from rtabmap::Stereo
 Stereo (const ParametersMap &parameters=ParametersMap())
 Constructor.
 
virtual ~Stereo ()
 Virtual destructor.
 
cv::Size winSize () const
 Get the search window size.
 
int iterations () const
 Get the number of iterations.
 
int maxLevel () const
 Get the maximum pyramid level.
 
float minDisparity () const
 Get the minimum disparity value.
 
float maxDisparity () const
 Get the maximum disparity value.
 
bool winSSD () const
 Check if SSD (Sum of Squared Differences) is used.
 
+ + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from rtabmap::Stereo
static Stereo * create (const ParametersMap &parameters=ParametersMap())
 Factory method to create a Stereo instance.
 
+

Detailed Description

+

Sparse stereo matching using optical flow.

+

This class implements sparse stereo matching using optical flow (Lucas-Kanade) to find corresponding feature points between stereo image pairs. It extends the base Stereo class with optical flow-based matching, which can be more robust than simple block matching, especially for textured regions.

+

The algorithm uses pyramidal Lucas-Kanade optical flow to track feature points from the left image to the right image, then filters the results based on disparity constraints.

+
Note
Input images must be grayscale (CV_8UC1).
+
+GPU acceleration is available if RTAB-Map is built with OpenCV CUDA support.
+
See also
Stereo for block matching-based implementation
+ +

Definition at line 219 of file Stereo.h.

+

Constructor & Destructor Documentation

+ +

◆ StereoOpticalFlow()

+ +
+
+ + + + + + + + +
rtabmap::StereoOpticalFlow::StereoOpticalFlow (const ParametersMap & parameters = ParametersMap())
+
+ +

Constructor.

+

Initializes a StereoOpticalFlow instance with default parameter values and then parses the provided parameters map to override defaults.

+
Parameters
+ + +
parametersOptional parameters map containing configuration values. If empty, default values are used.
+
+
+ +
+
+ +

◆ ~StereoOpticalFlow()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::StereoOpticalFlow::~StereoOpticalFlow ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 235 of file Stereo.h.

+ +
+
+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::StereoOpticalFlow::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Parse parameters from a parameters map.

+

Updates the algorithm's configuration based on the provided parameters map. First calls the base class parseParameters(), then parses optical flow-specific parameters:

+
Parameters
+ + +
parametersParameters map containing configuration values
+
+
+
Note
If GPU is enabled but RTAB-Map is not built with OpenCV CUDA support, GPU will be automatically disabled and an error message will be logged.
+ +

Reimplemented from rtabmap::Stereo.

+ +
+
+ +

◆ computeCorrespondences()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual std::vector< cv::Point2f > rtabmap::StereoOpticalFlow::computeCorrespondences (const cv::Mat & leftImage,
const cv::Mat & rightImage,
const std::vector< cv::Point2f > & leftCorners,
std::vector< unsigned char > & status 
) const
+
+virtual
+
+ +

Compute stereo correspondences using optical flow.

+

Finds corresponding points in the right stereo image for the given points in the left stereo image using pyramidal Lucas-Kanade optical flow. The results are filtered based on disparity constraints (minDisparity to maxDisparity).

+
Parameters
+ + + + + +
leftImageLeft stereo image (must be CV_8UC1 grayscale)
rightImageRight stereo image (must be CV_8UC1 grayscale)
leftCornersInput vector of feature points in the left image
statusOutput vector indicating which correspondences are valid (1) or invalid (0). The size matches leftCorners.size().
+
+
+
Returns
Vector of corresponding points in the right image. The size matches leftCorners.size(). Invalid correspondences may have coordinates outside the image bounds.
+
Note
Both input images must be grayscale (CV_8UC1).
+
+If GPU is enabled, the GPU version of this method is called automatically.
+ +

Reimplemented from rtabmap::Stereo.

+ +
+
+ +

◆ epsilon()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::StereoOpticalFlow::epsilon () const
+
+inline
+
+ +

Get the convergence threshold (epsilon)

+
Returns
Convergence threshold for optical flow iteration termination
+ +

Definition at line 302 of file Stereo.h.

+ +
+
+ +

◆ isGpuEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::StereoOpticalFlow::isGpuEnabled () const
+
+virtual
+
+ +

Check if GPU acceleration is enabled.

+

Returns whether GPU acceleration is currently enabled for optical flow computation. GPU acceleration requires OpenCV CUDA support to be compiled in.

+
Returns
true if GPU is enabled and available, false otherwise
+ +

Reimplemented from rtabmap::Stereo.

+ +
+
+ +

◆ usingMinEigenVals()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::StereoOpticalFlow::usingMinEigenVals () const
+
+inline
+
+ +

Definition at line 314 of file Stereo.h.

+ +
+
+ +

◆ minEigThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::StereoOpticalFlow::minEigThreshold () const
+
+inline
+
+ +

Definition at line 315 of file Stereo.h.

+ +
+
+ +

◆ errorThreshold()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::StereoOpticalFlow::errorThreshold () const
+
+inline
+
+ +

Definition at line 316 of file Stereo.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • corelib/include/rtabmap/core/Stereo.h
  • +
+
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.js b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.js new file mode 100644 index 00000000..8b0825bc --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow.js @@ -0,0 +1,9 @@ +var classrtabmap_1_1StereoOpticalFlow = +[ + [ "StereoOpticalFlow", "classrtabmap_1_1StereoOpticalFlow.html#a85173879ab911862112710fa1c94d8c5", null ], + [ "~StereoOpticalFlow", "classrtabmap_1_1StereoOpticalFlow.html#afa38ce6868f4bf0388559f81ff917a97", null ], + [ "parseParameters", "classrtabmap_1_1StereoOpticalFlow.html#aac2df770eba89ed2607c024c91d82c78", null ], + [ "computeCorrespondences", "classrtabmap_1_1StereoOpticalFlow.html#a406bbf688782966ea55a44c49ac10cbe", null ], + [ "epsilon", "classrtabmap_1_1StereoOpticalFlow.html#ae53f537e0e9ebf121ff8a8b3bdc410a8", null ], + [ "isGpuEnabled", "classrtabmap_1_1StereoOpticalFlow.html#abc4c02bc672566fc2dd3f7331b84944e", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.map new file mode 100644 index 00000000..85b85d5d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.md5 new file mode 100644 index 00000000..238bfdea --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.md5 @@ -0,0 +1 @@ +7fbee604ef6e8a90464bec5145b3213a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..55720184ae14580d03171ce4f2e934475d1d9289 GIT binary patch literal 5164 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 DEKpK* literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.map new file mode 100644 index 00000000..85b85d5d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.md5 new file mode 100644 index 00000000..238bfdea --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.md5 @@ -0,0 +1 @@ +7fbee604ef6e8a90464bec5145b3213a \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1StereoOpticalFlow__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..55720184ae14580d03171ce4f2e934475d1d9289 GIT binary patch literal 5164 zcmd5=hf`C*yA3u_x}Z{oNC!a>rAi5k2%)3&-a$c--U&z#9YjEyf;1_D^bR7@457CW zI)vT{O~PB>{AS*~_ZPfL?%uhR-OcXzojvD#H$q)ip8N*G4G0864p(^o65PkY^_Jus zXdm$%5D3j2{P|N&&-6{KkEZ5WQ|s49VRDu!mpvNR(ia+I6eHtFlgJW*x>d6_Xj8wk9X?L?h zCVAP6mTlk?r=*qVji?)c$YLjsDA()A$R2WYT{c4y<|XkHE&CEUQCzx|4J|u7;XmIJ z?kx&aq0tfp(J_Y_`34D!ZmD1@=*DzYLm$?uwx=CS6cvhfxPZ!Oe5?aMzGWsN%x~Q@ z6#jxFy(cW3gpPolq9F56xkpf&q<|c z$iK3=xinsGF>Wv75yq-=FR`?i?>4EPo}Q41NWBCtYGiC||IcG|ndh##cBvu!=~E&< zKfl(+o}dQh`uVl>^#w3iw?x|`EW2=YRC{n}h=-SVVYd@%)1AOUd+S!YHHyJ>Z?P?d zbLz-2Cn+hZV;>DePdE91ZtdpfkTUa*8;wm(-6)jR=4934;-YD}?#|vGtDs;!Iim;_ z4b4JX2@-ju+5xL*WW?lwb-SY`bx6z1%nUYCW;?)|>9ZwHaaT;n%8Fxu8MVL#JGp*# zw2hl>3-a{wsW5B5w$-?=>gLma=w*?HseYUD`Ln5d7KBmMfn8EEJwMCeyWdqqgIcH5 za1IPvaUFxnCJUJKjTGq+>DD>t4oMyy9PIS)et);O2$z(S@>=;4<_WI5=4)B#^RuIc z?QNJPV}RXQX}Luw1u`=7Iw`5e;o8WQ-x1crzc|+*E;-p__Ne8eiH=-`ot-`W?_XaH zU0rSps5Bp>+;K+w-^2a;_k*dP-G%uZ(%!y}WRs5xhn}y2Gi>tKB4K&%nplGy!~e;dK-I900w0z}e)k0>2m&a1=2!>NpnjMf_4!zf8}23DwEUHHZfFSiC> zW)%|Bbai+C){8hD%0fzPH@b95ian-|T<1j?knBV|`da*QyFp4i(cmHA=H>>@LQhXm z!MAVDx?ECHM&}aZ;`C4`l;60qz~REq?xgE6dyuFm-A#!&mhI{7<>BYI?u=n-#82A!?sapix~RW=`5tA>#>FL{VN<1F zSW=?pnBOLt#a0Cl1sey))u6V|{8Lrh-Dz z6BRaaRaNFn2UF8~8X6k*la;UgAE~LS9TtTXPVN?>S}AD*@OZq&X8UvD)fc4X*Df0y z8&_6U749o4Duzc!E_8Ecv2$?|=L~cKv=CRFAAUzfV;zW1aeWz6?wGez{%4z_w>otX z>YNr{7<{-i z&O1;wOWMe&<^u4DkU-PHO)oF6U!9#p)6;!Ry~$pyxycV1q9H+hW$v5$_$_Sj+DOrL z5|UO7CT)4y8nDrmMgL#Fe^X#ML3C&SE{pmeHOyEo|4B_z=Cnp z+r8mlwdF7?E35gbI+yH*2A}bBkW%uoQX`sw|1~l)67;dooRz{>xxj=Kx3t8hprm9V zLXE&Y*0-)mot-u1H>zKJ=k}=>Xipf`e7sSEyGjaFNwwaFAAb5nx!$HUf|Z-Q%k1H^ zPo9fON(n-&k^iT$yL3`8jipw|5uAHL8W|bMwb)|j(fi(FMG3u7b(DEk94W@4TrfYl z>MAg~iNCxR)6TTP!^_+*`j_bJkI#k9$={VbTQQwXK<{cLLI+aR9c`7h(?qUgbL)oL z!Zl5CTOmEKwqoE6slLmfAZyF-MBghwh+?Jw-VyA;3c}eEJA{eG=QLPW2uGH>0WiI- zD0$~-zEUTL&DV2>~$}0 zkBQmTRNQ2eI>%k#sanxpDNSJ?1D!iZn>omynekjg6Gff||5U8G!cnITI$Ix^UZ35- zqc685B!$TZBw7uMu|(S4rP-k~^{7@RqJ)NYm^dp8a)T-IGd&HiBdi-y?{b84M85}%S0vHSjym?9{9x>98|=m| z8s8yIAw|dxzx2py4y(rEsd*O8zRJ6?%VvJ^iEXcjlP03k8J_UM(&_(gbL|`*0!~}+ zEjceNQ=39NNqS7Us=W9`Xaie(y654D4)I7rr#f%v@8542qlLUPY@RYFJLOhXB!ZKd z-y6zT8W%@}x|Hy>TSnUDe{J%&mebqm#?)9CVH|6wkfUi}(3`}o^V`w@2>-&b2%1kN z7gh|;G7H)x!^2c}?<&j41ZW#YF*Y?dRaRE^kBxN>7rxrvIlicjsgXRu<6oMXsF|2R zs+A4FXJ2l=?T`d9(D3GT& ze5IL}&vSEg%Y9GwsK*$2C;?9aKS9mJRH7;>Dw-G<7m&^UFHw4Wa9`g>*)50B6j~kN zQ0M06G<9@n7#NVM`R(>1`>Xj`FSWEfDqjzEp-@X8%bMES-y{&2w>9Pd=iUe2P4y-7 z^X3#xPoB%jK%%3gC68x=e9tg5+Gp3v$i6l=X9fg7*4EZ^n|;Oa@Ed-vsscibH2#k3 zgb@U%r>7xocs+G>8C_jEEiEn8GfB5KT7VSO-j5H0@+2fA$|vlBvJ~z507Lq2?ir*n zU3@`^lAN3zn0m&@j`wY*t@a`nz$aUyJ}n7lQA+MW0s{lvs|$;ZEdhIbdV1aqhL~dO z-JZ+K4`DF9bM0YzmA3Kvx)88WN&L8lUBeb zpCE;$#!cV+xr!T$>4p3&_ou`M})6>Sr{wG#QB(kfoPa7vH zBvkf#h?DHvWfR}ss}k-TrlZAr&*kKZ`mtElGAeEN;9&9mXvSuy*{@i?3K#93)K1!=gjO_y;BtsBMo5QH*-!ki>JoXCr_2I_WdZk7=DPY4 zg5RD|^Y@pAolT%0rYeJ?rHbk-P27dkyD1Zt7+~L_sIZE2`Ywl>{k5X+32||)$XmSq ztFA&qLj3~+Pjz)ulsYXwkf6twA;k3wlc1m=;HfCREMUX|R}`&Nq#L*ROWB|^mwtwj z(%!lA3J{jHHD|2k9trZ%ireE)X=#N;MHZkC^Cg_%S`Ud2wzeFUITQ73&-cY&GBz2b zfz@GB?GGWn^HNv03p}iDZE0h~EFRL8P1y58gXVxI(J(PVhmtc68x*}B$`dbsJh)3& z@Z(29ObmsaH<+2igY^82nV%9s5rF)azCJQ53wk>;#H#n>F33mX#)drzfL@ttTlm?^ zH$mP~0-8s5q6Gni`X93ZR$Dpr2IzcJfNiB|HGL=+b^8#pqfL7in9{H_3ptH4%%;U8 z?j5Zh3#e^}hc#zUS4OMfV#1@Nt-vt~8r@!5kfv7UNvDa^2hqInVDJ8BtFYs7%FPMySwXDKb5o~7*~WgWLqNo z2U+0A09Pu#e0eh>A_9=q(CBDrwUUR4Uj-YbH)Hv!ueP?|4 zRlqixCbe{QT*iz%h{hZl0bv}E)-=1l5{#0|YA3e^M8z8Xj!rj4+V6?KzdsOze6N%z zZugPdacODmI}r{Q6QOs@84Fe9<%yq>ym|8`1%Tn*`H*q`5QtM?Y%C>khl@=|(`;ZV zb4c&SE^1$2-xMjIYNZppT3Da?)q;Y8dn_zZGiI>Z=m~rGRnMv7uC6Y#eaKkkdWOez z8!)e+0>~L#kBEs`E~%L||Hu46k7^Vv=8@syvl|l?!NI|^VDAbFB%s0u6=`~Ht=Jno zJD&UZSsy(b{DNH_%D+xQ@!M8tuZ#_pM>)3q4c{J_w-TUeZ;iv^2!z6J$^4-6q(QChd{m>T-OMl{qY;2Sa z<3+tYc~=d)Y=P?Qvj&vui<6jP;pPq>%2(S*Ir=ApT_neJqMSJ>2L=X!S~=r4^qBpR z%^(R037)tNj}#b!kn+o^{X^j6!NEa-tj32hqq>&nFL`;PVCc{G_7N{oQ5e>{MgacN zH!y%JDY3Dz1n%R|uZ)djzJC{>r>8$SJS;Sk9vvPo0~|kz!H6RWk^pMO#!dPve_H(= z$ViV`&Ougx&dg+ukLv=Jf3dNDyt@F*ME}UhQY9MbUVTHu2&S1Z1PJNiz!k{;KeYkU z2x{Rl-aoC9p!P~kNm20h6aysjAvqbO61W5{N3--Lm#-qAHV0a)hot&KfS6`o6bUPh7d|~%X zQa+tWMnuqyZl6aJKZ07wR}e)ZOEvf)>J;X-s}}E*%2Nhj|3Tn#s?STGnZExo DEKpK* literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM-members.html new file mode 100644 index 00000000..c429f25f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM-members.html @@ -0,0 +1,127 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::StereoSGBM Member List
+
+
+ +

This is the complete list of members for rtabmap::StereoSGBM, including all inherited members.

+ + + + + + + + + + + + +
computeDisparity(const cv::Mat &leftImage, const cv::Mat &rightImage) constrtabmap::StereoSGBMvirtual
create(const ParametersMap &parameters)rtabmap::StereoDensestatic
create(StereoDense::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::StereoDensestatic
kTypeBM enum valuertabmap::StereoDense
kTypeSGBM enum valuertabmap::StereoDense
parseParameters(const ParametersMap &parameters)rtabmap::StereoSGBMvirtual
StereoDense(const ParametersMap &parameters=ParametersMap())rtabmap::StereoDenseinlineprotected
StereoSGBM(const ParametersMap &parameters=ParametersMap())rtabmap::StereoSGBM
Type enum namertabmap::StereoDense
~StereoDense()rtabmap::StereoDenseinlinevirtual
~StereoSGBM()rtabmap::StereoSGBMinlinevirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.html b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.html new file mode 100644 index 00000000..5535a2e3 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.html @@ -0,0 +1,350 @@ + + + + + + + + +RTAB-Map: rtabmap::StereoSGBM Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::StereoSGBM Class Reference
+
+
+ +

Semi-Global Block Matching algorithm for dense stereo matching. + More...

+ +

#include <StereoSGBM.h>

+
+Inheritance diagram for rtabmap::StereoSGBM:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::StereoSGBM:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StereoSGBM (const ParametersMap &parameters=ParametersMap())
 Constructor with parameters map.
 
virtual ~StereoSGBM ()
 Virtual destructor.
 
virtual void parseParameters (const ParametersMap &parameters)
 Parse parameters from a parameters map.
 
virtual cv::Mat computeDisparity (const cv::Mat &leftImage, const cv::Mat &rightImage) const
 Compute disparity map from stereo image pair.
 
- Public Member Functions inherited from rtabmap::StereoDense
virtual ~StereoDense ()
 Virtual destructor.
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::StereoDense
enum  Type { kTypeBM = 0 +, kTypeSGBM = 1 + }
 Enumeration of available stereo matching algorithm types. More...
 
- Static Public Member Functions inherited from rtabmap::StereoDense
static StereoDense * create (const ParametersMap &parameters)
 Factory method to create a StereoDense instance from parameters.
 
static StereoDense * create (StereoDense::Type type, const ParametersMap &parameters=ParametersMap())
 Factory method to create a StereoDense instance of a specific type.
 
- Protected Member Functions inherited from rtabmap::StereoDense
 StereoDense (const ParametersMap &parameters=ParametersMap())
 Protected constructor.
 
+

Detailed Description

+

Semi-Global Block Matching algorithm for dense stereo matching.

+

This class implements the Semi-Global Block Matching (SGBM) algorithm for computing disparity maps from stereo image pairs.

+

SGBM generally produces more accurate results than Block Matching, especially in textureless regions and areas with repetitive patterns, but is computationally more expensive.

+
Note
This class wraps OpenCV's cv::StereoSGBM implementation.
+
See also
StereoBM for a faster but less accurate alternative
+ +

Definition at line 51 of file StereoSGBM.h.

+

Constructor & Destructor Documentation

+ +

◆ StereoSGBM()

+ +
+
+ + + + + + + + +
rtabmap::StereoSGBM::StereoSGBM (const ParametersMap & parameters = ParametersMap())
+
+ +

Constructor with parameters map.

+

Creates a StereoSGBM instance and initializes it from the provided parameters map.

+
Parameters
+ + +
parametersParameters map containing configuration values
+
+
+ +
+
+ +

◆ ~StereoSGBM()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::StereoSGBM::~StereoSGBM ()
+
+inlinevirtual
+
+ +

Virtual destructor.

+ +

Definition at line 65 of file StereoSGBM.h.

+ +
+
+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::StereoSGBM::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+
+ +

◆ computeDisparity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual cv::Mat rtabmap::StereoSGBM::computeDisparity (const cv::Mat & leftImage,
const cv::Mat & rightImage 
) const
+
+virtual
+
+ +

Compute disparity map from stereo image pair.

+

Computes a disparity map using the Semi-Global Block Matching algorithm. The images must have the same size and be either grayscale (CV_8UC1) or color (CV_8UC3). Color images are automatically converted to grayscale.

+
Parameters
+ + + +
leftImageLeft stereo image (CV_8UC1 or CV_8UC3)
rightImageRight stereo image (CV_8UC1 or CV_8UC3), must have same size as leftImage
+
+
+
Returns
Disparity map as a 16-bit signed integer image (CV_16SC1)
+
Note
The disparity values are stored as fixed-point numbers with 4 fractional bits. To get the actual disparity, divide by 16.
+ +

Implements rtabmap::StereoDense.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.js b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.js new file mode 100644 index 00000000..096d886e --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM.js @@ -0,0 +1,7 @@ +var classrtabmap_1_1StereoSGBM = +[ + [ "StereoSGBM", "classrtabmap_1_1StereoSGBM.html#ab7f04d815235b6ab8178e8572602dcd1", null ], + [ "~StereoSGBM", "classrtabmap_1_1StereoSGBM.html#a1568e99913769d8442c6013a7adc8796", null ], + [ "parseParameters", "classrtabmap_1_1StereoSGBM.html#a73934f5953650089ac337316f3d3137c", null ], + [ "computeDisparity", "classrtabmap_1_1StereoSGBM.html#ac0677ba125a665fe723f20814bf724cc", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.map new file mode 100644 index 00000000..e5f84490 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.md5 new file mode 100644 index 00000000..628b3d42 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.md5 @@ -0,0 +1 @@ +a678e8268349eb31e30c9ea2538b3a29 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c184f47870d29dc32fc7e9fa1fc610298a31af0e GIT binary patch literal 5265 zcmcJTby(9;xW^|bprq0usW1Vh8Pd`r0s;<+(UMY94j5n%juHtOsdR@hkrI)HDP1Ea zMt6sBkN3HM+CP%d5z^71OlPd)KJj}&z0crLPi1}S2*>G z!4rw~LvUx^LVSM{!yFy)g@Wkbsj*!6U~()pHYaU1alDV?vhvijuwM`M25oqp3~0wCMJnhrc@!P>-NKplF01|! zs0}X<4;CcHovL@yG9*U)M3?R!M_`b4fzykJ0lo(qE2>}>?pTf6H{PjmFJFDKh@PLf zRY=g1Knk~L+(z--ySF~~+j}@oz>t5)HbHAY=uqv0%8QXbSAx&^*`h*<5nAO1<4qZ# z$f_#wIF}XwVpVPt)_&ZL2*qS$Ymo^fI~^SzLbp)k&F9P?NaIhtaP84-S%rm8<E9EP4kARZL7+NU7OdEQM)kX`6qBkTXkr-EqH|{}UxS zHM7*0m2b$uwzjr)aA3DH--%0?V}(NV6o+7XNiKH3dwSH1hLW9+PD5K-RKB{5w~6)0 zHlH2u7L=7iVKBI3qs5Nnjfv?^?~aysN)BKaFIUOP-ybZAz5nr0Bq< zrl#T|nZ=F>DQ+D-J&S~2DXCJPp;+gUosW%YA?4-5Fc*AFf6haxfFofiZ1RsE55Ohr z0Ri=WPotuu>UV$3&@nKGIt|`Qyk{C(S66q#9$)2{DvSK!_Wd|CI2ZyiHPbXUW=?^* z%z}mB3@O>!x1ZHdS@S}nyK@{DNoQvPaU#AO6P=40LBG{GP=h&U1_sJ-I73ZMjf%QD zv9L`W#Zo9)?F2XU6TW3w-|S7Q{;U&f%` z(q!l4#HOW1Y2{c0TjNqBd+t;R1_s`~ef!Qrd_3Lk+}!bTPmqqedAj~|%2)ezWa#VH zMA2+Aq1Dxr-5-UZoScy0i3u~9+Y}BMB1zbasPSZ|%-zRlV_=k6M@y?~mz?1)jjxi5 z%3F7DZ~7vmGKR6SF>WYS{W2+OgyeL9!TkJuI5-&BTNDh*FBdu~6 z6@3^Lna zI%(3+M5zUgO6hK?MbeCab)j8eUgqZFQk19M8vD1JfeJ?QCty9+=g?tmwgmSZb~HUTp!M5==)O7+=4B9h^|9 zXy}^1zyJ0|-6p!h{}6pR<*$32hlda4&srxmzp(J`3ONH=Wpa&YCOA^-!TPxWTJ?(s zEfKdV*(?upzh$1B;*r&m>gwvF@#*v2s>Z(u<65Wba{iY&1rfE`gFL*vXnFxS#Zw&E zZ8+HNo%OWtf995zHM=h@jUF9+TH&><@A2nni0iJNsi}ZCOO*9+p#g=_zOhE+Z%i5 z&K;WQ=;+LX0!>FZ2ZyCy)L}?EPS%qAhsRvozTYE9N4^wEx7@0#_|Q<2DwBItQ&Vaq zRY3^i(a}+1*NOW&8S*8AS4c?(6zXbgt=-&WGBPqABM^wm;8qGUGQICgj}n58nmP0h z4ON~!O2AeV>D#cdxQq<9Y;4*s(DpEd_$#_;%;cM`ge9+)dD6URYy3HA!7%%D&K%kK09 zoyRqYQL`dO`ohQ%tOn0@{Juqk4Xl1-W} zL95l&tsx{WE$#7ml88-wh76&yTHd52F)@*Wg@q;l&>&5Rw09M?Hr>cUN=m90!~O_~ zL}pa&$L~&`5hRPv8CYpB?yRm{!Vb!E3(5ROdYNix10w!c%Qy0C2BBV`u$&7qXy z5)yptt*xzwMn-e1tInd-TwGjlLqa_EmLBJ7W0aJXh&((zKtbalN2V>8=xS(?0kaod zG@370x=u<1qxz?AAFPcvCrdcLoQsky$6^}SN&N&!53Q zfEzmp3k-~_UD^Kp`Qw{o#c6F`|1uWTq6K{PGbj`aA`MtvMMXt8@a!c>CrvFaeIG;V z#ip(4JE~fdO(B(_ zPam-eVw04t4vaw=P5dGf7825Rz~Tk>6A}_;f4m}A6Z*@;!!z6aSvj+`RL88rZz#V6 zl?rkNZPOn8Zgr&WkZG|kiggxL8CWf0Z+T#LZLCtwTdp-SJe)?xXKe{)=SKd3>pMc6 zfq?-%*B(QjrZbW!OUBjG8o{UvN_Ku(+2*$VX}>xdS8_^<>f^_;_q|sPKTan6{HYWh z7kBIY?`BX02-}F=#h#R#7dlw%*RSZ*)SFqV(+k}nRb5?6^Gi#=&-pJ=R&LtKc2uPp z?^yQ6VK$2@nQv$Y36GCOl7_r~{kkcUlbLfKcejEm8^go!M!d4c`n_G^Q;L4vVel;@ z64Rz;#p=3$nR2KfwlK@0;p}y7yzwQe%JjhrkFPqT7&#Z!rAku82-SYrK@eefMkLE+ zey;n8ePuU^X$;T6-)*R7qj8OXzR;uDYp?(Cj~<Nc z9f%3R=nQH+NFFP$Y9d$aJ)6#~tE9d9rl7q))(%EX9(^_H+PQkpPeS7plEK^iqniCf z*_dB%^Z#i6s8LQ(<9T@=bVxSd)Ni}2A(ry)D~#}|t+zraxcQz$;$I^VlIxCkV&$C5 zqvZ5G+)HPqTqYrCDP9@PlPK{@W`{~UUdt8lpDax{DgU>X?_in=;4g`Z2t+QqctcA$ zl~%FCr~S&W#CIXPFLK>gf6?*_*W}&3ocRk~b7(Ts91Om&>D@BGYqK&#=;4L1TtVE8 z^h3Sj|6FqGvZvm@pZ1T!E9rI6*X-Qc7}EF07GxZp(ekOt>#rGcWg6Vf4+s|zWiR?0 z=f`^dU#0#pKl~SYX^1_%OX6tvu9frG|KY6v=Zmz@Lk{EP<8=Wu7W?08<7Qq7+lo

~g?|(l{GwK;3HlW-PfszE5(ciz?Ck8L?dc#F z2N##9urN}L_tNM$k6Y>K>7c#zPfTco)>lzcQNQ)m_rl9(t}UwS>(?E;a~U(Uw17Ya z_>Z?`rV|FBLNp88^8zfJ87?se7tbs#fZoLB;^JZmhiCRVZ0+obvJ~YdrM0i! zq@CGW=msnqO3g8q6Rqeem(0r6q?dEIvgi7$5}zlI}0hy0^BsMf|?5=epVxaF|F|NuAF2 z!Y4)H(b0DE9kE>!R#sL4`$I-(jH!vq{g+#u;5}~!GKg7N%x$#%)jL|KJ{%sJlEMnM z4OttnrjAlm_VN;skvm}WKip`w6z=WsR|2-YdiCmUUS5`{eZY$P=H}5QCHMCC_wSm0 zdp|Q{`7b^~DOvx)z{*fj{*cqk>MC-(m9ev<;|Cs}yt3ld7R}aOkKB#l_Ct@!+Zh_h zcP2qHPzTI{f`au&vk{0cfES~9Jd2zI01KcXAft^zjh(WfU4F4?rvmO4VWI%|Q|{2m z4MK(P5!-H!`yV9$qC+km!NjCgTbESh;AVB*l_*XjBv> zfN!-NeL&7gU_ebxO_38n6nK@8vAVMIw82jTbP#C%fLq6KvGE(A2R5e~o=<;Idr}1F za{*1lzAsZ1a<;4+WW73E(xu$H>~+`Td+PE)-rV~7~V6SXB=%1Q5=|ca$mSkr@I3 z=;w27t%-F$JQ5A*WoQy+JC%T_e~Jb|EZVxr~a0|Uwrmn;zh=q#oFA~Ta4 zh{#?C@%Y32l?i*>w2TMWmA zWztwv)93aB(`wfW#{ph`0fFtUtsiY|Bqi{NC{#nAH(Oj`p99!bm(2YD85?XCyr=?; zl~^f*7bT3OzCw@D`uO;0V?;yv400h`85d_^Y%)GHEG$l*}%wmW7!py8NtwiR`!MEp%4Q{PdnrlzJ@ZrQ!PdU!nko5vgp z$PL8KKOzU&9>FNohCiuO@0EwE6CYq>K7M2bU@RtTgGAPRVcK}Km=z$ZlVk~YQC=S4vVZd85EQdNGDVT9;ezyDW!C(RalGz=^MQ&~=P+v1^YuZ*; zT#SNd!X}r9fp`Ti?lq{W7z_re)tT8@>m9B`wICa%9`Yak{rdd_0~nxE%+1Y#O}_+P z1lHHrZyg>=V!|qH+P}C>%by>$E9{Kg#C+~^xFa9{1}0j@hnMld|q*YD@y4UnO&tEu7R2##L((;T+j zaVtg-4$rN(2n`M0`AIHhX>V^YO8pP>)zt?;ll1TqVH7fNX>Sh$gP#8c`aG?im5LZ3 z0(p5ulapCM^>lD`CDbgY8%%vZ%^c|NjsPvl$;s)TYy>@$iGsx1#^$&$CNO(`4$!t) zolg{S4JZjP!ktE(V{)xvrdw6@ZJ(v1m4yH$&2kz%6ZWT(Y-&x9~q{ZOP}-C>Vz!k;e^#+_8J)adz;cp|E{FIlqQ;^VL`l sKh+Yr1Wcm6(0Ekm%;Q#;t literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.map new file mode 100644 index 00000000..e5f84490 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.md5 new file mode 100644 index 00000000..628b3d42 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.md5 @@ -0,0 +1 @@ +a678e8268349eb31e30c9ea2538b3a29 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1StereoSGBM__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c184f47870d29dc32fc7e9fa1fc610298a31af0e GIT binary patch literal 5265 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

~g?|(l{GwK;3HlW-PfszE5(ciz?Ck8L?dc#F z2N##9urN}L_tNM$k6Y>K>7c#zPfTco)>lzcQNQ)m_rl9(t}UwS>(?E;a~U(Uw17Ya z_>Z?`rV|FBLNp88^8zfJ87?se7tbs#fZoLB;^JZmhiCRVZ0+obvJ~YdrM0i! zq@CGW=msnqO3g8q6Rqeem(0r6q?dEIvgi7$5}zlI}0hy0^BsMf|?5=epVxaF|F|NuAF2 z!Y4)H(b0DE9kE>!R#sL4`$I-(jH!vq{g+#u;5}~!GKg7N%x$#%)jL|KJ{%sJlEMnM z4OttnrjAlm_VN;skvm}WKip`w6z=WsR|2-YdiCmUUS5`{eZY$P=H}5QCHMCC_wSm0 zdp|Q{`7b^~DOvx)z{*fj{*cqk>MC-(m9ev<;|Cs}yt3ld7R}aOkKB#l_Ct@!+Zh_h zcP2qHPzTI{f`au&vk{0cfES~9Jd2zI01KcXAft^zjh(WfU4F4?rvmO4VWI%|Q|{2m z4MK(P5!-H!`yV9$qC+km!NjCgTbESh;AVB*l_*XjBv> zfN!-NeL&7gU_ebxO_38n6nK@8vAVMIw82jTbP#C%fLq6KvGE(A2R5e~o=<;Idr}1F za{*1lzAsZ1a<;4+WW73E(xu$H>~+`Td+PE)-rV~7~V6SXB=%1Q5=|ca$mSkr@I3 z=;w27t%-F$JQ5A*WoQy+JC%T_e~Jb|EZVxr~a0|Uwrmn;zh=q#oFA~Ta4 zh{#?C@%Y32l?i*>w2TMWmA zWztwv)93aB(`wfW#{ph`0fFtUtsiY|Bqi{NC{#nAH(Oj`p99!bm(2YD85?XCyr=?; zl~^f*7bT3OzCw@D`uO;0V?;yv400h`85d_^Y%)GHEG$l*}%wmW7!py8NtwiR`!MEp%4Q{PdnrlzJ@ZrQ!PdU!nko5vgp z$PL8KKOzU&9>FNohCiuO@0EwE6CYq>K7M2bU@RtTgGAPRVcK}Km=z$ZlVk~YQC=S4vVZd85EQdNGDVT9;ezyDW!C(RalGz=^MQ&~=P+v1^YuZ*; zT#SNd!X}r9fp`Ti?lq{W7z_re)tT8@>m9B`wICa%9`Yak{rdd_0~nxE%+1Y#O}_+P z1lHHrZyg>=V!|qH+P}C>%by>$E9{Kg#C+~^xFa9{1}0j@hnMld|q*YD@y4UnO&tEu7R2##L((;T+j zaVtg-4$rN(2n`M0`AIHhX>V^YO8pP>)zt?;ll1TqVH7fNX>Sh$gP#8c`aG?im5LZ3 z0(p5ulapCM^>lD`CDbgY8%%vZ%^c|NjsPvl$;s)TYy>@$iGsx1#^$&$CNO(`4$!t) zolg{S4JZjP!ktE(V{)xvrdw6@ZJ(v1m4yH$&2kz%6ZWT(Y-&x9~q{ZOP}-C>Vz!k;e^#+_8J)adz;cp|E{FIlqQ;^VL`l sKh+Yr1Wcm6(0Ekm%;Q#;t literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.map new file mode 100644 index 00000000..2c1a2b5c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.md5 new file mode 100644 index 00000000..65b97558 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.md5 @@ -0,0 +1 @@ +efda575e405e167f4caf2f1e078df9ab \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1Stereo__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad7723de59d68fc12d24c8229844b7e0a7be8cd GIT binary patch literal 5200 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat-members.html new file mode 100644 index 00000000..633ab510 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +

+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SuperPointRpautrat Member List
+
+
+ +

This is the complete list of members for rtabmap::SuperPointRpautrat, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::SuperPointRpautrat)rtabmap::SuperPointRpautratinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::SuperPointRpautratvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::SuperPointRpautrat)rtabmap::SuperPointRpautratvirtual
SuperPointRpautrat(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SuperPointRpautrat)rtabmap::SuperPointRpautrat
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~SuperPointRpautrat() (defined in rtabmap::SuperPointRpautrat)rtabmap::SuperPointRpautratvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.html b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.html new file mode 100644 index 00000000..f21c218d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.html @@ -0,0 +1,368 @@ + + + + + + + + +RTAB-Map: rtabmap::SuperPointRpautrat Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SuperPointRpautrat Class Reference
+
+
+ +

SuperPoint (rpautrat) via Torch + Python (RTAB-Map must be built with libtorch and Python support). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::SuperPointRpautrat:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SuperPointRpautrat:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ SuperPointRpautrat (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

SuperPoint (rpautrat) via Torch + Python (RTAB-Map must be built with libtorch and Python support).

+ +

Definition at line 697 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::SuperPointRpautrat::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::SuperPointRpautrat::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 704 of file Features2d.h.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::SuperPointRpautrat::isGpuAvailable () const
+
+overridevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.js b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.js new file mode 100644 index 00000000..7d25ca47 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1SuperPointRpautrat = +[ + [ "isGpuAvailable", "classrtabmap_1_1SuperPointRpautrat.html#ac041c8738dc391661ba21331bf78d344", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.map new file mode 100644 index 00000000..59dc9f43 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.md5 new file mode 100644 index 00000000..fca65446 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.md5 @@ -0,0 +1 @@ +26051ec20215e946edc293df79292fcb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2136e49d14a283103137440864f9a296f2c41886 GIT binary patch literal 5178 zcmc(jbyU<{wD;jL03{R;8Y&#P5$e>&)I~@BQ7MeZq9KR7md7-oeAeBT-XT)C13X@Np)* z4Zhh(Z6M%r+e$-45%2o%E2|+t9uJRVPfbz&h3Ds;c^{n@YxB(qd&Wp}Gn+V^l9K$; z*S#$U{97ys!QF4hek<{@1{ZX-rD&#GD9>u<**tlh>N?_}StO6pv~qHq`O5BGjMNIX z7EKNh3m>Bl<(+&GmsUDAhznUsuod7XtSgeud}uFY56fKG^U63{{=Bx$|KSl~;QxCs zqFIeNhFDlwtcy|5d%KWw-b`utb)8z&kxrdd03(8x!NY^J#Sg-;?_Oh=nC6 zIhn>N|M6Uiu!x9xdf>k+n>TO%l4l9my7yU=GX0Un^bJdQ+{xZr)uaW~gSO>{jpDqj z>!<8&=H0p4<;^D_3A+3Y+zCkOv%Y)@V32!%35ZYfwXCNe65sCW?Ui(2k1f~ErAGWXv zv#cMj;GVUS5%u`^xbM~3TK&agZ#{0euE?~;WeQ5q?_&DbolYC!Ut3$fh5Gq|v{97Q z)T6`0@_KsYcpTapzely@R++AXJ6Lqqv zV-k6OZS6w=0RcBC^k9E~F<#r;39B zGjrhSspq$E-v~)as%APXE1$p*A}mW?mz5d){^$k<2A<35C_k#<`vJmOUQuD(1b@1* zu@TAmbY^Kpwb)R^|H?NoC-ZDf__;HX)(7 ziwoa8t#ox=-TO_KJCNye+q;8LPv|p!4~f9BDJm(Ic^%nN30U+E!m%PRxE}~Ko-#jc z5{d{9_r&eg7&mxVjVDJ%MfsksAS`5Vv2pn22AFrbhXnov;XDsWO)w!PYzSJi2cBm*^~Ip3q?3~+J2{z zUtHWMIy6+!kwZ$#WOs8@5Bv1&cf6aOUEZN5IP1fgP-q3O8sg$70TU+(J&5zSrzIp50e!i9g_U!yz&(c!PM(EhPVcOPU!TCdM z?7i~x@`Rm(9Im?_tv*lUHU3vm z4`J-@6la?f9DG|jhVkjTnR$P4gjTVbwk3kM=}8&<(i`N!-voif;R#4&d`1Qkf)KaZ zWB%lf9Sl-(Vy3DZ!fB1|oJiFwnT$_ORd;eKn!W-iNGGIK!3)RVN=ZxiV@1WqO=a>! zSk*39@nHg7)F8h`ay7h`qr|tP9b%ws1FwZslBHoTO@j=DyD0HaKVRSPez@xCMhzr? zTwI*Iy84|6D!!$jL>{UV9B$!yV5JusP$%a_#w4rh=60BM^nEgU5^c`H#TAyCN{gDs z${dgB|IN|9bZO+*udE0JLNG;BJ?;-Otx6~|G<0#U7U~Xz-GD*9zc4ad&}U?0W8-~U z`e7VpRN;RO54nRbEsgC@6F*wdi9y814(%POe8YWPH!L=3PZ6}RW;zvkxN zXJXP;RJ_^V-cD5#5f=8VFh7HtojrJc{ms(ya(7o3jXUEB?U9Ac*NaV~rhiK&Mc@~n zOG`^M;x6=%hGQzA4x}q~&cq@jB85dotlZq;VE@C_Gzd40h9Ir8Vo+AYz~F(GmzTOO zI~$wp&Wvbo6c7O5kLT|=m1JStI|l~`ye5^Qa+e$0m(i`NVpff9=b4|-t(H4n+}znH zRIiist)Zcz=HsnN2M32=aVm`Rxq7t_(rR3iU>$(Rn+GMZa z{MoHIOcWR&mJQWk<2FwZ5PZq9xoi9Wz1Z~hG+L{b&s|`)+lRV5Zj%J9r9_i;U*El) zw{FiUAYC)sf}Aae$XhAnpmoro)`zT4iV60(_fXPk4Uc7=f-7)Y?D{#}JlI*4hT}5_ zFOSCNdk?L^<+jv;ejD3v?uR3>_$iAcFR8vualC$|I9&TsK_=ou^R-!yyDE7hx?h!s zQ`dbrFYQIvrJN}vqU}6kp_kSukCix*Q%W3h=wr;HcEPm2z#KokbN<*$QvKpyQZ$3OUVnQy+*u@iGtX|2T0r-g&c58xj*nHH^3)@x!+r#KQn>*suRnkshMoq|v^0l`08UBa{9hwPag&2WiGxs! z{l9?b|7Ky|64|DmjZIM^>qY?&;yyjc^g6TL$H#{U$`7>vgFk=VPme*Tx1FhU&`cBS|FUM9wuO-d4ff*l@&Jovd?v6v zufq_e;KxfgJACjfgb9(5&;}ZG2v1w+{!Yz;+v)!6N)x^um6$xxoRlJ{4yLSQYI*au zWzRl_hu;Al0)!N3X2sia?j(Nm&7m!QeSHGT!5OoYfiDdW>0k{IJ~a&u1q3gKk&#Nl zgP8QVOomly@+iJ}bTt0kH}094nK#bPxj%lS?ls~_wY9ZdT3ZVX3bFv1sUbkcw=OI! zy!CN*cBY9^{%iH&VR>lI_}fA>+HQNQ?DX^$?;U7gU>872qSB*(s4HM;6IPf;zckRr zR{VM~v-9)wzkmPUZ==vIwdp3uGch&o?(a9Su+-E0S5=izDxLJZk0CD?*JEz(JBjM! z5MMmwq{8Cjb{paQg#1NekbO6+L>DK-U;G?&4FQf z;IwrMuj)nwX^4SIoYu3_${rq~-VGUL)}8<87#P@kpmD1@CMG?*^L1fSQMNq^T%=Kc z{!n{}Q?oPzCqAyz4jVTIC*$jBqWl7vIBh8MU8ir6F;-FW2a!( z#9Qo&V_{`yMxX;-e()6=&Xnlk6+ z%n1y8(Z5iqZ^#u+*S*Xeli#Ptsg&q!XLt520$VHoeRba^)Gf|P1dc!B&@8g zL-X_fX!E+R-d^ipEuR#~M+XN7w?`!#Y8o0EQe^$4Bqb%mDnZvJMP?S3et4)vi{Zu4 zkPaz>RNJ48QLm*ij#$<(NaI;B4C57IWZ`uyO4-_DTRTI>VFIqNPXQ8Y-CYV4bys)y zW59a=LT>C2t1!jI$F~ajpJ}8a;efdRnmqjGyZ13S7~EcUBiM>wmId}A1xy<*zM)Xd zb$g9Dp!~pymNU6^_LB_0sI$=8(n6mqZMwZO4y$MMUVohCx?LsmQo+#uXtf{urVKMT z*H>&>^TyGUg_k#SY00XhlY*Q)q4yJrJNxrg#n-RD=()SPy7sIX*x0agCx&|+t>S0t z6(&o#GK-3eDo}}ti6u=@ zqE!Mig)%H&TDZOv$CFCeGG;lZY^o~TlU#hxPLZ#b&MYVx3z#WVnFZ`5Ed35CU^xKj z{3o!FkeIkK)!NMLv)=FF;bHgp?*aBgpka70fom|%0*$2r#?3h~Lu&Mn*s>A=BQ92-Y8U zbsa6 zmOj>dU2`PL3u3`M(R{7%Pu#`|bbGwz&aIIUv8cJ;Yt+Ui}Qb z)jY572aXazUr^6$POF)^xRL4UFy3A}aj}jVrom((>w=OJf?Y<%{{H@+WgrPuUNhlL zK-E~)zUJkT)6#yEX(}%6-wufpZ6G_v01*T5KQf{R;(c?DPbX1bNk=DkUd(wzdUAr5 zgX0KT;kwjDRMD$!>IbvgJ*P8OIdo%2la~I^H8k#y=4%t|qN%SAkxf~KD4`Thsx3aBgYmbbF>+TDpqAKyES!Q72!O2I z)d87>_eQRK1JnA>&T}yIxlLA~P!ZOh(PeLjng7l;i`Zs2bn*PWe&LJ1WkV)=`oXq0 ziOZhc)DPn9yaW6Hj{T-_{hA&?GY;znZd|D#z9wWizEw#`N&?Y!sAdce4b3VliUdWc zZ)(~LmV`z}uWpW`%$nc~-~h+z<+KmYurs;zBA8rWlaqaGNz%X%7hQh(Jx-S z&;i{1^HnqGiralpYdkl$pM)A`qm3iW0$nkr4pN)pWV58w-$aW zWm23pHuhqryl-X-iA4TI?V~N@(Y)sh#fH$8o(C?NdNnI6W^jr={^0d zyUI1e%>W2g`{?MX6*~WUnw@A!X{lgOPY(!gB%Szx%K}46-BrhgiG?3-NtNDlM-b=jx>s(t9`BouVFRNHLWB*)7Aa+EqKJ9`iaj%L_|a(3RQ7Rz7=}D zo%=|JknuD-O~N%>Lyl>4^A!Cj3p-zx*~fq{<}|hctP_??P_;*Pkpix@p8vhp`fn5{ z2Kh?7Mj(6Zm;9@(iXtkde7(XRP`=l%wqRJIz(t8fbq~zA literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.map new file mode 100644 index 00000000..59dc9f43 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.md5 new file mode 100644 index 00000000..fca65446 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.md5 @@ -0,0 +1 @@ +26051ec20215e946edc293df79292fcb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointRpautrat__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2136e49d14a283103137440864f9a296f2c41886 GIT binary patch literal 5178 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch-members.html new file mode 100644 index 00000000..fd53db67 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch-members.html @@ -0,0 +1,169 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::SuperPointTorch Member List
+
+
+ +

This is the complete list of members for rtabmap::SuperPointTorch, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeRoi(const cv::Mat &image, const std::string &roiRatios)rtabmap::Feature2Dstatic
computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
create(const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())rtabmap::Feature2Dstatic
Feature2D(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::Feature2D)rtabmap::Feature2Dprotected
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDepth(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)rtabmap::Feature2Dstatic
filterKeypointsByDisparity(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
generateDescriptors(const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
generateKeypoints(const cv::Mat &image, const cv::Mat &mask=cv::Mat())rtabmap::Feature2D
generateKeypoints3D(const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) constrtabmap::Feature2D
getGridCols() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getGridRows() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMaxFeatures() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getMinDepth() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getParameters() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinlinevirtual
getSSC() const (defined in rtabmap::Feature2D)rtabmap::Feature2Dinline
getType() const override (defined in rtabmap::SuperPointTorch)rtabmap::SuperPointTorchinlinevirtual
isAvailable(Feature2D::Type type)rtabmap::Feature2Dstatic
isGpuAvailable() const overridertabmap::SuperPointTorchvirtual
kFeatureBrisk enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureEnd enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureFastFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttBrief enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureGfttOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureKaze enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrb enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureOrbOctree enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeaturePyDetector enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSift enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointRpautrat enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSuperPointTorch enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurf enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfDaisy enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureSurfFreak enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
kFeatureUndef enum value (defined in rtabmap::Feature2D)rtabmap::Feature2D
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
limitKeypoints(const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false) (defined in rtabmap::Feature2D)rtabmap::Feature2Dstatic
parseParameters(const ParametersMap &parameters) override (defined in rtabmap::SuperPointTorch)rtabmap::SuperPointTorchvirtual
SuperPointTorch(const ParametersMap &parameters=ParametersMap()) (defined in rtabmap::SuperPointTorch)rtabmap::SuperPointTorch
Type enum namertabmap::Feature2D
typeName(Type type)rtabmap::Feature2Dinlinestatic
~Feature2D() (defined in rtabmap::Feature2D)rtabmap::Feature2Dvirtual
~SuperPointTorch() (defined in rtabmap::SuperPointTorch)rtabmap::SuperPointTorchvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.html b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.html new file mode 100644 index 00000000..b38d777a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.html @@ -0,0 +1,368 @@ + + + + + + + + +RTAB-Map: rtabmap::SuperPointTorch Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::SuperPointTorch Class Reference
+
+
+ +

SuperPoint via LibTorch (RTAB-Map must be built with libtorch support). + More...

+ +

#include <Features2d.h>

+
+Inheritance diagram for rtabmap::SuperPointTorch:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::SuperPointTorch:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ SuperPointTorch (const ParametersMap &parameters=ParametersMap())
 
virtual void parseParameters (const ParametersMap &parameters) override
 
virtual Feature2D::Type getType () const override
 
virtual bool isGpuAvailable () const override
 Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.
 
- Public Member Functions inherited from rtabmap::Feature2D
int getMaxFeatures () const
 
bool getSSC () const
 
float getMinDepth () const
 
float getMaxDepth () const
 
int getGridRows () const
 
int getGridCols () const
 
+std::vector< cv::KeyPoint > generateKeypoints (const cv::Mat &image, const cv::Mat &mask=cv::Mat())
 Detects keypoints in a grayscale image (CV_8UC1); optional depth or 8U mask.
 
+cv::Mat generateDescriptors (const cv::Mat &image, std::vector< cv::KeyPoint > &keypoints) const
 Computes descriptors for keypoints (may shrink the list in some detectors).
 
+std::vector< cv::Point3f > generateKeypoints3D (const SensorData &data, const std::vector< cv::KeyPoint > &keypoints) const
 Back-projects keypoints to 3D using depth or stereo in data.
 
virtual const ParametersMap & getParameters () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from rtabmap::Feature2D
enum  Type {
+  kFeatureUndef =-1 +, kFeatureSurf =0 +, kFeatureSift =1 +, kFeatureOrb =2 +,
+  kFeatureFastFreak =3 +, kFeatureFastBrief =4 +, kFeatureGfttFreak =5 +, kFeatureGfttBrief =6 +,
+  kFeatureBrisk =7 +, kFeatureGfttOrb =8 +, kFeatureKaze =9 +, kFeatureOrbOctree =10 +,
+  kFeatureSuperPointTorch =11 +, kFeatureSurfFreak =12 +, kFeatureGfttDaisy =13 +, kFeatureSurfDaisy =14 +,
+  kFeaturePyDetector =15 +, kFeatureSuperPointRpautrat =16 +, kFeatureEnd +
+ }
 Built-in detector/descriptor strategy (Kp/DetectorStrategy). More...
 
- Static Public Member Functions inherited from rtabmap::Feature2D
static std::string typeName (Type type)
 
+static Feature2D * create (const ParametersMap &parameters=ParametersMap())
 Creates a detector from Kp/DetectorStrategy in parameters. Caller owns the pointer.
 
+static Feature2D * create (Feature2D::Type type, const ParametersMap &parameters=ParametersMap())
 Creates a detector of the given type. Caller owns the pointer.
 
+static bool isAvailable (Feature2D::Type type)
 Returns true if type is available (RTAB-Map is built with it).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, float minDepth, float maxDepth)
 Keeps keypoints whose depth at (u,v) is in (minDepth, maxDepth).
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &depth, float minDepth, float maxDepth)
 
+static void filterKeypointsByDepth (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, std::vector< cv::Point3f > &keypoints3D, float minDepth, float maxDepth)
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, float minDisparity)
 Keeps keypoints with stereo disparity ≥ minDisparity.
 
+static void filterKeypointsByDisparity (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, const cv::Mat &disparity, float minDisparity)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 Reduces keypoint count (by response or SSC spatial distribution).
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (std::vector< cv::KeyPoint > &keypoints, std::vector< cv::Point3f > &keypoints3D, cv::Mat &descriptors, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize=cv::Size(), bool ssc=false)
 
+static void limitKeypoints (const std::vector< cv::KeyPoint > &keypoints, std::vector< bool > &inliers, int maxKeypoints, const cv::Size &imageSize, int gridRows, int gridCols, bool ssc=false)
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::string &roiRatios)
 ROI from Kp/RoiRatios string ("left top right bottom" fractions).
 
+static cv::Rect computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
 
- Protected Member Functions inherited from rtabmap::Feature2D
+ Feature2D (const ParametersMap &parameters=ParametersMap())
 
+

Detailed Description

+

SuperPoint via LibTorch (RTAB-Map must be built with libtorch support).

+ +

Definition at line 673 of file Features2d.h.

+

Member Function Documentation

+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::SuperPointTorch::parseParameters (const ParametersMap & parameters)
+
+overridevirtual
+
+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Feature2D::Type rtabmap::SuperPointTorch::getType () const
+
+inlineoverridevirtual
+
+ +

Implements rtabmap::Feature2D.

+ +

Definition at line 680 of file Features2d.h.

+ +
+
+ +

◆ isGpuAvailable()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool rtabmap::SuperPointTorch::isGpuAvailable () const
+
+overridevirtual
+
+ +

Returns true when a GPU/CUDA code path could be used by this detector on this host: i.e. the build was compiled with the matching GPU support AND a CUDA-capable device is detected at runtime. This is a capability probe – it does NOT reflect whether the current instance is actually configured to run on GPU (that depends on per-detector parameters like SURF/GpuVersion). Defaults to false; subclasses with a GPU backend override it.

+ +

Reimplemented from rtabmap::Feature2D.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.js b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.js new file mode 100644 index 00000000..7191a5f4 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1SuperPointTorch = +[ + [ "isGpuAvailable", "classrtabmap_1_1SuperPointTorch.html#aee69f6089f657449d3813b440abbaa25", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.map new file mode 100644 index 00000000..465e50a6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.md5 new file mode 100644 index 00000000..da5b6595 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.md5 @@ -0,0 +1 @@ +63d2a3cb047db0eda916333705f15cbb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..caca382cc96ce61dfaaefe5ed7626b199778ca6f GIT binary patch literal 5094 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 Nr^=d2Rf^{C{}a7vp5y=k literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.map new file mode 100644 index 00000000..465e50a6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.md5 new file mode 100644 index 00000000..da5b6595 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.md5 @@ -0,0 +1 @@ +63d2a3cb047db0eda916333705f15cbb \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1SuperPointTorch__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..caca382cc96ce61dfaaefe5ed7626b199778ca6f GIT binary patch literal 5094 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 Nr^=d2Rf^{C{}a7vp5y=k literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Transform-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1Transform-members.html new file mode 100644 index 00000000..15a8cb63 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Transform-members.html @@ -0,0 +1,200 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::Transform Member List
+
+
+ +

This is the complete list of members for rtabmap::Transform, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
canParseString(const std::string &string)rtabmap::Transformstatic
clone() constrtabmap::Transform
data() constrtabmap::Transforminline
data() (defined in rtabmap::Transform)rtabmap::Transforminline
dataMatrix() constrtabmap::Transforminline
fromEigen3d(const Eigen::Affine3d &matrix) (defined in rtabmap::Transform)rtabmap::Transformstatic
fromEigen3d(const Eigen::Isometry3d &matrix) (defined in rtabmap::Transform)rtabmap::Transformstatic
fromEigen3d(const Eigen::Matrix< double, 3, 4 > &matrix) (defined in rtabmap::Transform)rtabmap::Transformstatic
fromEigen3f(const Eigen::Affine3f &matrix) (defined in rtabmap::Transform)rtabmap::Transformstatic
fromEigen3f(const Eigen::Isometry3f &matrix) (defined in rtabmap::Transform)rtabmap::Transformstatic
fromEigen3f(const Eigen::Matrix< float, 3, 4 > &matrix) (defined in rtabmap::Transform)rtabmap::Transformstatic
fromEigen4d(const Eigen::Matrix4d &matrix) (defined in rtabmap::Transform)rtabmap::Transformstatic
fromEigen4f(const Eigen::Matrix4f &matrix)rtabmap::Transformstatic
fromString(const std::string &string)rtabmap::Transformstatic
getAngle(const Transform &t) constrtabmap::Transform
getClosestTransform(const std::map< double, Transform > &tfBuffer, const double &stamp, double *stampDiff)rtabmap::Transformstatic
getDistance(const Transform &t) constrtabmap::Transform
getDistanceSquared(const Transform &t) constrtabmap::Transform
getEulerAngles(float &roll, float &pitch, float &yaw) constrtabmap::Transform
getIdentity()rtabmap::Transformstatic
getNorm() constrtabmap::Transform
getNormSquared() constrtabmap::Transform
getQuaterniond() const (defined in rtabmap::Transform)rtabmap::Transform
getQuaternionf() const (defined in rtabmap::Transform)rtabmap::Transform
getTransform(const std::map< double, Transform > &tfBuffer, const double &stamp)rtabmap::Transformstatic
getTranslation(float &x, float &y, float &z) constrtabmap::Transform
getTranslationAndEulerAngles(float &x, float &y, float &z, float &roll, float &pitch, float &yaw) constrtabmap::Transform
interpolate(float t, const Transform &other) constrtabmap::Transform
inverse() constrtabmap::Transform
is3DoF() constrtabmap::Transform
is4DoF() constrtabmap::Transform
isIdentity() constrtabmap::Transform
isInvertible() constrtabmap::Transform
isNull() constrtabmap::Transform
normalizeRotation()rtabmap::Transform
o14() constrtabmap::Transforminline
o24() constrtabmap::Transforminline
o34() constrtabmap::Transforminline
opengl_T_rtabmap()rtabmap::Transforminlinestatic
operator!=(const Transform &t) const (defined in rtabmap::Transform)rtabmap::Transform
operator()(int row, int col) (defined in rtabmap::Transform)rtabmap::Transforminline
operator()(int row, int col) const (defined in rtabmap::Transform)rtabmap::Transforminline
operator*(const Transform &t) constrtabmap::Transform
operator*=(const Transform &t) (defined in rtabmap::Transform)rtabmap::Transform
operator==(const Transform &t) const (defined in rtabmap::Transform)rtabmap::Transform
operator[](int index) (defined in rtabmap::Transform)rtabmap::Transforminline
operator[](int index) const (defined in rtabmap::Transform)rtabmap::Transforminline
prettyPrint() constrtabmap::Transform
r11() constrtabmap::Transforminline
r12() const (defined in rtabmap::Transform)rtabmap::Transforminline
r13() const (defined in rtabmap::Transform)rtabmap::Transforminline
r21() const (defined in rtabmap::Transform)rtabmap::Transforminline
r22() const (defined in rtabmap::Transform)rtabmap::Transforminline
r23() const (defined in rtabmap::Transform)rtabmap::Transforminline
r31() const (defined in rtabmap::Transform)rtabmap::Transforminline
r32() const (defined in rtabmap::Transform)rtabmap::Transforminline
r33() const (defined in rtabmap::Transform)rtabmap::Transforminline
rotation() constrtabmap::Transform
rotationMatrix() constrtabmap::Transform
rtabmap_T_opengl()rtabmap::Transforminlinestatic
setIdentity()rtabmap::Transform
setNull()rtabmap::Transform
size() constrtabmap::Transforminline
theta() constrtabmap::Transform
to3DoF() constrtabmap::Transform
to4DoF() constrtabmap::Transform
toEigen3d() const (defined in rtabmap::Transform)rtabmap::Transform
toEigen3f() const (defined in rtabmap::Transform)rtabmap::Transform
toEigen4d() const (defined in rtabmap::Transform)rtabmap::Transform
toEigen4f() const (defined in rtabmap::Transform)rtabmap::Transform
Transform()rtabmap::Transform
Transform(float r11, float r12, float r13, float o14, float r21, float r22, float r23, float o24, float r31, float r32, float r33, float o34)rtabmap::Transform
Transform(const cv::Mat &transformationMatrix)rtabmap::Transform
Transform(float x, float y, float z, float roll, float pitch, float yaw)rtabmap::Transform
Transform(float x, float y, float z, float qx, float qy, float qz, float qw)rtabmap::Transform
Transform(float x, float y, float theta)rtabmap::Transform
translation() constrtabmap::Transform
translationMatrix() constrtabmap::Transform
x()rtabmap::Transforminline
x() const (defined in rtabmap::Transform)rtabmap::Transforminline
y()rtabmap::Transforminline
y() const (defined in rtabmap::Transform)rtabmap::Transforminline
z()rtabmap::Transforminline
z() const (defined in rtabmap::Transform)rtabmap::Transforminline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Transform.html b/preview/pr-1773/api/latest/classrtabmap_1_1Transform.html new file mode 100644 index 00000000..554ffb1d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Transform.html @@ -0,0 +1,1635 @@ + + + + + + + + +RTAB-Map: rtabmap::Transform Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::Transform Class Reference
+
+
+ +

Represents a 3D rigid body transformation (rotation + translation). + More...

+ +

#include <Transform.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+ Transform ()
 Default constructor. Initializes to a null (all zeros) transform.
 
 Transform (float r11, float r12, float r13, float o14, float r21, float r22, float r23, float o24, float r31, float r32, float r33, float o34)
 Constructor from rotation matrix elements and translation components.
 
 Transform (const cv::Mat &transformationMatrix)
 Constructs a Transform from a 3x4 OpenCV matrix.
 
 Transform (float x, float y, float z, float roll, float pitch, float yaw)
 Constructs a Transform from position and Euler angles (in radians).
 
 Transform (float x, float y, float z, float qx, float qy, float qz, float qw)
 Constructs a Transform from position and quaternion.
 
+ Transform (float x, float y, float theta)
 Constructs a 2D Transform (x, y, theta).
 
+Transform clone () const
 Returns a deep copy of the transform.
 
float r11 () const
 Rotation matrix element at row 1, col 1.
 
float r12 () const
 
float r13 () const
 
float r21 () const
 
float r22 () const
 
float r23 () const
 
float r31 () const
 
float r32 () const
 
float r33 () const
 
float o14 () const
 Translation x.
 
float o24 () const
 Translation y.
 
float o34 () const
 Translation z.
 
float & operator[] (int index)
 
const float & operator[] (int index) const
 
float & operator() (int row, int col)
 
const float & operator() (int row, int col) const
 
+bool isNull () const
 Checks whether the transform is null (all zeros).
 
+bool isIdentity () const
 Checks whether the transform is identity.
 
+void setNull ()
 Sets the transform to null (zero matrix).
 
+void setIdentity ()
 Sets the transform to the identity transform.
 
const cv::Mat & dataMatrix () const
 Returns the internal OpenCV matrix (3x4).
 
const float * data () const
 Returns a pointer to the raw data (12 floats).
 
float * data ()
 
int size () const
 Returns the number of float elements (always 12).
 
float & x ()
 Translation getters/setters.
 
float & y ()
 Translation y.
 
float & z ()
 Translation z.
 
const float & x () const
 
const float & y () const
 
const float & z () const
 
+float theta () const
 Returns 2D orientation (theta) in radians.
 
+bool isInvertible () const
 Returns whether the transform is invertible.
 
+Transform inverse () const
 Returns the inverse of the transform.
 
+Transform rotation () const
 Returns only the rotation component.
 
+Transform translation () const
 Returns only the translation component.
 
+Transform to3DoF () const
 Converts to 3 DoF (x, y, theta).
 
+Transform to4DoF () const
 Converts to 4 DoF (x, y, z, yaw).
 
+bool is3DoF () const
 Checks if the transform is 3 DoF (no pitch/roll).
 
+bool is4DoF () const
 Checks if the transform is 4 DoF (no pitch).
 
+cv::Mat rotationMatrix () const
 Returns the 3x3 rotation matrix (cv::Mat).
 
+cv::Mat translationMatrix () const
 Returns the 3x1 translation matrix (cv::Mat).
 
+void getTranslationAndEulerAngles (float &x, float &y, float &z, float &roll, float &pitch, float &yaw) const
 Extracts translation and Euler angles (radians).
 
+void getEulerAngles (float &roll, float &pitch, float &yaw) const
 Extracts Euler angles (roll, pitch, yaw).
 
+void getTranslation (float &x, float &y, float &z) const
 Extracts translation only.
 
+float getAngle (const Transform &t) const
 Returns angular difference (in radians) with another transform.
 
+float getNorm () const
 Returns the Euclidean norm of the translation vector.
 
+float getNormSquared () const
 Returns the squared norm of the translation vector.
 
+float getDistance (const Transform &t) const
 Returns the Euclidean distance to another transform.
 
+float getDistanceSquared (const Transform &t) const
 Returns the squared distance to another transform.
 
Transform interpolate (float t, const Transform &other) const
 Interpolates between this and another transform.
 
+void normalizeRotation ()
 Normalizes the rotation matrix.
 
+std::string prettyPrint () const
 Returns a string representation of the transform.
 
+Transform operator* (const Transform &t) const
 Operator overloads.
 
+Transform & operator*= (const Transform &t)
 
+bool operator== (const Transform &t) const
 
+bool operator!= (const Transform &t) const
 
+Eigen::Matrix4f toEigen4f () const
 
+Eigen::Matrix4d toEigen4d () const
 
+Eigen::Affine3f toEigen3f () const
 
+Eigen::Affine3d toEigen3d () const
 
+Eigen::Quaternionf getQuaternionf () const
 
+Eigen::Quaterniond getQuaterniond () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static Transform getIdentity ()
 Returns identity transform.
 
+static Transform fromEigen4f (const Eigen::Matrix4f &matrix)
 Converts from Eigen representations.
 
+static Transform fromEigen4d (const Eigen::Matrix4d &matrix)
 
+static Transform fromEigen3f (const Eigen::Affine3f &matrix)
 
+static Transform fromEigen3d (const Eigen::Affine3d &matrix)
 
+static Transform fromEigen3f (const Eigen::Isometry3f &matrix)
 
+static Transform fromEigen3d (const Eigen::Isometry3d &matrix)
 
+static Transform fromEigen3f (const Eigen::Matrix< float, 3, 4 > &matrix)
 
+static Transform fromEigen3d (const Eigen::Matrix< double, 3, 4 > &matrix)
 
static Transform opengl_T_rtabmap ()
 Returns the transform from RTAB-Map to OpenGL coordinate system.
 
static Transform rtabmap_T_opengl ()
 Returns the transform from OpenGL to RTAB-Map coordinate system.
 
static Transform fromString (const std::string &string)
 Parses a transform from a string representation. Supported formats:
 
+static bool canParseString (const std::string &string)
 Checks if a string can be parsed into a transform.
 
static Transform getTransform (const std::map< double, Transform > &tfBuffer, const double &stamp)
 Retrieves the transform to a given timestamp.
 
static RTABMAP_DEPRECATED Transform getClosestTransform (const std::map< double, Transform > &tfBuffer, const double &stamp, double *stampDiff)
 
+

Detailed Description

+

Represents a 3D rigid body transformation (rotation + translation).

+

This class provides an abstraction over 3D transformations using a 3x4 matrix representation, with utilities for conversion to/from Eigen and OpenCV formats, interpolation, inversion, DoF reduction, and distance calculations. It is fundamental to pose estimation and motion handling within the RTAB-Map framework.

+

The underlying data is stored in a cv::Mat (3x4, CV_32FC1), representing a rotation matrix and translation vector.

+ +

Definition at line 52 of file Transform.h.

+

Constructor & Destructor Documentation

+ +

◆ Transform() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::Transform::Transform (float r11,
float r12,
float r13,
float o14,
float r21,
float r22,
float r23,
float o24,
float r31,
float r32,
float r33,
float o34 
)
+
+ +

Constructor from rotation matrix elements and translation components.

+
Parameters
+ + + +
r11...r33Rotation matrix components.
o14,o24,o34Translation vector components.
+
+
+ +
+
+ +

◆ Transform() [2/4]

+ +
+
+ + + + + + + + +
rtabmap::Transform::Transform (const cv::Mat & transformationMatrix)
+
+ +

Constructs a Transform from a 3x4 OpenCV matrix.

+
Parameters
+ + +
transformationMatrixA 3x4 CV_32FC1 matrix.
+
+
+ +
+
+ +

◆ Transform() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::Transform::Transform (float x,
float y,
float z,
float roll,
float pitch,
float yaw 
)
+
+ +

Constructs a Transform from position and Euler angles (in radians).

+
Parameters
+ + + +
x,y,zTranslation components.
roll,pitch,yawEuler rotation angles (ZYX-convention).
+
+
+ +
+
+ +

◆ Transform() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::Transform::Transform (float x,
float y,
float z,
float qx,
float qy,
float qz,
float qw 
)
+
+ +

Constructs a Transform from position and quaternion.

+
Parameters
+ + + +
x,y,zTranslation components.
qx,qy,qz,qwQuaternion rotation components.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ r11()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r11 () const
+
+inline
+
+ +

Rotation matrix element at row 1, col 1.

+ +

Definition at line 96 of file Transform.h.

+ +
+
+ +

◆ r12()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r12 () const
+
+inline
+
+ +

Definition at line 97 of file Transform.h.

+ +
+
+ +

◆ r13()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r13 () const
+
+inline
+
+ +

Definition at line 98 of file Transform.h.

+ +
+
+ +

◆ r21()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r21 () const
+
+inline
+
+ +

Definition at line 99 of file Transform.h.

+ +
+
+ +

◆ r22()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r22 () const
+
+inline
+
+ +

Definition at line 100 of file Transform.h.

+ +
+
+ +

◆ r23()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r23 () const
+
+inline
+
+ +

Definition at line 101 of file Transform.h.

+ +
+
+ +

◆ r31()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r31 () const
+
+inline
+
+ +

Definition at line 102 of file Transform.h.

+ +
+
+ +

◆ r32()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r32 () const
+
+inline
+
+ +

Definition at line 103 of file Transform.h.

+ +
+
+ +

◆ r33()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::r33 () const
+
+inline
+
+ +

Definition at line 104 of file Transform.h.

+ +
+
+ +

◆ o14()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::o14 () const
+
+inline
+
+ +

Translation x.

+ +

Definition at line 106 of file Transform.h.

+ +
+
+ +

◆ o24()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::o24 () const
+
+inline
+
+ +

Translation y.

+ +

Definition at line 107 of file Transform.h.

+ +
+
+ +

◆ o34()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::Transform::o34 () const
+
+inline
+
+ +

Translation z.

+ +

Definition at line 108 of file Transform.h.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
float & rtabmap::Transform::operator[] (int index)
+
+inline
+
+ +

Definition at line 110 of file Transform.h.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const float & rtabmap::Transform::operator[] (int index) const
+
+inline
+
+ +

Definition at line 111 of file Transform.h.

+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float & rtabmap::Transform::operator() (int row,
int col 
)
+
+inline
+
+ +

Definition at line 112 of file Transform.h.

+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const float & rtabmap::Transform::operator() (int row,
int col 
) const
+
+inline
+
+ +

Definition at line 113 of file Transform.h.

+ +
+
+ +

◆ dataMatrix()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::Transform::dataMatrix () const
+
+inline
+
+ +

Returns the internal OpenCV matrix (3x4).

+ +

Definition at line 136 of file Transform.h.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
const float * rtabmap::Transform::data () const
+
+inline
+
+ +

Returns a pointer to the raw data (12 floats).

+ +

Definition at line 140 of file Transform.h.

+ +
+
+ +

◆ data() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
float * rtabmap::Transform::data ()
+
+inline
+
+ +

Definition at line 141 of file Transform.h.

+ +
+
+ +

◆ size()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::Transform::size () const
+
+inline
+
+ +

Returns the number of float elements (always 12).

+ +

Definition at line 146 of file Transform.h.

+ +
+
+ +

◆ x() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
float & rtabmap::Transform::x ()
+
+inline
+
+ +

Translation getters/setters.

+

Translation x

+ +

Definition at line 149 of file Transform.h.

+ +
+
+ +

◆ y() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
float & rtabmap::Transform::y ()
+
+inline
+
+ +

Translation y.

+ +

Definition at line 150 of file Transform.h.

+ +
+
+ +

◆ z() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
float & rtabmap::Transform::z ()
+
+inline
+
+ +

Translation z.

+ +

Definition at line 151 of file Transform.h.

+ +
+
+ +

◆ x() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const float & rtabmap::Transform::x () const
+
+inline
+
+ +

Definition at line 152 of file Transform.h.

+ +
+
+ +

◆ y() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const float & rtabmap::Transform::y () const
+
+inline
+
+ +

Definition at line 153 of file Transform.h.

+ +
+
+ +

◆ z() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const float & rtabmap::Transform::z () const
+
+inline
+
+ +

Definition at line 154 of file Transform.h.

+ +
+
+ +

◆ interpolate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Transform rtabmap::Transform::interpolate (float t,
const Transform & other 
) const
+
+ +

Interpolates between this and another transform.

+
Parameters
+ + + +
tInterpolation factor [0, 1].
otherTarget transform.
+
+
+ +
+
+ +

◆ opengl_T_rtabmap()

+ +
+
+ + + + + +
+ + + + + + + +
static Transform rtabmap::Transform::opengl_T_rtabmap ()
+
+inlinestatic
+
+ +

Returns the transform from RTAB-Map to OpenGL coordinate system.

+
Note
Coordinate systems:
    +
  • OpenGL: x → right, y → up, z → out of the screen (toward viewer).
  • +
  • RTAB-Map: x → forward, y → left, z → up.
  • +
+
+ +

Definition at line 289 of file Transform.h.

+ +
+
+ +

◆ rtabmap_T_opengl()

+ +
+
+ + + + + +
+ + + + + + + +
static Transform rtabmap::Transform::rtabmap_T_opengl ()
+
+inlinestatic
+
+ +

Returns the transform from OpenGL to RTAB-Map coordinate system.

+
Note
Coordinate systems:
    +
  • OpenGL: x → right, y → up, z → out of the screen (toward viewer).
  • +
  • RTAB-Map: x → forward, y → left, z → up.
  • +
+
+ +

Definition at line 299 of file Transform.h.

+ +
+
+ +

◆ fromString()

+ +
+
+ + + + + +
+ + + + + + + + +
static Transform rtabmap::Transform::fromString (const std::string & string)
+
+static
+
+ +

Parses a transform from a string representation. Supported formats:

+
    +
  • (3 values) "x y z"
  • +
  • (6 values) "x y z roll pitch yaw" (ZYX-Euler convention)
  • +
  • (7 values) "x y z qx qy qz qw"
  • +
  • (9 values, 3x3 rotation) "r11 r12 r13 r21 r22 r23 r31 r32 r33"
  • +
+

(12 values, 3x4 rotation) "r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz"

+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Transform rtabmap::Transform::getTransform (const std::map< double, Transform > & tfBuffer,
const double & stamp 
)
+
+static
+
+ +

Retrieves the transform to a given timestamp.

+
Parameters
+ + + +
tfBufferBuffer of timestamped transforms.
stampRequested timestamp.
+
+
+
Returns
transform at the requested timestamp, interpolated if it doesn't fall on a transform with the exact same timestamp in the buffer. If the timestamp is older than the oldest timestamp or newer than the latest timestamp in the buffer, a null transform is returned and a warning message is generated.
+ +
+
+ +

◆ getClosestTransform()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static RTABMAP_DEPRECATED Transform rtabmap::Transform::getClosestTransform (const std::map< double, Transform > & tfBuffer,
const double & stamp,
double * stampDiff 
)
+
+static
+
+
Deprecated:
Use getTransform() instead.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1Transform.js b/preview/pr-1773/api/latest/classrtabmap_1_1Transform.js new file mode 100644 index 00000000..1801fe92 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1Transform.js @@ -0,0 +1,47 @@ +var classrtabmap_1_1Transform = +[ + [ "Transform", "classrtabmap_1_1Transform.html#ac3654d3f6802d4b0c17b6110d1eda71a", null ], + [ "Transform", "classrtabmap_1_1Transform.html#a9b89b8bbe9cd75986bcb1ba6ceb5b9cd", null ], + [ "Transform", "classrtabmap_1_1Transform.html#a82b851897ce2ca729d62fb92dcc48b9f", null ], + [ "Transform", "classrtabmap_1_1Transform.html#a1023adcd1e5d65647e6eda50160c3474", null ], + [ "Transform", "classrtabmap_1_1Transform.html#af471c17a5e411db55813b766727830f4", null ], + [ "Transform", "classrtabmap_1_1Transform.html#af434ccbc426920a1b35ecbf4eec226e7", null ], + [ "clone", "classrtabmap_1_1Transform.html#a93af73b3a388d66293d007cb164b2198", null ], + [ "r11", "classrtabmap_1_1Transform.html#a1ea4c945ccf717677606fc7fe0331ccf", null ], + [ "o14", "classrtabmap_1_1Transform.html#adbdb9063808e63830cbcbd99e1e84d3d", null ], + [ "o24", "classrtabmap_1_1Transform.html#aa68c9c3b75ad7b66ca8bbf66742b0cc5", null ], + [ "o34", "classrtabmap_1_1Transform.html#a39184351ff5625030b6d1019c0e3d93f", null ], + [ "isNull", "classrtabmap_1_1Transform.html#a0d6a1985391a45de4fe208e58c51b9d2", null ], + [ "isIdentity", "classrtabmap_1_1Transform.html#ae0636052ce31698d4d45afe4492ffab9", null ], + [ "setNull", "classrtabmap_1_1Transform.html#af0020cf4093b8b1a3d1f68ee657b3662", null ], + [ "setIdentity", "classrtabmap_1_1Transform.html#afe833cfcd56f2f147091e7d309dadb36", null ], + [ "dataMatrix", "classrtabmap_1_1Transform.html#aac41c119a4602f70494380303fe5d277", null ], + [ "data", "classrtabmap_1_1Transform.html#a8db5709fa16ae937c5221b6e8bbbf364", null ], + [ "size", "classrtabmap_1_1Transform.html#a2cdd55b67e206a287e7bf4d248fb5256", null ], + [ "x", "classrtabmap_1_1Transform.html#a5173dd4491ea0796180d1eb0f88a6762", null ], + [ "y", "classrtabmap_1_1Transform.html#acbb0afe7eb39181f85c2f9734352d6a9", null ], + [ "z", "classrtabmap_1_1Transform.html#af90acc40bed06ab96468fd17585f1944", null ], + [ "theta", "classrtabmap_1_1Transform.html#acc7f19107da9b048a43497f93dd39582", null ], + [ "isInvertible", "classrtabmap_1_1Transform.html#addc1c06517c7308f00bd54b5744aa959", null ], + [ "inverse", "classrtabmap_1_1Transform.html#a71ff72d5731d252a87a19c63e3890e3a", null ], + [ "rotation", "classrtabmap_1_1Transform.html#aeed78122de7f78a13641802b964d9631", null ], + [ "translation", "classrtabmap_1_1Transform.html#aeeb0bbe0e84a9e46f63086c3ff4d4e0e", null ], + [ "to3DoF", "classrtabmap_1_1Transform.html#a3a1b7b3d9f2db760b8eff9f3f90cd405", null ], + [ "to4DoF", "classrtabmap_1_1Transform.html#a9b0c23cbc2d0938b8da638930cb109de", null ], + [ "is3DoF", "classrtabmap_1_1Transform.html#a61c6a6acf6b149caa67918331d73004a", null ], + [ "is4DoF", "classrtabmap_1_1Transform.html#adaa07bac5d863d028d277b84880aeaab", null ], + [ "rotationMatrix", "classrtabmap_1_1Transform.html#a23dfabecb7b2ad9c6a7fdcde08d900ab", null ], + [ "translationMatrix", "classrtabmap_1_1Transform.html#a6a7bb81847554509d1128238860c047e", null ], + [ "getTranslationAndEulerAngles", "classrtabmap_1_1Transform.html#aad65adff491fd57a31dbe4e26d7f29af", null ], + [ "getEulerAngles", "classrtabmap_1_1Transform.html#adf2345af30927b656ceca938ec4d0525", null ], + [ "getTranslation", "classrtabmap_1_1Transform.html#a3393daecc17559c66156ba3eb0711875", null ], + [ "getAngle", "classrtabmap_1_1Transform.html#abd0f443c22c295cfe85e2402516defcc", null ], + [ "getNorm", "classrtabmap_1_1Transform.html#af3c46b76fe855b0334a7f255792a6082", null ], + [ "getNormSquared", "classrtabmap_1_1Transform.html#aee7765828eb454015b4deb72d70a034a", null ], + [ "getDistance", "classrtabmap_1_1Transform.html#ade8f4e91576b320690741efa817bd7ad", null ], + [ "getDistanceSquared", "classrtabmap_1_1Transform.html#ae311741cc884ca8f5343bc2710b96a0b", null ], + [ "interpolate", "classrtabmap_1_1Transform.html#af42b1c945a7fee57a26207fb96b7143d", null ], + [ "normalizeRotation", "classrtabmap_1_1Transform.html#acbdd19971643c7400cb59055ec64d3cf", null ], + [ "prettyPrint", "classrtabmap_1_1Transform.html#a61ff0bf933e0e7f220f20745df3d0818", null ], + [ "operator*", "classrtabmap_1_1Transform.html#a4d70ff21bbb61cd65c2d00130d8f84a7", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped-members.html new file mode 100644 index 00000000..b3a4489c --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped-members.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::TransformStamped Member List
+
+
+ +

This is the complete list of members for rtabmap::TransformStamped, including all inherited members.

+ + + + +
stamp() const (defined in rtabmap::TransformStamped)rtabmap::TransformStampedinline
transform() const (defined in rtabmap::TransformStamped)rtabmap::TransformStampedinline
TransformStamped(const Transform &transform, const double &stamp) (defined in rtabmap::TransformStamped)rtabmap::TransformStampedinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped.html b/preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped.html new file mode 100644 index 00000000..9e56869f --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1TransformStamped.html @@ -0,0 +1,233 @@ + + + + + + + + +RTAB-Map: rtabmap::TransformStamped Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::TransformStamped Class Reference
+
+
+ +

Associates a transform with a timestamp. + More...

+ +

#include <Transform.h>

+ + + + + + + + +

+Public Member Functions

 TransformStamped (const Transform &transform, const double &stamp)
 
const Transform & transform () const
 
const double & stamp () const
 
+

Detailed Description

+

Associates a transform with a timestamp.

+ +

Definition at line 352 of file Transform.h.

+

Constructor & Destructor Documentation

+ +

◆ TransformStamped()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rtabmap::TransformStamped::TransformStamped (const Transform & transform,
const double & stamp 
)
+
+inline
+
+ +

Definition at line 355 of file Transform.h.

+ +
+
+

Member Function Documentation

+ +

◆ transform()

+ +
+
+ + + + + +
+ + + + + + + +
const Transform & rtabmap::TransformStamped::transform () const
+
+inline
+
+ +

Definition at line 359 of file Transform.h.

+ +
+
+ +

◆ stamp()

+ +
+
+ + + + + +
+ + + + + + + +
const double & rtabmap::TransformStamped::stamp () const
+
+inline
+
+ +

Definition at line 360 of file Transform.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent-members.html new file mode 100644 index 00000000..757a630a --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent-members.html @@ -0,0 +1,123 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::UserDataEvent Member List
+
+
+ +

This is the complete list of members for rtabmap::UserDataEvent, including all inherited members.

+ + + + + + + + +
data() const (defined in rtabmap::UserDataEvent)rtabmap::UserDataEventinline
getClassName() constrtabmap::UserDataEventinlinevirtual
getCode() constUEventinline
UEvent(int code=0)UEventinlineprotected
UserDataEvent(const cv::Mat &data) (defined in rtabmap::UserDataEvent)rtabmap::UserDataEventinline
~UEvent() (defined in UEvent)UEventinlinevirtual
~UserDataEvent() (defined in rtabmap::UserDataEvent)rtabmap::UserDataEventinline
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.html b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.html new file mode 100644 index 00000000..eafe3abb --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.html @@ -0,0 +1,279 @@ + + + + + + + + +RTAB-Map: rtabmap::UserDataEvent Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::UserDataEvent Class Reference
+
+
+ +

#include <UserDataEvent.h>

+
+Inheritance diagram for rtabmap::UserDataEvent:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for rtabmap::UserDataEvent:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

 UserDataEvent (const cv::Mat &data)
 
virtual std::string getClassName () const
 
const cv::Mat & data () const
 
- Public Member Functions inherited from UEvent
int getCode () const
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from UEvent
 UEvent (int code=0)
 
+

Detailed Description

+

The user data event.

+ +

Definition at line 40 of file UserDataEvent.h.

+

Constructor & Destructor Documentation

+ +

◆ UserDataEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
rtabmap::UserDataEvent::UserDataEvent (const cv::Mat & data)
+
+inline
+
+ +

Definition at line 43 of file UserDataEvent.h.

+ +
+
+ +

◆ ~UserDataEvent()

+ +
+
+ + + + + +
+ + + + + + + +
rtabmap::UserDataEvent::~UserDataEvent ()
+
+inline
+
+ +

Definition at line 47 of file UserDataEvent.h.

+ +
+
+

Member Function Documentation

+ +

◆ getClassName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string rtabmap::UserDataEvent::getClassName () const
+
+inlinevirtual
+
+

This method is used to get the class name of the event. For example, if a class MouseEvent inherits from UEvent, it must return the "MouseEvent" string.

Returns
the class name
+ +

Implements UEvent.

+ +

Definition at line 48 of file UserDataEvent.h.

+ +
+
+ +

◆ data()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::UserDataEvent::data () const
+
+inline
+
+ +

Definition at line 50 of file UserDataEvent.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.js b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.js new file mode 100644 index 00000000..7a995b85 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent.js @@ -0,0 +1,4 @@ +var classrtabmap_1_1UserDataEvent = +[ + [ "getClassName", "classrtabmap_1_1UserDataEvent.html#a26248169380397c47377310d61090385", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.map b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.map new file mode 100644 index 00000000..2012223d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.md5 new file mode 100644 index 00000000..a22c3218 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.md5 @@ -0,0 +1 @@ +fbe4874b0beb1b671a3d9cf8f5a5b851 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..21a37ba00527eafe10ccad5ac3cbf0c376cf6516 GIT binary patch literal 4033 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 + + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.md5 b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.md5 new file mode 100644 index 00000000..a22c3218 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.md5 @@ -0,0 +1 @@ +fbe4874b0beb1b671a3d9cf8f5a5b851 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.png b/preview/pr-1773/api/latest/classrtabmap_1_1UserDataEvent__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..21a37ba00527eafe10ccad5ac3cbf0c376cf6516 GIT binary patch literal 4033 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 + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::VWDictionary Member List
+
+
+ +

This is the complete list of members for rtabmap::VWDictionary, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_totalActiveReferencesrtabmap::VWDictionaryprotected
_visualWordsrtabmap::VWDictionaryprotected
addNewWords(const cv::Mat &descriptors, int signatureId)rtabmap::VWDictionaryvirtual
addWord(VisualWord *vw)rtabmap::VWDictionaryvirtual
addWordRef(int wordId, int signatureId)rtabmap::VWDictionary
clear(bool printWarningsIfNotEmpty=true)rtabmap::VWDictionary
convert32FToBin(const cv::Mat &descriptorsIn, bool byteToFloat=true)rtabmap::VWDictionarystatic
convertBinTo32F(const cv::Mat &descriptorsIn, bool byteToFloat=true)rtabmap::VWDictionarystatic
deleteUnusedWords()rtabmap::VWDictionary
deserializeIndex(const std::vector< unsigned char > &data)rtabmap::VWDictionary
deserializeIndex(const unsigned char *data, size_t size)rtabmap::VWDictionary
exportDictionary(const char *fileNameReferences, const char *fileNameDescriptors) constrtabmap::VWDictionary
findNN(const std::list< VisualWord * > &vws) constrtabmap::VWDictionary
findNN(const cv::Mat &descriptors) constrtabmap::VWDictionary
getIndexedWordsCount() constrtabmap::VWDictionary
getIndexMemoryUsed() constrtabmap::VWDictionary
getLastIndexedWordId() constrtabmap::VWDictionary
getMemoryUsed() constrtabmap::VWDictionary
getNextId()rtabmap::VWDictionaryprotected
getNndrRatio() constrtabmap::VWDictionaryinline
getNNStrategy() constrtabmap::VWDictionaryinline
getNotIndexedWordsCount() constrtabmap::VWDictionaryinline
getTotalActiveReferences() constrtabmap::VWDictionaryinline
getUnusedWord(int id) constrtabmap::VWDictionary
getUnusedWordIds() constrtabmap::VWDictionary
getUnusedWords() constrtabmap::VWDictionary
getUnusedWordsSize() constrtabmap::VWDictionaryinline
getVisualWords() constrtabmap::VWDictionaryinline
getWord(int id) constrtabmap::VWDictionary
ID_INVALIDrtabmap::VWDictionarystatic
ID_STARTrtabmap::VWDictionarystatic
isIncremental() constrtabmap::VWDictionaryinline
isIncrementalFlann() constrtabmap::VWDictionaryinline
isModified() constrtabmap::VWDictionary
kNNBruteForce enum valuertabmap::VWDictionary
kNNBruteForceGPU enum valuertabmap::VWDictionary
kNNFlannKdTree enum valuertabmap::VWDictionary
kNNFlannKdTreeSingle enum valuertabmap::VWDictionary
kNNFlannLSH enum valuertabmap::VWDictionary
kNNFlannNaive enum valuertabmap::VWDictionary
kNNNanoFlannKdTree enum valuertabmap::VWDictionary
kNNUndef enum valuertabmap::VWDictionary
NNStrategy enum namertabmap::VWDictionary
nnStrategyName(NNStrategy strategy)rtabmap::VWDictionaryinlinestatic
parseParameters(const ParametersMap &parameters)rtabmap::VWDictionaryvirtual
rebuildIndex() (defined in rtabmap::VWDictionary)rtabmap::VWDictionary
removeAllWordRef(int wordId, int signatureId)rtabmap::VWDictionary
removeWords(const std::vector< VisualWord * > &words)rtabmap::VWDictionary
serializeIndex() constrtabmap::VWDictionary
setFixedDictionary(const std::string &dictionaryPath)rtabmap::VWDictionary
setIncrementalDictionary()rtabmap::VWDictionary
setLastWordId(int id)rtabmap::VWDictionaryinline
setNNStrategy(NNStrategy strategy)rtabmap::VWDictionary
update()rtabmap::VWDictionaryvirtual
VWDictionary(const ParametersMap &parameters=ParametersMap())rtabmap::VWDictionary
~VWDictionary()rtabmap::VWDictionaryvirtual
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.html b/preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.html new file mode 100644 index 00000000..a72412d6 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.html @@ -0,0 +1,1706 @@ + + + + + + + + +RTAB-Map: rtabmap::VWDictionary Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Manages a dictionary of visual words for visual place recognition and loop closure detection. + More...

+ +

#include <VWDictionary.h>

+ + + + + +

+Public Types

enum  NNStrategy {
+  kNNFlannNaive +, kNNFlannKdTree +, kNNFlannLSH +, kNNBruteForce +,
+  kNNBruteForceGPU +, kNNFlannKdTreeSingle +, kNNNanoFlannKdTree +, kNNUndef +
+ }
 Nearest neighbor search strategies for descriptor matching. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 VWDictionary (const ParametersMap &parameters=ParametersMap())
 Constructor.
 
virtual ~VWDictionary ()
 Destructor.
 
virtual void parseParameters (const ParametersMap &parameters)
 Parse and apply parameters from a parameters map.
 
virtual void update ()
 Update the search index with newly added words.
 
virtual std::list< int > addNewWords (const cv::Mat &descriptors, int signatureId)
 Add new visual words from descriptors.
 
virtual void addWord (VisualWord *vw)
 Add an existing visual word to the dictionary.
 
std::vector< int > findNN (const std::list< VisualWord * > &vws) const
 Find nearest neighbor visual word IDs for a list of visual words.
 
std::vector< int > findNN (const cv::Mat &descriptors) const
 Find nearest neighbor visual word IDs for descriptors.
 
bool addWordRef (int wordId, int signatureId)
 Add a reference from a visual word to a signature.
 
void removeAllWordRef (int wordId, int signatureId)
 Remove all references from a visual word to a signature.
 
const VisualWord * getWord (int id) const
 Get a visual word by ID.
 
VisualWord * getUnusedWord (int id) const
 Get an unused visual word by ID.
 
void setLastWordId (int id)
 Set the last word ID (used when loading from database)
 
const std::map< int, VisualWord * > & getVisualWords () const
 Get all visual words.
 
float getNndrRatio () const
 Get the Nearest Neighbor Distance Ratio (NNDR) threshold.
 
unsigned int getNotIndexedWordsCount () const
 Get the count of words not yet indexed in the search tree.
 
int getLastIndexedWordId () const
 Get the ID of the last indexed word.
 
int getTotalActiveReferences () const
 Get the total number of active word-to-signature references.
 
unsigned int getIndexedWordsCount () const
 Get the count of words currently indexed in the search tree.
 
unsigned int getIndexMemoryUsed () const
 Get the memory used by the search index.
 
unsigned long getMemoryUsed () const
 Get the total memory used by the dictionary.
 
bool setNNStrategy (NNStrategy strategy)
 Set the nearest neighbor search strategy.
 
NNStrategy getNNStrategy () const
 Get the current nearest neighbor search strategy.
 
bool isIncremental () const
 Check if the dictionary is in incremental mode.
 
bool isIncrementalFlann () const
 Check if FLANN index is updated incrementally.
 
void setIncrementalDictionary ()
 Set the dictionary to incremental mode.
 
void setFixedDictionary (const std::string &dictionaryPath)
 Set the dictionary to fixed mode and load from file.
 
bool isModified () const
 Check if the dictionary has been modified since last save.
 
+void rebuildIndex ()
 
std::vector< unsigned char > serializeIndex () const
 Serialize the search index to a byte vector.
 
bool deserializeIndex (const std::vector< unsigned char > &data)
 Deserialize the search index from a byte vector.
 
bool deserializeIndex (const unsigned char *data, size_t size)
 Deserialize the search index from raw bytes.
 
void exportDictionary (const char *fileNameReferences, const char *fileNameDescriptors) const
 Export the dictionary to files.
 
void clear (bool printWarningsIfNotEmpty=true)
 Clear all visual words and reset the dictionary.
 
std::vector< VisualWord * > getUnusedWords () const
 Get all unused visual words.
 
std::vector< int > getUnusedWordIds () const
 Get IDs of all unused visual words.
 
unsigned int getUnusedWordsSize () const
 Get the count of unused visual words.
 
void removeWords (const std::vector< VisualWord * > &words)
 Remove words from the dictionary.
 
void deleteUnusedWords ()
 Delete all unused visual words.
 
+ + + + + + + + + + +

+Static Public Member Functions

static std::string nnStrategyName (NNStrategy strategy)
 Get the name of a nearest neighbor strategy.
 
static cv::Mat convertBinTo32F (const cv::Mat &descriptorsIn, bool byteToFloat=true)
 Convert binary descriptors to 32-bit float format.
 
static cv::Mat convert32FToBin (const cv::Mat &descriptorsIn, bool byteToFloat=true)
 Convert 32-bit float descriptors to binary format.
 
+ + + + + + + +

+Static Public Attributes

static const int ID_START
 Starting ID for visual words (typically 1)
 
static const int ID_INVALID
 Invalid visual word ID (typically 0)
 
+ + + + +

+Protected Member Functions

int getNextId ()
 Get the next available visual word ID.
 
+ + + + + + + +

+Protected Attributes

std::map< int, VisualWord * > _visualWords
 Map of visual word ID to VisualWord pointer.
 
int _totalActiveReferences
 Total count of active word-to-signature references.
 
+

Detailed Description

+

Manages a dictionary of visual words for visual place recognition and loop closure detection.

+

The VWDictionary class maintains a collection of visual words (feature descriptors) and provides efficient nearest neighbor search capabilities. It supports both incremental and fixed dictionary modes:

    +
  • Incremental mode: New visual words are added dynamically as new images are processed
  • +
  • Fixed mode: A pre-computed dictionary is loaded from a file
  • +
+

The class uses various nearest neighbor search strategies (FLANN, brute force, GPU-accelerated) to match descriptors efficiently. It tracks word references to signatures (images) and manages unused words for memory optimization.

+
Note
Visual words are identified by unique integer IDs starting from VWDictionary::ID_START
+ +

Definition at line 65 of file VWDictionary.h.

+

Member Enumeration Documentation

+ +

◆ NNStrategy

+ +
+
+ +

Nearest neighbor search strategies for descriptor matching.

+

The values are those of the Kp/NNStrategy parameter, saved in user configurations and databases: append, never renumber. The Vis/CorNNType parameter has strategies of its own, its values are mapped to these ones by RegistrationVis::nnStrategyFromCorNNType().

+ + + + + + + + + +
Enumerator
kNNFlannNaive 

FLANN naive search (exhaustive)

+
kNNFlannKdTree 

FLANN kd-tree index (fast for high-dimensional descriptors)

+
kNNFlannLSH 

FLANN Locality-Sensitive Hashing (ideal for binary descriptors)

+
kNNBruteForce 

Brute force CPU search.

+
kNNBruteForceGPU 

Brute force GPU-accelerated search (requires CUDA)

+
kNNFlannKdTreeSingle 

FLANN single exact kd-tree index (rebuilt whenever a word is added, for an index built once)

+
kNNNanoFlannKdTree 

nanoflann kd-tree index (float descriptors only, incremental)

+
kNNUndef 

Undefined strategy.

+
+ +

Definition at line 77 of file VWDictionary.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ VWDictionary()

+ +
+
+ + + + + + + + +
rtabmap::VWDictionary::VWDictionary (const ParametersMap & parameters = ParametersMap())
+
+ +

Constructor.

+
Parameters
+ + +
parametersOptional parameters map to configure the dictionary
+
+
+ +
+
+ +

◆ ~VWDictionary()

+ +
+
+ + + + + +
+ + + + + + + +
virtual rtabmap::VWDictionary::~VWDictionary ()
+
+virtual
+
+ +

Destructor.

+

Clears all visual words and releases resources.

+ +
+
+

Member Function Documentation

+ +

◆ nnStrategyName()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string rtabmap::VWDictionary::nnStrategyName (NNStrategy strategy)
+
+inlinestatic
+
+ +

Get the name of a nearest neighbor strategy.

+
Parameters
+ + +
strategyThe strategy enum value
+
+
+
Returns
String representation of the strategy name
+ +

Definition at line 103 of file VWDictionary.h.

+ +
+
+ +

◆ parseParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::VWDictionary::parseParameters (const ParametersMap & parameters)
+
+virtual
+
+ +

Parse and apply parameters from a parameters map.

+
Parameters
+ + +
parametersParameters map containing configuration values
+
+
+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void rtabmap::VWDictionary::update ()
+
+virtual
+
+ +

Update the search index with newly added words.

+

This method rebuilds the nearest neighbor search index (FLANN, etc.) to include any words that were added but not yet indexed.

+ +
+
+ +

◆ addNewWords()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual std::list< int > rtabmap::VWDictionary::addNewWords (const cv::Mat & descriptors,
int signatureId 
)
+
+virtual
+
+ +

Add new visual words from descriptors.

+
Parameters
+ + + +
descriptorsMatrix of descriptors (one row per descriptor)
signatureIdID of the signature (image) these descriptors belong to
+
+
+
Returns
List of visual word IDs that were added or matched
+

For each descriptor, either matches it to an existing visual word (using nearest neighbor search with NNDR ratio) or creates a new visual word.

+
Note
If the dictionary is not incremental (fixed), NNDR is not applied and the closest existing visual word ID is always returned. If the dictionary is incremental, a new visual word is created if NNDR validation passes; otherwise, a reference to an existing visual word is added.
+ +
+
+ +

◆ addWord()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void rtabmap::VWDictionary::addWord (VisualWord * vw)
+
+virtual
+
+ +

Add an existing visual word to the dictionary.

+
Parameters
+ + +
vwPointer to the visual word to add (ownership is transferred)
+
+
+
Note
The dictionary takes ownership of the VisualWord object
+ +
+
+ +

◆ findNN() [1/2]

+ +
+
+ + + + + + + + +
std::vector< int > rtabmap::VWDictionary::findNN (const std::list< VisualWord * > & vws) const
+
+ +

Find nearest neighbor visual word IDs for a list of visual words.

+
Parameters
+ + +
vwsList of visual words to match
+
+
+
Returns
Vector of visual word IDs (one per input visual word)
+
Note
If the dictionary is not incremental (fixed), NNDR is not applied and the closest visual word ID is always returned. If the dictionary is incremental, a valid visual word ID is returned only if NNDR validation passes.
+ +
+
+ +

◆ findNN() [2/2]

+ +
+
+ + + + + + + + +
std::vector< int > rtabmap::VWDictionary::findNN (const cv::Mat & descriptors) const
+
+ +

Find nearest neighbor visual word IDs for descriptors.

+
Parameters
+ + +
descriptorsMatrix of descriptors (one row per descriptor)
+
+
+
Returns
Vector of visual word IDs (one per descriptor)
+
Note
If the dictionary is not incremental (fixed), NNDR is not applied and the closest visual word ID is always returned. If the dictionary is incremental, a valid visual word ID is returned only if NNDR validation passes.
+ +
+
+ +

◆ addWordRef()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::VWDictionary::addWordRef (int wordId,
int signatureId 
)
+
+ +

Add a reference from a visual word to a signature.

+
Parameters
+ + + +
wordIdID of the visual word
signatureIdID of the signature (image)
+
+
+
Returns
true if the word exists in the dictionary and the reference has been added, false otherwise
+

Tracks which signatures use which visual words. If the word was unused, it is removed from the unused words list.

+ +
+
+ +

◆ removeAllWordRef()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::VWDictionary::removeAllWordRef (int wordId,
int signatureId 
)
+
+ +

Remove all references from a visual word to a signature.

+
Parameters
+ + + +
wordIdID of the visual word
signatureIdID of the signature (image)
+
+
+

If the word has no more references after this operation, it is added to the unused words list.

+ +
+
+ +

◆ getWord()

+ +
+
+ + + + + + + + +
const VisualWord * rtabmap::VWDictionary::getWord (int id) const
+
+ +

Get a visual word by ID.

+
Parameters
+ + +
idVisual word ID
+
+
+
Returns
Pointer to the visual word, or nullptr if not found
+ +
+
+ +

◆ getUnusedWord()

+ +
+
+ + + + + + + + +
VisualWord * rtabmap::VWDictionary::getUnusedWord (int id) const
+
+ +

Get an unused visual word by ID.

+
Parameters
+ + +
idVisual word ID
+
+
+
Returns
Pointer to the unused visual word, or nullptr if not found or not unused
+
Note
Ownership of the returned visual word still belongs to the dictionary. To transfer ownership to the caller, removeWords() must be called on this word.
+ +
+
+ +

◆ setLastWordId()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::VWDictionary::setLastWordId (int id)
+
+inline
+
+ +

Set the last word ID (used when loading from database)

+
Parameters
+ + +
idLast word ID
+
+
+ +

Definition at line 245 of file VWDictionary.h.

+ +
+
+ +

◆ getVisualWords()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, VisualWord * > & rtabmap::VWDictionary::getVisualWords () const
+
+inline
+
+ +

Get all visual words.

+
Returns
Map of visual word ID to VisualWord pointer
+ +

Definition at line 251 of file VWDictionary.h.

+ +
+
+ +

◆ getNndrRatio()

+ +
+
+ + + + + +
+ + + + + + + +
float rtabmap::VWDictionary::getNndrRatio () const
+
+inline
+
+ +

Get the Nearest Neighbor Distance Ratio (NNDR) threshold.

+
Returns
NNDR ratio value
+

The NNDR ratio is used to determine if a descriptor matches an existing visual word. If the ratio of distances to the first and second nearest neighbors is below this threshold, a match is accepted.

+
Note
The NNDR method was introduced in "Distinctive Image Features +from Scale-Invariant Keypoints" by David Lowe (IJCV 2004).
+ +

Definition at line 264 of file VWDictionary.h.

+ +
+
+ +

◆ getNotIndexedWordsCount()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int rtabmap::VWDictionary::getNotIndexedWordsCount () const
+
+inline
+
+ +

Get the count of words not yet indexed in the search tree.

+
Returns
Number of words waiting to be indexed
+ +

Definition at line 270 of file VWDictionary.h.

+ +
+
+ +

◆ getLastIndexedWordId()

+ +
+
+ + + + + + + +
int rtabmap::VWDictionary::getLastIndexedWordId () const
+
+ +

Get the ID of the last indexed word.

+
Returns
Last indexed word ID, or 0 if no words are indexed
+ +
+
+ +

◆ getTotalActiveReferences()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::VWDictionary::getTotalActiveReferences () const
+
+inline
+
+ +

Get the total number of active word-to-signature references.

+
Returns
Total count of active references
+ +

Definition at line 282 of file VWDictionary.h.

+ +
+
+ +

◆ getIndexedWordsCount()

+ +
+
+ + + + + + + +
unsigned int rtabmap::VWDictionary::getIndexedWordsCount () const
+
+ +

Get the count of words currently indexed in the search tree.

+
Returns
Number of indexed words
+ +
+
+ +

◆ getIndexMemoryUsed()

+ +
+
+ + + + + + + +
unsigned int rtabmap::VWDictionary::getIndexMemoryUsed () const
+
+ +

Get the memory used by the search index.

+
Returns
Memory usage in kilobytes
+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + + + +
unsigned long rtabmap::VWDictionary::getMemoryUsed () const
+
+ +

Get the total memory used by the dictionary.

+
Returns
Memory usage in bytes
+ +
+
+ +

◆ setNNStrategy()

+ +
+
+ + + + + + + + +
bool rtabmap::VWDictionary::setNNStrategy (NNStrategy strategy)
+
+ +

Set the nearest neighbor search strategy.

+
Parameters
+ + +
strategyThe strategy to use
+
+
+
Returns
true if the search tree was re-initialized (strategy changed), false otherwise
+

Changing the strategy will rebuild the search index if words are already indexed.

+ +
+
+ +

◆ getNNStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
NNStrategy rtabmap::VWDictionary::getNNStrategy () const
+
+inline
+
+ +

Get the current nearest neighbor search strategy.

+
Returns
The current NNStrategy
+ +

Definition at line 315 of file VWDictionary.h.

+ +
+
+ +

◆ isIncremental()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::VWDictionary::isIncremental () const
+
+inline
+
+ +

Check if the dictionary is in incremental mode.

+
Returns
true if incremental, false if fixed
+ +

Definition at line 321 of file VWDictionary.h.

+ +
+
+ +

◆ isIncrementalFlann()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::VWDictionary::isIncrementalFlann () const
+
+inline
+
+ +

Check if FLANN index is updated incrementally.

+
Returns
true if incremental FLANN updates are enabled
+ +

Definition at line 327 of file VWDictionary.h.

+ +
+
+ +

◆ setIncrementalDictionary()

+ +
+
+ + + + + + + +
void rtabmap::VWDictionary::setIncrementalDictionary ()
+
+ +

Set the dictionary to incremental mode.

+

In incremental mode, new visual words can be added dynamically. This cannot be called if a fixed dictionary is already loaded.

+ +
+
+ +

◆ setFixedDictionary()

+ +
+
+ + + + + + + + +
void rtabmap::VWDictionary::setFixedDictionary (const std::string & dictionaryPath)
+
+ +

Set the dictionary to fixed mode and load from file.

+
Parameters
+ + +
dictionaryPathPath to the dictionary file (.txt or .db format)
+
+
+

Loads a pre-computed dictionary from a file. The dictionary file format in txt format should be: one line per visual word, with word ID followed by descriptor values. This cannot be called if words are already in the dictionary.

+ +
+
+ +

◆ isModified()

+ +
+
+ + + + + + + +
bool rtabmap::VWDictionary::isModified () const
+
+ +

Check if the dictionary has been modified since last save.

+
Returns
true if modified, false otherwise
+ +
+
+ +

◆ serializeIndex()

+ +
+
+ + + + + + + +
std::vector< unsigned char > rtabmap::VWDictionary::serializeIndex () const
+
+ +

Serialize the search index to a byte vector.

+
Returns
Serialized index data
+ +
+
+ +

◆ deserializeIndex() [1/2]

+ +
+
+ + + + + + + + +
bool rtabmap::VWDictionary::deserializeIndex (const std::vector< unsigned char > & data)
+
+ +

Deserialize the search index from a byte vector.

+
Parameters
+ + +
dataSerialized index data
+
+
+
Returns
true if deserialization was successful, false otherwise
+ +
+
+ +

◆ deserializeIndex() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool rtabmap::VWDictionary::deserializeIndex (const unsigned char * data,
size_t size 
)
+
+ +

Deserialize the search index from raw bytes.

+
Parameters
+ + + +
dataPointer to serialized index data
sizeSize of the data in bytes
+
+
+
Returns
true if deserialization was successful, false otherwise
+ +
+
+ +

◆ exportDictionary()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void rtabmap::VWDictionary::exportDictionary (const char * fileNameReferences,
const char * fileNameDescriptors 
) const
+
+ +

Export the dictionary to files.

+
Parameters
+ + + +
fileNameReferencesPath to file for word-to-signature references
fileNameDescriptorsPath to file for visual word descriptors
+
+
+

Exports the dictionary in a format that can be loaded later.

+ +
+
+ +

◆ clear()

+ +
+
+ + + + + + + + +
void rtabmap::VWDictionary::clear (bool printWarningsIfNotEmpty = true)
+
+ +

Clear all visual words and reset the dictionary.

+
Parameters
+ + +
printWarningsIfNotEmptyIf true, print warnings if dictionary is not empty
+
+
+

Deletes all visual words and releases all resources.

+ +
+
+ +

◆ getUnusedWords()

+ +
+
+ + + + + + + +
std::vector< VisualWord * > rtabmap::VWDictionary::getUnusedWords () const
+
+ +

Get all unused visual words.

+
Returns
Vector of pointers to unused visual words
+

Unused words are visual words that have no references to any signatures.

+
Note
Ownership of the returned visual words still belongs to the dictionary. To transfer ownership to the caller, removeWords() must be called on these words.
+ +
+
+ +

◆ getUnusedWordIds()

+ +
+
+ + + + + + + +
std::vector< int > rtabmap::VWDictionary::getUnusedWordIds () const
+
+ +

Get IDs of all unused visual words.

+
Returns
Vector of unused word IDs
+ +
+
+ +

◆ getUnusedWordsSize()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int rtabmap::VWDictionary::getUnusedWordsSize () const
+
+inline
+
+ +

Get the count of unused visual words.

+
Returns
Number of unused words
+ +

Definition at line 417 of file VWDictionary.h.

+ +
+
+ +

◆ removeWords()

+ +
+
+ + + + + + + + +
void rtabmap::VWDictionary::removeWords (const std::vector< VisualWord * > & words)
+
+ +

Remove words from the dictionary.

+
Parameters
+ + +
wordsVector of visual word pointers to remove
+
+
+
Note
The caller is responsible for deleting the VisualWord objects
+ +
+
+ +

◆ deleteUnusedWords()

+ +
+
+ + + + + + + +
void rtabmap::VWDictionary::deleteUnusedWords ()
+
+ +

Delete all unused visual words.

+

Removes and deletes visual words that have no references to any signatures.

+ +
+
+ +

◆ convertBinTo32F()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static cv::Mat rtabmap::VWDictionary::convertBinTo32F (const cv::Mat & descriptorsIn,
bool byteToFloat = true 
)
+
+static
+
+ +

Convert binary descriptors to 32-bit float format.

+
Parameters
+ + + +
descriptorsInInput descriptors (CV_8UC1 for binary, or CV_32FC1 for float)
byteToFloatConversion mode:
    +
  • If true: Simple type conversion from CV_8UC1 to CV_32FC1 using OpenCV's convertTo(). Each byte value becomes a float value (output dimensions unchanged).
  • +
  • If false: Bit-by-bit expansion for binary descriptors (e.g., ORB, BRIEF). Each input byte (8 bits) is expanded into 8 float values (0.0f or 1.0f), one per bit. Output has 8x the number of columns (e.g., 32 bytes -> 256 floats).
  • +
+
+
+
+
Returns
Descriptors in 32-bit float format (CV_32FC1)
+ +
+
+ +

◆ convert32FToBin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static cv::Mat rtabmap::VWDictionary::convert32FToBin (const cv::Mat & descriptorsIn,
bool byteToFloat = true 
)
+
+static
+
+ +

Convert 32-bit float descriptors to binary format.

+
Parameters
+ + + +
descriptorsInInput descriptors (CV_32FC1)
byteToFloatConversion mode:
    +
  • If true: Simple type conversion from CV_32FC1 to CV_8UC1 using OpenCV's convertTo(). Each float value becomes a byte value (output dimensions unchanged).
  • +
  • If false: Bit-by-bit packing for binary descriptors. Each group of 8 float values (0.0f or 1.0f) is packed into 1 byte (8 bits), one bit per float. Input must have columns divisible by 8. Output has 1/8 the number of columns (e.g., 256 floats -> 32 bytes).
  • +
+
+
+
+
Returns
Descriptors in binary format (CV_8UC1)
+ +
+
+ +

◆ getNextId()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::VWDictionary::getNextId ()
+
+protected
+
+ +

Get the next available visual word ID.

+
Returns
Next unique word ID
+ +
+
+

Member Data Documentation

+ +

◆ ID_START

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::VWDictionary::ID_START
+
+static
+
+ +

Starting ID for visual words (typically 1)

+ +

Definition at line 91 of file VWDictionary.h.

+ +
+
+ +

◆ ID_INVALID

+ +
+
+ + + + + +
+ + + + +
const int rtabmap::VWDictionary::ID_INVALID
+
+static
+
+ +

Invalid visual word ID (typically 0)

+ +

Definition at line 96 of file VWDictionary.h.

+ +
+
+ +

◆ _visualWords

+ +
+
+ + + + + +
+ + + + +
std::map<int, VisualWord *> rtabmap::VWDictionary::_visualWords
+
+protected
+
+ +

Map of visual word ID to VisualWord pointer.

+
Note
All visual words (used and unused) are stored here
+ +

Definition at line 474 of file VWDictionary.h.

+ +
+
+ +

◆ _totalActiveReferences

+ +
+
+ + + + + +
+ + + + +
int rtabmap::VWDictionary::_totalActiveReferences
+
+protected
+
+ +

Total count of active word-to-signature references.

+
Note
Used to track all references for updating common signatures
+ +

Definition at line 480 of file VWDictionary.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.js b/preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.js new file mode 100644 index 00000000..1598b00d --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1VWDictionary.js @@ -0,0 +1,54 @@ +var classrtabmap_1_1VWDictionary = +[ + [ "NNStrategy", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655", [ + [ "kNNFlannNaive", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655ae4301e202dd36e997bf3298390c667f0", null ], + [ "kNNFlannKdTree", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655aaa1ea80fc9ca8809ad9b959e2e1564c5", null ], + [ "kNNFlannLSH", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a89ab72d0bccd61bb11abbd1edf1e6992", null ], + [ "kNNBruteForce", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a1745dd334296b8a41cf0c88dcc8a7d5d", null ], + [ "kNNBruteForceGPU", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a602d99d5bdef453a39339a0b45979451", null ], + [ "kNNFlannKdTreeSingle", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a994442dbb17b48ba9a9315edee24a7a1", null ], + [ "kNNNanoFlannKdTree", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a306c8d555b740267fa80a1ee673ef7c7", null ], + [ "kNNUndef", "classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655afeba67ed0aafc39aa35b2a194e147ff9", null ] + ] ], + [ "VWDictionary", "classrtabmap_1_1VWDictionary.html#ada3980b520d8411a1ebb3ce14e2f8734", null ], + [ "~VWDictionary", "classrtabmap_1_1VWDictionary.html#af7f669f103368e30e31a028efbcac89d", null ], + [ "parseParameters", "classrtabmap_1_1VWDictionary.html#a89893faef6c96e3b19bfeab86094af81", null ], + [ "update", "classrtabmap_1_1VWDictionary.html#a844ae27eb6d1f0674c8f7777451812c5", null ], + [ "addNewWords", "classrtabmap_1_1VWDictionary.html#a2998a6b11e102a2253ac592acf076841", null ], + [ "addWord", "classrtabmap_1_1VWDictionary.html#ad464ad961b0e4d4cd6dd7895e9ff3d59", null ], + [ "findNN", "classrtabmap_1_1VWDictionary.html#ac2f21a98b70e91ab2e8a07151c508d1c", null ], + [ "findNN", "classrtabmap_1_1VWDictionary.html#aada11cf01b586ac8205f8bff0b1ab295", null ], + [ "addWordRef", "classrtabmap_1_1VWDictionary.html#aea2f0d043d043df37258dc225c62edec", null ], + [ "removeAllWordRef", "classrtabmap_1_1VWDictionary.html#ac4a70358ca2db8e63c67a30383a1d34b", null ], + [ "getWord", "classrtabmap_1_1VWDictionary.html#a5cf9981cf11f8f93280b7d0c195159e1", null ], + [ "getUnusedWord", "classrtabmap_1_1VWDictionary.html#abbd007a028847ecbbdd50e3480ba95e3", null ], + [ "setLastWordId", "classrtabmap_1_1VWDictionary.html#af0b676e13c7dba437147520335289e97", null ], + [ "getVisualWords", "classrtabmap_1_1VWDictionary.html#a6bcad4c04999469001b5ac03b8a61ab4", null ], + [ "getNndrRatio", "classrtabmap_1_1VWDictionary.html#a454639bff3d95b2f9dd346413981d5c5", null ], + [ "getNotIndexedWordsCount", "classrtabmap_1_1VWDictionary.html#a293c09f00caf84bb991d73983a5f22c8", null ], + [ "getLastIndexedWordId", "classrtabmap_1_1VWDictionary.html#a65a99ae457b1c779233de57d190ca8da", null ], + [ "getTotalActiveReferences", "classrtabmap_1_1VWDictionary.html#a98447a880fdcf91709f00d00cfd4e54d", null ], + [ "getIndexedWordsCount", "classrtabmap_1_1VWDictionary.html#a6a0610e87964c3881dc70cae6cd9123c", null ], + [ "getIndexMemoryUsed", "classrtabmap_1_1VWDictionary.html#a63ec6a9b915eb939c2650e623feb0576", null ], + [ "getMemoryUsed", "classrtabmap_1_1VWDictionary.html#ac5177a75f402538b50ec6c36bdbc7307", null ], + [ "setNNStrategy", "classrtabmap_1_1VWDictionary.html#af60e271facb40ff668c4bc24cff1b9cc", null ], + [ "getNNStrategy", "classrtabmap_1_1VWDictionary.html#ab1ec0db96328164864953f25d463bcbb", null ], + [ "isIncremental", "classrtabmap_1_1VWDictionary.html#a706e209f6228c02730dd8ea501ab5369", null ], + [ "isIncrementalFlann", "classrtabmap_1_1VWDictionary.html#a9f016aa45f3b3d5618d104fb799ca998", null ], + [ "setIncrementalDictionary", "classrtabmap_1_1VWDictionary.html#ab14ef6e8fb979dce23f9a40a1faf8dff", null ], + [ "setFixedDictionary", "classrtabmap_1_1VWDictionary.html#a5f3712744b9f7beb5da186a842f7d74a", null ], + [ "isModified", "classrtabmap_1_1VWDictionary.html#aa0bcdf4002305d36bb072c019d475f13", null ], + [ "serializeIndex", "classrtabmap_1_1VWDictionary.html#a2864c406b3792dbfb7c8c334b6e44d41", null ], + [ "deserializeIndex", "classrtabmap_1_1VWDictionary.html#a3af1cce90b50dcb0f9dcd77e1fb08aad", null ], + [ "deserializeIndex", "classrtabmap_1_1VWDictionary.html#a0a29d849a7c2b626407f453e5cb4b526", null ], + [ "exportDictionary", "classrtabmap_1_1VWDictionary.html#a1ba7cb31f8658980849ffd9ce76b3cb8", null ], + [ "clear", "classrtabmap_1_1VWDictionary.html#a566aaf19cdc098587e88393e4140b351", null ], + [ "getUnusedWords", "classrtabmap_1_1VWDictionary.html#ab47b5ecb12c822474004f0ad77dbb388", null ], + [ "getUnusedWordIds", "classrtabmap_1_1VWDictionary.html#a64b0aee7f33cbd4df26e2d0c14329e9d", null ], + [ "getUnusedWordsSize", "classrtabmap_1_1VWDictionary.html#a117282f59ed918808d8116cd1f92f412", null ], + [ "removeWords", "classrtabmap_1_1VWDictionary.html#a7a506e15bf83d16cc98aaa34057216f4", null ], + [ "deleteUnusedWords", "classrtabmap_1_1VWDictionary.html#a33c8904edf3d0af65dfd2a6d817416fa", null ], + [ "getNextId", "classrtabmap_1_1VWDictionary.html#a085d69ef577600000f397bd63abeaf69", null ], + [ "_visualWords", "classrtabmap_1_1VWDictionary.html#adcb4739e09e27b20125880e9d3026383", null ], + [ "_totalActiveReferences", "classrtabmap_1_1VWDictionary.html#a5222c6a21307f0e4b9346c87db166b44", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord-members.html b/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord-members.html new file mode 100644 index 00000000..5ee63668 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord-members.html @@ -0,0 +1,127 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
rtabmap::VisualWord Member List
+
+
+ +

This is the complete list of members for rtabmap::VisualWord, including all inherited members.

+ + + + + + + + + + + + +
addRef(int signatureId)rtabmap::VisualWord
getDescriptor() constrtabmap::VisualWordinline
getMemoryUsed() constrtabmap::VisualWord
getReferences() constrtabmap::VisualWordinline
getTotalReferences() constrtabmap::VisualWordinline
id() constrtabmap::VisualWordinline
isSaved() constrtabmap::VisualWordinline
removeAllRef(int signatureId)rtabmap::VisualWord
setSaved(bool saved)rtabmap::VisualWordinline
VisualWord(int id, const cv::Mat &descriptor, int signatureId=0)rtabmap::VisualWord
~VisualWord()rtabmap::VisualWord
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.html b/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.html new file mode 100644 index 00000000..36adb181 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.html @@ -0,0 +1,474 @@ + + + + + + + + +RTAB-Map: rtabmap::VisualWord Class Reference + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
RTAB-Map 0.23.12 +
+
Real-Time Appearance-Based Mapping
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
rtabmap::VisualWord Class Reference
+
+
+ +

Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model. + More...

+ +

#include <VisualWord.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 VisualWord (int id, const cv::Mat &descriptor, int signatureId=0)
 Constructor.
 
+ ~VisualWord ()
 Destructor.
 
void addRef (int signatureId)
 Adds a reference to this word for the given signature ID.
 
int removeAllRef (int signatureId)
 Removes all references to this word for the given signature ID.
 
unsigned long getMemoryUsed () const
 Estimates the memory used by this visual word in bytes.
 
int getTotalReferences () const
 Returns the total number of references (across all signatures).
 
int id () const
 Returns the ID of this visual word.
 
const cv::Mat & getDescriptor () const
 Returns the feature descriptor of this word.
 
const std::map< int, int > & getReferences () const
 Returns the references of this word.
 
bool isSaved () const
 Checks if the word has been saved to the database.
 
void setSaved (bool saved)
 Sets the saved flag for the word.
 
+

Detailed Description

+

Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model.

+

A VisualWord holds a unique identifier, its descriptor (usually a feature vector from an image), and a record of where (in which signatures/images) it was observed. This is a key component in loop closure detection and visual place recognition in RTAB-Map.

+

The word keeps track of references (signature IDs) where it appears, and how many times it was observed in each signature. It also tracks whether the word has been saved to a database.

+ +

Definition at line 49 of file VisualWord.h.

+

Constructor & Destructor Documentation

+ +

◆ VisualWord()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
rtabmap::VisualWord::VisualWord (int id,
const cv::Mat & descriptor,
int signatureId = 0 
)
+
+ +

Constructor.

+
Parameters
+ + + + +
idUnique ID of the visual word.
descriptorThe descriptor associated with the word (e.g., ORB, SIFT).
signatureIdOptional signature ID where the word is first observed.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ addRef()

+ +
+
+ + + + + + + + +
void rtabmap::VisualWord::addRef (int signatureId)
+
+ +

Adds a reference to this word for the given signature ID.

+
Parameters
+ + +
signatureIdID of the signature in which this word is observed.
+
+
+ +
+
+ +

◆ removeAllRef()

+ +
+
+ + + + + + + + +
int rtabmap::VisualWord::removeAllRef (int signatureId)
+
+ +

Removes all references to this word for the given signature ID.

+
Parameters
+ + +
signatureIdID of the signature from which references will be removed.
+
+
+
Returns
Number of references removed.
+ +
+
+ +

◆ getMemoryUsed()

+ +
+
+ + + + + + + +
unsigned long rtabmap::VisualWord::getMemoryUsed () const
+
+ +

Estimates the memory used by this visual word in bytes.

+
Returns
Size in bytes.
+ +
+
+ +

◆ getTotalReferences()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::VisualWord::getTotalReferences () const
+
+inline
+
+ +

Returns the total number of references (across all signatures).

+
Returns
Number of total references.
+ +

Definition at line 88 of file VisualWord.h.

+ +
+
+ +

◆ id()

+ +
+
+ + + + + +
+ + + + + + + +
int rtabmap::VisualWord::id () const
+
+inline
+
+ +

Returns the ID of this visual word.

+
Returns
Word ID.
+ +

Definition at line 94 of file VisualWord.h.

+ +
+
+ +

◆ getDescriptor()

+ +
+
+ + + + + +
+ + + + + + + +
const cv::Mat & rtabmap::VisualWord::getDescriptor () const
+
+inline
+
+ +

Returns the feature descriptor of this word.

+
Returns
The OpenCV matrix descriptor.
+ +

Definition at line 100 of file VisualWord.h.

+ +
+
+ +

◆ getReferences()

+ +
+
+ + + + + +
+ + + + + + + +
const std::map< int, int > & rtabmap::VisualWord::getReferences () const
+
+inline
+
+ +

Returns the references of this word.

+
Returns
A map of (signature ID, occurrence count).
+ +

Definition at line 106 of file VisualWord.h.

+ +
+
+ +

◆ isSaved()

+ +
+
+ + + + + +
+ + + + + + + +
bool rtabmap::VisualWord::isSaved () const
+
+inline
+
+ +

Checks if the word has been saved to the database.

+
Returns
True if saved, false otherwise.
+ +

Definition at line 112 of file VisualWord.h.

+ +
+
+ +

◆ setSaved()

+ +
+
+ + + + + +
+ + + + + + + + +
void rtabmap::VisualWord::setSaved (bool saved)
+
+inline
+
+ +

Sets the saved flag for the word.

+
Parameters
+ + +
savedTrue if the word has been saved to the database.
+
+
+ +

Definition at line 118 of file VisualWord.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.js b/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.js new file mode 100644 index 00000000..ff39f7d2 --- /dev/null +++ b/preview/pr-1773/api/latest/classrtabmap_1_1VisualWord.js @@ -0,0 +1,14 @@ +var classrtabmap_1_1VisualWord = +[ + [ "VisualWord", "classrtabmap_1_1VisualWord.html#a64ce7c97214265e24e00e3888b85f967", null ], + [ "~VisualWord", "classrtabmap_1_1VisualWord.html#adc2dc719d2e6ed06ff92a2370d9955b2", null ], + [ "addRef", "classrtabmap_1_1VisualWord.html#a5826c6a57f9115e6766bb60e2628fe30", null ], + [ "removeAllRef", "classrtabmap_1_1VisualWord.html#a63364292bdd9921668187b16c2e0457e", null ], + [ "getMemoryUsed", "classrtabmap_1_1VisualWord.html#ad23c14c1c81848fb42573fd5ceac3a42", null ], + [ "getTotalReferences", "classrtabmap_1_1VisualWord.html#a2eaf9703feb310a1038fcd6c8341a1d3", null ], + [ "id", "classrtabmap_1_1VisualWord.html#a988fd37d739297c9b04c7dc156de3c66", null ], + [ "getDescriptor", "classrtabmap_1_1VisualWord.html#a2d20ce6234dc211335a926759e111bbb", null ], + [ "getReferences", "classrtabmap_1_1VisualWord.html#aef73a60eccd61a917f27bf277366a5bc", null ], + [ "isSaved", "classrtabmap_1_1VisualWord.html#a4a4d316a18741c30c8d2d5db50f3c4e7", null ], + [ "setSaved", "classrtabmap_1_1VisualWord.html#a58f7ff50ca24f1586bf3fdf5999d6184", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/closed.png b/preview/pr-1773/api/latest/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/custom.css b/preview/pr-1773/api/latest/custom.css new file mode 100644 index 00000000..efcbfde3 --- /dev/null +++ b/preview/pr-1773/api/latest/custom.css @@ -0,0 +1,55 @@ +/* RTAB-Map's own tweaks, loaded after the Doxygen Awesome theme. + * + * 1. Navigation tree + * ------------------ + * The theme reveals the expand/collapse arrows only while the pointer is over + * a row, so nothing shows that a page has children until you happen to hover + * it -- stock Doxygen shows them at all times. Both opacities are theme + * variables, made for exactly this override. + */ + +html { + --side-nav-arrow-opacity: 0.75; + --side-nav-arrow-hover-opacity: 1; +} + +/* 2. Version dropdown + * ------------------- + * Injected by version-switcher.js into Doxygen's #projectnumber element. + * + * Everything is expressed with Doxygen Awesome's custom properties, with the + * plain-Doxygen value as fallback, so the control follows whichever theme is + * in use. The native widget is kept (no `appearance: none`): the theme sets + * `color-scheme: dark` in dark mode, which is what makes the browser render + * the popup list dark as well -- something a re-styled ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/preview/pr-1773/api/latest/menu.js b/preview/pr-1773/api/latest/menu.js new file mode 100644 index 00000000..b0b26936 --- /dev/null +++ b/preview/pr-1773/api/latest/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/preview/pr-1773/api/latest/menudata.js b/preview/pr-1773/api/latest/menudata.js new file mode 100644 index 00000000..7e269ee1 --- /dev/null +++ b/preview/pr-1773/api/latest/menudata.js @@ -0,0 +1,171 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Topics",url:"topics.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"b",url:"namespacemembers_b.html#index_b"}, +{text:"c",url:"namespacemembers_c.html#index_c"}, +{text:"d",url:"namespacemembers_d.html#index_d"}, +{text:"e",url:"namespacemembers_e.html#index_e"}, +{text:"f",url:"namespacemembers_f.html#index_f"}, +{text:"g",url:"namespacemembers_g.html#index_g"}, +{text:"h",url:"namespacemembers_h.html#index_h"}, +{text:"i",url:"namespacemembers_i.html#index_i"}, +{text:"l",url:"namespacemembers_l.html#index_l"}, +{text:"m",url:"namespacemembers_m.html#index_m"}, +{text:"n",url:"namespacemembers_n.html#index_n"}, +{text:"o",url:"namespacemembers_o.html#index_o"}, +{text:"p",url:"namespacemembers_p.html#index_p"}, +{text:"r",url:"namespacemembers_r.html#index_r"}, +{text:"s",url:"namespacemembers_s.html#index_s"}, +{text:"t",url:"namespacemembers_t.html#index_t"}, +{text:"u",url:"namespacemembers_u.html#index_u"}, +{text:"v",url:"namespacemembers_v.html#index_v"}]}, +{text:"Functions",url:"namespacemembers_func.html",children:[ +{text:"a",url:"namespacemembers_func.html#index_a"}, +{text:"b",url:"namespacemembers_func_b.html#index_b"}, +{text:"c",url:"namespacemembers_func_c.html#index_c"}, +{text:"d",url:"namespacemembers_func_d.html#index_d"}, +{text:"e",url:"namespacemembers_func_e.html#index_e"}, +{text:"f",url:"namespacemembers_func_f.html#index_f"}, +{text:"g",url:"namespacemembers_func_g.html#index_g"}, +{text:"h",url:"namespacemembers_func_h.html#index_h"}, +{text:"i",url:"namespacemembers_func_i.html#index_i"}, +{text:"l",url:"namespacemembers_func_l.html#index_l"}, +{text:"m",url:"namespacemembers_func_m.html#index_m"}, +{text:"n",url:"namespacemembers_func_n.html#index_n"}, +{text:"o",url:"namespacemembers_func_o.html#index_o"}, +{text:"p",url:"namespacemembers_func_p.html#index_p"}, +{text:"r",url:"namespacemembers_func_r.html#index_r"}, +{text:"s",url:"namespacemembers_func_s.html#index_s"}, +{text:"t",url:"namespacemembers_func_t.html#index_t"}, +{text:"u",url:"namespacemembers_func_u.html#index_u"}, +{text:"v",url:"namespacemembers_func_v.html#index_v"}]}, +{text:"Variables",url:"namespacemembers_vars.html"}, +{text:"Typedefs",url:"namespacemembers_type.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"a",url:"functions_a.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"y",url:"functions_y.html#index_y"}, +{text:"z",url:"functions_z.html#index_z"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"j",url:"functions_func_j.html#index_j"}, +{text:"k",url:"functions_func_k.html#index_k"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"x",url:"functions_func_x.html#index_x"}, +{text:"y",url:"functions_func_y.html#index_y"}, +{text:"z",url:"functions_func_z.html#index_z"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"_",url:"functions_vars.html#index__5F"}, +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"g",url:"functions_vars.html#index_g"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"w",url:"functions_vars.html#index_w"}]}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Enumerator",url:"functions_eval.html",children:[ +{text:"f",url:"functions_eval.html#index_f"}, +{text:"k",url:"functions_eval.html#index_k"}, +{text:"n",url:"functions_eval.html#index_n"}]}, +{text:"Related Symbols",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"u",url:"globals.html#index_u"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"u",url:"globals_func.html#index_u"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/preview/pr-1773/api/latest/minus.svg b/preview/pr-1773/api/latest/minus.svg new file mode 100644 index 00000000..f70d0c1a --- /dev/null +++ b/preview/pr-1773/api/latest/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/preview/pr-1773/api/latest/minusd.svg b/preview/pr-1773/api/latest/minusd.svg new file mode 100644 index 00000000..5f8e8796 --- /dev/null +++ b/preview/pr-1773/api/latest/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers.html b/preview/pr-1773/api/latest/namespacemembers.html new file mode 100644 index 00000000..913d5b09 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - a -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_b.html b/preview/pr-1773/api/latest/namespacemembers_b.html new file mode 100644 index 00000000..abcb6fb7 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_b.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - b -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_c.html b/preview/pr-1773/api/latest/namespacemembers_c.html new file mode 100644 index 00000000..39f1f507 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_c.html @@ -0,0 +1,158 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - c -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_d.html b/preview/pr-1773/api/latest/namespacemembers_d.html new file mode 100644 index 00000000..b05fcd0e --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_d.html @@ -0,0 +1,125 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - d -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_dup.js b/preview/pr-1773/api/latest/namespacemembers_dup.js new file mode 100644 index 00000000..9956f49c --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_dup.js @@ -0,0 +1,22 @@ +var namespacemembers_dup = +[ + [ "a", "namespacemembers.html", null ], + [ "b", "namespacemembers_b.html", null ], + [ "c", "namespacemembers_c.html", null ], + [ "d", "namespacemembers_d.html", null ], + [ "e", "namespacemembers_e.html", null ], + [ "f", "namespacemembers_f.html", null ], + [ "g", "namespacemembers_g.html", null ], + [ "h", "namespacemembers_h.html", null ], + [ "i", "namespacemembers_i.html", null ], + [ "l", "namespacemembers_l.html", null ], + [ "m", "namespacemembers_m.html", null ], + [ "n", "namespacemembers_n.html", null ], + [ "o", "namespacemembers_o.html", null ], + [ "p", "namespacemembers_p.html", null ], + [ "r", "namespacemembers_r.html", null ], + [ "s", "namespacemembers_s.html", null ], + [ "t", "namespacemembers_t.html", null ], + [ "u", "namespacemembers_u.html", null ], + [ "v", "namespacemembers_v.html", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/namespacemembers_e.html b/preview/pr-1773/api/latest/namespacemembers_e.html new file mode 100644 index 00000000..5c409b4f --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_e.html @@ -0,0 +1,126 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - e -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_f.html b/preview/pr-1773/api/latest/namespacemembers_f.html new file mode 100644 index 00000000..74676451 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_f.html @@ -0,0 +1,130 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - f -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func.html b/preview/pr-1773/api/latest/namespacemembers_func.html new file mode 100644 index 00000000..e3158f6d --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - a -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func.js b/preview/pr-1773/api/latest/namespacemembers_func.js new file mode 100644 index 00000000..060fb60d --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func.js @@ -0,0 +1,22 @@ +var namespacemembers_func = +[ + [ "a", "namespacemembers_func.html", null ], + [ "b", "namespacemembers_func_b.html", null ], + [ "c", "namespacemembers_func_c.html", null ], + [ "d", "namespacemembers_func_d.html", null ], + [ "e", "namespacemembers_func_e.html", null ], + [ "f", "namespacemembers_func_f.html", null ], + [ "g", "namespacemembers_func_g.html", null ], + [ "h", "namespacemembers_func_h.html", null ], + [ "i", "namespacemembers_func_i.html", null ], + [ "l", "namespacemembers_func_l.html", null ], + [ "m", "namespacemembers_func_m.html", null ], + [ "n", "namespacemembers_func_n.html", null ], + [ "o", "namespacemembers_func_o.html", null ], + [ "p", "namespacemembers_func_p.html", null ], + [ "r", "namespacemembers_func_r.html", null ], + [ "s", "namespacemembers_func_s.html", null ], + [ "t", "namespacemembers_func_t.html", null ], + [ "u", "namespacemembers_func_u.html", null ], + [ "v", "namespacemembers_func_v.html", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/namespacemembers_func_b.html b/preview/pr-1773/api/latest/namespacemembers_func_b.html new file mode 100644 index 00000000..7c4a38a9 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_b.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - b -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_c.html b/preview/pr-1773/api/latest/namespacemembers_func_c.html new file mode 100644 index 00000000..7bb8bed5 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_c.html @@ -0,0 +1,155 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - c -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_d.html b/preview/pr-1773/api/latest/namespacemembers_func_d.html new file mode 100644 index 00000000..3f6125df --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_d.html @@ -0,0 +1,125 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - d -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_e.html b/preview/pr-1773/api/latest/namespacemembers_func_e.html new file mode 100644 index 00000000..0c8302ce --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_e.html @@ -0,0 +1,125 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - e -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_f.html b/preview/pr-1773/api/latest/namespacemembers_func_f.html new file mode 100644 index 00000000..869522c5 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_f.html @@ -0,0 +1,130 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - f -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_g.html b/preview/pr-1773/api/latest/namespacemembers_func_g.html new file mode 100644 index 00000000..b0d48b6c --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_g.html @@ -0,0 +1,123 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - g -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_h.html b/preview/pr-1773/api/latest/namespacemembers_func_h.html new file mode 100644 index 00000000..e738cf6c --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_h.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - h -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_i.html b/preview/pr-1773/api/latest/namespacemembers_func_i.html new file mode 100644 index 00000000..83303eaa --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_i.html @@ -0,0 +1,120 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - i -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_l.html b/preview/pr-1773/api/latest/namespacemembers_func_l.html new file mode 100644 index 00000000..5d53a9ba --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_l.html @@ -0,0 +1,135 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - l -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_m.html b/preview/pr-1773/api/latest/namespacemembers_func_m.html new file mode 100644 index 00000000..1d9eb237 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_m.html @@ -0,0 +1,116 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - m -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_n.html b/preview/pr-1773/api/latest/namespacemembers_func_n.html new file mode 100644 index 00000000..93a0c01f --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_n.html @@ -0,0 +1,116 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - n -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_o.html b/preview/pr-1773/api/latest/namespacemembers_func_o.html new file mode 100644 index 00000000..7ffa7692 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_o.html @@ -0,0 +1,118 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - o -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_p.html b/preview/pr-1773/api/latest/namespacemembers_func_p.html new file mode 100644 index 00000000..39e0fed5 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_p.html @@ -0,0 +1,122 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - p -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_r.html b/preview/pr-1773/api/latest/namespacemembers_func_r.html new file mode 100644 index 00000000..13ebe086 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_r.html @@ -0,0 +1,129 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - r -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_s.html b/preview/pr-1773/api/latest/namespacemembers_func_s.html new file mode 100644 index 00000000..48523c60 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_s.html @@ -0,0 +1,124 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - s -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_t.html b/preview/pr-1773/api/latest/namespacemembers_func_t.html new file mode 100644 index 00000000..d7018e06 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_t.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - t -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_u.html b/preview/pr-1773/api/latest/namespacemembers_func_u.html new file mode 100644 index 00000000..31877ac1 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_u.html @@ -0,0 +1,118 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - u -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_func_v.html b/preview/pr-1773/api/latest/namespacemembers_func_v.html new file mode 100644 index 00000000..d2fe31da --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_func_v.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace functions with links to the namespaces they belong to:
    + +

    - v -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_g.html b/preview/pr-1773/api/latest/namespacemembers_g.html new file mode 100644 index 00000000..475d4f29 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_g.html @@ -0,0 +1,123 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - g -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_h.html b/preview/pr-1773/api/latest/namespacemembers_h.html new file mode 100644 index 00000000..fc5cf24d --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_h.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - h -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_i.html b/preview/pr-1773/api/latest/namespacemembers_i.html new file mode 100644 index 00000000..890a8660 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_i.html @@ -0,0 +1,120 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - i -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_l.html b/preview/pr-1773/api/latest/namespacemembers_l.html new file mode 100644 index 00000000..1ed97a6e --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_l.html @@ -0,0 +1,136 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - l -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_m.html b/preview/pr-1773/api/latest/namespacemembers_m.html new file mode 100644 index 00000000..32f37c47 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_m.html @@ -0,0 +1,116 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - m -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_n.html b/preview/pr-1773/api/latest/namespacemembers_n.html new file mode 100644 index 00000000..e381a136 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_n.html @@ -0,0 +1,116 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - n -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_o.html b/preview/pr-1773/api/latest/namespacemembers_o.html new file mode 100644 index 00000000..7dd14975 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_o.html @@ -0,0 +1,118 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - o -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_p.html b/preview/pr-1773/api/latest/namespacemembers_p.html new file mode 100644 index 00000000..34199ab1 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_p.html @@ -0,0 +1,124 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - p -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_r.html b/preview/pr-1773/api/latest/namespacemembers_r.html new file mode 100644 index 00000000..a916dbfd --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_r.html @@ -0,0 +1,129 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - r -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_s.html b/preview/pr-1773/api/latest/namespacemembers_s.html new file mode 100644 index 00000000..4ef83209 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_s.html @@ -0,0 +1,124 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - s -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_t.html b/preview/pr-1773/api/latest/namespacemembers_t.html new file mode 100644 index 00000000..e357ca06 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_t.html @@ -0,0 +1,119 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - t -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_type.html b/preview/pr-1773/api/latest/namespacemembers_type.html new file mode 100644 index 00000000..1a6fa6b6 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_type.html @@ -0,0 +1,116 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace typedefs with links to the namespaces they belong to:
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_u.html b/preview/pr-1773/api/latest/namespacemembers_u.html new file mode 100644 index 00000000..82ca9d8c --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_u.html @@ -0,0 +1,118 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - u -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_v.html b/preview/pr-1773/api/latest/namespacemembers_v.html new file mode 100644 index 00000000..0b5bb9db --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_v.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - v -

    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacemembers_vars.html b/preview/pr-1773/api/latest/namespacemembers_vars.html new file mode 100644 index 00000000..52a2a278 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacemembers_vars.html @@ -0,0 +1,115 @@ + + + + + + + + +RTAB-Map: Namespace Members + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace variables with links to the namespaces they belong to:
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacertabmap.html b/preview/pr-1773/api/latest/namespacertabmap.html new file mode 100644 index 00000000..2f8845ce --- /dev/null +++ b/preview/pr-1773/api/latest/namespacertabmap.html @@ -0,0 +1,1478 @@ + + + + + + + + +RTAB-Map: rtabmap Namespace Reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rtabmap Namespace Reference
    +
    +
    + + + + + + + + + + + +

    +Namespaces

    namespace  graph
     Pose-graph I/O, trajectory metrics, link utilities, and path planning.
     
    namespace  util2d
     This namespace contains 2D image processing utilities.
     
    namespace  util3d
     3D utilities: point cloud conversion and filtering, projection, registration, surface reconstruction, mapping and transforms.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  BayesFilter
     Recursive Bayesian filter for loop-closure hypothesis estimation in RTAB-Map. More...
     
    class  BRISK
     BRISK detector and descriptor. More...
     
    class  Camera
     
    class  CameraDepthAI
     
    class  CameraFreenect
     
    class  CameraFreenect2
     
    class  CameraImages
     
    class  CameraK4A
     
    class  CameraK4W2
     
    class  CameraModel
     Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection, rectification, and transformation. More...
     
    class  CameraMyntEye
     
    class  CameraOpenni
     OpenNI driver for cameras like Kinect for Xbox 360. More...
     
    class  CameraOpenNI2
     
    class  CameraOpenNICV
     
    class  CameraOrbbecSDK
     
    class  CameraRealSense
     
    class  CameraRealSense2
     
    class  CameraRGBDImages
     
    class  CameraSeerSense
     
    class  CameraStereoDC1394
     
    class  CameraStereoFlyCapture2
     
    class  CameraStereoImages
     
    class  CameraStereoTara
     
    class  CameraStereoVideo
     
    class  CameraStereoZed
     
    class  CameraStereoZedOC
     
    class  CameraVideo
     
    class  CloudMap
     
    class  CompressionThread
     Background thread to compress or uncompress images and generic matrices. More...
     
    class  DBDriver
     Abstract database driver for RTAB-Map maps (signatures, links, words, statistics). More...
     
    class  DBDriverSqlite3
     SQLite3 implementation of DBDriver for RTAB-Map map databases. More...
     
    class  DBReader
     
    class  EnvSensor
     Single environmental measurement (type, value, timestamp). More...
     
    class  EpipolarGeometry
     
    class  FAST
     FAST corner detector only (no descriptor). More...
     
    class  FAST_BRIEF
     FAST corners + BRIEF descriptors. More...
     
    class  FAST_FREAK
     FAST corners + FREAK descriptors. More...
     
    class  Feature2D
     Abstract 2D feature detector and descriptor extractor for visual SLAM. More...
     
    class  FeatureBA
     A single bundle adjustment feature observation: one keypoint seen in one frame. More...
     
    class  FlannIndex
     Nearest neighbor index over a set of features. More...
     
    class  GainCompensator
     
    class  GeodeticCoords
     WGS84 geodetic latitude, longitude and altitude with coordinate conversions. More...
     
    class  GFTT
     Good-features-to-track detector (Shi–Tomasi / Harris). More...
     
    class  GFTT_BRIEF
     GFTT corners + BRIEF descriptors. More...
     
    class  GFTT_DAISY
     GFTT corners + DAISY descriptors (OpenCV 3+ xfeatures2d). More...
     
    class  GFTT_FREAK
     GFTT corners + FREAK descriptors. More...
     
    class  GFTT_ORB
     GFTT corners + ORB descriptors (common default when SURF is unavailable). More...
     
    class  GlobalDescriptor
     
    class  GlobalDescriptorExtractor
     
    class  GlobalMap
     Abstract base for assembling per-node LocalGrid data into a global map. More...
     
    class  GPS
     WGS84 GPS fix attached to a sensor sample or graph node. More...
     
    class  GridMap
     
    class  IMU
     Inertial measurement sample (ROS sensor_msgs/Imu-like fields). More...
     
    class  IMUEvent
     UEvent carrying an IMU sample and timestamp. More...
     
    class  IMUFilter
     Fuses gyroscope and accelerometer samples into an orientation quaternion. More...
     
    class  IMUThread
     Background thread that replays IMU measurements from a CSV file. More...
     
    class  KAZE
     KAZE detector and descriptor (OpenCV 3+). More...
     
    class  Landmark
     Optimized pose of a visual landmark (e.g. ArUco/AprilTag) in the map. More...
     
    class  LaserScan
     Represents 2D or 3D laser scan data with support for multiple point data formats. More...
     
    class  Lidar
     
    class  LidarVLP16
     
    class  Link
     Directed constraint between two nodes in RTAB-Map's pose graph. More...
     
    class  LocalGrid
     Local occupancy grid cells for one map node (ground, obstacles, empty). More...
     
    class  LocalGridCache
     Cache of LocalGrid entries keyed by map node id. More...
     
    class  LocalGridMaker
     Builds per-node local occupancy grids from laser scans or depth clouds. More...
     
    class  MarkerDetector
     
    class  MarkerInfo
     
    class  Memory
     Three-tiered memory management (STM, WM, LTM) for RTAB-Map. More...
     
    class  OccupancyGrid
     
    class  OctoMap
     
    class  Odometry
     Abstract base class for visual, lidar and visual-inertial odometry backends. More...
     
    class  OdometryCuVSLAM
     
    class  OdometryDVO
     
    class  OdometryEvent
     One processed frame with the pose the odometry integrated for it. More...
     
    class  OdometryF2F
     
    class  OdometryF2M
     
    class  OdometryFLOAM
     
    class  OdometryFovis
     
    class  OdometryInfo
     What one Odometry iteration produced, beyond the pose. More...
     
    class  OdometryLIOSAM
     
    class  OdometryLOAM
     
    class  OdometryMono
     
    class  OdometryMSCKF
     
    class  OdometryOkvis
     
    class  OdometryOpen3D
     
    class  OdometryOpenVINS
     
    class  OdometryORBSLAM2
     
    class  OdometryORBSLAM3
     
    class  OdometryResetEvent
     Asks OdometryThread to restart the odometry from a given pose. More...
     
    class  OdometryThread
     Runs an Odometry front-end in its own thread, driven by events. More...
     
    class  OdometryVINSFusion
     
    class  OdometryViso2
     
    class  Optimizer
     Abstract base for pose-graph and bundle-adjustment optimizers. More...
     
    class  OptimizerCeres
     
    class  OptimizerCVSBA
     
    class  OptimizerG2O
     
    class  OptimizerGTSAM
     
    class  OptimizerTORO
     
    class  ORB
     ORB detector and descriptor (optional GPU). More...
     
    class  ORBOctree
     ORB with octree spatial distribution (RTAB-Map must be built with OCTREE enabled). More...
     
    class  Parameters
     
    class  ParamEvent
     
    class  ParticleFilter
     
    struct  PointXYZIRT
     This namespace contains 3D point cloud processing utilities. More...
     
    struct  PointXYZIT
     
    class  ProgressState
     
    class  PythonInterface
     
    class  Registration
     Abstract base for registering two observations (visual, ICP, or both). More...
     
    class  RegistrationIcp
     
    class  RegistrationInfo
     Statistics and diagnostics returned by Registration. More...
     
    class  RegistrationVis
     Visual registration between two signatures using features and geometry. More...
     
    class  Rtabmap
     Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure). More...
     
    class  RtabmapColorOcTree
     
    class  RtabmapColorOcTreeNode
     
    class  RtabmapEvent
     
    class  RtabmapEvent3DMap
     
    class  RtabmapEventCmd
     Command sent to RtabmapThread, with its parameters. More...
     
    class  RtabmapEventInit
     
    class  RtabmapGlobalPathEvent
     
    class  RtabmapGoalStatusEvent
     
    class  RtabmapLabelErrorEvent
     
    class  RtabmapThread
     Runs a Rtabmap instance in its own thread, driven by events. More...
     
    class  RvlCodec
     
    class  SensorCapture
     Abstract base class for sensor data capture (cameras, lidars, etc.) More...
     
    class  SensorCaptureInfo
     Metadata structure for sensor data capture and processing. More...
     
    class  SensorCaptureThread
     Thread-based sensor data capture and event posting for RTAB-Map. More...
     
    class  SensorData
     Container class for all sensor data captured at a specific time. More...
     
    class  SensorEvent
     Event class for sensor data communication in RTAB-Map's event system. More...
     
    class  SIFT
     SIFT detector and descriptor (optional GPU / CudaSift). More...
     
    class  Signature
     Represents a node in RTAB-Map's pose graph. More...
     
    class  Statistics
     Collects and manages runtime statistics for RTAB-Map. More...
     
    class  Stereo
     Sparse stereo matching using block matching. More...
     
    class  StereoBM
     Block Matching algorithm for dense stereo matching. More...
     
    class  StereoCameraModel
     A class representing a calibrated stereo camera system. More...
     
    class  StereoDense
     Abstract base class for dense stereo matching algorithms. More...
     
    class  StereoOpticalFlow
     Sparse stereo matching using optical flow. More...
     
    class  StereoSGBM
     Semi-Global Block Matching algorithm for dense stereo matching. More...
     
    class  SuperPointRpautrat
     SuperPoint (rpautrat) via Torch + Python (RTAB-Map must be built with libtorch and Python support). More...
     
    class  SuperPointTorch
     SuperPoint via LibTorch (RTAB-Map must be built with libtorch support). More...
     
    class  SURF
     SURF detector and descriptor (non-free / xfeatures2d depending on OpenCV build). More...
     
    class  SURF_DAISY
     SURF detector + DAISY descriptors (OpenCV 3+ xfeatures2d). More...
     
    class  SURF_FREAK
     SURF detector + FREAK descriptors. More...
     
    class  Transform
     Represents a 3D rigid body transformation (rotation + translation). More...
     
    class  TransformStamped
     Associates a transform with a timestamp. More...
     
    class  UserDataEvent
     
    class  VisualWord
     Represents a visual word (feature descriptor) used in the bag-of-words (BoW) model. More...
     
    class  VWDictionary
     Manages a dictionary of visual words for visual place recognition and loop closure detection. More...
     
    + + + + + + + + + + + + + + + +

    +Typedefs

    typedef std::map< EnvSensor::Type, EnvSensor > EnvSensors
     Map of environmental readings keyed by EnvSensor::Type (at most one per type).
     
    typedef std::map< int, Landmark > Landmarks
     Map of landmark id → Landmark (typically positive keys).
     
    typedef std::map< int, std::set< int > > BAOutliers
     
    typedef std::map< std::string, std::string > ParametersMap
     Parameter keys mapped to their values, as used by every configurable class (see Parameters).
     
    typedef std::pair< std::string, std::string > ParametersPair
     A single parameter key/value pair, the entry type of ParametersMap.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    RTABMAP_CORE_EXPORT std::ostream & operator<< (std::ostream &os, const CameraModel &model)
     Stream operator for printing a camera model to an output stream.
     
    +std::vector< unsigned char > RTABMAP_CORE_EXPORT compressImage (const cv::Mat &image, const std::string &format=".png")
     Encodes image to a byte buffer (OpenCV imencode or RVL for depth).
     
    +cv::Mat RTABMAP_CORE_EXPORT compressImage2 (const cv::Mat &image, const std::string &format=".png")
     Same as compressImage() but returns a CV_8UC1 row matrix.
     
    +cv::Mat RTABMAP_CORE_EXPORT uncompressImage (const cv::Mat &bytes)
     Decodes compressed image bytes to a @cv::Mat.
     
    +cv::Mat RTABMAP_CORE_EXPORT uncompressImage (const std::vector< unsigned char > &bytes)
     Decodes compressed image bytes to a @cv::Mat.
     
    +std::vector< unsigned char > RTABMAP_CORE_EXPORT compressData (const cv::Mat &data)
     Compresses a matrix with zlib; appends rows, cols and type at the end.
     
    +cv::Mat RTABMAP_CORE_EXPORT compressData2 (const cv::Mat &data)
     Same as compressData() but returns a CV_8UC1 row matrix.
     
    +cv::Mat RTABMAP_CORE_EXPORT uncompressData (const cv::Mat &bytes)
     Restores a matrix compressed with compressData() or compressData2().
     
    +cv::Mat RTABMAP_CORE_EXPORT uncompressData (const std::vector< unsigned char > &bytes)
     Restores a matrix compressed with compressData() or compressData2().
     
    +cv::Mat RTABMAP_CORE_EXPORT uncompressData (const unsigned char *bytes, unsigned long size)
     Restores a matrix from a raw compressed buffer.
     
    +cv::Mat RTABMAP_CORE_EXPORT compressString (const std::string &str)
     Compresses a null-terminated string using compressData2().
     
    +std::string RTABMAP_CORE_EXPORT uncompressString (const cv::Mat &bytes)
     Decompresses a string produced by compressString().
     
    std::string RTABMAP_CORE_EXPORT compressedDepthFormat (const cv::Mat &bytes)
     Detects the compression format of depth image bytes.
     
    std::string RTABMAP_CORE_EXPORT compressedDepthFormat (const std::vector< unsigned char > &bytes)
     
    std::string RTABMAP_CORE_EXPORT compressedDepthFormat (const unsigned char *bytes, size_t size)
     
    + RTABMAP_DEPRECATED (typedef SensorData Image, "rtabmap::Image class is renamed to rtabmap::SensorData, use the last one instead.")
     
    int RTABMAP_CORE_EXPORT saveLASFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZ > &cloud, const std::vector< int > &cameraIds=std::vector< int >())
     Writes a PCL point cloud to a LAS/LAZ file (requires RTAB-Map built with libLAS).
     
    int RTABMAP_CORE_EXPORT saveLASFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), const std::vector< float > &intensities=std::vector< float >())
     Writes a colored point cloud to LAS/LAZ, with optional intensity and camera ids.
     
    int RTABMAP_CORE_EXPORT saveLASFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZI > &cloud, const std::vector< int > &cameraIds=std::vector< int >())
     Writes a point cloud with intensity channel to LAS/LAZ.
     
    std::vector< double > cumSum (const std::vector< double > &v)
     
    std::vector< double > resample (const std::vector< double > &p, const std::vector< double > &w, bool normalizeWeights=false)
     
    +std::string getPDALSupportedWriters ()
     
    +int savePDALFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZ > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), bool binary=false)
     
    +int savePDALFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), bool binary=false, const std::vector< float > &intensities=std::vector< float >())
     
    +int savePDALFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), bool binary=false, const std::vector< float > &intensities=std::vector< float >())
     
    +int savePDALFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZI > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), bool binary=false)
     
    +int savePDALFile (const std::string &filePath, const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), bool binary=false)
     
    +std::string RTABMAP_CORE_EXPORT getPythonTraceback ()
     
    bool RTABMAP_CORE_EXPORT databaseRecovery (const std::string &corruptedDatabase, bool keepCorruptedDatabase=true, std::string *errorMsg=0, ProgressState *progressState=0)
     
    void icvGetRectanglesFisheye (const CvMat *cameraMatrix, const CvMat *distCoeffs, const CvMat *R, const CvMat *newCameraMatrix, CvSize imgSize, cv::Rect_< float > &inner, cv::Rect_< float > &outer)
     
    void cvStereoRectifyFisheye (const CvMat *_cameraMatrix1, const CvMat *_cameraMatrix2, const CvMat *_distCoeffs1, const CvMat *_distCoeffs2, CvSize imageSize, const CvMat *matR, const CvMat *matT, CvMat *_R1, CvMat *_R2, CvMat *_P1, CvMat *_P2, CvMat *matQ, int flags, double alpha, CvSize newImgSize)
     
    void stereoRectifyFisheye (cv::InputArray _cameraMatrix1, cv::InputArray _distCoeffs1, cv::InputArray _cameraMatrix2, cv::InputArray _distCoeffs2, cv::Size imageSize, cv::InputArray _Rmat, cv::InputArray _Tmat, cv::OutputArray _Rmat1, cv::OutputArray _Rmat2, cv::OutputArray _Pmat1, cv::OutputArray _Pmat2, cv::OutputArray _Qmat, int flags, double alpha, cv::Size newImageSize)
     
    RTABMAP_CORE_EXPORT std::ostream & operator<< (std::ostream &os, const StereoCameraModel &model)
     Outputs a textual representation of the StereoCameraModel to the given output stream.
     
    +RTABMAP_CORE_EXPORT std::ostream & operator<< (std::ostream &os, const Transform &s)
     Output stream operator for Transform.
     
    + + + + + + + + + + +

    +Variables

    RTABMAP_DEPRECATED typedef SensorCaptureInfo CameraInfo
     Backward compatibility typedef.
     
    RTABMAP_DEPRECATED typedef SensorCaptureThread CameraThread
     Backward compatibility typedef.
     
    RTABMAP_DEPRECATED typedef SensorEvent CameraEvent
     Backward compatibility typedef.
     
    +

    Detailed Description

    +

    Typedef Documentation

    + +

    ◆ EnvSensors

    + +
    +
    + + + + +
    typedef std::map<EnvSensor::Type, EnvSensor> rtabmap::EnvSensors
    +
    + +

    Map of environmental readings keyed by EnvSensor::Type (at most one per type).

    + +

    Definition at line 114 of file EnvSensor.h.

    + +
    +
    + +

    ◆ Landmarks

    + +
    +
    + + + + +
    typedef std::map<int, Landmark> rtabmap::Landmarks
    +
    + +

    Map of landmark id → Landmark (typically positive keys).

    + +

    Definition at line 113 of file Landmark.h.

    + +
    +
    + +

    ◆ BAOutliers

    + +
    +
    + + + + +
    typedef std::map<int, std::set<int> > rtabmap::BAOutliers
    +
    + +

    Definition at line 68 of file Optimizer.h.

    + +
    +
    + +

    ◆ ParametersMap

    + +
    +
    + + + + +
    typedef std::map<std::string, std::string> rtabmap::ParametersMap
    +
    + +

    Parameter keys mapped to their values, as used by every configurable class (see Parameters).

    + +

    Definition at line 44 of file Parameters.h.

    + +
    +
    + +

    ◆ ParametersPair

    + +
    +
    + + + + +
    typedef std::pair<std::string, std::string> rtabmap::ParametersPair
    +
    + +

    A single parameter key/value pair, the entry type of ParametersMap.

    + +

    Definition at line 46 of file Parameters.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ operator<<() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    RTABMAP_CORE_EXPORT std::ostream & rtabmap::operator<< (std::ostream & os,
    const CameraModel & model 
    )
    +
    + +

    Stream operator for printing a camera model to an output stream.

    +

    This function outputs the name, image size, and camera matrices (K, D, R, P) along with the local transformation.

    +

    Example output:

    Name: camera1
    +
    Size: 640x480
    +
    K= [fx, 0, cx;
    +
    0, fy, cy;
    +
    0, 0, 1]
    +
    D= [...]
    +
    R= [...]
    +
    P= [...]
    +
    LocalTransform= [...]
    +
    Parameters
    + + + +
    osOutput stream.
    modelCamera model to print.
    +
    +
    +
    Returns
    The modified output stream.
    + +
    +
    + +

    ◆ compressedDepthFormat() [1/3]

    + +
    +
    + + + + + + + + +
    std::string RTABMAP_CORE_EXPORT rtabmap::compressedDepthFormat (const cv::Mat & bytes)
    +
    + +

    Detects the compression format of depth image bytes.

    +
    Returns
    ".rvl" if the buffer has an RVL signature, otherwise ".png".
    + +
    +
    + +

    ◆ compressedDepthFormat() [2/3]

    + +
    +
    + + + + + + + + +
    std::string RTABMAP_CORE_EXPORT rtabmap::compressedDepthFormat (const std::vector< unsigned char > & bytes)
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ compressedDepthFormat() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::string RTABMAP_CORE_EXPORT rtabmap::compressedDepthFormat (const unsigned char * bytes,
    size_t size 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

    + +
    +
    + +

    ◆ saveLASFile() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int RTABMAP_CORE_EXPORT rtabmap::saveLASFile (const std::string & filePath,
    const pcl::PointCloud< pcl::PointXYZ > & cloud,
    const std::vector< int > & cameraIds = std::vector< int >() 
    )
    +
    + +

    Writes a PCL point cloud to a LAS/LAZ file (requires RTAB-Map built with libLAS).

    +

    Output uses 1 mm XYZ scale (0.001). The file extension (.las or .laz) selects uncompressed or compressed output when libLAS LAZ support is available.

    +
    Parameters
    + + + + +
    filePathOutput path (.las or .laz).
    cloudInput point cloud.
    cameraIdsOptional per-point camera/signature ids (stored as point source ID); must be empty or the same length as cloud.
    +
    +
    +
    Returns
    0 on success, 1 on error (e.g. LAZ not supported).
    + +
    +
    + +

    ◆ saveLASFile() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int RTABMAP_CORE_EXPORT rtabmap::saveLASFile (const std::string & filePath,
    const pcl::PointCloud< pcl::PointXYZRGB > & cloud,
    const std::vector< int > & cameraIds = std::vector< int >(),
    const std::vector< float > & intensities = std::vector< float >() 
    )
    +
    + +

    Writes a colored point cloud to LAS/LAZ, with optional intensity and camera ids.

    +
    Parameters
    + + + + + +
    filePathOutput path (.las or .laz).
    cloudRGB point cloud (8-bit channels mapped to 16-bit LAS color).
    cameraIdsOptional per-point ids (same length as cloud or empty).
    intensitiesOptional per-point intensities (same length as cloud or empty).
    +
    +
    +
    Returns
    0 on success, 1 on error.
    + +
    +
    + +

    ◆ saveLASFile() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int RTABMAP_CORE_EXPORT rtabmap::saveLASFile (const std::string & filePath,
    const pcl::PointCloud< pcl::PointXYZI > & cloud,
    const std::vector< int > & cameraIds = std::vector< int >() 
    )
    +
    + +

    Writes a point cloud with intensity channel to LAS/LAZ.

    +
    Parameters
    + + + + +
    filePathOutput path (.las or .laz).
    cloudXYZI point cloud (coordinates and intensity written).
    cameraIdsOptional per-point ids (same length as cloud or empty).
    +
    +
    +
    Returns
    0 on success, 1 on error.
    + +
    +
    + +

    ◆ cumSum()

    + +
    +
    + + + + + + + + +
    std::vector< double > rtabmap::cumSum (const std::vector< double > & v)
    +
    + +

    Definition at line 53 of file ParticleFilter.h.

    + +
    +
    + +

    ◆ resample()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< double > rtabmap::resample (const std::vector< double > & p,
    const std::vector< double > & w,
    bool normalizeWeights = false 
    )
    +
    + +

    Definition at line 65 of file ParticleFilter.h.

    + +
    +
    + +

    ◆ databaseRecovery()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::databaseRecovery (const std::string & corruptedDatabase,
    bool keepCorruptedDatabase = true,
    std::string * errorMsg = 0,
    ProgressState * progressState = 0 
    )
    +
    +

    Return true on success. The database is renamed to "*.backup.db" before recovering.

    Parameters
    + + + + + +
    corruptedDatabasedatabase to recover
    keepCorruptedDatabaseif false and on recovery success, the backup database is removed
    errorMsgerror message if the function returns false
    progressStateA ProgressState object used to get status of the recovery process
    +
    +
    + +
    +
    + +

    ◆ icvGetRectanglesFisheye()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::icvGetRectanglesFisheye (const CvMat * cameraMatrix,
    const CvMat * distCoeffs,
    const CvMat * R,
    const CvMat * newCameraMatrix,
    CvSize imgSize,
    cv::Rect_< float > & inner,
    cv::Rect_< float > & outer 
    )
    +
    + +

    Definition at line 935 of file stereoRectifyFisheye.h.

    + +
    +
    + +

    ◆ cvStereoRectifyFisheye()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::cvStereoRectifyFisheye (const CvMat * _cameraMatrix1,
    const CvMat * _cameraMatrix2,
    const CvMat * _distCoeffs1,
    const CvMat * _distCoeffs2,
    CvSize imageSize,
    const CvMat * matR,
    const CvMat * matT,
    CvMat * _R1,
    CvMat * _R2,
    CvMat * _P1,
    CvMat * _P2,
    CvMat * matQ,
    int flags,
    double alpha,
    CvSize newImgSize 
    )
    +
    + +

    Definition at line 980 of file stereoRectifyFisheye.h.

    + +
    +
    + +

    ◆ stereoRectifyFisheye()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::stereoRectifyFisheye (cv::InputArray _cameraMatrix1,
    cv::InputArray _distCoeffs1,
    cv::InputArray _cameraMatrix2,
    cv::InputArray _distCoeffs2,
    cv::Size imageSize,
    cv::InputArray _Rmat,
    cv::InputArray _Tmat,
    cv::OutputArray _Rmat1,
    cv::OutputArray _Rmat2,
    cv::OutputArray _Pmat1,
    cv::OutputArray _Pmat2,
    cv::OutputArray _Qmat,
    int flags,
    double alpha,
    cv::Size newImageSize 
    )
    +
    + +

    Definition at line 1190 of file stereoRectifyFisheye.h.

    + +
    +
    + +

    ◆ operator<<() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    RTABMAP_CORE_EXPORT std::ostream & rtabmap::operator<< (std::ostream & os,
    const StereoCameraModel & model 
    )
    +
    + +

    Outputs a textual representation of the StereoCameraModel to the given output stream.

    +

    This operator prints the details of the stereo camera model including:

      +
    • The left camera parameters.
    • +
    • The right camera parameters.
    • +
    • The stereo extrinsic matrices: Rotation (R), Translation (T), Essential (E), and Fundamental (F).
    • +
    • The baseline distance between the two cameras.
    • +
    +
    Parameters
    + + + +
    osThe output stream to write to.
    modelThe StereoCameraModel instance to output.
    +
    +
    +
    Returns
    A reference to the output stream after writing the model information.
    + +
    +
    +

    Variable Documentation

    + +

    ◆ CameraInfo

    + +
    +
    + + + + +
    RTABMAP_DEPRECATED typedef SensorCaptureInfo rtabmap::CameraInfo
    +
    + +

    Backward compatibility typedef.

    +
    Deprecated:
    Use SensorCaptureInfo instead
    +

    CameraInfo is deprecated. Use SensorCaptureInfo instead.

    + +

    Definition at line 133 of file SensorCaptureInfo.h.

    + +
    +
    + +

    ◆ CameraThread

    + +
    +
    + + + + +
    RTABMAP_DEPRECATED typedef SensorCaptureThread rtabmap::CameraThread
    +
    + +

    Backward compatibility typedef.

    +
    Deprecated:
    Use SensorCaptureThread instead
    +

    CameraThread is deprecated. Use SensorCaptureThread instead.

    + +

    Definition at line 565 of file SensorCaptureThread.h.

    + +
    +
    + +

    ◆ CameraEvent

    + +
    +
    + + + + +
    RTABMAP_DEPRECATED typedef SensorEvent rtabmap::CameraEvent
    +
    + +

    Backward compatibility typedef.

    +
    Deprecated:
    Use SensorEvent instead
    +

    CameraEvent is deprecated. Use SensorEvent instead.

    + +

    Definition at line 207 of file SensorEvent.h.

    + +
    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacertabmap.js b/preview/pr-1773/api/latest/namespacertabmap.js new file mode 100644 index 00000000..03e17453 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacertabmap.js @@ -0,0 +1,510 @@ +var namespacertabmap = +[ + [ "graph", "namespacertabmap_1_1graph.html", "namespacertabmap_1_1graph" ], + [ "util2d", "namespacertabmap_1_1util2d.html", [ + [ "ssd", "namespacertabmap_1_1util2d.html#a179e07ca5bc9581ff4782ae8f9d33521", null ], + [ "sad", "namespacertabmap_1_1util2d.html#a4cd865b8edc489f950b0c1b5e1a0c992", null ], + [ "calcStereoCorrespondences", "namespacertabmap_1_1util2d.html#a53e2ae078c4c5c997fda9f1b6d1dda33", null ], + [ "calcOpticalFlowPyrLKStereo", "namespacertabmap_1_1util2d.html#a3d01284751a6b46770a28a7f63576600", null ], + [ "disparityFromStereoImages", "namespacertabmap_1_1util2d.html#ad7ea8d1905c7143d376c57c9e22dcea5", null ], + [ "depthFromDisparity", "namespacertabmap_1_1util2d.html#a110359c4884579e1c7b68d8baa7acb6c", null ], + [ "depthFromStereoImages", "namespacertabmap_1_1util2d.html#aacf89454b054d86b53a8038c8a404b50", null ], + [ "disparityFromStereoCorrespondences", "namespacertabmap_1_1util2d.html#a4f10f8038c62a97d3a79bd2dc5bf2c58", null ], + [ "depthFromStereoCorrespondences", "namespacertabmap_1_1util2d.html#ae6548e6246eceaff5dcc9ee30514eac5", null ], + [ "cvtDepthFromFloat", "namespacertabmap_1_1util2d.html#a6740b13198a2c437ab51d8e0503f2d33", null ], + [ "cvtDepthToFloat", "namespacertabmap_1_1util2d.html#a0e4631bed561b3a694a1a65853221f75", null ], + [ "getDepth", "namespacertabmap_1_1util2d.html#a48b07b02efba21a914db10e832589aba", null ], + [ "computeRoi", "group__RoiComputation.html#ga79d3f93673fb236980f0be532695f478", null ], + [ "computeRoi", "group__RoiComputation.html#ga2f0ffb8f6882e28709b03446d50250bb", null ], + [ "computeRoi", "group__RoiComputation.html#ga81d9f49d117d02494c7ff57f5d426b15", null ], + [ "computeRoi", "group__RoiComputation.html#ga56fed8ce688e8e9eb3b1f74ad0febcef", null ], + [ "decimate", "namespacertabmap_1_1util2d.html#a0b545a9f852684afb0a6d8f835f9eaf2", null ], + [ "interpolate", "namespacertabmap_1_1util2d.html#afc241016af8396edf5228dbe9e80ee8d", null ], + [ "registerDepth", "namespacertabmap_1_1util2d.html#a48a7e15282f392e77561dd96ed3320f9", null ], + [ "fillDepthHoles", "namespacertabmap_1_1util2d.html#aeb3dee2cf6484f0b224d4687899cb004", null ], + [ "fillRegisteredDepthHoles", "namespacertabmap_1_1util2d.html#afc6c9b3442c64ef2061365ead3923228", null ], + [ "fastBilateralFiltering", "namespacertabmap_1_1util2d.html#a076914fde23d1323fccf71a794b9bc51", null ], + [ "depthBleedingFiltering", "namespacertabmap_1_1util2d.html#a7788d4dabf084959aa69162d5dbb2d2e", null ], + [ "brightnessAndContrastAuto", "namespacertabmap_1_1util2d.html#a89ec90b2659c764ba22b5c36d729c8f8", null ], + [ "exposureFusion", "namespacertabmap_1_1util2d.html#ac38e8ed586d24c4b9fe72d64afeb9583", null ], + [ "HSVtoRGB", "namespacertabmap_1_1util2d.html#ac29ac5b8bed26a5299d378708170dd11", null ], + [ "NMS", "namespacertabmap_1_1util2d.html#aafa9a426c8e7dd0359adf40e1b45ee1c", null ], + [ "SSC", "namespacertabmap_1_1util2d.html#aa6957971e17f27bb066efe036d80fd46", null ], + [ "rotateImagesUpsideUpIfNecessary", "namespacertabmap_1_1util2d.html#a1577494ad9730181d5b768ca8237d5dd", null ] + ] ], + [ "util3d", "namespacertabmap_1_1util3d.html", [ + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga078f5eae0077169e636ec76e03973edc", null ], + [ "projectCloudOnXYPlane", "namespacertabmap_1_1util3d.html#a3bdae076cc5054f35393b744f478b980", null ], + [ "segmentObstaclesFromGround", "namespacertabmap_1_1util3d.html#a72b271fa98352180241614517ef3b21e", null ], + [ "occupancy2DFromGroundObstacles", "namespacertabmap_1_1util3d.html#ab156e4308c21e118ea0aa164a5ae9812", null ], + [ "occupancy2DFromGroundObstacles", "namespacertabmap_1_1util3d.html#a9b93d07997a94a78b6be6bd573e39148", null ], + [ "occupancy2DFromCloud3D", "namespacertabmap_1_1util3d.html#a7d90f3a00301f9f7c79cd6fc6cd663c2", null ], + [ "occupancy2DFromCloud3D", "namespacertabmap_1_1util3d.html#a969e2d135e91a6e2ace68850086ae0e9", null ], + [ "rgbFromCloud", "namespacertabmap_1_1util3d.html#a3366d0a9c24960ee3f5b720945e12b1b", null ], + [ "depthFromCloud", "namespacertabmap_1_1util3d.html#aaf77cb59d32f36c1e9baa2111a7b1b3d", null ], + [ "rgbdFromCloud", "namespacertabmap_1_1util3d.html#a5ec62aa90ceb52a032e7e49c22e0fd76", null ], + [ "projectDepthTo3D", "namespacertabmap_1_1util3d.html#a4a95aa3704280ecff8ae50db2fdb03b5", null ], + [ "projectDepthTo3DRay", "namespacertabmap_1_1util3d.html#a791904051b63ab0da4d972166a25ae5f", null ], + [ "cloudFromDepth", "namespacertabmap_1_1util3d.html#a45c699a4a8f4108aa31148fb706e6249", null ], + [ "cloudFromDepth", "namespacertabmap_1_1util3d.html#a9fa0222fe9a7f74fcfa4c04c0c2dd532", null ], + [ "cloudFromDepthRGB", "namespacertabmap_1_1util3d.html#a982bc5d13fea129a174e16373aa8a31c", null ], + [ "cloudFromDepthRGB", "namespacertabmap_1_1util3d.html#a64b369873a01960576cb34aab4c5a319", null ], + [ "cloudFromDisparity", "namespacertabmap_1_1util3d.html#aee34b5fe56014a9fa058fbdbf90cab71", null ], + [ "cloudFromDisparityRGB", "namespacertabmap_1_1util3d.html#a1e4a96407fb1b92018e640ef41b8db8e", null ], + [ "cloudFromStereoImages", "namespacertabmap_1_1util3d.html#a406caa6c0c51bae870a8c3a44e7daccc", null ], + [ "cloudsFromSensorData", "namespacertabmap_1_1util3d.html#ada07c0379fcc7bb7465e31a5a53ebfaa", null ], + [ "cloudFromSensorData", "namespacertabmap_1_1util3d.html#aacda489f2336d8edb4e982f61f55cc66", null ], + [ "cloudsRGBFromSensorData", "namespacertabmap_1_1util3d.html#a2155fca440675ca9697a2fe7b2efb30e", null ], + [ "cloudRGBFromSensorData", "namespacertabmap_1_1util3d.html#a29ece82e01f041cab271fe9322cf9745", null ], + [ "laserScanFromDepthImage", "namespacertabmap_1_1util3d.html#a39d4adb63b4bd06592e2c65641a32558", null ], + [ "laserScanFromDepthImages", "namespacertabmap_1_1util3d.html#a07f8a125805ac013039b7fa0ddb623e0", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga16a77d267dc60b14b5bf48ca52547bae", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga75f96d3e3d5d62ce6a9d16a1753c775a", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga7a88e45c9bab555c6d1efd64be765c4d", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga9470f081e8de0a34550e91e2f74bacd5", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#gad5764a399e3a8a5586b94490e0cd7d15", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga9933faab17e984b2789926abd2ba0caf", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#gaa98ccb732868f5ab4e91cd6f82602852", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#gadeb1f66fd39cfcb39c2f152c36b3be62", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga51c683da166a9fcf7e7bf6c834ca03a4", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga655a37385c6ca40ec99e76045c04040b", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga04169bd4b4488350b08709af9581b289", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga75bf455d6cc912b4ee18785de71c50a5", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#gaf509a7c65e02d8690c971294c43bda47", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga9344c712c57af92d7612b0af76226f06", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#ga79e460158de1d3934abcd8fad488fb24", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#gafb165d79d23620b42af0653ae045fb91", null ], + [ "laserScanFromPointCloud", "group__LaserScanFromPointCloud.html#gab2d54043075851c5e23f487001adacb6", null ], + [ "laserScan2dFromPointCloud", "group__LaserScan2dFromPointCloud.html#gac0823dd28e488bef9499faee54ff8a4e", null ], + [ "laserScan2dFromPointCloud", "group__LaserScan2dFromPointCloud.html#ga0898d06b1639f58ed92b66f311e786aa", null ], + [ "laserScan2dFromPointCloud", "group__LaserScan2dFromPointCloud.html#gac278e2f3f54ed49b5d3a6afa606a466b", null ], + [ "laserScan2dFromPointCloud", "group__LaserScan2dFromPointCloud.html#gae4e7c218a24fb8d5c3fd7143462d3070", null ], + [ "laserScan2dFromPointCloud", "group__LaserScan2dFromPointCloud.html#ga6cb623d1b3ce9c244a7d4ef346a721db", null ], + [ "laserScan2dFromPointCloud", "group__LaserScan2dFromPointCloud.html#ga0354b321c4196232fb1183c3a322b5f8", null ], + [ "laserScanToPointCloud2", "group__LaserScanToPointCloud.html#ga394ec840a58a1203fac9725d49a0013c", null ], + [ "laserScanToPointCloud", "group__LaserScanToPointCloud.html#gac4aef207f79791db5064dc596e25513b", null ], + [ "laserScanToPointCloudNormal", "group__LaserScanToPointCloud.html#gafe2b6826178bf0af878be67bddf3c9bd", null ], + [ "laserScanToPointCloudRGB", "group__LaserScanToPointCloud.html#gaee3e6a7ef23f6e5f9a19a0b033d7522c", null ], + [ "laserScanToPointCloudI", "group__LaserScanToPointCloud.html#ga734628cdc1b15384476dc94d1c3dbb4d", null ], + [ "laserScanToPointCloudRGBNormal", "group__LaserScanToPointCloud.html#ga741bd010511d5284831012194eab99b9", null ], + [ "laserScanToPointCloudINormal", "group__LaserScanToPointCloud.html#ga8ee678c27ae59e2bb3fac8aeb55f9d92", null ], + [ "laserScanToPoint", "group__LaserScanToPointCloud.html#gaeda3b4a673cb96e6421688e6c575e4e5", null ], + [ "laserScanToPointNormal", "group__LaserScanToPointCloud.html#ga4412f275d60b69f0f62db56321c5991c", null ], + [ "laserScanToPointRGB", "group__LaserScanToPointCloud.html#gad0183648eae48143b33bfe969f8cbe43", null ], + [ "laserScanToPointI", "group__LaserScanToPointCloud.html#ga03b1c3a49aba08fcbc01b5991f25d0cc", null ], + [ "laserScanToPointRGBNormal", "group__LaserScanToPointCloud.html#ga675b84c6a6edde91883e38f49c087f31", null ], + [ "laserScanToPointINormal", "group__LaserScanToPointCloud.html#gab69062f7ffd0f2192983c6d7afa4a171", null ], + [ "getMinMax3D", "namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018", null ], + [ "getMinMax3D", "namespacertabmap_1_1util3d.html#afc22f82c00f6dcc8a4ec1963891f4b7e", null ], + [ "projectDisparityTo3D", "namespacertabmap_1_1util3d.html#a42fb0c483553db3b06e78d85106b8ee5", null ], + [ "projectDisparityTo3D", "namespacertabmap_1_1util3d.html#a05a022ff5229033fc248bc497edd5449", null ], + [ "projectCloudToCamera", "namespacertabmap_1_1util3d.html#a826310ce938a13b9fff64f71e7ecc057", null ], + [ "projectCloudToCamera", "namespacertabmap_1_1util3d.html#a7dea084f1dbb77c8f5bc2a7241c3b566", null ], + [ "projectCloudToCamera", "namespacertabmap_1_1util3d.html#a285e01226d60613ffd77d929780069ba", null ], + [ "fillProjectedCloudHoles", "namespacertabmap_1_1util3d.html#a992c9dd2c6243261244e0650d3e98564", null ], + [ "filterFloor", "namespacertabmap_1_1util3d.html#ae145af1bf4955fa135bcf359fb1fe628", null ], + [ "projectCloudToCameras", "namespacertabmap_1_1util3d.html#aa5a81a30a05507cb5d222f2f23c111ea", null ], + [ "projectCloudToCameras", "namespacertabmap_1_1util3d.html#ae29c5a7ba359682e2430f55318226b39", null ], + [ "isFinite", "namespacertabmap_1_1util3d.html#acc048e10b70e3ad3efb299926e575020", null ], + [ "concatenateClouds", "namespacertabmap_1_1util3d.html#a863268b894de375aa45485dafe52dd7b", null ], + [ "concatenateClouds", "namespacertabmap_1_1util3d.html#a909a600c90d8bc4f77b62ff21a97ddc1", null ], + [ "concatenate", "namespacertabmap_1_1util3d.html#aff3c61a08b0fcad7f1c3f7c847190969", null ], + [ "concatenate", "namespacertabmap_1_1util3d.html#ac6c2019b1dad806d0c593e2ee3c21185", null ], + [ "savePCDWords", "namespacertabmap_1_1util3d.html#a4e297ff4baacb0c658d7481eef5201a6", null ], + [ "savePCDWords", "namespacertabmap_1_1util3d.html#abf6955904a45f28187e73aa1f4c409e0", null ], + [ "loadBINScan", "namespacertabmap_1_1util3d.html#a5ee08270b4a9e8ad93193721c7c71556", null ], + [ "loadBINCloud", "namespacertabmap_1_1util3d.html#a636c56f4ab6e58044595f95e44f93d06", null ], + [ "loadBINCloud", "namespacertabmap_1_1util3d.html#ae112015538769a29c920da97096e0d17", null ], + [ "loadScan", "namespacertabmap_1_1util3d.html#aefffe4f3418377f85659e7546668b190", null ], + [ "loadCloud", "namespacertabmap_1_1util3d.html#a86ba029bd916ab76dd5645ba7e1b2ef8", null ], + [ "deskew", "namespacertabmap_1_1util3d.html#ae4f056638c16889c7cb1d41ecac2866c", null ], + [ "extractXYZCorrespondences", "namespacertabmap_1_1util3d.html#a58b9802c1fc28b7e8927359173f98de8", null ], + [ "extractXYZCorrespondencesRANSAC", "namespacertabmap_1_1util3d.html#ab6a2896e40afacde8cb8b0d10a955e02", null ], + [ "extractXYZCorrespondences", "namespacertabmap_1_1util3d.html#a0696277eef10a197af8fd5dcba52fc12", null ], + [ "extractXYZCorrespondences", "namespacertabmap_1_1util3d.html#a340e76117340170fb465ade8b11dd6af", null ], + [ "extractXYZCorrespondences", "namespacertabmap_1_1util3d.html#a43b6de83939173dfd275cbd17f5d7500", null ], + [ "countUniquePairs", "namespacertabmap_1_1util3d.html#af7d4d348836959bbdce0e5db0a4af91c", null ], + [ "filterMaxDepth", "namespacertabmap_1_1util3d.html#a96efcf6ed971e5a5d6b7f9a5e03d1ce3", null ], + [ "findCorrespondences", "namespacertabmap_1_1util3d.html#a188c2a13980f6b7d85e6e0804a38cb50", null ], + [ "findCorrespondences", "namespacertabmap_1_1util3d.html#ac466a705ab9ee7d99f23842cd71f3c96", null ], + [ "findCorrespondences", "namespacertabmap_1_1util3d.html#a5c07f098f9f5ba889e18d22b927f3cd4", null ], + [ "generateKeypoints3DDepth", "namespacertabmap_1_1util3d.html#a785db0d55f5eccf209b9d3d712ec92b2", null ], + [ "generateKeypoints3DDepth", "namespacertabmap_1_1util3d.html#a4f938d094d62997e0fb5d53c59f7ef82", null ], + [ "generateKeypoints3DDisparity", "namespacertabmap_1_1util3d.html#af34bc7763a1e077a3520f4952ed9d196", null ], + [ "generateKeypoints3DStereo", "namespacertabmap_1_1util3d.html#a7d48db86fe2f0cfc9abc974a66be8695", null ], + [ "aggregate", "namespacertabmap_1_1util3d.html#acc3c59044fcfdb8cc1fba8a41a0e9eab", null ], + [ "commonFiltering", "namespacertabmap_1_1util3d.html#a7edd91750858112fd161f0ed30af7f45", null ], + [ "commonFiltering", "namespacertabmap_1_1util3d.html#ad02c78c4d3ca36fa9a27a845540ebe55", null ], + [ "rangeFiltering", "namespacertabmap_1_1util3d.html#ae33bcf90896fbedc448097bed3bde0ae", null ], + [ "rangeFiltering", "group__PointCloudRangeFiltering.html#gaf1867021c847f77f561a96e4823a16bd", null ], + [ "rangeFiltering", "group__PointCloudRangeFiltering.html#gaeff3b4153a78703ce5be9c64f8243596", null ], + [ "rangeFiltering", "group__PointCloudRangeFiltering.html#ga2a2226e27b4203d04293f84bf8032e3f", null ], + [ "rangeFiltering", "group__PointCloudRangeFiltering.html#ga954c38903497ffa168e9d58afc47078e", null ], + [ "rangeSplitFiltering", "group__PointCloudSplitRangeFiltering.html#ga2dfe5eefc31a50912297f6341eae4446", null ], + [ "rangeSplitFiltering", "group__PointCloudSplitRangeFiltering.html#ga99d6429ac043d37bdef871158739557e", null ], + [ "rangeSplitFiltering", "group__PointCloudSplitRangeFiltering.html#ga843adb51ad7882fc8c6b8d00f4663c3b", null ], + [ "rangeSplitFiltering", "group__PointCloudSplitRangeFiltering.html#gac9564b3cf8c8be2f80a20655f70af4f0", null ], + [ "downsample", "group__PointCloudDownSampling.html#ga83a15e5eaeee8707bfa5563c71154579", null ], + [ "downsample", "group__PointCloudDownSampling.html#ga2f9dd8a7c572ce78b76aec448b17a863", null ], + [ "downsample", "group__PointCloudDownSampling.html#ga7a57facb7148254d43af7577a3716d15", null ], + [ "downsample", "group__PointCloudDownSampling.html#gab4b196b83a0634b8e58c145ed54d510d", null ], + [ "downsample", "group__PointCloudDownSampling.html#ga83657d48dce8b727088941773f4d8a73", null ], + [ "downsample", "group__PointCloudDownSampling.html#ga8c3ca654fb0cc07084fdac8077714b3a", null ], + [ "downsample", "group__PointCloudDownSampling.html#ga32d575439b2f5082c3946bc964c14b75", null ], + [ "voxelize", "group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89", null ], + [ "voxelize", "group__VoxelFiltering.html#ga94af1db82b1faffff875a9902d44285b", null ], + [ "voxelize", "group__VoxelFiltering.html#gab2a9294812a8c0fcaed92d0f119eaa31", null ], + [ "voxelize", "group__VoxelFiltering.html#gabf0201c1253022d7ce8278fc44998530", null ], + [ "voxelize", "group__VoxelFiltering.html#gaebeee3702499e5f8d692ecd0bc48029b", null ], + [ "voxelize", "group__VoxelFiltering.html#gac5158ba02fc61bfa503967ddd5ec319d", null ], + [ "voxelize", "group__VoxelFiltering.html#gaf5726b462426b56425604343e51a79c3", null ], + [ "voxelize", "group__VoxelFiltering.html#ga3ea1e68d63d45c84d2c3b6b3bcac4653", null ], + [ "voxelize", "group__VoxelFiltering.html#ga8fce5075a28203045c3865b1d068c084", null ], + [ "voxelize", "group__VoxelFiltering.html#gab974887ed7faf7685d6c8c181827b2c2", null ], + [ "voxelize", "group__VoxelFiltering.html#ga751ff8adfdf8e6f824a7bef0d4630044", null ], + [ "voxelize", "group__VoxelFiltering.html#gac6809e08656312d793ce34e828e33998", null ], + [ "uniformSampling", "namespacertabmap_1_1util3d.html#a858e0a5338f348eb1033d6a85c3db926", null ], + [ "uniformSampling", "namespacertabmap_1_1util3d.html#a8dfd7d808fa94e809b4a1a1fba6b8226", null ], + [ "uniformSampling", "namespacertabmap_1_1util3d.html#af526f72e838659de76ac45447d3860ae", null ], + [ "randomSampling", "group__RandomSampling.html#ga8dadcd7fb9beedc839b54079c6e84701", null ], + [ "randomSampling", "group__RandomSampling.html#gaf323d2f6db341f7dd83893297b1f9693", null ], + [ "randomSampling", "group__RandomSampling.html#gac4f1ee370a918987a847d5d604601837", null ], + [ "randomSampling", "group__RandomSampling.html#ga7738134d7dec8f178a927dfe69fcb15a", null ], + [ "randomSampling", "group__RandomSampling.html#gad6269088b589b735fd87e07d11bf2547", null ], + [ "randomSampling", "group__RandomSampling.html#ga5e31a5d57029fddd20e5d57ecdfb1184", null ], + [ "passThrough", "group__PassThrough.html#ga7bfc95ed4f7fca124b00707708223473", null ], + [ "passThrough", "group__PassThrough.html#gad674cecbb2b80e50ad8680265dd50905", null ], + [ "passThrough", "group__PassThrough.html#gadb551e7530b9fa63b588e11704827b7b", null ], + [ "passThrough", "group__PassThrough.html#ga9c4f395f1105d3c36861e922108bfbf0", null ], + [ "passThrough", "group__PassThrough.html#ga2d23fe7a7205247ae3152525d19a18ec", null ], + [ "passThrough", "group__PassThrough.html#ga18c88abdd186757533cd7c9e825f540f", null ], + [ "passThrough", "group__PassThrough.html#gad8ced1799837b05e34ec4bd871a129ba", null ], + [ "passThrough", "group__PassThrough.html#gafe76c7bd4f68d8fe1518509564bf1f3d", null ], + [ "passThrough", "group__PassThrough.html#ga551c7a9b75aaf6f087f81e52f326e182", null ], + [ "passThrough", "group__PassThrough.html#ga4cef6e6f7cb447719417f118ff4e367d", null ], + [ "passThrough", "group__PassThrough.html#gaa6907857c69443b1bd879fcf6beef8a9", null ], + [ "passThrough", "group__PassThrough.html#gab942c5914142128bce518c869f49f94d", null ], + [ "cropBox", "group__CropBox.html#ga8291151381ff38773e641740b66b93ef", null ], + [ "cropBox", "group__CropBox.html#ga668e8d0a8a8abd65500bd7e7b748eec2", null ], + [ "cropBox", "group__CropBox.html#gaa6737135785f73d1a2f3ec966ab22bc7", null ], + [ "cropBox", "group__CropBox.html#ga20a5eeed65c38958ed5866216f26bd44", null ], + [ "cropBox", "group__CropBox.html#ga3b4c45a05e5bc0ff7d4c3917103e4f29", null ], + [ "cropBox", "group__CropBox.html#ga43309cd4b35fcbe7a746ccb1dc9a1b4f", null ], + [ "cropBox", "group__CropBox.html#ga0fe7f976bca4c8ec9dd0afa95f590c72", null ], + [ "cropBox", "group__CropBox.html#ga15f14d0a8c9de82ff3ad398fa8c36097", null ], + [ "cropBox", "group__CropBox.html#ga1302fc8f7569390d2d9a6a66c24f5179", null ], + [ "cropBox", "group__CropBox.html#ga1f23604e3b58f73183fe3102dd9f86c9", null ], + [ "cropBox", "group__CropBox.html#ga8065c61da2295bf203e4ee7471e9332d", null ], + [ "cropBox", "group__CropBox.html#ga5d5cafb95fb856438e55a0de06378ef7", null ], + [ "cropBox", "group__CropBox.html#ga32e6cd849848faaccc6b46ba02f98f6b", null ], + [ "frustumFiltering", "group__FrustumFiltering.html#gad05921639a3371d2ee0f684b77542330", null ], + [ "frustumFiltering", "group__FrustumFiltering.html#ga93cb6151fc470d6b932b4a7c6cb15090", null ], + [ "frustumFiltering", "group__FrustumFiltering.html#ga4ceacaabe757da82d3278b08df766a69", null ], + [ "removeNaNFromPointCloud", "group__RemoveNaNFromPointCloud.html#ga307cddc4476370cc25e5f67fd13af865", null ], + [ "removeNaNFromPointCloud", "group__RemoveNaNFromPointCloud.html#ga2c98d8e54fff76606352c87edc378c31", null ], + [ "removeNaNFromPointCloud", "group__RemoveNaNFromPointCloud.html#ga30ecdbed3fd26b750dcb0e63ea8c68b1", null ], + [ "removeNaNFromPointCloud", "group__RemoveNaNFromPointCloud.html#gab8b441e9acbafb0f36a0f4567e9535d6", null ], + [ "removeNaNNormalsFromPointCloud", "group__RemoveNaNNormalsFromPointCloud.html#ga3813dba7a0841937f37d9ecdaf526748", null ], + [ "removeNaNNormalsFromPointCloud", "group__RemoveNaNNormalsFromPointCloud.html#gafeeebb45de9c3cb8ac353f3cf867bc41", null ], + [ "removeNaNNormalsFromPointCloud", "group__RemoveNaNNormalsFromPointCloud.html#ga42b9cf0558f56e1b00bd9ab1e2f1d0e6", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#ga21f5957a6c6b8dd2ca7e559ed8a82d08", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#ga4f7bd9bc6922f17815109375fc11367b", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#gaa1328e1ba793b44a450fe90e4e99fa35", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#ga3b3ef1e4b2893810542c6c2be871fa16", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#ga4a5c1b3dd17782eed6ff342a27ab9dde", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#ga9e4ddb084f4c00934f65f30d8b466047", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#gae6562a12f695af7fc210043c85afeebc", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#gaa6e6e945a27057824168aa287670d641", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#gadc01992dd4ebc7fe77f40e423ba83f95", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#gafba9a36653f1314aa968966f5e8f8df6", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#gada185029395a374e08162d2b357406a8", null ], + [ "radiusFiltering", "group__RadiusFiltering.html#ga8fde7163c8ede34584e464909f8410cd", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#ga3ce176a96606fd506d3ff28a0a4cdc2a", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#ga76e80e9da74feba84271c52b06065b7f", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#ga5382e5aa1b2db5ee59cda070d02030f7", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#gac755f189d29b0ed14e48e7f241103176", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#gaa3e3f8d0bdc8bfa7e070b7ef73541ddb", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#gacdc66ecd05ab55d9c3eba62846f1cc5d", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#ga0b1bda3085510fd29162d6f511f14903", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#ga532ecb60ddd5c72d6c2930648da37621", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#ga9def3599aeff33e3d2a733020f713310", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#ga5e6659182a671665d293afb05461bdbd", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#gad54efb4e02c820af7d480c157a7c5ae8", null ], + [ "proportionalRadiusFiltering", "group__ProportionalRadiusFiltering.html#gac355ea4ecf36de86425b3dcd7794b4e1", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#ga69fb3ae457d192fd2c12631b0b5adf60", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#ga74d28899131bcb449b4d243a556c53aa", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#gad92c79e9320d8eae62053d01bb8ba9df", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#ga49d4f22e20984d271bb4c3240018eeed", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#ga1879c56f82037789aed799c484fb883a", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#gae14131d7ab09a650fb1411a8252e5526", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#gad2840d4057963b7cb29c02ee15fca895", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#ga68cd453fcda96d2dba733650879f5d54", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#gaafd6fae4cac4f182d79e4507226165ef", null ], + [ "subtractFiltering", "group__SubtractFiltering.html#gaf2bca73b4dc564bb6b2b7b779c718373", null ], + [ "subtractAdaptiveFiltering", "namespacertabmap_1_1util3d.html#a2d730d57c10b9ef235388c8e6bd49132", null ], + [ "subtractAdaptiveFiltering", "namespacertabmap_1_1util3d.html#aa82dd73da48128b88a6aaf20c625814d", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#ga7c7e3de2ff24fc3aadfb3eb0ae05314d", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#gad37b605f0f26190c95450c878ca51ece", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#gabfeacf2f8a261abd98a9c6728f02324b", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#ga5c15577ccd70487c3ccd53c16b00648b", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#gad821858315d7e1e1868d6314d65a9f89", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#ga96711db9864b121ab9e2bcbf2cf44658", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#ga91fd9701dea9ebc4b7265b12b357aba1", null ], + [ "normalFiltering", "group__PointNormalFiltering.html#gae3831a32e21738a381ea789e9e3e3996", null ], + [ "extractClusters", "group__ExtractClusters.html#ga62a0d02930f5969cbff707afe01d1bcd", null ], + [ "extractClusters", "group__ExtractClusters.html#ga180048dc26009c5d6d1233bb6ce5de04", null ], + [ "extractClusters", "group__ExtractClusters.html#ga8184974cc084fdd804e82bb979eb2353", null ], + [ "extractClusters", "group__ExtractClusters.html#gaecfbf327f7ef38738d0e592ed470d318", null ], + [ "extractClusters", "group__ExtractClusters.html#ga7c622ccc41a487527f0448db84fd8539", null ], + [ "extractClusters", "group__ExtractClusters.html#gada592bb1e0525a32412d5009002b9b1e", null ], + [ "extractClusters", "group__ExtractClusters.html#ga3e51576a82fef5cddffe4d3ae14d8899", null ], + [ "extractClusters", "group__ExtractClusters.html#ga8e23ae8df06afbb753eb6eb0b54a400a", null ], + [ "extractIndices", "group__ExtractIndices.html#ga8685395807479f06b19d9d41616a03a7", null ], + [ "extractIndices", "group__ExtractIndices.html#ga8ce0dc4070d599c6f4a8c55651c2f944", null ], + [ "extractIndices", "group__ExtractIndices.html#ga0c8a4fe56efba09d2bf6c5b84da36702", null ], + [ "extractIndices", "group__ExtractIndices.html#ga93acd3d20cbab15b628cbc2a0f3b1919", null ], + [ "extractIndices", "group__ExtractIndices.html#gaf8e635d6864b0a7f41bad4bb185a57f4", null ], + [ "extractIndices", "group__ExtractIndices.html#gae196609121fa899ba2735d406aedc73b", null ], + [ "extractIndices", "group__ExtractIndices.html#ga2a39a8e9d769e5e2cea8054b7084af1e", null ], + [ "extractIndices", "group__ExtractIndices.html#gaca2188ec4a875fb9c6d2fa240888dcf1", null ], + [ "extractIndices", "group__ExtractIndices.html#gaf6cd58fdda3450fb11496395e35908d7", null ], + [ "extractIndices", "group__ExtractIndices.html#gad759e35639cd87f04ebd09eadb5865f5", null ], + [ "extractIndices", "group__ExtractIndices.html#gaa312bb0ae54f1472d4e4f22bee7cc4d6", null ], + [ "extractPlane", "namespacertabmap_1_1util3d.html#acc584a6135a4567d4566f72a64d0770a", null ], + [ "occupancy2DFromLaserScan", "namespacertabmap_1_1util3d.html#a4f1002c1825baf4b7606a94b4ea9b15d", null ], + [ "occupancy2DFromLaserScan", "namespacertabmap_1_1util3d.html#aa1c9dfd681662ff1c164956a83e30b57", null ], + [ "occupancy2DFromLaserScan", "namespacertabmap_1_1util3d.html#a2d2f6d5adead09c6f87ef3f7cdebc65e", null ], + [ "create2DMapFromOccupancyLocalMaps", "namespacertabmap_1_1util3d.html#a86ea393c958183f10da8f7327e25d894", null ], + [ "create2DMap", "namespacertabmap_1_1util3d.html#ae7dca67101116f7de0114cea5442ec23", null ], + [ "create2DMap", "namespacertabmap_1_1util3d.html#adcc1d4aca3da4fcb11fa44d3a20f46ca", null ], + [ "create2DMap", "namespacertabmap_1_1util3d.html#afff989b8fc8d612a69d82bdfa7a28fe8", null ], + [ "rayTrace", "namespacertabmap_1_1util3d.html#a281695150f5c02e6222d050f488a9d6b", null ], + [ "convertMap2Image8U", "namespacertabmap_1_1util3d.html#ae57dd8dcc488496a2c3872eba97eb4e4", null ], + [ "convertImage8U2Map", "namespacertabmap_1_1util3d.html#acb47883439442306b63f5bf234e87049", null ], + [ "erodeMap", "namespacertabmap_1_1util3d.html#aa4d323d39ec23ea314c22f0668ab11c4", null ], + [ "segmentObstaclesFromGround", "namespacertabmap_1_1util3d.html#a58ee399b0bca3a8af41e74d0eced5f84", null ], + [ "setRansacDeterministicSeed", "namespacertabmap_1_1util3d.html#a5f95aa913b08b0d0f12e9fc02b087692", null ], + [ "ransacDeterministicSeedEnabled", "namespacertabmap_1_1util3d.html#ad918f390fa8b4d331561d5a00d61ea7b", null ], + [ "estimateMotion3DTo2D", "namespacertabmap_1_1util3d.html#a94321442a82f05368f8fd9c9a998284e", null ], + [ "estimateMotion3DTo2D", "namespacertabmap_1_1util3d.html#a3fffe99bf880decfb8a9f60ff7b882bd", null ], + [ "estimateMotion3DTo2D", "namespacertabmap_1_1util3d.html#a0a1a57cb2be47c4b6670672b2a0a5a93", null ], + [ "estimateMotion3DTo3D", "namespacertabmap_1_1util3d.html#a717fefeecb331b1dddc3ec3b4f6beb3a", null ], + [ "solvePnPRansac", "namespacertabmap_1_1util3d.html#ad426e396a196d6f69a004bb55982f9f7", null ], + [ "transformFromXYZCorrespondencesSVD", "namespacertabmap_1_1util3d.html#a56797352c7d47f815c694bc4ccb1faea", null ], + [ "transformFromXYZCorrespondences", "namespacertabmap_1_1util3d.html#aab3ff771d2b43075bb8e7ca6e730c37c", null ], + [ "computeVarianceAndCorrespondences", "group__ComputeVarianceAndCorrespondences.html#gaf474f9fb6eaaf532e9b18af63b9e1665", null ], + [ "computeVarianceAndCorrespondences", "group__ComputeVarianceAndCorrespondences.html#gaae6ddd0517614e9332669c37c6816777", null ], + [ "computeVarianceAndCorrespondences", "group__ComputeVarianceAndCorrespondences.html#ga92518a7b79e9265380f3a047e46ec247", null ], + [ "computeVarianceAndCorrespondences", "group__ComputeVarianceAndCorrespondences.html#ga7d90c0848a13e35f37588addf3637fe2", null ], + [ "icp", "namespacertabmap_1_1util3d.html#af9f16d681288b1f91ce6e5a8ee9f6967", null ], + [ "icp", "namespacertabmap_1_1util3d.html#a1a153cf0e597dd206c6a850957f6c1ef", null ], + [ "icpPointToPlane", "namespacertabmap_1_1util3d.html#a6ac0f56608f1760d60eda7861b8dc303", null ], + [ "icpPointToPlane", "namespacertabmap_1_1util3d.html#a12d008fea5babe6a208fca7b1fb719d3", null ], + [ "createPolygonIndexes", "namespacertabmap_1_1util3d.html#a9ebe11bdf534e3bdbcb2802d5dd70e62", null ], + [ "cleanTextureMesh", "namespacertabmap_1_1util3d.html#a07466d3f99ac7f763ba476f65c99ebb0", null ], + [ "mergeTextures", "namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238", null ], + [ "multiBandTexturing", "namespacertabmap_1_1util3d.html#a695eb29e9b2679634edb6b8c36a11942", null ], + [ "computeNormalsComplexity", "group__ComputeNormalsComplexity.html#ga3724a082502fbef6222c11843ca56b58", null ], + [ "computeNormalsComplexity", "group__ComputeNormalsComplexity.html#ga5a68422282e99f8d05c0821eac491895", null ], + [ "computeNormalsComplexity", "group__ComputeNormalsComplexity.html#ga13a6d7525494d390041c9ef0337e02dd", null ], + [ "computeNormalsComplexity", "group__ComputeNormalsComplexity.html#ga6e03130bf686d43ea527dc8e6f5cce55", null ], + [ "computeNormalsComplexity", "group__ComputeNormalsComplexity.html#ga3e024c51a6a49d1c8e6b64c230148137", null ], + [ "intersectRayTriangle", "namespacertabmap_1_1util3d.html#ab138227ab6c0511088e846b2276e7afc", null ], + [ "transformLaserScan", "namespacertabmap_1_1util3d.html#abf12a46cc48ee93e6575ea624377fb42", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga46b86abad0f4aa2ba7f191da0e07ba69", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga7a573f91887b29ec4ff2ef6355df4473", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga18eb2c9ec062b5453bf7c97128d89018", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga310e525344813377f2d470d47b7c4d51", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga1387b7a1d5280ed3596331f93fc56484", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#gac60701fa37d61f3cbe6f462da7576e73", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga59e54f906ba844eb8780946e57b0e271", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga2a621fc8ab625cd4003b4f26e0ce3b52", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga797f466a165622e08dda14cdaccb5df6", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga00514f671b8dbcc343ff481aa7c36367", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#gac7c95eba604afe62ab897df62d862220", null ], + [ "transformPointCloud", "group__TransformPointcloud.html#ga47713c64205eb83460cfeec9a7bb6659", null ], + [ "transformPoint", "group__TransformPoint.html#ga88b4f827a105254bf08bdae73cebdbe9", null ], + [ "transformPoint", "group__TransformPoint.html#ga4910f2b937d405bd529772c33d477ca4", null ], + [ "transformPoint", "group__TransformPoint.html#ga2ad96e68847f315e6d5df18d3219f308", null ], + [ "transformPoint", "group__TransformPoint.html#ga7bfb9d7e10b81cd3b5e3f164081388be", null ], + [ "transformPoint", "group__TransformPoint.html#ga90e6ffecb159bdff5afc75e16ab1fe19", null ], + [ "transformPoint", "group__TransformPoint.html#gad98c1e7ba04edb9a57c5557d88360afd", null ], + [ "transformPoint", "group__TransformPoint.html#ga8cf51597b74c589365d2e0e2272bea70", null ], + [ "transformPoint", "group__TransformPoint.html#gae272348c0353fe96683680b981a6b0fa", null ] + ] ], + [ "BayesFilter", "classrtabmap_1_1BayesFilter.html", "classrtabmap_1_1BayesFilter" ], + [ "BRISK", "classrtabmap_1_1BRISK.html", null ], + [ "Camera", "classrtabmap_1_1Camera.html", "classrtabmap_1_1Camera" ], + [ "CameraDepthAI", "classrtabmap_1_1CameraDepthAI.html", "classrtabmap_1_1CameraDepthAI" ], + [ "CameraFreenect", "classrtabmap_1_1CameraFreenect.html", "classrtabmap_1_1CameraFreenect" ], + [ "CameraFreenect2", "classrtabmap_1_1CameraFreenect2.html", "classrtabmap_1_1CameraFreenect2" ], + [ "CameraImages", "classrtabmap_1_1CameraImages.html", "classrtabmap_1_1CameraImages" ], + [ "CameraK4A", "classrtabmap_1_1CameraK4A.html", "classrtabmap_1_1CameraK4A" ], + [ "CameraK4W2", "classrtabmap_1_1CameraK4W2.html", "classrtabmap_1_1CameraK4W2" ], + [ "CameraModel", "classrtabmap_1_1CameraModel.html", "classrtabmap_1_1CameraModel" ], + [ "CameraMyntEye", "classrtabmap_1_1CameraMyntEye.html", "classrtabmap_1_1CameraMyntEye" ], + [ "CameraOpenni", "classrtabmap_1_1CameraOpenni.html", "classrtabmap_1_1CameraOpenni" ], + [ "CameraOpenNI2", "classrtabmap_1_1CameraOpenNI2.html", "classrtabmap_1_1CameraOpenNI2" ], + [ "CameraOpenNICV", "classrtabmap_1_1CameraOpenNICV.html", "classrtabmap_1_1CameraOpenNICV" ], + [ "CameraOrbbecSDK", "classrtabmap_1_1CameraOrbbecSDK.html", "classrtabmap_1_1CameraOrbbecSDK" ], + [ "CameraRealSense", "classrtabmap_1_1CameraRealSense.html", "classrtabmap_1_1CameraRealSense" ], + [ "CameraRealSense2", "classrtabmap_1_1CameraRealSense2.html", "classrtabmap_1_1CameraRealSense2" ], + [ "CameraRGBDImages", "classrtabmap_1_1CameraRGBDImages.html", "classrtabmap_1_1CameraRGBDImages" ], + [ "CameraSeerSense", "classrtabmap_1_1CameraSeerSense.html", "classrtabmap_1_1CameraSeerSense" ], + [ "CameraStereoDC1394", "classrtabmap_1_1CameraStereoDC1394.html", "classrtabmap_1_1CameraStereoDC1394" ], + [ "CameraStereoFlyCapture2", "classrtabmap_1_1CameraStereoFlyCapture2.html", "classrtabmap_1_1CameraStereoFlyCapture2" ], + [ "CameraStereoImages", "classrtabmap_1_1CameraStereoImages.html", "classrtabmap_1_1CameraStereoImages" ], + [ "CameraStereoTara", "classrtabmap_1_1CameraStereoTara.html", "classrtabmap_1_1CameraStereoTara" ], + [ "CameraStereoVideo", "classrtabmap_1_1CameraStereoVideo.html", "classrtabmap_1_1CameraStereoVideo" ], + [ "CameraStereoZed", "classrtabmap_1_1CameraStereoZed.html", "classrtabmap_1_1CameraStereoZed" ], + [ "CameraStereoZedOC", "classrtabmap_1_1CameraStereoZedOC.html", "classrtabmap_1_1CameraStereoZedOC" ], + [ "CameraVideo", "classrtabmap_1_1CameraVideo.html", "classrtabmap_1_1CameraVideo" ], + [ "CloudMap", "classrtabmap_1_1CloudMap.html", "classrtabmap_1_1CloudMap" ], + [ "CompressionThread", "classrtabmap_1_1CompressionThread.html", "classrtabmap_1_1CompressionThread" ], + [ "DBDriver", "classrtabmap_1_1DBDriver.html", "classrtabmap_1_1DBDriver" ], + [ "DBDriverSqlite3", "classrtabmap_1_1DBDriverSqlite3.html", "classrtabmap_1_1DBDriverSqlite3" ], + [ "DBReader", "classrtabmap_1_1DBReader.html", "classrtabmap_1_1DBReader" ], + [ "EnvSensor", "classrtabmap_1_1EnvSensor.html", "classrtabmap_1_1EnvSensor" ], + [ "EpipolarGeometry", "classrtabmap_1_1EpipolarGeometry.html", null ], + [ "FAST", "classrtabmap_1_1FAST.html", "classrtabmap_1_1FAST" ], + [ "FAST_BRIEF", "classrtabmap_1_1FAST__BRIEF.html", null ], + [ "FAST_FREAK", "classrtabmap_1_1FAST__FREAK.html", null ], + [ "Feature2D", "classrtabmap_1_1Feature2D.html", "classrtabmap_1_1Feature2D" ], + [ "FeatureBA", "classrtabmap_1_1FeatureBA.html", "classrtabmap_1_1FeatureBA" ], + [ "FlannIndex", "classrtabmap_1_1FlannIndex.html", "classrtabmap_1_1FlannIndex" ], + [ "GainCompensator", "classrtabmap_1_1GainCompensator.html", null ], + [ "GeodeticCoords", "classrtabmap_1_1GeodeticCoords.html", "classrtabmap_1_1GeodeticCoords" ], + [ "GFTT", "classrtabmap_1_1GFTT.html", "classrtabmap_1_1GFTT" ], + [ "GFTT_BRIEF", "classrtabmap_1_1GFTT__BRIEF.html", null ], + [ "GFTT_DAISY", "classrtabmap_1_1GFTT__DAISY.html", null ], + [ "GFTT_FREAK", "classrtabmap_1_1GFTT__FREAK.html", null ], + [ "GFTT_ORB", "classrtabmap_1_1GFTT__ORB.html", null ], + [ "GlobalDescriptor", "classrtabmap_1_1GlobalDescriptor.html", null ], + [ "GlobalDescriptorExtractor", "classrtabmap_1_1GlobalDescriptorExtractor.html", null ], + [ "GlobalMap", "classrtabmap_1_1GlobalMap.html", "classrtabmap_1_1GlobalMap" ], + [ "GPS", "classrtabmap_1_1GPS.html", "classrtabmap_1_1GPS" ], + [ "GridMap", "classrtabmap_1_1GridMap.html", "classrtabmap_1_1GridMap" ], + [ "IMU", "classrtabmap_1_1IMU.html", "classrtabmap_1_1IMU" ], + [ "IMUEvent", "classrtabmap_1_1IMUEvent.html", "classrtabmap_1_1IMUEvent" ], + [ "IMUFilter", "classrtabmap_1_1IMUFilter.html", "classrtabmap_1_1IMUFilter" ], + [ "IMUThread", "classrtabmap_1_1IMUThread.html", "classrtabmap_1_1IMUThread" ], + [ "KAZE", "classrtabmap_1_1KAZE.html", null ], + [ "Landmark", "classrtabmap_1_1Landmark.html", "classrtabmap_1_1Landmark" ], + [ "LaserScan", "classrtabmap_1_1LaserScan.html", "classrtabmap_1_1LaserScan" ], + [ "Lidar", "classrtabmap_1_1Lidar.html", "classrtabmap_1_1Lidar" ], + [ "LidarVLP16", "classrtabmap_1_1LidarVLP16.html", "classrtabmap_1_1LidarVLP16" ], + [ "Link", "classrtabmap_1_1Link.html", "classrtabmap_1_1Link" ], + [ "LocalGrid", "classrtabmap_1_1LocalGrid.html", "classrtabmap_1_1LocalGrid" ], + [ "LocalGridCache", "classrtabmap_1_1LocalGridCache.html", "classrtabmap_1_1LocalGridCache" ], + [ "LocalGridMaker", "classrtabmap_1_1LocalGridMaker.html", "classrtabmap_1_1LocalGridMaker" ], + [ "MarkerDetector", "classrtabmap_1_1MarkerDetector.html", null ], + [ "MarkerInfo", "classrtabmap_1_1MarkerInfo.html", null ], + [ "Memory", "classrtabmap_1_1Memory.html", "classrtabmap_1_1Memory" ], + [ "OccupancyGrid", "classrtabmap_1_1OccupancyGrid.html", "classrtabmap_1_1OccupancyGrid" ], + [ "OctoMap", "classrtabmap_1_1OctoMap.html", "classrtabmap_1_1OctoMap" ], + [ "Odometry", "classrtabmap_1_1Odometry.html", "classrtabmap_1_1Odometry" ], + [ "OdometryCuVSLAM", "classrtabmap_1_1OdometryCuVSLAM.html", "classrtabmap_1_1OdometryCuVSLAM" ], + [ "OdometryDVO", "classrtabmap_1_1OdometryDVO.html", "classrtabmap_1_1OdometryDVO" ], + [ "OdometryEvent", "classrtabmap_1_1OdometryEvent.html", "classrtabmap_1_1OdometryEvent" ], + [ "OdometryF2F", "classrtabmap_1_1OdometryF2F.html", "classrtabmap_1_1OdometryF2F" ], + [ "OdometryF2M", "classrtabmap_1_1OdometryF2M.html", "classrtabmap_1_1OdometryF2M" ], + [ "OdometryFLOAM", "classrtabmap_1_1OdometryFLOAM.html", "classrtabmap_1_1OdometryFLOAM" ], + [ "OdometryFovis", "classrtabmap_1_1OdometryFovis.html", "classrtabmap_1_1OdometryFovis" ], + [ "OdometryInfo", "classrtabmap_1_1OdometryInfo.html", "classrtabmap_1_1OdometryInfo" ], + [ "OdometryLIOSAM", "classrtabmap_1_1OdometryLIOSAM.html", "classrtabmap_1_1OdometryLIOSAM" ], + [ "OdometryLOAM", "classrtabmap_1_1OdometryLOAM.html", "classrtabmap_1_1OdometryLOAM" ], + [ "OdometryMono", "classrtabmap_1_1OdometryMono.html", "classrtabmap_1_1OdometryMono" ], + [ "OdometryMSCKF", "classrtabmap_1_1OdometryMSCKF.html", "classrtabmap_1_1OdometryMSCKF" ], + [ "OdometryOkvis", "classrtabmap_1_1OdometryOkvis.html", "classrtabmap_1_1OdometryOkvis" ], + [ "OdometryOpen3D", "classrtabmap_1_1OdometryOpen3D.html", "classrtabmap_1_1OdometryOpen3D" ], + [ "OdometryOpenVINS", "classrtabmap_1_1OdometryOpenVINS.html", "classrtabmap_1_1OdometryOpenVINS" ], + [ "OdometryORBSLAM2", "classrtabmap_1_1OdometryORBSLAM2.html", "classrtabmap_1_1OdometryORBSLAM2" ], + [ "OdometryORBSLAM3", "classrtabmap_1_1OdometryORBSLAM3.html", "classrtabmap_1_1OdometryORBSLAM3" ], + [ "OdometryResetEvent", "classrtabmap_1_1OdometryResetEvent.html", "classrtabmap_1_1OdometryResetEvent" ], + [ "OdometryThread", "classrtabmap_1_1OdometryThread.html", "classrtabmap_1_1OdometryThread" ], + [ "OdometryVINSFusion", "classrtabmap_1_1OdometryVINSFusion.html", "classrtabmap_1_1OdometryVINSFusion" ], + [ "OdometryViso2", "classrtabmap_1_1OdometryViso2.html", "classrtabmap_1_1OdometryViso2" ], + [ "Optimizer", "classrtabmap_1_1Optimizer.html", "classrtabmap_1_1Optimizer" ], + [ "OptimizerCeres", "classrtabmap_1_1OptimizerCeres.html", "classrtabmap_1_1OptimizerCeres" ], + [ "OptimizerCVSBA", "classrtabmap_1_1OptimizerCVSBA.html", "classrtabmap_1_1OptimizerCVSBA" ], + [ "OptimizerG2O", "classrtabmap_1_1OptimizerG2O.html", "classrtabmap_1_1OptimizerG2O" ], + [ "OptimizerGTSAM", "classrtabmap_1_1OptimizerGTSAM.html", "classrtabmap_1_1OptimizerGTSAM" ], + [ "OptimizerTORO", "classrtabmap_1_1OptimizerTORO.html", "classrtabmap_1_1OptimizerTORO" ], + [ "ORB", "classrtabmap_1_1ORB.html", "classrtabmap_1_1ORB" ], + [ "ORBOctree", "classrtabmap_1_1ORBOctree.html", null ], + [ "Parameters", "classrtabmap_1_1Parameters.html", null ], + [ "ParamEvent", "classrtabmap_1_1ParamEvent.html", "classrtabmap_1_1ParamEvent" ], + [ "ParticleFilter", "classrtabmap_1_1ParticleFilter.html", null ], + [ "PointXYZIRT", "structrtabmap_1_1PointXYZIRT.html", null ], + [ "PointXYZIT", "structrtabmap_1_1PointXYZIT.html", null ], + [ "ProgressState", "classrtabmap_1_1ProgressState.html", null ], + [ "PythonInterface", "classrtabmap_1_1PythonInterface.html", null ], + [ "Registration", "classrtabmap_1_1Registration.html", "classrtabmap_1_1Registration" ], + [ "RegistrationIcp", "classrtabmap_1_1RegistrationIcp.html", "classrtabmap_1_1RegistrationIcp" ], + [ "RegistrationInfo", "classrtabmap_1_1RegistrationInfo.html", "classrtabmap_1_1RegistrationInfo" ], + [ "RegistrationVis", "classrtabmap_1_1RegistrationVis.html", "classrtabmap_1_1RegistrationVis" ], + [ "Rtabmap", "classrtabmap_1_1Rtabmap.html", "classrtabmap_1_1Rtabmap" ], + [ "RtabmapColorOcTree", "classrtabmap_1_1RtabmapColorOcTree.html", "classrtabmap_1_1RtabmapColorOcTree" ], + [ "RtabmapColorOcTreeNode", "classrtabmap_1_1RtabmapColorOcTreeNode.html", null ], + [ "RtabmapEvent", "classrtabmap_1_1RtabmapEvent.html", "classrtabmap_1_1RtabmapEvent" ], + [ "RtabmapEvent3DMap", "classrtabmap_1_1RtabmapEvent3DMap.html", "classrtabmap_1_1RtabmapEvent3DMap" ], + [ "RtabmapEventCmd", "classrtabmap_1_1RtabmapEventCmd.html", "classrtabmap_1_1RtabmapEventCmd" ], + [ "RtabmapEventInit", "classrtabmap_1_1RtabmapEventInit.html", "classrtabmap_1_1RtabmapEventInit" ], + [ "RtabmapGlobalPathEvent", "classrtabmap_1_1RtabmapGlobalPathEvent.html", "classrtabmap_1_1RtabmapGlobalPathEvent" ], + [ "RtabmapGoalStatusEvent", "classrtabmap_1_1RtabmapGoalStatusEvent.html", "classrtabmap_1_1RtabmapGoalStatusEvent" ], + [ "RtabmapLabelErrorEvent", "classrtabmap_1_1RtabmapLabelErrorEvent.html", "classrtabmap_1_1RtabmapLabelErrorEvent" ], + [ "RtabmapThread", "classrtabmap_1_1RtabmapThread.html", "classrtabmap_1_1RtabmapThread" ], + [ "RvlCodec", "classrtabmap_1_1RvlCodec.html", null ], + [ "SensorCapture", "classrtabmap_1_1SensorCapture.html", "classrtabmap_1_1SensorCapture" ], + [ "SensorCaptureInfo", "classrtabmap_1_1SensorCaptureInfo.html", "classrtabmap_1_1SensorCaptureInfo" ], + [ "SensorCaptureThread", "classrtabmap_1_1SensorCaptureThread.html", "classrtabmap_1_1SensorCaptureThread" ], + [ "SensorData", "classrtabmap_1_1SensorData.html", "classrtabmap_1_1SensorData" ], + [ "SensorEvent", "classrtabmap_1_1SensorEvent.html", "classrtabmap_1_1SensorEvent" ], + [ "SIFT", "classrtabmap_1_1SIFT.html", "classrtabmap_1_1SIFT" ], + [ "Signature", "classrtabmap_1_1Signature.html", "classrtabmap_1_1Signature" ], + [ "Statistics", "classrtabmap_1_1Statistics.html", "classrtabmap_1_1Statistics" ], + [ "Stereo", "classrtabmap_1_1Stereo.html", "classrtabmap_1_1Stereo" ], + [ "StereoBM", "classrtabmap_1_1StereoBM.html", "classrtabmap_1_1StereoBM" ], + [ "StereoCameraModel", "classrtabmap_1_1StereoCameraModel.html", "classrtabmap_1_1StereoCameraModel" ], + [ "StereoDense", "classrtabmap_1_1StereoDense.html", "classrtabmap_1_1StereoDense" ], + [ "StereoOpticalFlow", "classrtabmap_1_1StereoOpticalFlow.html", "classrtabmap_1_1StereoOpticalFlow" ], + [ "StereoSGBM", "classrtabmap_1_1StereoSGBM.html", "classrtabmap_1_1StereoSGBM" ], + [ "SuperPointRpautrat", "classrtabmap_1_1SuperPointRpautrat.html", "classrtabmap_1_1SuperPointRpautrat" ], + [ "SuperPointTorch", "classrtabmap_1_1SuperPointTorch.html", "classrtabmap_1_1SuperPointTorch" ], + [ "SURF", "classrtabmap_1_1SURF.html", "classrtabmap_1_1SURF" ], + [ "SURF_DAISY", "classrtabmap_1_1SURF__DAISY.html", null ], + [ "SURF_FREAK", "classrtabmap_1_1SURF__FREAK.html", null ], + [ "Transform", "classrtabmap_1_1Transform.html", "classrtabmap_1_1Transform" ], + [ "TransformStamped", "classrtabmap_1_1TransformStamped.html", null ], + [ "UserDataEvent", "classrtabmap_1_1UserDataEvent.html", "classrtabmap_1_1UserDataEvent" ], + [ "VisualWord", "classrtabmap_1_1VisualWord.html", "classrtabmap_1_1VisualWord" ], + [ "VWDictionary", "classrtabmap_1_1VWDictionary.html", "classrtabmap_1_1VWDictionary" ], + [ "EnvSensors", "namespacertabmap.html#ac175ef40b7a4acb632232d3d96a1199a", null ], + [ "Landmarks", "namespacertabmap.html#a12bbfd3e37121bf9f68a4047c8b4da86", null ], + [ "ParametersMap", "namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55", null ], + [ "ParametersPair", "namespacertabmap.html#a4d38c2e87cb7a46dc4299f7bd4d95a01", null ], + [ "operator<<", "namespacertabmap.html#a087b7a1b89acb679edee23883653f1a7", null ], + [ "compressImage", "namespacertabmap.html#a52beb14eea422420c95fd69bdf3ab9dc", null ], + [ "compressImage2", "namespacertabmap.html#abd9d5523210562abd9b5dc8fa9dbeb99", null ], + [ "uncompressImage", "namespacertabmap.html#a462f181a147c9f5315f70b0cd89210e5", null ], + [ "uncompressImage", "namespacertabmap.html#af56ea8b86f7a873959588d35a7ede187", null ], + [ "compressData", "namespacertabmap.html#a749adef593d09b887926afb6ebdb5834", null ], + [ "compressData2", "namespacertabmap.html#aca82ee9efc46461c648c7ab8999e1d5b", null ], + [ "uncompressData", "namespacertabmap.html#a696fffaafe542bfb49fc9ab0da2c66b9", null ], + [ "uncompressData", "namespacertabmap.html#aa15a9e946d6571254fc3c808b624e6cd", null ], + [ "uncompressData", "namespacertabmap.html#a5b02b6a5cd3c620aff7e76c05f78b20f", null ], + [ "compressString", "namespacertabmap.html#a4f0dfae296aa7029e959d573b286285a", null ], + [ "uncompressString", "namespacertabmap.html#a811701fc1452e49e82fcab8d4476832f", null ], + [ "compressedDepthFormat", "namespacertabmap.html#a67c525e80a7187b3106e5fd76155cabc", null ], + [ "compressedDepthFormat", "namespacertabmap.html#ab5cb2dcd6db7fe3bbe25d847177582c2", null ], + [ "compressedDepthFormat", "namespacertabmap.html#a58b406e413250675abbf0ec2956e3de8", null ], + [ "saveLASFile", "namespacertabmap.html#a264208396318e0ecfe2af8f3aafe0374", null ], + [ "saveLASFile", "namespacertabmap.html#af174f507bee7dde4f9d45044d7bee8ea", null ], + [ "saveLASFile", "namespacertabmap.html#ad59cb4c65fba713c1a622904c5229198", null ], + [ "databaseRecovery", "namespacertabmap.html#a84468b4bab971b3b8e2c33a746bf7f36", null ], + [ "operator<<", "namespacertabmap.html#a6138748ef83b742105e47c9275885e4a", null ], + [ "operator<<", "namespacertabmap.html#aef0e1f1b121a9199e7511becbc8f1e32", null ], + [ "CameraInfo", "namespacertabmap.html#ac1143b629394a895ca246d256dbc6038", null ], + [ "CameraThread", "namespacertabmap.html#acd001e2ea3d2e44d9e24faab74d36324", null ], + [ "CameraEvent", "namespacertabmap.html#a02e773b48c5ac372ce67fe4e040d835d", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/namespacertabmap_1_1graph.html b/preview/pr-1773/api/latest/namespacertabmap_1_1graph.html new file mode 100644 index 00000000..894cc96e --- /dev/null +++ b/preview/pr-1773/api/latest/namespacertabmap_1_1graph.html @@ -0,0 +1,2229 @@ + + + + + + + + +RTAB-Map: rtabmap::graph Namespace Reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rtabmap::graph Namespace Reference
    +
    +
    + +

    Pose-graph I/O, trajectory metrics, link utilities, and path planning. +More...

    + + + + + +

    +Classes

    struct  MaxGraphErrors
     Largest pose-graph constraint violations after optimization. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool RTABMAP_CORE_EXPORT exportPoses (const std::string &filePath, int format, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints=std::multimap< int, Link >(), const std::map< int, double > &stamps=std::map< int, double >(), const ParametersMap &parameters=ParametersMap())
     Writes poses (and optional constraints) to disk.
     
    bool RTABMAP_CORE_EXPORT importPoses (const std::string &filePath, int format, std::map< int, Transform > &poses, std::multimap< int, Link > *constraints=0, std::map< int, double > *stamps=0)
     Loads poses (and optional constraints) from disk.
     
    bool RTABMAP_CORE_EXPORT exportGPS (const std::string &filePath, const std::map< int, GPS > &gpsValues, unsigned int rgba=0xFFFFFFFF)
     Exports GPS samples to a PLY point cloud.
     
    void RTABMAP_CORE_EXPORT calcKittiSequenceErrors (const std::vector< Transform > &poses_gt, const std::vector< Transform > &poses_result, float &t_err, float &r_err)
     KITTI odometry benchmark error over fixed trajectory segments.
     
    void RTABMAP_CORE_EXPORT calcRelativeErrors (const std::vector< Transform > &poses_gt, const std::vector< Transform > &poses_result, float &t_err, float &r_err)
     Mean frame-to-frame relative pose error (RPE-style, one step).
     
    Transform RTABMAP_CORE_EXPORT calcRMSE (const std::map< int, Transform > &groundTruth, const std::map< int, Transform > &poses, float &translational_rmse, float &translational_mean, float &translational_median, float &translational_std, float &translational_min, float &translational_max, float &rotational_rmse, float &rotational_mean, float &rotational_median, float &rotational_std, float &rotational_min, float &rotational_max, bool align2D=false)
     Absolute trajectory error (ATE) with Sim(3)-style alignment (TUM RGB-D tool).
     
    MaxGraphErrors RTABMAP_CORE_EXPORT computeMaxGraphErrors (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, bool for3DoF=false)
     Finds the worst pose-graph constraint residuals after optimization.
     
    std::vector< double > RTABMAP_CORE_EXPORT getMaxOdomInf (const std::multimap< int, Link > &links)
     Maximum information-matrix diagonal over odometry neighbor links.
     
    std::multimap< int, Link >::iterator RTABMAP_CORE_EXPORT findLink (std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)
     Finds the first link from from to to in a multimap keyed by source id.
     
    std::multimap< int, std::pair< int, Link::Type > >::iterator RTABMAP_CORE_EXPORT findLink (std::multimap< int, std::pair< int, Link::Type > > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)
     
    std::multimap< int, int >::iterator RTABMAP_CORE_EXPORT findLink (std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)
     
    std::multimap< int, Link >::const_iterator RTABMAP_CORE_EXPORT findLink (const std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)
     
    std::multimap< int, std::pair< int, Link::Type > >::const_iterator RTABMAP_CORE_EXPORT findLink (const std::multimap< int, std::pair< int, Link::Type > > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)
     
    std::multimap< int, int >::const_iterator RTABMAP_CORE_EXPORT findLink (const std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)
     
    std::list< Link > RTABMAP_CORE_EXPORT findLinks (const std::multimap< int, Link > &links, int from)
     Lists all links incident on node from.
     
    std::multimap< int, Link > RTABMAP_CORE_EXPORT filterDuplicateLinks (const std::multimap< int, Link > &links)
     Removes duplicate undirected links.
     
    std::multimap< int, Link > RTABMAP_CORE_EXPORT filterLinks (const std::multimap< int, Link > &links, Link::Type filteredType, bool inverted=false)
     Filters links by type or self-reference.
     
    std::map< int, Link > RTABMAP_CORE_EXPORT filterLinks (const std::map< int, Link > &links, Link::Type filteredType, bool inverted=false)
     
    std::map< int, Transform > RTABMAP_CORE_EXPORT frustumPosesFiltering (const std::map< int, Transform > &poses, const Transform &cameraPose, float horizontalFOV=45.0f, float verticalFOV=45.0f, float nearClipPlaneDistance=0.1f, float farClipPlaneDistance=100.0f, bool negative=false)
     Keeps poses inside (or outside) a camera frustum.
     
    std::map< int, Transform > RTABMAP_CORE_EXPORT radiusPosesFiltering (const std::map< int, Transform > &poses, float radius, float angle, bool keepLatest=true)
     Subsamples poses that are spatially (and optionally angularly) redundant.
     
    std::multimap< int, int > RTABMAP_CORE_EXPORT radiusPosesClustering (const std::map< int, Transform > &poses, float radius, float angle)
     Radius-neighbor clustering of poses.
     
    void reduceGraph (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, std::multimap< int, int > &hyperNodes, std::multimap< int, Link > &hyperLinks)
     Reduces a pose graph into hyper-nodes and hyper-links.
     
    std::list< std::pair< int, Transform > > RTABMAP_CORE_EXPORT computePath (const std::map< int, rtabmap::Transform > &poses, const std::multimap< int, int > &links, int from, int to, bool updateNewCosts=false)
     A* shortest path on a pose graph with Euclidean edge costs.
     
    std::map< int, int > RTABMAP_CORE_EXPORT computePathDepths (const std::multimap< int, int > &links, int from, int maxDepth=0)
     Single-source graph depth via BFS.
     
    std::list< int > RTABMAP_CORE_EXPORT computePath (const std::multimap< int, Link > &links, int from, int to, bool updateNewCosts=false, bool useSameCostForAllLinks=false)
     Dijkstra shortest path on link constraints.
     
    std::list< std::pair< int, Transform > > RTABMAP_CORE_EXPORT computePath (int fromId, int toId, const Memory *memory, bool lookInDatabase=true, bool updateNewCosts=false, float linearVelocity=0.0f, float angularVelocity=0.0f, bool ignoreDirectLinks=false)
     Dijkstra path through the live Memory pose graph.
     
    int RTABMAP_CORE_EXPORT findNearestNode (const std::map< int, rtabmap::Transform > &poses, const rtabmap::Transform &targetPose, float *distance=0)
     Id of the nearest pose to targetPose.
     
    std::map< int, float > RTABMAP_CORE_EXPORT findNearestNodes (int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
     Spatial neighbors of a node (KD-tree radius or k-NN search).
     
    std::map< int, float > RTABMAP_CORE_EXPORT findNearestNodes (const Transform &targetPose, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
     Spatial neighbors of a pose (KD-tree radius or k-NN search).
     
    +std::map< int, Transform > RTABMAP_CORE_EXPORT findNearestPoses (int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
     Like findNearestNodes(int,const std::map<int,Transform>&,float,float,int) but returns full Transform values.
     
    std::map< int, Transform > RTABMAP_CORE_EXPORT findNearestPoses (const Transform &targetPose, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
     
    RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT findNearestNodes (const std::map< int, rtabmap::Transform > &nodes, const rtabmap::Transform &targetPose, int k)
     
    RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT getNodesInRadius (int nodeId, const std::map< int, Transform > &nodes, float radius)
     
    RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT getNodesInRadius (const Transform &targetPose, const std::map< int, Transform > &nodes, float radius)
     
    RTABMAP_DEPRECATED std::map< int, Transform > RTABMAP_CORE_EXPORT getPosesInRadius (int nodeId, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)
     
    RTABMAP_DEPRECATED std::map< int, Transform > RTABMAP_CORE_EXPORT getPosesInRadius (const Transform &targetPose, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)
     
    float RTABMAP_CORE_EXPORT computePathLength (const std::vector< std::pair< int, Transform > > &path)
     Path length along an ordered list of poses.
     
    float RTABMAP_CORE_EXPORT computePathLength (const std::map< int, Transform > &path)
     Path length in map iteration order.
     
    std::list< std::map< int, Transform > > RTABMAP_CORE_EXPORT getPaths (std::map< int, Transform > poses, const std::multimap< int, Link > &links)
     Splits poses into chains connected only by neighbor links.
     
    void RTABMAP_CORE_EXPORT computeMinMax (const std::map< int, Transform > &poses, cv::Vec3f &min, cv::Vec3f &max)
     Axis-aligned bounding box of pose positions.
     
    +

    Detailed Description

    +

    Pose-graph I/O, trajectory metrics, link utilities, and path planning.

    +

    Functions operate on maps of signature ids to Transform poses and Link constraints (typically stored as std::multimap<int, Link> keyed by the source node id).

    +

    Main groups:

    +

    Function Documentation

    + +

    ◆ exportPoses()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::graph::exportPoses (const std::string & filePath,
    int format,
    const std::map< int, Transform > & poses,
    const std::multimap< int, Link > & constraints = std::multimap< int, Link >(),
    const std::map< int, double > & stamps = std::map< int, double >(),
    const ParametersMap & parameters = ParametersMap() 
    )
    +
    + +

    Writes poses (and optional constraints) to disk.

    +
    Parameters
    + + + + + + + +
    filePathOutput path; extension may be appended from format.
    formatExport format:
      +
    • 0 Raw text (.txt): r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz
    • +
    • 1 RGBD-SLAM format, in motion capture frame like the ground truth of RGB-D SLAM Dataset (requires stamps) : stamp x y z qx qy qz qw
    • +
    • 10 Like 1 without coordinate-frame change (i.e., in base frame) : stamp x y z qx qy qz qw
    • +
    • 11 Like 10 with landmark ids after positive ids : stamp x y z qx qy qz qw id
    • +
    • 2 KITTI odometry format : r11 r12 r13 tx r21 r22 r23 ty r31 r32 r33 tz
    • +
    • 3 TORO graph (requires constraints; uses parameters)
    • +
    • 4 g2o (requires constraints; uses parameters)
    • +
    +
    posesNode id → pose.
    constraintsRequired for formats 3 and 4.
    stampsRequired for formats 1, 10, and 11 (same size as poses).
    parametersOptional optimizer parameters for formats 3 and 4.
    +
    +
    +
    Returns
    False on I/O or validation error.
    + +
    +
    + +

    ◆ importPoses()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::graph::importPoses (const std::string & filePath,
    int format,
    std::map< int, Transform > & poses,
    std::multimap< int, Link > * constraints = 0,
    std::map< int, double > * stamps = 0 
    )
    +
    + +

    Loads poses (and optional constraints) from disk.

    +
    Parameters
    + + + + + + +
    filePathInput path.
    formatImport format:
      +
    • 0 Raw text: 3×4 matrix per line (Transform::fromString())
    • +
    • 1 RGBD-SLAM motion capture: stamp x y z qw qx qy qz (applies optical-frame conversion)
    • +
    • 2 KITTI odometry: 3×4 matrix per line (applies optical-frame conversion)
    • +
    • 3 TORO graph (fills constraints)
    • +
    • 4 g2o (not supported yet)
    • +
    • 5 NewCollege: stamp x y (2D; first pose is origin)
    • +
    • 6 Malaga Urban GPS: 25-field *_GPS.txt line (local X/Y/Z)
    • +
    • 7 St Lucia INS: 12-field log (GPS → local ENU + roll/pitch/yaw)
    • +
    • 8 Karlsruhe: timestamp lat lon alt x y z roll pitch yaw (first pose is origin)
    • +
    • 9 EuRoC MAV: stamp x y z qw qx qy qz vx vy vz vr vp vy ax ay az (17 CSV fields)
    • +
    • 10 RGBD-SLAM like 1 without coordinate-frame change
    • +
    • 11 RGBD-SLAM like 10 with node id as 9th field: stamp x y z qw qx qy qz id
    • +
    • 12 RGBD Bonn dynamic dataset format (stamp + pose; Bonn-specific frame conversion)
    • +
    +
    posesOutput node id → pose.
    constraintsOptional output links (format 3 only).
    stampsOptional output timestamps (formats 1, 5–9, 10–12 when present in file).
    +
    +
    +
    Returns
    False on I/O or parse error.
    + +
    +
    + +

    ◆ exportGPS()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::graph::exportGPS (const std::string & filePath,
    const std::map< int, GPS > & gpsValues,
    unsigned int rgba = 0xFFFFFFFF 
    )
    +
    + +

    Exports GPS samples to a PLY point cloud.

    +
    Parameters
    + + + + +
    filePathOutput .ply path.
    gpsValuesNode id → GPS fix.
    rgbaPoint color (default opaque white).
    +
    +
    + +
    +
    + +

    ◆ calcKittiSequenceErrors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::graph::calcKittiSequenceErrors (const std::vector< Transform > & poses_gt,
    const std::vector< Transform > & poses_result,
    float & t_err,
    float & r_err 
    )
    +
    + +

    KITTI odometry benchmark error over fixed trajectory segments.

    +

    For each start pose (every 10 frames) and segment length in {100, 200, …, 800} m along poses_gt, compares the relative transform GT vs estimate and accumulates normalized errors. The returned values are the mean over all valid segments.

    +
    Parameters
    + + + + + +
    poses_gtGround-truth poses in temporal order (one per frame).
    poses_resultEstimated poses (same length and ordering as poses_gt).
    t_errOutput mean translation error (%): segment translation error (m) divided by segment length, averaged, then × 100.
    r_errOutput mean rotation error (deg/m): segment rotation error (rad) divided by segment length, averaged, then converted to deg/m.
    +
    +
    +
    See also
    http://www.cvlibs.net/datasets/kitti/eval_odometry.php
    + +
    +
    + +

    ◆ calcRelativeErrors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::graph::calcRelativeErrors (const std::vector< Transform > & poses_gt,
    const std::vector< Transform > & poses_result,
    float & t_err,
    float & r_err 
    )
    +
    + +

    Mean frame-to-frame relative pose error (RPE-style, one step).

    +

    For each consecutive pair (i, i+1), builds the relative motion in ground truth and in the estimate, then measures how much they differ:

      +
    • translation: Euclidean distance between the two relative transforms (m)
    • +
    • rotation: angle between the two relative transforms (rad → deg)
    • +
    +

    Returns the arithmetic mean over all N-1 pairs (N = trajectory length). Unlike calcKittiSequenceErrors(), there is no fixed segment length and no path-length normalization.

    +
    Parameters
    + + + + + +
    poses_gtGround-truth poses in temporal order (one per frame).
    poses_resultEstimated poses (same length and ordering as poses_gt).
    t_errOutput mean translation error over consecutive pairs (m).
    r_errOutput mean rotation error over consecutive pairs (deg).
    +
    +
    + +
    +
    + +

    ◆ calcRMSE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::graph::calcRMSE (const std::map< int, Transform > & groundTruth,
    const std::map< int, Transform > & poses,
    float & translational_rmse,
    float & translational_mean,
    float & translational_median,
    float & translational_std,
    float & translational_min,
    float & translational_max,
    float & rotational_rmse,
    float & rotational_mean,
    float & rotational_median,
    float & rotational_std,
    float & rotational_min,
    float & rotational_max,
    bool align2D = false 
    )
    +
    + +

    Absolute trajectory error (ATE) with Sim(3)-style alignment (TUM RGB-D tool).

    +

    Only poses whose id exists in both groundTruth and poses are compared. An alignment transform t is estimated so that per-pose error is measured after bringing the estimate into the reference frame:

      +
    • If more than five poses match: t from SVD on position correspondences (estimate positions → ground-truth positions; z ignored when align2D is true).
    • +
    • Otherwise: t = groundTruth[firstId] * poses[firstId]⁻¹ using the first matched id.
    • +
    +

    For each matched pose, after aligned = t * poses[id]:

      +
    • Translational error: Euclidean distance between aligned and groundTruth[id] (m).
    • +
    • Rotational error: Angle between the poses' +X axes (deg).
    • +
    +

    The eight @p translational_* and @p rotational_* outputs are statistics over those per-pose errors (all matched poses). They are set to 0 when no id matches.

    +
    Parameters
    + + + + + + + + + + + + + + + + +
    groundTruthReference trajectory (node id → pose).
    posesEstimated trajectory; ids not in groundTruth are skipped.
    translational_rmseRoot mean square of translational errors (m).
    translational_meanArithmetic mean of translational errors (m).
    translational_medianMiddle sample in matched-pose iteration order (m).
    translational_stdStandard deviation of translational errors (m).
    translational_minMinimum translational error (m).
    translational_maxMaximum translational error (m).
    rotational_rmseRoot mean square of rotational errors (deg).
    rotational_meanArithmetic mean of rotational errors (deg).
    rotational_medianMiddle sample in matched-pose iteration order (deg).
    rotational_stdStandard deviation of rotational errors (deg).
    rotational_minMinimum rotational error (deg).
    rotational_maxMaximum rotational error (deg).
    align2DIf true, alignment uses x/y only (z set to 0 for correspondence); 3D if false.
    +
    +
    +
    Returns
    Alignment transform t applied as t * poses[id] before error computation.
    +
    See also
    https://vision.in.tum.de/data/datasets/rgbd-dataset
    + +
    +
    + +

    ◆ computeMaxGraphErrors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    MaxGraphErrors RTABMAP_CORE_EXPORT rtabmap::graph::computeMaxGraphErrors (const std::map< int, Transform > & poses,
    const std::multimap< int, Link > & links,
    bool for3DoF = false 
    )
    +
    + +

    Finds the worst pose-graph constraint residuals after optimization.

    +

    Iterates over links and, for each non-self-referenced edge (from != to):

      +
    1. Looks up T_from and T_to in poses (returns default MaxGraphErrors if any endpoint pose is missing, null, or not invertible).
    2. +
    3. Builds the relative pose implied by the optimized poses:
        +
      • Normal link: t = T_from⁻¹ · T_to
      • +
      • Landmark (from < 0): t = T_to⁻¹ · T_from, link measurement inverted
      • +
      +
    4. +
    5. Compares t to the link transform:
        +
      • Linear error: max |Δx|, |Δy|, and |Δz| (z ignored when for3DoF is true).
      • +
      • Angular error: full 3D angle between t and the link, or yaw-only if for3DoF; skipped for Link::kLandmark when the information matrix does not constrain yaw.
      • +
      +
    6. +
    7. Normalizes by link uncertainty: error / sqrt(variance) using the link information matrix (largest diagonal variance for translation/rotation).
    8. +
    +

    The returned MaxGraphErrors holds the link with the highest linear and angular ratios (not necessarily the largest absolute error).

    +
    Parameters
    + + + + +
    posesOptimized node poses (must contain every from and to id used).
    linksGraph constraints (typically std::multimap<int, Link> keyed by from).
    for3DoFIf true, linear error uses x/y only and angular error compares yaw only.
    +
    +
    +
    Returns
    MaxGraphErrors; fields stay -1 when no valid link was checked or on early abort.
    + +
    +
    + +

    ◆ getMaxOdomInf()

    + +
    +
    + + + + + + + + +
    std::vector< double > RTABMAP_CORE_EXPORT rtabmap::graph::getMaxOdomInf (const std::multimap< int, Link > & links)
    +
    + +

    Maximum information-matrix diagonal over odometry neighbor links.

    +

    Scans links of type Link::kNeighbor or Link::kNeighborMerged and, for each dof (x, y, z, roll, pitch, yaw), keeps the largest diagonal entry of the 6×6 information matrix.

    +
    Parameters
    + + +
    linksGraph constraints (multimap keyed by source id).
    +
    +
    +
    Returns
    Six maximum information values, or an empty vector if no neighbor links exist.
    + +
    +
    + +

    ◆ findLink() [1/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, Link >::iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink (std::multimap< int, Link > & links,
    int from,
    int to,
    bool checkBothWays = true,
    Link::Type type = Link::kUndef 
    )
    +
    + +

    Finds the first link from from to to in a multimap keyed by source id.

    +

    Iterates all entries with key from and matches the destination (and optionally type). When checkBothWays is true, also searches key to for a link back to from.

    +
    Parameters
    + + + + + + +
    linksLink multimap (key = source node id).
    fromSource node id.
    toDestination node id.
    checkBothWaysIf true, also match to → from.
    typeRequired link type, or Link::kUndef to accept any type.
    +
    +
    +
    Returns
    Iterator to the link, or links.end() if not found.
    + +
    +
    + +

    ◆ findLink() [2/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, std::pair< int, Link::Type > >::iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink (std::multimap< int, std::pair< int, Link::Type > > & links,
    int from,
    int to,
    bool checkBothWays = true,
    Link::Type type = Link::kUndef 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. std::multimap<int, std::pair<int, Link::Type>>.

    + +
    +
    + +

    ◆ findLink() [3/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, int >::iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink (std::multimap< int, int > & links,
    int from,
    int to,
    bool checkBothWays = true 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. std::multimap<int, int>.

    + +
    +
    + +

    ◆ findLink() [4/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, Link >::const_iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink (const std::multimap< int, Link > & links,
    int from,
    int to,
    bool checkBothWays = true,
    Link::Type type = Link::kUndef 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Const std::multimap<int, Link>.

    + +
    +
    + +

    ◆ findLink() [5/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, std::pair< int, Link::Type > >::const_iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink (const std::multimap< int, std::pair< int, Link::Type > > & links,
    int from,
    int to,
    bool checkBothWays = true,
    Link::Type type = Link::kUndef 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Const std::multimap<int, std::pair<int, Link::Type>>.

    + +
    +
    + +

    ◆ findLink() [6/6]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, int >::const_iterator RTABMAP_CORE_EXPORT rtabmap::graph::findLink (const std::multimap< int, int > & links,
    int from,
    int to,
    bool checkBothWays = true 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Const std::multimap<int, int>.

    + +
    +
    + +

    ◆ findLinks()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::list< Link > RTABMAP_CORE_EXPORT rtabmap::graph::findLinks (const std::multimap< int, Link > & links,
    int from 
    )
    +
    + +

    Lists all links incident on node from.

    +

    Outgoing links (link.from() == from) are returned as stored; for incoming links (link.to() == from), the inverse link is returned so the pose of from is always the source frame.

    +
    Parameters
    + + + +
    linksGraph constraints.
    fromNode id to query.
    +
    +
    +
    Returns
    Incident links (may be empty).
    + +
    +
    + +

    ◆ filterDuplicateLinks()

    + +
    +
    + + + + + + + + +
    std::multimap< int, Link > RTABMAP_CORE_EXPORT rtabmap::graph::filterDuplicateLinks (const std::multimap< int, Link > & links)
    +
    + +

    Removes duplicate undirected links.

    +

    Keeps the first occurrence of each (from, to) or (to, from) pair with the same Link::Type (see findLink() with checkBothWays).

    +
    Parameters
    + + +
    linksInput link multimap.
    +
    +
    +
    Returns
    Copy without duplicates.
    + +
    +
    + +

    ◆ filterLinks() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, Link > RTABMAP_CORE_EXPORT rtabmap::graph::filterLinks (const std::multimap< int, Link > & links,
    Link::Type filteredType,
    bool inverted = false 
    )
    +
    + +

    Filters links by type or self-reference.

    +
      +
    • If filteredType is kSelfRefLink: exclude self-references (from == to), or include only them when inverted is true.
    • +
    • Otherwise: exclude links of filteredType, or keep only that type when inverted is true.
    • +
    +
    Parameters
    + + + + +
    linksInput links.
    filteredTypeType to filter, or Link::kSelfRefLink for self-reference filtering.
    invertedIf true, keep the filtered set instead of removing it.
    +
    +
    +
    Returns
    Filtered link container (same structure as input).
    + +
    +
    + +

    ◆ filterLinks() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::map< int, Link > RTABMAP_CORE_EXPORT rtabmap::graph::filterLinks (const std::map< int, Link > & links,
    Link::Type filteredType,
    bool inverted = false 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. For std::map<int, Link>.

    + +
    +
    + +

    ◆ frustumPosesFiltering()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::map< int, Transform > RTABMAP_CORE_EXPORT rtabmap::graph::frustumPosesFiltering (const std::map< int, Transform > & poses,
    const Transform & cameraPose,
    float horizontalFOV = 45.0f,
    float verticalFOV = 45.0f,
    float nearClipPlaneDistance = 0.1f,
    float farClipPlaneDistance = 100.0f,
    bool negative = false 
    )
    +
    + +

    Keeps poses inside (or outside) a camera frustum.

    +

    Transforms each pose position into the frustum defined by cameraPose using util3d::frustumFiltering() (this assumes the cameraPose includes the optical rotation of the camera (X right, Y down, Z forward).

    +
    Parameters
    + + + + + + + + +
    posesInput poses (null poses are skipped) in base frame (X forward, Y left, Z up),
    cameraPoseFrustum origin and orientation including the optical rotation of the camera (X right, Y down, Z forward).
    horizontalFOVHorizontal field of view (deg); see CameraModel::horizontalFOV().
    verticalFOVVertical field of view (deg); see CameraModel::verticalFOV().
    nearClipPlaneDistanceNear clipping distance (m).
    farClipPlaneDistanceFar clipping distance (m).
    negativeIf false, keep poses inside the frustum; if true, keep poses outside.
    +
    +
    +
    Returns
    Subset of poses passing the filter.
    + +
    +
    + +

    ◆ radiusPosesFiltering()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::map< int, Transform > RTABMAP_CORE_EXPORT rtabmap::graph::radiusPosesFiltering (const std::map< int, Transform > & poses,
    float radius,
    float angle,
    bool keepLatest = true 
    )
    +
    + +

    Subsamples poses that are spatially (and optionally angularly) redundant.

    +

    For each pose not yet processed, finds all poses within radius (KD-tree). When angle > 0, only poses whose +X axis differs by at most angle (rad) are grouped. From each group, keeps one pose: the latest in map order if keepLatest, otherwise the earliest. The first and last poses of the input map are always kept.

    +
    Parameters
    + + + + + +
    posesInput trajectory (map iteration order defines “latest/oldest”).
    radiusClustering radius (m); if ≤ 0 or fewer than three poses, returns poses unchanged.
    angleMax heading difference within a cluster (rad); 0 ignores orientation.
    keepLatestIf true, keep the latest pose per cluster; otherwise the earliest.
    +
    +
    +
    Returns
    Subsampled poses.
    + +
    +
    + +

    ◆ radiusPosesClustering()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::multimap< int, int > RTABMAP_CORE_EXPORT rtabmap::graph::radiusPosesClustering (const std::map< int, Transform > & poses,
    float radius,
    float angle 
    )
    +
    + +

    Radius-neighbor clustering of poses.

    +

    For each pose, inserts (queryId, neighborId) into the output for every other pose within radius (and within angle of the query heading when angle > 0).

    +
    Parameters
    + + + + +
    posesInput poses.
    radiusSearch radius (m); no pairs if ≤ 0 or fewer than two poses.
    angleMax heading difference (rad); 0 ignores orientation.
    +
    +
    +
    Returns
    Multimap of pose id → neighbor id (both ids from poses).
    + +
    +
    + +

    ◆ reduceGraph()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::graph::reduceGraph (const std::map< int, Transform > & poses,
    const std::multimap< int, Link > & links,
    std::multimap< int, int > & hyperNodes,
    std::multimap< int, Link > & hyperLinks 
    )
    +
    + +

    Reduces a pose graph into hyper-nodes and hyper-links.

    +

    Hyper-nodes: clusters poses connected by non-neighbor loop-closure links. Clustering starts from the largest id downward; each cluster is keyed by its parent (hyper-node) id.

    +

    Hyper-links: for each Link::kNeighbor or Link::kNeighborMerged link between different clusters, builds one merged Link along the shortest path through intra-cluster closure links (Dijkstra with unit cost).

    +
    Parameters
    + + + + + +
    posesInput optimized poses.
    linksInput constraints (should be unique per directed edge for closure links).
    hyperNodesOutput hyperNodeId → childPoseId membership.
    hyperLinksOutput links between hyper-nodes (one per hyper-edge, most recent kept).
    +
    +
    + +
    +
    + +

    ◆ computePath() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::list< std::pair< int, Transform > > RTABMAP_CORE_EXPORT rtabmap::graph::computePath (const std::map< int, rtabmap::Transform > & poses,
    const std::multimap< int, int > & links,
    int from,
    int to,
    bool updateNewCosts = false 
    )
    +
    + +

    A* shortest path on a pose graph with Euclidean edge costs.

    +

    Edge cost between adjacent nodes is the Euclidean distance between their poses in poses. Uses costSoFar + distToEnd where distToEnd is the distance to the goal pose.

    +
    Parameters
    + + + + + + +
    posesNode id → pose (must contain every node reached by links).
    linksDirected edges (from → to) keyed by source id.
    fromStart node id.
    toGoal node id.
    updateNewCostsIf true, use a multimap queue that can decrease keys when a shorter path is found.
    +
    +
    +
    Returns
    Ordered path from from to to (inclusive) with poses; empty if unreachable.
    + +
    +
    + +

    ◆ computePathDepths()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::map< int, int > RTABMAP_CORE_EXPORT rtabmap::graph::computePathDepths (const std::multimap< int, int > & links,
    int from,
    int maxDepth = 0 
    )
    +
    + +

    Single-source graph depth via BFS.

    +

    Runs one breadth-first search from from and returns, for every reached node, its depth from from (i.e., the number of links on the shortest path, from itself having depth 0).

    +
    Note
    The depth is a number of hops, not a distance: it counts links, and the poses of the nodes play no part in it. The path it stands for is thus not the one computePath() returns, which minimizes the Euclidean length instead and can walk more links to save meters.
    +
    Parameters
    + + + + +
    linksDirected edges (from → to) keyed by source id.
    fromStart node id.
    maxDepthIf > 0, only nodes with depth ≤ this value are returned (the frontier is not expanded further); 0 explores the whole component.
    +
    +
    +
    Returns
    Node id → depth mapping.
    + +
    +
    + +

    ◆ computePath() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::list< int > RTABMAP_CORE_EXPORT rtabmap::graph::computePath (const std::multimap< int, Link > & links,
    int from,
    int to,
    bool updateNewCosts = false,
    bool useSameCostForAllLinks = false 
    )
    +
    + +

    Dijkstra shortest path on link constraints.

    +

    Explores outgoing links keyed by link.from(). Edge cost is 1 when useSameCostForAllLinks is true, otherwise the translation norm of the link transform.

    +
    Parameters
    + + + + + + +
    linksConstraints keyed by source node id.
    fromStart node id.
    toGoal node id.
    updateNewCostsIf true, allow cost improvements on open nodes.
    useSameCostForAllLinksIf true, unit edge cost; else use link.transform().getNorm().
    +
    +
    +
    Returns
    Node ids from from to to (inclusive); empty if unreachable.
    + +
    +
    + +

    ◆ computePath() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::list< std::pair< int, Transform > > RTABMAP_CORE_EXPORT rtabmap::graph::computePath (int fromId,
    int toId,
    const Memory * memory,
    bool lookInDatabase = true,
    bool updateNewCosts = false,
    float linearVelocity = 0.0f,
    float angularVelocity = 0.0f,
    bool ignoreDirectLinks = false 
    )
    +
    + +

    Dijkstra path through the live Memory pose graph.

    +

    Loads links from Memory (optionally from the database), chains transforms along the chosen path, and returns the accumulated poses. Self-referenced links are skipped.

    +

    By default (linearVelocity and angularVelocity ≤ 0), edge cost is translation distance (m) only. When set > 0, costs are expressed in seconds of motion:

      +
    • linearVelocity adds linkTranslation / linearVelocity (time to drive the edge at that speed). Used alone it scales every edge by the same factor, so the shortest path is unchanged; set it to your robot’s typical forward speed (e.g. 0.5 m/s) when you also use angularVelocity so translation and rotation costs are comparable.
    • +
    • angularVelocity adds headingMismatch / angularVelocity, where heading mismatch is the angle between the displacement to the next node and that node’s forward (+X) axis. This is what changes which path is chosen: a chain followed mostly forward (small mismatch) can beat a shorter route through loop closures that require large reorientations (e.g. angularVelocity = 1.0 rad/s with linearVelocity = 0.5 m/s). With angularVelocity > 0 and linearVelocity ≤ 0, translation is ignored and the path minimizes heading mismatch only (forward-following paths, regardless of distance). This can help loop-closure detection when the map was built with a forward-facing camera: the path stays aligned with how places were observed while driving forward.
    • +
    +
    Parameters
    + + + + + + + + + +
    fromIdStart signature id (≥ 0).
    toIdGoal signature id (≠ 0).
    memoryGraph memory (must not be null).
    lookInDatabaseIf true, load links from the database when not already in RAM.
    updateNewCostsIf true, allow cost improvements on open nodes.
    linearVelocityIf > 0, add translationNorm / linearVelocity to edge cost (m/s).
    angularVelocityIf > 0, add rotation time from motion direction change (rad/s).
    ignoreDirectLinksIf true, skip the direct edge between fromId and toId.
    +
    +
    +
    Returns
    Path as (nodeId, pose) pairs; first pose is identity at fromId. Empty if unreachable.
    + +
    +
    + +

    ◆ findNearestNode()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNode (const std::map< int, rtabmap::Transform > & poses,
    const rtabmap::Transform & targetPose,
    float * distance = 0 
    )
    +
    + +

    Id of the nearest pose to targetPose.

    +

    Wrapper around findNearestNodes() with radius=0, k=1 (1-NN in 3D).

    +
    Parameters
    + + + + +
    posesNodes to search.
    targetPoseQuery position (x, y, z only; orientation is not used).
    distanceIf not null, set to the squared Euclidean distance of the match.
    +
    +
    +
    Returns
    Closest node id, or 0 if poses is empty.
    + +
    +
    + +

    ◆ findNearestNodes() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNodes (int nodeId,
    const std::map< int, Transform > & poses,
    float radius,
    float angle = 0.0f,
    int k = 0 
    )
    +
    + +

    Spatial neighbors of a node (KD-tree radius or k-NN search).

    +

    nodeId is removed from the search set. Requires radius &gt; 0 or k &gt; 0. When radius &gt; 0, returns all poses within radius (up to k if k &gt; 0). When radius == 0, returns the k nearest neighbors.

    +
    Parameters
    + + + + + + +
    nodeIdQuery node (must exist in poses); excluded from results.
    posesCandidate poses.
    radiusSearch radius (m).
    angleMax +X axis angle difference (rad); 0 ignores heading.
    kMax neighbors (0 = all within radius).
    +
    +
    +
    Returns
    Neighbor id → squared Euclidean distance.
    + +
    +
    + +

    ◆ findNearestNodes() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNodes (const Transform & targetPose,
    const std::map< int, Transform > & poses,
    float radius,
    float angle = 0.0f,
    int k = 0 
    )
    +
    + +

    Spatial neighbors of a pose (KD-tree radius or k-NN search).

    +
    Parameters
    + + + + + + +
    targetPoseQuery pose (position used; orientation used when angle > 0).
    posesCandidate poses (not modified).
    radiusSearch radius (m).
    angleMax +X axis angle difference (rad); 0 ignores heading.
    kMax neighbors (0 = all within radius).
    +
    +
    +
    Returns
    Neighbor id → squared Euclidean distance.
    + +
    +
    + +

    ◆ findNearestPoses()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::map< int, Transform > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestPoses (const Transform & targetPose,
    const std::map< int, Transform > & poses,
    float radius,
    float angle = 0.0f,
    int k = 0 
    )
    +
    +

    This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Query by Transform instead of node id.

    + +
    +
    + +

    ◆ findNearestNodes() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::findNearestNodes (const std::map< int, rtabmap::Transform > & nodes,
    const rtabmap::Transform & targetPose,
    int k 
    )
    +
    +
    + +

    ◆ getNodesInRadius() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::getNodesInRadius (int nodeId,
    const std::map< int, Transform > & nodes,
    float radius 
    )
    +
    +
    + +

    ◆ getNodesInRadius() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT rtabmap::graph::getNodesInRadius (const Transform & targetPose,
    const std::map< int, Transform > & nodes,
    float radius 
    )
    +
    +
    + +

    ◆ getPosesInRadius() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED std::map< int, Transform > RTABMAP_CORE_EXPORT rtabmap::graph::getPosesInRadius (int nodeId,
    const std::map< int, Transform > & nodes,
    float radius,
    float angle = 0.0f 
    )
    +
    +
    + +

    ◆ getPosesInRadius() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED std::map< int, Transform > RTABMAP_CORE_EXPORT rtabmap::graph::getPosesInRadius (const Transform & targetPose,
    const std::map< int, Transform > & nodes,
    float radius,
    float angle = 0.0f 
    )
    +
    +
    + +

    ◆ computePathLength() [1/2]

    + +
    +
    + + + + + + + + +
    float RTABMAP_CORE_EXPORT rtabmap::graph::computePathLength (const std::vector< std::pair< int, Transform > > & path)
    +
    + +

    Path length along an ordered list of poses.

    +

    Sums path[i].second.getDistance(path[i+1].second) for consecutive entries.

    +
    Parameters
    + + +
    pathOrdered (nodeId, pose) pairs.
    +
    +
    +
    Returns
    Total length (m), or 0 if fewer than two poses.
    + +
    +
    + +

    ◆ computePathLength() [2/2]

    + +
    +
    + + + + + + + + +
    float RTABMAP_CORE_EXPORT rtabmap::graph::computePathLength (const std::map< int, Transform > & path)
    +
    + +

    Path length in map iteration order.

    +

    Sums distances between consecutive poses in ascending map key order (does not verify that entries form a connected path in the graph).

    +
    Parameters
    + + +
    pathPoses keyed by node id (sorted by key).
    +
    +
    +
    Returns
    Total length (m), or 0 if fewer than two poses.
    + +
    +
    + +

    ◆ getPaths()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::list< std::map< int, Transform > > RTABMAP_CORE_EXPORT rtabmap::graph::getPaths (std::map< int, Transform > poses,
    const std::multimap< int, Link > & links 
    )
    +
    + +

    Splits poses into chains connected only by neighbor links.

    +

    Repeatedly builds a path starting from the lowest remaining id: adds the next pose in map order only if a Link::kNeighbor or Link::kNeighborMerged link exists from the previous pose to it. Stops at the first gap, pushes the chain, and continues until poses is empty.

    +
    Parameters
    + + + +
    posesInput poses (cleared as segments are extracted).
    linksGraph constraints keyed by source id.
    +
    +
    +
    Returns
    List of pose maps, each a contiguous neighbor chain.
    + +
    +
    + +

    ◆ computeMinMax()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::graph::computeMinMax (const std::map< int, Transform > & poses,
    cv::Vec3f & min,
    cv::Vec3f & max 
    )
    +
    + +

    Axis-aligned bounding box of pose positions.

    +
    Parameters
    + + + + +
    posesInput poses (no effect if empty).
    minOutput minimum (x, y, z) in meters.
    maxOutput maximum (x, y, z) in meters.
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacertabmap_1_1graph.js b/preview/pr-1773/api/latest/namespacertabmap_1_1graph.js new file mode 100644 index 00000000..1cd6e5c2 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacertabmap_1_1graph.js @@ -0,0 +1,44 @@ +var namespacertabmap_1_1graph = +[ + [ "MaxGraphErrors", "structrtabmap_1_1graph_1_1MaxGraphErrors.html", "structrtabmap_1_1graph_1_1MaxGraphErrors" ], + [ "exportPoses", "namespacertabmap_1_1graph.html#af5622dec3112ea0b5154056bde132d46", null ], + [ "importPoses", "namespacertabmap_1_1graph.html#a5c0eb890db7dba1c353d57595ccbdc6e", null ], + [ "exportGPS", "namespacertabmap_1_1graph.html#a96a6c2e8348e3d9cfd8b1770d17da9b2", null ], + [ "calcKittiSequenceErrors", "namespacertabmap_1_1graph.html#a3c9effdb0d7c235dc1b8d7e3f8487c67", null ], + [ "calcRelativeErrors", "namespacertabmap_1_1graph.html#a83c41a7cdd595ae6f76d3f1c5140c215", null ], + [ "calcRMSE", "namespacertabmap_1_1graph.html#a5c36e32a4acd10ac3cdbbf7d73591f88", null ], + [ "computeMaxGraphErrors", "namespacertabmap_1_1graph.html#a4691b760dfafe6d93de514c96fa55e0e", null ], + [ "getMaxOdomInf", "namespacertabmap_1_1graph.html#a6c009c4c819abe37ec2ca6d041edd92b", null ], + [ "findLink", "namespacertabmap_1_1graph.html#aaa0b06795dea514ad1d5fdd4626d32ec", null ], + [ "findLink", "namespacertabmap_1_1graph.html#ad91079c9cdd934c8ba8927d3c52b40e5", null ], + [ "findLink", "namespacertabmap_1_1graph.html#a06ed3112247c13dcf494665c1d9df327", null ], + [ "findLink", "namespacertabmap_1_1graph.html#a7695c60c6bb375057586449674d42eea", null ], + [ "findLink", "namespacertabmap_1_1graph.html#a8200ae3a6bd27ee2cee4b71d85ace3e9", null ], + [ "findLink", "namespacertabmap_1_1graph.html#aecdcc01682092f4c89257d070aa2a437", null ], + [ "findLinks", "namespacertabmap_1_1graph.html#a308c9331cd3dd36a776517e64b33bd82", null ], + [ "filterDuplicateLinks", "namespacertabmap_1_1graph.html#a5d11e3cccfeca97d570c528858863dd2", null ], + [ "filterLinks", "namespacertabmap_1_1graph.html#a592918d54b32d6f13236de85958da300", null ], + [ "filterLinks", "namespacertabmap_1_1graph.html#af4dffb2a3eced519378d18bca8fa4419", null ], + [ "frustumPosesFiltering", "namespacertabmap_1_1graph.html#a8213a5876c86611ee4c832981eb1e7de", null ], + [ "radiusPosesFiltering", "namespacertabmap_1_1graph.html#a1906b8b4ad4b7ffc955d22c4996b1506", null ], + [ "radiusPosesClustering", "namespacertabmap_1_1graph.html#acaf3e4ffcfc830747c3c3cb02a8ea155", null ], + [ "reduceGraph", "namespacertabmap_1_1graph.html#aabda884597e6b8df053d04ee56cfaf6f", null ], + [ "computePath", "namespacertabmap_1_1graph.html#a5ec6c3883f73181d9458c5905c0aa0ea", null ], + [ "computePathDepths", "namespacertabmap_1_1graph.html#a8acc34fed4cb4e452e8e14d05dafc578", null ], + [ "computePath", "namespacertabmap_1_1graph.html#ae21d02d613df461d6163f9d9a3db7ad2", null ], + [ "computePath", "namespacertabmap_1_1graph.html#a1ec6b9506985624f31fb2091219cb142", null ], + [ "findNearestNode", "namespacertabmap_1_1graph.html#a3d6e74a018b07cd52151e3e168f6384c", null ], + [ "findNearestNodes", "namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157", null ], + [ "findNearestNodes", "namespacertabmap_1_1graph.html#a70a5f4b17aa3bb54cad151c9f290ff7f", null ], + [ "findNearestPoses", "namespacertabmap_1_1graph.html#a8cd823f440a4512407ef78d76ff1dbbf", null ], + [ "findNearestPoses", "namespacertabmap_1_1graph.html#a236de727a38e51699fe73ff61b459d95", null ], + [ "findNearestNodes", "namespacertabmap_1_1graph.html#a52dbbfb5099e97699f2ead9139891a5f", null ], + [ "getNodesInRadius", "namespacertabmap_1_1graph.html#af9e81a0b31730adb292591b79f45c87e", null ], + [ "getNodesInRadius", "namespacertabmap_1_1graph.html#a4f7f712868babb4cc74f7fe2cc366620", null ], + [ "getPosesInRadius", "namespacertabmap_1_1graph.html#ae487257302634dff8248188e2ed69043", null ], + [ "getPosesInRadius", "namespacertabmap_1_1graph.html#a0851e81af5d331032ec790a10bb4302f", null ], + [ "computePathLength", "namespacertabmap_1_1graph.html#a3cd2009752bc8e39ec00f7f08cfd4a39", null ], + [ "computePathLength", "namespacertabmap_1_1graph.html#a14376d7f2365ab41e5c361876c999277", null ], + [ "getPaths", "namespacertabmap_1_1graph.html#a0a04ab5289c258725555d6c18a076094", null ], + [ "computeMinMax", "namespacertabmap_1_1graph.html#a39f8c9011cb5b7652003df9275c88410", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/namespacertabmap_1_1util2d.html b/preview/pr-1773/api/latest/namespacertabmap_1_1util2d.html new file mode 100644 index 00000000..6c44fbb8 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacertabmap_1_1util2d.html @@ -0,0 +1,1750 @@ + + + + + + + + +RTAB-Map: rtabmap::util2d Namespace Reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rtabmap::util2d Namespace Reference
    +
    +
    + +

    This namespace contains 2D image processing utilities. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    float RTABMAP_CORE_EXPORT ssd (const cv::Mat &windowLeft, const cv::Mat &windowRight)
     Computes the Sum of Squared Differences (SSD) between two image patches.
     
    float RTABMAP_CORE_EXPORT sad (const cv::Mat &windowLeft, const cv::Mat &windowRight)
     Computes the Sum of Absolute Differences (SAD) between two image patches.
     
    std::vector< cv::Point2f > RTABMAP_CORE_EXPORT calcStereoCorrespondences (const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status, cv::Size winSize=cv::Size(6, 3), int maxLevel=3, int iterations=5, float minDisparity=0.0f, float maxDisparity=64.0f, bool ssdApproach=true)
     Computes stereo correspondences between left and right images using a pyramidal window-based matching approach.
     
    void RTABMAP_CORE_EXPORT calcOpticalFlowPyrLKStereo (cv::InputArray _prevImg, cv::InputArray _nextImg, cv::InputArray _prevPts, cv::InputOutputArray _nextPts, cv::OutputArray _status, cv::OutputArray _err, cv::Size winSize=cv::Size(15, 3), int maxLevel=3, cv::TermCriteria criteria=cv::TermCriteria(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, 30, 0.01), int flags=0, double minEigThreshold=1e-4)
     Computes sparse optical flow using a pyramidal Lucas-Kanade method constrained to the x-axis.
     
    cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoImages (const cv::Mat &leftImage, const cv::Mat &rightImage, const ParametersMap &parameters=ParametersMap())
     Computes the disparity map from a pair of stereo images.
     
    cv::Mat RTABMAP_CORE_EXPORT depthFromDisparity (const cv::Mat &disparity, float fx, float baseline, int type=CV_32FC1)
     Converts a disparity map to a depth map using stereo camera parameters.
     
    cv::Mat RTABMAP_CORE_EXPORT depthFromStereoImages (const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, float fx, float baseline, int flowWinSize=9, int flowMaxLevel=4, int flowIterations=20, double flowEps=0.02)
     Computes a depth map from stereo image pairs using optical flow tracking.
     
    cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoCorrespondences (const cv::Size &disparitySize, const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const std::vector< unsigned char > &mask)
     Computes a disparity map from stereo correspondences between two images.
     
    cv::Mat RTABMAP_CORE_EXPORT depthFromStereoCorrespondences (const cv::Mat &leftImage, const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const std::vector< unsigned char > &mask, float fx, float baseline)
     Computes a sparse depth map from corresponding stereo feature points.
     
    cv::Mat RTABMAP_CORE_EXPORT cvtDepthFromFloat (const cv::Mat &depth32F)
     Converts a 32-bit float depth image (in meters) to a 16-bit unsigned depth image (in millimeters).
     
    cv::Mat RTABMAP_CORE_EXPORT cvtDepthToFloat (const cv::Mat &depth16U)
     Converts a 16-bit unsigned depth image (in millimeters) to a 32-bit float depth image (in meters).
     
    float RTABMAP_CORE_EXPORT getDepth (const cv::Mat &depthImage, float x, float y, bool smoothing, float depthErrorRatio=0.02f, bool estWithNeighborsIfNull=false)
     Retrieves a depth value from a depth image at a subpixel coordinate.
     
    cv::Rect RTABMAP_CORE_EXPORT computeRoi (const cv::Mat &image, const std::string &roiRatios)
     Computes a region of interest (ROI) in the image using string-defined ratios.
     
    cv::Rect RTABMAP_CORE_EXPORT computeRoi (const cv::Size &imageSize, const std::string &roiRatios)
     Computes a region of interest (ROI) from an image size and a string of ratios.
     
    cv::Rect RTABMAP_CORE_EXPORT computeRoi (const cv::Mat &image, const std::vector< float > &roiRatios)
     Computes a region of interest (ROI) in the image using float vector-defined ratios.
     
    cv::Rect RTABMAP_CORE_EXPORT computeRoi (const cv::Size &imageSize, const std::vector< float > &roiRatios)
     Computes a region of interest (ROI) using float ratios and the image size.
     
    cv::Mat RTABMAP_CORE_EXPORT decimate (const cv::Mat &image, int d)
     Downsamples an image by a given decimation factor.
     
    cv::Mat RTABMAP_CORE_EXPORT interpolate (const cv::Mat &image, int factor, float depthErrorRatio=0.02f)
     Upsamples a depth image using bilinear interpolation with depth consistency check.
     
    cv::Mat RTABMAP_CORE_EXPORT registerDepth (const cv::Mat &depth, const cv::Mat &depthK, const cv::Size &colorSize, const cv::Mat &colorK, const rtabmap::Transform &transform)
     Registers a depth image to a different camera frame (typically RGB).
     
    +cv::Mat RTABMAP_CORE_EXPORT registerDepth (const cv::Mat &depth, const cv::Mat &confidence, const cv::Mat &depthK, const cv::Size &colorSize, const cv::Mat &colorK, const rtabmap::Transform &transform, cv::Mat &registeredConfidence)
     
    cv::Mat RTABMAP_CORE_EXPORT fillDepthHoles (const cv::Mat &depth, int maximumHoleSize=1, float errorRatio=0.02f)
     Fills holes in the depth image using linear interpolation.
     
    void RTABMAP_CORE_EXPORT fillRegisteredDepthHoles (cv::Mat &depthRegistered, bool vertical, bool horizontal, bool fillDoubleHoles=false)
     Fill holes in a registered depth image using linear interpolation.
     
    cv::Mat RTABMAP_CORE_EXPORT fastBilateralFiltering (const cv::Mat &depth, float sigmaS=15.0f, float sigmaR=0.05f, bool earlyDivision=false)
     Applies a 2D fast bilateral filter to a depth image.
     
    void RTABMAP_CORE_EXPORT depthBleedingFiltering (cv::Mat &depth, float maxDepthError)
     Filters out depth bleeding artifacts in a depth image.
     
    cv::Mat RTABMAP_CORE_EXPORT brightnessAndContrastAuto (const cv::Mat &src, const cv::Mat &mask, float clipLowHistPercent=0, float clipHighHistPercent=0, float *alphaOut=0, float *betaOut=0)
     Automatic brightness and contrast optimization with optional histogram clipping.
     
    cv::Mat RTABMAP_CORE_EXPORT exposureFusion (const std::vector< cv::Mat > &images)
     Performs exposure fusion on a set of input images.
     
    void RTABMAP_CORE_EXPORT HSVtoRGB (float *r, float *g, float *b, float h, float s, float v)
     Converts a color from HSV (Hue, Saturation, Value) to RGB.
     
    void RTABMAP_CORE_EXPORT NMS (const std::vector< cv::KeyPoint > &ptsIn, const cv::Mat &descriptorsIn, std::vector< cv::KeyPoint > &ptsOut, cv::Mat &descriptorsOut, int dist_thresh, int img_width, int img_height)
     Applies Non-Maximum Suppression (NMS) to a set of keypoints.
     
    std::vector< int > RTABMAP_CORE_EXPORT SSC (const std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, float tolerance, int cols, int rows, const std::vector< int > &indx={})
     Applies the SSC (Suppression via Square Covering) algorithm to spatially select keypoints.
     
    bool RTABMAP_CORE_EXPORT rotateImagesUpsideUpIfNecessary (CameraModel &model, cv::Mat &rgb, cv::Mat &depth)
     Rotates the input RGB and depth images to make them appear upright based on the camera's roll angle.
     
    +

    Detailed Description

    +

    This namespace contains 2D image processing utilities.

    +

    2D image utilities: disparity and depth conversion, interpolation, decimation, sub-pixel refinement and similarity measures.

    +

    Function Documentation

    + +

    ◆ ssd()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    float RTABMAP_CORE_EXPORT rtabmap::util2d::ssd (const cv::Mat & windowLeft,
    const cv::Mat & windowRight 
    )
    +
    + +

    Computes the Sum of Squared Differences (SSD) between two image patches.

    +

    This function calculates the pixel-wise squared differences between corresponding elements in two input windows and accumulates the result into a single score. It supports grayscale 8-bit, 32-bit float, and 16-bit 2-channel short images (e.g., optical flow or stereo blocks).

    +
    Parameters
    + + + +
    windowLeftLeft input image patch.
    windowRightRight input image patch (must be the same size and type as windowLeft).
    +
    +
    +
    Returns
    The SSD score (a lower score indicates higher similarity).
    +
    Exceptions
    + + +
    Assertionfailure if the input types or dimensions don't match.
    +
    +
    +

    Supported types:

      +
    • CV_8UC1 (grayscale image)
    • +
    • CV_32FC1 (floating-point grayscale)
    • +
    • CV_16SC2 (2-channel signed short vectors; average of both channels used)
    • +
    + +
    +
    + +

    ◆ sad()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    float RTABMAP_CORE_EXPORT rtabmap::util2d::sad (const cv::Mat & windowLeft,
    const cv::Mat & windowRight 
    )
    +
    + +

    Computes the Sum of Absolute Differences (SAD) between two image patches.

    +

    This function calculates the absolute pixel intensity difference between two windows and accumulates the result. It supports grayscale 8-bit, 32-bit float, and 16-bit 2-channel short images.

    +
    Parameters
    + + + +
    windowLeftLeft input image patch.
    windowRightRight input image patch (must match windowLeft in size and type).
    +
    +
    +
    Returns
    The SAD score (a lower score indicates greater similarity).
    +
    Exceptions
    + + +
    Assertionfailure if the input types or dimensions are incompatible.
    +
    +
    +

    Supported types:

      +
    • CV_8UC1 (grayscale image)
    • +
    • CV_32FC1 (floating-point grayscale)
    • +
    • CV_16SC2 (2-channel signed short vectors; average of both channels used)
    • +
    + +
    +
    + +

    ◆ calcStereoCorrespondences()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< cv::Point2f > RTABMAP_CORE_EXPORT rtabmap::util2d::calcStereoCorrespondences (const cv::Mat & leftImage,
    const cv::Mat & rightImage,
    const std::vector< cv::Point2f > & leftCorners,
    std::vector< unsigned char > & status,
    cv::Size winSize = cv::Size(6, 3),
    int maxLevel = 3,
    int iterations = 5,
    float minDisparity = 0.0f,
    float maxDisparity = 64.0f,
    bool ssdApproach = true 
    )
    +
    + +

    Computes stereo correspondences between left and right images using a pyramidal window-based matching approach.

    +

    This function estimates the right image positions of a set of corners detected in the left image using block matching. It supports both Sum of Absolute Differences (SAD) and Sum of Squared Differences (SSD) as the matching criteria, and uses a coarse-to-fine strategy over an image pyramid for robustness and subpixel accuracy.

    +
    Parameters
    + + + + + + + + + + + +
    leftImageThe left image (grayscale 8 bits or CV_8UC1).
    rightImageThe right image (same type and size as leftImage).
    leftCornersThe list of 2D points in the left image for which correspondences are to be found.
    [out]statusOutput status vector indicating the success of correspondence for each point. (1: valid correspondence found, 0: no valid match)
    winSizeThe size of the search window (should be odd). Will be made odd internally if not. Minimum size is 3.
    maxLevelThe maximum level of the image pyramid to use for coarse-to-fine search.
    iterationsNumber of iterations for subpixel refinement (gradient descent-like search).
    minDisparityFMinimum allowed disparity (float). Defines search range.
    maxDisparityFMaximum allowed disparity (float). Defines search range.
    ssdApproachIf true, uses SSD (Sum of Squared Differences) as matching cost. If false, uses SAD (Sum of Absolute Differences).
    +
    +
    +
    Returns
    A vector of 2D points corresponding to leftCorners but in the right image. The size of the output matches the input leftCorners. Invalid or rejected points are flagged in status.
    +
    Note
    - Both input images must be rectified (i.e., correspondences lie along epipolar lines).
      +
    • This function modifies the search window to ensure it is odd-sized (required for accurate matching).
    • +
    • Subpixel accuracy is achieved using iterative matching and local refinement.
    • +
    • The disparity range is adaptive and refined at each pyramid level.
    • +
    • For accurate results, ensure good quality corner detection and well-rectified input images.
    • +
    +
    +
    See also
    cv::buildOpticalFlowPyramid, cv::getRectSubPix
    + +
    +
    + +

    ◆ calcOpticalFlowPyrLKStereo()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util2d::calcOpticalFlowPyrLKStereo (cv::InputArray _prevImg,
    cv::InputArray _nextImg,
    cv::InputArray _prevPts,
    cv::InputOutputArray _nextPts,
    cv::OutputArray _status,
    cv::OutputArray _err,
    cv::Size winSize = cv::Size(15, 3),
    int maxLevel = 3,
    cv::TermCriteria criteria = cv::TermCriteria(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, 30, 0.01),
    int flags = 0,
    double minEigThreshold = 1e-4 
    )
    +
    + +

    Computes sparse optical flow using a pyramidal Lucas-Kanade method constrained to the x-axis.

    +

    This function is a customized version of OpenCV's cv::calcOpticalFlowPyrLK, modified specifically for stereo matching scenarios. It assumes that the prevImg is the left stereo image and nextImg is the right stereo image. The optical flow is computed only along the x-axis (i.e., horizontal direction), which is typically valid in rectified stereo image pairs.

    +
    Note
    The key modification to the original Lucas-Kanade implementation is the following: Instead of computing the flow in both x and y directions, the y-displacement is forced to zero:
    // Original:
    +
    cv::Point2f delta((float)((A12*b2 - A22*b1) * D), (float)((A12*b1 - A11*b2) * D));
    +
    +
    // Modified:
    +
    cv::Point2f delta((float)((A12*b2 - A22*b1) * D), 0);
    +
    This ensures that flow estimation is constrained along the epipolar lines (x-direction only).
    +
    Parameters
    + + + + + + + + + + + + +
    _prevImgInput image from the previous frame (or left stereo image). Supports pyramid or raw image.
    _nextImgInput image from the next frame (or right stereo image). Supports pyramid or raw image.
    _prevPtsVector of 2D points for which the flow needs to be found (in prevImg).
    _nextPtsOutput vector of 2D points containing the calculated new positions (in nextImg). If OPTFLOW_USE_INITIAL_FLOW is passed, it should contain initial guesses.
    _statusOutput status vector. Each element is set to 1 if flow for the corresponding features has been found, 0 otherwise.
    _errOptional output vector. Contains error or min eigenvalue values (depending on flags).
    winSizeSize of the search window at each pyramid level.
    maxLevel0-based maximal pyramid level number. If set to 0, pyramids are not used (single level).
    criteriaTermination criteria for iterative search algorithm (maxCount and/or epsilon).
    flagsOperation flags:
      +
    • OPTFLOW_USE_INITIAL_FLOW: Use initial nextPts values.
    • +
    • OPTFLOW_LK_GET_MIN_EIGENVALS: Output minimum eigenvalues instead of error.
    • +
    +
    minEigThresholdMinimum eigenvalue threshold for rejecting unstable flow vectors.
    +
    +
    +
    See also
    cv::calcOpticalFlowPyrLK
    +
    +https://github.com/opencv/opencv/blob/4.x/modules/video/src/lkpyramid.cpp
    + +
    +
    + +

    ◆ disparityFromStereoImages()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::disparityFromStereoImages (const cv::Mat & leftImage,
    const cv::Mat & rightImage,
    const ParametersMap & parameters = ParametersMap() 
    )
    +
    + +

    Computes the disparity map from a pair of stereo images.

    +

    This function calculates a dense disparity map from the provided left and right stereo images. It assumes that the stereo pair is rectified and of the same size. The left image can be either grayscale (CV_8UC1) or color (CV_8UC3), while the right image must be grayscale (CV_8UC1).

    +

    If the left image is in color, it is first converted to grayscale before disparity computation. The actual disparity computation is delegated to a StereoDense object created using the provided parameters.

    +
    Parameters
    + + + + +
    leftImageThe left image of the stereo pair. Can be grayscale or BGR color.
    rightImageThe right image of the stereo pair. Must be grayscale.
    parametersA map of parameters used to configure the stereo matching algorithm.
    +
    +
    +
    Returns
    A cv::Mat representing the computed disparity map. Some algorithms, like StereoBM or StereoSGBM compute 16-bit fixed-point disparity map (CV_16SC1) (where each disparity value has 4 fractional bits), whereas other algorithms output 32-bit floating-point (CV_32FC1) disparity map.
    +
    Exceptions
    + + +
    Assertionfailure if:
      +
    • Either image is empty.
    • +
    • Image sizes do not match.
    • +
    • Image types are incompatible.
    • +
    +
    +
    +
    +
    Note
    The returned disparity map contains disparity values for each pixel in the left image. Pixels with no match may be set to 0 or a negative value depending on the stereo algorithm.
    +
    See also
    rtabmap::StereoDense
    + +
    +
    + +

    ◆ depthFromDisparity()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::depthFromDisparity (const cv::Mat & disparity,
    float fx,
    float baseline,
    int type = CV_32FC1 
    )
    +
    + +

    Converts a disparity map to a depth map using stereo camera parameters.

    +

    This function takes a disparity map and computes a corresponding depth map using the formula:

    +\[ \text{depth} = \frac{\text{baseline} \times \text{focal length}}{\text{disparity}} \] +

    +
      +
    • Disparity values of 0 or less are ignored (depth is left as 0).
    • +
    • For CV_16UC1 depth type, depth is scaled to millimeters (i.e., multiplied by 1000).
    • +
    • Values that exceed the 16-bit unsigned max value (65535) are counted and ignored.
    • +
    +
    Parameters
    + + + + + +
    disparityThe input disparity map (CV_32FC1 or CV_16SC1).
    fxThe focal length in pixels (typically from camera intrinsic parameters).
    baselineThe distance between the stereo cameras in meters.
    typeThe desired output depth image type: CV_32FC1 (meters) or CV_16UC1 (millimeters).
    +
    +
    +
    Returns
    A depth image of the same resolution as the input disparity map.
    +
    Warning
    Logs a warning if any computed depth values exceed the maximum allowed by the CV_16UC1 format (65535 mm).
    +
    Exceptions
    + + +
    Assertionfailure if the disparity map is empty, has unsupported type, or output type is invalid.
    +
    +
    + +
    +
    + +

    ◆ depthFromStereoImages()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::depthFromStereoImages (const cv::Mat & leftImage,
    const cv::Mat & rightImage,
    const std::vector< cv::Point2f > & leftCorners,
    float fx,
    float baseline,
    int flowWinSize = 9,
    int flowMaxLevel = 4,
    int flowIterations = 20,
    double flowEps = 0.02 
    )
    +
    + +

    Computes a depth map from stereo image pairs using optical flow tracking.

    +

    This function estimates the depth of features tracked between the left and right rectified stereo images by computing sparse optical flow (via Lucas-Kanade) between provided feature points in the left image. It uses stereo triangulation based on the tracked correspondences and known camera intrinsics.

    +
    Parameters
    + + + + + + + + + + +
    leftImageGrayscale rectified left image (CV_8UC1).
    rightImageGrayscale rectified right image (CV_8UC1), must be same size as leftImage.
    leftCornersFeature points (e.g., corners) detected in the left image.
    fxFocal length of the camera in pixels (must be > 0).
    baselineDistance between the left and right camera centers in meters (must be > 0).
    flowWinSizeWindow size used for optical flow (e.g., 15 for 15x15).
    flowMaxLevelMaximum pyramid level for optical flow.
    flowIterationsMaximum number of iterations for the iterative search algorithm in optical flow.
    flowEpsDesired accuracy for optical flow termination criteria.
    +
    +
    +
    Returns
    A depth map (CV_32FC1) with the same size as the input images. Pixels corresponding to successfully tracked features have valid depth values, while others are zero.
    +
    See also
    cv::calcOpticalFlowPyrLK, rtabmap::util2d::depthFromStereoCorrespondences
    + +
    +
    + +

    ◆ disparityFromStereoCorrespondences()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::disparityFromStereoCorrespondences (const cv::Size & disparitySize,
    const std::vector< cv::Point2f > & leftCorners,
    const std::vector< cv::Point2f > & rightCorners,
    const std::vector< unsigned char > & mask 
    )
    +
    + +

    Computes a disparity map from stereo correspondences between two images.

    +

    This function calculates the disparity map based on the given stereo correspondences (the left and right corners of features) and stores the resulting disparity values in a matrix. The disparity for each point is computed as the horizontal difference between the corresponding points in the left and right images. The function also accepts a mask to specify which points to include in the disparity computation.

    +
    Parameters
    + + + + + +
    [in]disparitySizeThe size of the output disparity map.
    [in]leftCornersThe list of points in the left image where features are detected.
    [in]rightCornersThe list of points in the right image corresponding to the points in leftCorners.
    [in]maskA vector of flags indicating which correspondences to use for the disparity computation. An empty vector means all correspondences are included.
    +
    +
    +
    Returns
    A cv::Mat of type CV_32FC1 representing the computed disparity map. Each pixel value corresponds to the disparity (horizontal difference between left and right image points) at that location.
    +
    Note
    The disparity is computed as the horizontal difference between corresponding points in the left and right images, specifically the difference in the x-coordinates of the points.
    +
    +The disparity map is returned in floating point format, where the value represents the disparity in pixels.
    +
    Warning
    The function checks that all points are within the bounds of the disparity map.
    + +
    +
    + +

    ◆ depthFromStereoCorrespondences()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::depthFromStereoCorrespondences (const cv::Mat & leftImage,
    const std::vector< cv::Point2f > & leftCorners,
    const std::vector< cv::Point2f > & rightCorners,
    const std::vector< unsigned char > & mask,
    float fx,
    float baseline 
    )
    +
    + +

    Computes a sparse depth map from corresponding stereo feature points.

    +

    This function uses known corresponding 2D feature points from rectified stereo images to estimate depth via triangulation, using the disparity between matched points. The computed depth values are placed into a depth map at the locations of the left image points.

    +
    Parameters
    + + + + + + + +
    leftImageThe left rectified grayscale image (used for image size reference).
    leftCornersFeature points detected in the left image.
    rightCornersCorresponding feature points in the right image (same size as leftCorners).
    maskOptional binary mask indicating which correspondences are valid (1 = valid). If empty, all correspondences are considered valid.
    fxFocal length of the camera in pixels (must be > 0).
    baselineDistance between the stereo cameras in meters (must be > 0).
    +
    +
    +
    Returns
    A sparse depth map (CV_32FC1) of the same size as the input image. Pixels corresponding to valid matches will contain depth values (in meters), while all others remain zero.
    +
    Note
    It assumes stereo images are rectified and only x-axis disparity is present.
    +
    See also
    rtabmap::util2d::depthFromStereoImages
    + +
    +
    + +

    ◆ cvtDepthFromFloat()

    + +
    +
    + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::cvtDepthFromFloat (const cv::Mat & depth32F)
    +
    + +

    Converts a 32-bit float depth image (in meters) to a 16-bit unsigned depth image (in millimeters).

    +

    This function converts each valid depth value from meters to millimeters (by multiplying by 1000.0) and stores it as an unsigned 16-bit integer. Depth values outside the valid range (greater than 65535 mm) are clipped to zero and counted. A warning is printed if such values are found.

    +
    Parameters
    + + +
    depth32FInput depth image of type CV_32FC1, where depth is in meters. May be empty.
    +
    +
    +
    Returns
    A 16-bit unsigned depth image (CV_16UC1) in millimeters. Returns an empty matrix if input is empty.
    +
    Warning
    If depth values exceed 65535 mm, they are ignored and a warning is issued.
    +
    Note
    It's assumed that the input image is in meters (commonly used format for 32-bit depth maps). If it’s already in millimeters, do not use this function.
    +
    See also
    rtabmap::util2d::cvtDepthToFloat()
    + +
    +
    + +

    ◆ cvtDepthToFloat()

    + +
    +
    + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::cvtDepthToFloat (const cv::Mat & depth16U)
    +
    + +

    Converts a 16-bit unsigned depth image (in millimeters) to a 32-bit float depth image (in meters).

    +

    This function converts each depth value from millimeters to meters by dividing by 1000.0. Useful when working with floating point depth operations or to standardize depth formats for computation or storage.

    +
    Parameters
    + + +
    depth16UInput depth image of type CV_16UC1, where depth is in millimeters. May be empty.
    +
    +
    +
    Returns
    A 32-bit float depth image (CV_32FC1) with depth values in meters. Returns an empty matrix if input is empty.
    +
    Note
    Use this function when you want to convert from 16-bit mm format to floating point meter format.
    +
    See also
    rtabmap::util2d::cvtDepthFromFloat()
    + +
    +
    + +

    ◆ getDepth()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    float RTABMAP_CORE_EXPORT rtabmap::util2d::getDepth (const cv::Mat & depthImage,
    float x,
    float y,
    bool smoothing,
    float depthErrorRatio = 0.02f,
    bool estWithNeighborsIfNull = false 
    )
    +
    + +

    Retrieves a depth value from a depth image at a subpixel coordinate.

    +

    This function samples the depth value from a depth image (either in 16-bit unsigned integers representing millimeters or 32-bit floats representing meters) at a floating-point (x, y) coordinate. The value can be optionally smoothed using a weighted neighborhood, and fallback estimation from neighbors is possible if the depth at the target pixel is invalid or zero.

    +
    Parameters
    + + + + + + + +
    depthImageInput depth image. Must be of type CV_16UC1 (depth in mm) or CV_32FC1 (depth in meters).
    xThe subpixel X-coordinate in the image.
    yThe subpixel Y-coordinate in the image.
    smoothingIf true, apply a weighted 3x3 smoothing around the pixel.
    depthErrorRatioMaximum acceptable depth difference ratio used during smoothing and fallback estimation.
    estWithNeighborsIfNullIf true, and the target pixel has an invalid depth, estimate it from valid neighboring pixels.
    +
    +
    +
    Returns
    The depth value at the given (x, y) location (in meters), or 0 if it cannot be determined.
    +
    Note
      +
    • The function applies bounds checking on the input coordinates.
    • +
    • If smoothing is enabled, a weighted average using a 3x3 kernel is computed.
    • +
    • If estWithNeighborsIfNull is enabled and the pixel has no valid depth, the value is estimated from 4-connected neighbors using consistency constraints based on depthErrorRatio.
    • +
    • Pixels with zero or invalid (NaN/Inf) depth are ignored in estimation and smoothing.
    • +
    +
    + +
    +
    + +

    ◆ decimate()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::decimate (const cv::Mat & image,
    int d 
    )
    +
    + +

    Downsamples an image by a given decimation factor.

    +

    If the image is a depth image (CV_32FC1 or CV_16UC1), it ensures that decimation is done precisely without interpolation. For other types, OpenCV's resize with INTER_AREA is used.

    +
    Parameters
    + + + +
    imageThe input image to decimate.
    decimationThe downsampling factor (must be >= 1).
    +
    +
    +
    Returns
    The decimated image. If the decimation factor is 1 or the image is empty, the original image is returned.
    +
    Note
    For depth images, the image size must be divisible by the decimation factor.
    +
    Exceptions
    + + +
    Assertionfailure if decimation is < 1 or size mismatch for depth images.
    +
    +
    + +
    +
    + +

    ◆ interpolate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::interpolate (const cv::Mat & image,
    int factor,
    float depthErrorRatio = 0.02f 
    )
    +
    + +

    Upsamples a depth image using bilinear interpolation with depth consistency check.

    +

    Performs a depth-aware interpolation for CV_32FC1 or CV_16UC1 types. It checks whether the surrounding four corner values are consistent within a depthErrorRatio, and if so, performs bilinear interpolation. For other image types, OpenCV's resize is used.

    +
    Parameters
    + + + + +
    imageThe input image to interpolate.
    factorThe interpolation factor (must be >= 1).
    depthErrorRatioAcceptable ratio of depth difference to allow interpolation.
    +
    +
    +
    Returns
    The interpolated image. If the factor is 1 or the image is empty, the original image is returned.
    +
    Note
    This function is intended for depth images. If corners have invalid or inconsistent depth values, interpolation is skipped at that patch.
    +
    Exceptions
    + + +
    Assertionfailure if factor < 1 or invalid parameters.
    +
    +
    + +
    +
    + +

    ◆ registerDepth()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::registerDepth (const cv::Mat & depth,
    const cv::Mat & depthK,
    const cv::Size & colorSize,
    const cv::Mat & colorK,
    const rtabmap::Transform & transform 
    )
    +
    + +

    Registers a depth image to a different camera frame (typically RGB).

    +

    This function aligns the given depth image to the coordinate frame of an RGB camera using the intrinsic parameters of both cameras and the extrinsic transformation between them. The output is a depth image aligned to the RGB image dimensions and field of view.

    +

    The function assumes the depth is either in meters (CV_32FC1) or in millimeters (CV_16UC1), and it returns a registered depth image in the same format.

    +
    Parameters
    + + + + + + +
    depthThe input depth image (type CV_16UC1 in mm or CV_32FC1 in meters).
    depthKIntrinsic matrix of the depth camera (3x3, type CV_64FC1).
    colorSizeSize of the target RGB image (the output will match this size).
    colorKIntrinsic matrix of the RGB camera (3x3, type CV_64FC1).
    transformTransform from the RGB camera frame to depth camera frame.
    +
    +
    +
    Returns
    A depth image registered to the RGB image space, with the same type as the input depth.
    +
    Exceptions
    + + +
    Assertionfailure if input validation fails (e.g., empty image, incorrect types or sizes).
    +
    +
    +
    Note
    If multiple depth points project to the same RGB pixel, the closest one is kept. This helps with occlusion handling when registering sparse/depth data.
    + +
    +
    + +

    ◆ fillDepthHoles()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::fillDepthHoles (const cv::Mat & depth,
    int maximumHoleSize = 1,
    float errorRatio = 0.02f 
    )
    +
    + +

    Fills holes in the depth image using linear interpolation.

    +

    This function iterates through the depth image and fills in holes (missing depth values) by interpolating from surrounding valid depth values. It considers both horizontal and vertical neighbors to interpolate missing data. The maximum hole size and the error ratio are used to control the filling process. The function works with both 16-bit (mm) and 32-bit (meters) depth images.

    +
    Parameters
    + + + + +
    depthThe input depth image (CV_16UC1 or CV_32FC1).
    maximumHoleSizeThe maximum size of a hole to be filled, in pixels.
    errorRatioThe ratio used to calculate the allowed depth error for interpolation.
    +
    +
    +
    Returns
    A new depth image with holes filled.
    +
    Note
    The input depth image must be of type CV_16UC1 (depth in millimeters) or CV_32FC1 (depth in meters). The filled output is of the same type as the input.
    + +
    +
    + +

    ◆ fillRegisteredDepthHoles()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util2d::fillRegisteredDepthHoles (cv::Mat & depthRegistered,
    bool vertical,
    bool horizontal,
    bool fillDoubleHoles = false 
    )
    +
    + +

    Fill holes in a registered depth image using linear interpolation.

    +

    This function attempts to fill invalid (zero-valued) pixels in a registered depth image by looking at neighboring pixels in vertical and/or horizontal directions. Optionally, it can also fill "double holes" (gaps of two consecutive pixels) if fillDoubleHoles is enabled.

    +

    The interpolation is only performed if the depth difference between the neighbors is within 1% of their average, to avoid introducing invalid depth values.

    +
    Parameters
    + + + + + +
    [in,out]registeredDepthThe input/output registered depth image (CV_16UC1). Modified in-place to fill in missing depth values.
    verticalIf true, the function tries to fill holes in vertical direction.
    horizontalIf true, the function tries to fill holes in horizontal direction.
    fillDoubleHolesIf true, the function also attempts to fill two-pixel wide holes by linearly interpolating between values spaced by two pixels.
    +
    +
    +
    Note
    This function assumes that the depth image contains unsigned 16-bit values, where a value of 0 represents an invalid or missing depth value. Pixels on the contour are not interpolated.
    +
    Warning
    The input matrix must be of type CV_16UC1, or the function will trigger an assertion failure.
    +
    See also
    rtabmap::util2d::registerDepth(), rtabmap::util2d::fillDepthHoles()
    + +
    +
    + +

    ◆ fastBilateralFiltering()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::fastBilateralFiltering (const cv::Mat & depth,
    float sigmaS = 15.0f,
    float sigmaR = 0.05f,
    bool earlyDivision = false 
    )
    +
    + +

    Applies a 2D fast bilateral filter to a depth image.

    +

    This function is a 2D adaptation of the pcl::FastBilateralFiltering algorithm. It processes a depth image (either CV_32FC1 or CV_16UC1) using a bilateral filter with spatial and range standard deviations sigmaS and sigmaR. The method includes optimizations such as early division and efficient 3D grid accumulation with smoothing.

    +
    Parameters
    + + + + + +
    depthInput depth image. Must be of type CV_32FC1 (meters) or CV_16UC1 (millimeters).
    sigmaSSpatial standard deviation. Controls the amount of smoothing in the image plane.
    sigmaRRange standard deviation. Controls the amount of smoothing in the depth (z) dimension.
    earlyDivisionIf true, applies early normalization to improve performance.
    +
    +
    +
    Returns
    Filtered depth image as a CV_32FC1 Mat. If the input image is empty or contains no valid depth, an empty Mat is returned.
    +
    Note
    This implementation relies on an auxiliary 3D data structure and uses trilinear interpolation for reconstructing smoothed values. Pixels with non-finite or invalid depths are ignored.
    +
    Warning
    The result is always a CV_32FC1 image, even if the input is CV_16UC1. If input depth's valid pixels have all exact same value, the result will be retruned with all zeros (issue from the original implementation).
    + +
    +
    + +

    ◆ depthBleedingFiltering()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util2d::depthBleedingFiltering (cv::Mat & depth,
    float maxDepthError 
    )
    +
    + +

    Filters out depth bleeding artifacts in a depth image.

    +

    This function sets depth values to zero (invalid) if their value significantly differs from both neighboring pixels in either horizontal or vertical direction. It works on depth images of type CV_32FC1 (32-bit float, in meters) or CV_16UC1 (16-bit unsigned int, in millimeters).

    +

    The function also ignores the image border by setting the first and last rows and columns to zero.

    +
    Parameters
    + + + +
    depthInput/output depth image. Must be of type CV_32FC1 or CV_16UC1. The filtering is done in-place.
    maxDepthErrorMaximum allowed depth difference between a pixel and its neighbors before it is considered invalid and filtered out. For CV_32FC1, this value is in meters; for CV_16UC1, it's converted to millimeters.
    +
    +
    + +
    +
    + +

    ◆ brightnessAndContrastAuto()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::brightnessAndContrastAuto (const cv::Mat & src,
    const cv::Mat & mask,
    float clipLowHistPercent = 0,
    float clipHighHistPercent = 0,
    float * alphaOut = 0,
    float * betaOut = 0 
    )
    +
    + +

    Automatic brightness and contrast optimization with optional histogram clipping.

    +

    This function automatically adjusts the brightness and contrast of the input image based on its histogram. It optionally clips a percentage of the darkest and brightest parts of the histogram to reduce the influence of outliers (similar to "auto levels" in photo editors).

    +
    Parameters
    + + + + + + + +
    [in]srcInput image. Must be of type CV_8UC1 (grayscale), CV_8UC3 (BGR), or CV_8UC4 (BGRA).
    [in]maskOptional mask. Only non-zero mask pixels are considered in histogram computation.
    [in]clipLowHistPercentPercentage of the lowest histogram range to clip. Use 0 to disable.
    [in]clipHighHistPercentPercentage of the highest histogram range to clip. Use 0 to disable.
    [out]alphaOutOptional pointer to store the computed alpha (contrast scale factor).
    [out]betaOutOptional pointer to store the computed beta (brightness shift factor).
    +
    +
    +
    Returns
    A new image with automatically adjusted brightness and contrast. The image will have the same size and number of channels as the input.
    +
    Note
    For BGRA input images, the alpha (transparency) channel is preserved and not modified.
    +
    See also
    Original discussion: https://answers.opencv.org/question/75510/how-to-make-auto-adjustmentsbrightness-and-contrast-for-image-android-opencv-image-correction/
    + +
    +
    + +

    ◆ exposureFusion()

    + +
    +
    + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util2d::exposureFusion (const std::vector< cv::Mat > & images)
    +
    + +

    Performs exposure fusion on a set of input images.

    +

    This function blends multiple images with different exposures into a single well-exposed image using the Mertens exposure fusion algorithm. It leverages OpenCV's createMergeMertens() method (available in OpenCV 3 and above).

    +
    Parameters
    + + +
    imagesA vector of input images (typically CV_8UC3) to be fused. All images should have the same size and type.
    +
    +
    +
    Returns
    A fused color image (CV_8UC3) with enhanced exposure. If OpenCV version is below 3, the function returns a clone of the first image in the input vector.
    +
    Note
    The output image is normalized to 8-bit color (0–255). Exposure fusion requires OpenCV 3.0 or later.
    +
    Warning
    If OpenCV version is lower than 3, exposure fusion is not performed and a warning is issued.
    + +
    +
    + +

    ◆ HSVtoRGB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util2d::HSVtoRGB (float * r,
    float * g,
    float * b,
    float h,
    float s,
    float v 
    )
    +
    + +

    Converts a color from HSV (Hue, Saturation, Value) to RGB.

    +

    This function takes HSV color values and converts them to their corresponding RGB representation using standard sector-based color conversion.

    +
    Parameters
    + + + + + + + +
    [out]rPointer to a float where the resulting red component (0.0–1.0) will be stored.
    [out]gPointer to a float where the resulting green component (0.0–1.0) will be stored.
    [out]bPointer to a float where the resulting blue component (0.0–1.0) will be stored.
    [in]hHue angle in degrees (0–360). Defines the color type.
    [in]sSaturation (0.0–1.0). 0 is grayscale, 1 is full color.
    [in]vValue (brightness) (0.0–1.0). 0 is black, 1 is full brightness.
    +
    +
    +
    Note
    This function assumes h is in degrees. If s is 0, the resulting color is grayscale, with R=G=B=V.
    +
    Warning
    The output RGB values are in the 0.0 to 1.0 range, not 0–255.
    + +
    +
    + +

    ◆ NMS()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util2d::NMS (const std::vector< cv::KeyPoint > & ptsIn,
    const cv::Mat & descriptorsIn,
    std::vector< cv::KeyPoint > & ptsOut,
    cv::Mat & descriptorsOut,
    int dist_thresh,
    int img_width,
    int img_height 
    )
    +
    + +

    Applies Non-Maximum Suppression (NMS) to a set of keypoints.

    +

    This function filters a set of input keypoints by applying a grid-based non-maximum suppression (NMS) algorithm. It retains only the strongest keypoints (based on response value) while ensuring that no two retained points are within a certain distance from each other.

    +
    Parameters
    + + + + + + + + +
    [in]ptsInInput vector of keypoints.
    [in]descriptorsInCorresponding descriptors for the input keypoints. Can be empty.
    [out]ptsOutOutput vector of keypoints after NMS filtering.
    [out]descriptorsOutOutput descriptors corresponding to the filtered keypoints.
    [in]dist_threshMinimum allowed distance between retained keypoints (suppression radius).
    [in]img_widthWidth of the image on which the keypoints are based.
    [in]img_heightHeight of the image on which the keypoints are based.
    +
    +
    +
    Note
    Keypoints are suppressed if they are within dist_thresh pixels of a stronger keypoint.
    +
    +If descriptorsIn is empty, descriptor output will remain empty.
    +
    +Assumes all keypoints lie within the image dimensions provided.
    + +
    +
    + +

    ◆ SSC()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< int > RTABMAP_CORE_EXPORT rtabmap::util2d::SSC (const std::vector< cv::KeyPoint > & keypoints,
    int maxKeypoints,
    float tolerance,
    int cols,
    int rows,
    const std::vector< int > & indx = {} 
    )
    +
    + +

    Applies the SSC (Suppression via Square Covering) algorithm to spatially select keypoints.

    +

    This function selects a subset of keypoints that are uniformly distributed across the image using a square covering method and binary search optimization to achieve a desired number of keypoints.

    +
    Parameters
    + + + + + + + +
    [in]keypointsInput vector of keypoints to select from.
    [in]maxKeypointsDesired upper bound on the number of output keypoints. The internal target is first reduced by round(maxKeypoints * tolerance) so the result is always less than or equal to this value.
    [in]toleranceRelative tolerance applied to the reduced target (e.g., 0.1 allows ±10% of the reduced target, not of maxKeypoints).
    [in]colsWidth of the image in pixels.
    [in]rowsHeight of the image in pixels.
    [in]indxOptional vector of indices to use instead of the original keypoints ordering. If provided, should be the same size as keypoints. This allows for applying SSC to a pre-sorted subset (e.g., top-N keypoints).
    +
    +
    +
    Returns
    A vector of indices corresponding to the selected keypoints in the input keypoints vector.
    +
    Note
    The algorithm operates by covering the image with a grid of cells and retaining the most confident keypoint in each uncovered cell while suppressing nearby keypoints within a computed square radius.
    +
    +Uses binary search to find the optimal suppression radius so the number of selected keypoints is within [effectiveMax * (1 - tolerance), effectiveMax * (1 + tolerance)], where effectiveMax = maxKeypoints - round(maxKeypoints * tolerance).
    +
    +Works best when keypoints are pre-sorted by response strength (e.g., strongest first).
    +
    +If the indx vector is provided, the returned indices refer to the original list, not just indx.
    + +
    +
    + +

    ◆ rotateImagesUpsideUpIfNecessary()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::util2d::rotateImagesUpsideUpIfNecessary (CameraModel & model,
    cv::Mat & rgb,
    cv::Mat & depth 
    )
    +
    + +

    Rotates the input RGB and depth images to make them appear upright based on the camera's roll angle.

    +

    This function uses the camera's extrinsic parameters to determine if the captured image is rotated (e.g., sideways or upside-down), and rotates it appropriately (by 90°, 180°, or 270°) to correct orientation. It also updates the associated camera model to reflect the new transformation and adjusted image size.

    +
    Parameters
    + + + + +
    [in,out]modelThe camera model associated with the images. It will be updated to reflect the new orientation.
    [in,out]rgbThe RGB image to be rotated if necessary.
    [in,out]depthThe depth image to be rotated if necessary.
    +
    +
    +
    Returns
    True if the images were rotated, false if no rotation was needed or the pitch angle is too large for a reliable decision.
    +
    Note
    The function:
      +
    • Ignores rotation if pitch > π/4 (too ambiguous to determine "up").
    • +
    • Assumes roll is responsible for rotation (i.e., sideways capture).
    • +
    • Applies necessary rotation and updates the camera intrinsics accordingly.
    • +
    • Supports image types: RGB and depth must be valid OpenCV cv::Mat.
    • +
    • Respects image transparency and depth values during rotation.
    • +
    +
    +
    Warning
    This function assumes that the camera's local transform includes the standard optical rotation.
    +
    See also
    rtabmap::CameraModel, cv::transpose, cv::flip
    + +
    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespacertabmap_1_1util3d.html b/preview/pr-1773/api/latest/namespacertabmap_1_1util3d.html new file mode 100644 index 00000000..d41667c4 --- /dev/null +++ b/preview/pr-1773/api/latest/namespacertabmap_1_1util3d.html @@ -0,0 +1,8697 @@ + + + + + + + + +RTAB-Map: rtabmap::util3d Namespace Reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rtabmap::util3d Namespace Reference
    +
    +
    + +

    3D utilities: point cloud conversion and filtering, projection, registration, surface reconstruction, mapping and transforms. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    template<typename PointCloud2T >
    LaserScan laserScanFromPointCloud (const PointCloud2T &cloud, bool filterNaNs=true, bool is2D=false, const Transform &transform=Transform())
     Convert pcl::PCLPointCloud2 to rtabmap::LaserScan with all supported fields (see rtabmap::LaserScan::Format)
     
    template<typename PointT >
    pcl::PointCloud< PointT >::Ptr projectCloudOnXYPlane (const typename pcl::PointCloud< PointT > &cloud)
     Projects a point cloud onto the XY plane by setting all Z coordinates to zero.
     
    template<typename PointT >
    void segmentObstaclesFromGround (const typename pcl::PointCloud< PointT >::Ptr &cloud, const typename pcl::IndicesPtr &indices, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles, float maxGroundHeight, pcl::IndicesPtr *flatObstacles, const Eigen::Vector4f &viewPoint, float groundNormalsUp)
     
    template<typename PointT >
    void segmentObstaclesFromGround (const typename pcl::PointCloud< PointT >::Ptr &cloud, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)
     Segments ground and obstacle indices from a point cloud using surface normals and clustering.
     
    template<typename PointT >
    void occupancy2DFromGroundObstacles (const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &groundIndices, const pcl::IndicesPtr &obstaclesIndices, cv::Mat &ground, cv::Mat &obstacles, float cellSize)
     Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data.
     
    template<typename PointT >
    void occupancy2DFromGroundObstacles (const typename pcl::PointCloud< PointT >::Ptr &groundCloud, const typename pcl::PointCloud< PointT >::Ptr &obstaclesCloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize)
     Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data.
     
    template<typename PointT >
    void occupancy2DFromCloud3D (const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)
     Generates 2D ground and obstacle occupancy data from a 3D point cloud.
     
    template<typename PointT >
    void occupancy2DFromCloud3D (const typename pcl::PointCloud< PointT >::Ptr &cloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)
     Generates 2D ground and obstacle occupancy data from a 3D point cloud.
     
    template<typename pointT >
    std::vector< pcl::Vertices > normalizePolygonsSide (const typename pcl::PointCloud< pointT > &cloud, const std::vector< pcl::Vertices > &polygons, const pcl::PointXYZ &viewPoint)
     
    template<typename pointRGBT >
    void denseMeshPostProcessing (pcl::PolygonMeshPtr &mesh, float meshDecimationFactor, int maximumPolygons, const typename pcl::PointCloud< pointRGBT >::Ptr &cloud, float transferColorRadius, bool coloredOutput, bool cleanMesh, int minClusterSize, ProgressState *progressState)
     
    template<typename PointT >
    bool intersectRayMesh (const Eigen::Vector3f &origin, const Eigen::Vector3f &dir, const typename pcl::PointCloud< PointT > &cloud, const std::vector< pcl::Vertices > &polygons, bool ignoreBackFaces, float &distance, Eigen::Vector3f &normal, int &index)
     
    cv::Mat RTABMAP_CORE_EXPORT rgbFromCloud (const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, bool bgrOrder=true)
     Converts a PCL point cloud with RGBA information to an OpenCV RGB or BGR image.
     
    cv::Mat RTABMAP_CORE_EXPORT depthFromCloud (const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, bool depth16U=true)
     Generates a depth image from a PCL organized point cloud.
     
    void RTABMAP_CORE_EXPORT rgbdFromCloud (const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, cv::Mat &rgb, cv::Mat &depth, bool bgrOrder=true, bool depth16U=true)
     Converts a PCL point cloud (with RGBA colors) into aligned RGB and depth OpenCV images.
     
    pcl::PointXYZ RTABMAP_CORE_EXPORT projectDepthTo3D (const cv::Mat &depthImage, float x, float y, float cx, float cy, float fx, float fy, bool smoothing, float depthErrorRatio=0.02f)
     Projects a single depth pixel into 3D space.
     
    Eigen::Vector3f RTABMAP_CORE_EXPORT projectDepthTo3DRay (const cv::Size &imageSize, float x, float y, float cx, float cy, float fx, float fy)
     Projects pixel coordinates to a normalized 3D ray in camera coordinates.
     
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDepth (const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
     Converts a depth image to a 3D point cloud.
     
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDepth (const cv::Mat &imageDepth, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
     Converts a depth image to a 3D point cloud using a camera model.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDepth (const cv::Mat &imageDepth, const cv::Mat &imageDepthConfidence, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, unsigned char confidenceThr=0, std::vector< int > *validIndices=0)
     
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB (const cv::Mat &imageRgb, const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
     Creates a point cloud from an RGB image and a depth image.
     
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB (const cv::Mat &imageRgb, const cv::Mat &imageDepth, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
     Creates a point cloud from an RGB image and a depth image using a CameraModel.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB (const cv::Mat &imageRgb, const cv::Mat &imageDepth, const cv::Mat &imageDepthConfidence, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, unsigned char confidenceThr=0, std::vector< int > *validIndices=0)
     
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDisparity (const cv::Mat &imageDisparity, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
     Converts a disparity image to a 3D point cloud.
     
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDisparityRGB (const cv::Mat &imageRgb, const cv::Mat &imageDisparity, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
     Converts a disparity image and an RGB image to a 3D point cloud with color.
     
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromStereoImages (const cv::Mat &imageLeft, const cv::Mat &imageRight, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &parameters=ParametersMap())
     Converts a pair of stereo images (left and right) into a 3D point cloud with RGB color information.
     
    std::vector< pcl::PointCloud< pcl::PointXYZ >::Ptr > RTABMAP_CORE_EXPORT cloudsFromSensorData (const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
     Generates a set of point clouds from sensor data.
     
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromSensorData (const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
     Generates a point cloud from sensor data.
     
    std::vector< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > RTABMAP_CORE_EXPORT cloudsRGBFromSensorData (const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
     Generates a point cloud with RGB color data from sensor data.
     
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudRGBFromSensorData (const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
     Generates a point cloud of type pcl::PointXYZRGB from sensor data.
     
    pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT laserScanFromDepthImage (const cv::Mat &depthImage, float fx, float fy, float cx, float cy, float maxDepth=0, float minDepth=0, const Transform &localTransform=Transform::getIdentity())
     Converts the middle row of a depth image into a laser scan (point cloud) using camera intrinsics and a local transformation.
     
    pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT laserScanFromDepthImages (const cv::Mat &depthImages, const std::vector< CameraModel > &cameraModels, float maxDepth, float minDepth)
     Converts multiple depth images (e.g., from a stereo or multi-camera setup) into a single laser scan (point cloud).
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZ > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZ → (x, y, z) → LaserScan::kXYZ
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZ → (x, y, z) → LaserScan::kXYZ
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointNormal → (x, y, z, nx, ny, nz) → LaserScan::kXYZNormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointNormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointNormal → (x, y, z, nx, ny, nz) → LaserScan::kXYZNormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointNormal → (x, y, z, nx, ny, nz) → LaserScan::kXYZNormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZRGB → (x, y, z, rgb) → LaserScan::kXYZRGB
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZRGB → (x, y, z, rgb) → LaserScan::kXYZRGB
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZI > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZI → (x, y, z, intensity) → LaserScan::kXYZI
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZI → (x, y, z, intensity) → LaserScan::kXYZI
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< rtabmap::PointXYZIRT > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     rtabmap::PointXYZIRT → (x, y, z, intensity, ring time) → LaserScan::kXYZIRT
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< rtabmap::PointXYZIRT > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)
     rtabmap::PointXYZIRT → (x, y, z, intensity, ring time) → LaserScan::kXYZIRT
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZRGBNormal → (x, y, z, rgb, nx, ny, nz) → LaserScan::kXYZRGBNormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZRGBNormal → (x, y, z, rgb, nx, ny, nz) → LaserScan::kXYZRGBNormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZRGBNormal → (x, y, z, rgb, nx, ny, nz) → LaserScan::kXYZRGBNormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZINormal → (x, y, z, intensity, nx, ny, nz) → LaserScan::kXYZINormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZINormal → (x, y, z, intensity, nx, ny, nz) → LaserScan::kXYZINormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)
     pcl::PointXYZINormal → (x, y, z, intensity, nx, ny, nz) → LaserScan::kXYZINormal
     
    +LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud (const pcl::PointCloud< pcl::PointXYZ > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     PointXYZ → LaserScan::kXY
     
    +LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud (const pcl::PointCloud< pcl::PointXYZI > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     PointXYZI → LaserScan::kXYI (x, y, intensity)
     
    +LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud (const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     PointNormal → LaserScan::kXYNormal (x, y, nx, ny, nz)
     
    +LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud (const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)
     PointXYZ + Normal → LaserScan::kXYNormal (x, y, nx, ny, nz)
     
    +LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
     PointXYZINormal → LaserScan::kXYINormal (x, y, inensity, nx, ny, nz)
     
    +LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud (const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)
     PointXYZI + Normal → LaserScan::kXYINormal (x, y, inensity, nx, ny, nz)
     
    +pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud2 (const LaserScan &laserScan, const Transform &transform=Transform())
     Convert rtabmap::LaserScan to pcl::PCLPointCloud2 with all supported fields (see rtabmap::LaserScan::Format)
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud (const LaserScan &laserScan, const Transform &transform=Transform())
     LaserScan → PointXYZ (x, y, z); any other field of the scan is dropped.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudNormal (const LaserScan &laserScan, const Transform &transform=Transform())
     LaserScan → PointNormal (x, y, z, nx, ny, nz); normals are zeroed if the scan has none.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGB (const LaserScan &laserScan, const Transform &transform=Transform(), unsigned char r=100, unsigned char g=100, unsigned char b=100)
     LaserScan → PointXYZRGB (x, y, z, rgb); r, g and b are used if the scan has no color.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudI (const LaserScan &laserScan, const Transform &transform=Transform(), float intensity=0.0f)
     LaserScan → PointXYZI (x, y, z, intensity); intensity is used if the scan has none.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGBNormal (const LaserScan &laserScan, const Transform &transform=Transform(), unsigned char r=100, unsigned char g=100, unsigned char b=100)
     LaserScan → PointXYZRGBNormal (x, y, z, rgb, nx, ny, nz); missing color and normals are filled as above.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudINormal (const LaserScan &laserScan, const Transform &transform=Transform(), float intensity=0.0f)
     LaserScan → PointXYZINormal (x, y, z, intensity, nx, ny, nz); missing intensity and normals are filled as above.
     
    +pcl::PointXYZ RTABMAP_CORE_EXPORT laserScanToPoint (const LaserScan &laserScan, int index)
     The point at index of the scan, as PointXYZ.
     
    +pcl::PointNormal RTABMAP_CORE_EXPORT laserScanToPointNormal (const LaserScan &laserScan, int index)
     The point at index of the scan, as PointNormal.
     
    +pcl::PointXYZRGB RTABMAP_CORE_EXPORT laserScanToPointRGB (const LaserScan &laserScan, int index, unsigned char r=100, unsigned char g=100, unsigned char b=100)
     The point at index of the scan, as PointXYZRGB.
     
    +pcl::PointXYZI RTABMAP_CORE_EXPORT laserScanToPointI (const LaserScan &laserScan, int index, float intensity)
     The point at index of the scan, as PointXYZI.
     
    +pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT laserScanToPointRGBNormal (const LaserScan &laserScan, int index, unsigned char r, unsigned char g, unsigned char b)
     The point at index of the scan, as PointXYZRGBNormal.
     
    +pcl::PointXYZINormal RTABMAP_CORE_EXPORT laserScanToPointINormal (const LaserScan &laserScan, int index, float intensity)
     The point at index of the scan, as PointXYZINormal.
     
    void RTABMAP_CORE_EXPORT getMinMax3D (const cv::Mat &laserScan, cv::Point3f &min, cv::Point3f &max)
     Computes the minimum and maximum 3D points from a laser scan matrix.
     
    void RTABMAP_CORE_EXPORT getMinMax3D (const cv::Mat &laserScan, pcl::PointXYZ &min, pcl::PointXYZ &max)
     Computes the minimum and maximum 3D points from a laser scan matrix and stores the results in pcl::PointXYZ.
     
    cv::Point3f RTABMAP_CORE_EXPORT projectDisparityTo3D (const cv::Point2f &pt, float disparity, const StereoCameraModel &model)
     Projects a 2D point from the left image and its disparity into 3D space.
     
    cv::Point3f RTABMAP_CORE_EXPORT projectDisparityTo3D (const cv::Point2f &pt, const cv::Mat &disparity, const StereoCameraModel &model)
     Projects a 2D point from the left image and the disparity map into 3D space.
     
    cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera (const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const cv::Mat &laserScan, const rtabmap::Transform &cameraTransform)
     Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image.
     
    cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera (const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PointCloud< pcl::PointXYZ >::Ptr laserScan, const rtabmap::Transform &cameraTransform)
     Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image.
     
    cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera (const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PCLPointCloud2::Ptr laserScan, const rtabmap::Transform &cameraTransform)
     Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image.
     
    void RTABMAP_CORE_EXPORT fillProjectedCloudHoles (cv::Mat &depthRegistered, bool verticalDirection, bool fillToBorder)
     Fills holes (missing depth values) in a depth image by interpolating between non-zero values.
     
    cv::Mat RTABMAP_CORE_EXPORT filterFloor (const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, float threshold, cv::Mat *depthBelow=0)
     Filters out points below a certain threshold in a depth image based on camera models.
     
    std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT projectCloudToCameras (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::map< int, Transform > &cameraPoses, const std::map< int, std::vector< CameraModel > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const ProgressState *state=0)
     Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy.
     
    std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT projectCloudToCameras (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const std::map< int, Transform > &cameraPoses, const std::map< int, std::vector< CameraModel > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const ProgressState *state=0)
     Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy.
     
    bool RTABMAP_CORE_EXPORT isFinite (const cv::Point3f &pt)
     Checks if all coordinates of a 3D point are finite.
     
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT concatenateClouds (const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr > &clouds)
     Concatenates a list of PointXYZ point clouds into a single point cloud.
     
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT concatenateClouds (const std::list< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds)
     Concatenates a list of PointXYZRGB point clouds into a single point cloud.
     
    pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate (const std::vector< pcl::IndicesPtr > &indices)
     Concatenates multiple sets of indices into a single index vector.
     
    pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate (const pcl::IndicesPtr &indicesA, const pcl::IndicesPtr &indicesB)
     Concatenates two sets of indices into one.
     
    void RTABMAP_CORE_EXPORT savePCDWords (const std::string &fileName, const std::multimap< int, pcl::PointXYZ > &words, const Transform &transform=Transform::getIdentity())
     Saves 3D word points to a PCD file, applying a transform to each point.
     
    void RTABMAP_CORE_EXPORT savePCDWords (const std::string &fileName, const std::multimap< int, cv::Point3f > &words, const Transform &transform=Transform::getIdentity())
     Saves 3D word points (as OpenCV points) to a PCD file, applying a transform to each point.
     
    cv::Mat RTABMAP_CORE_EXPORT loadBINScan (const std::string &fileName)
     Loads a KITTI-style Velodyne binary scan file into an OpenCV matrix.
     
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT loadBINCloud (const std::string &fileName)
     Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud.
     
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT loadBINCloud (const std::string &fileName, int dim)
     Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud.
     
    LaserScan RTABMAP_CORE_EXPORT loadScan (const std::string &path)
     Loads a 3D scan from a file (.pcd, .ply, or .bin format).
     
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT loadCloud (const std::string &path, const Transform &transform=Transform::getIdentity(), int downsampleStep=1, float voxelSize=0.0f)
     Loads and optionally transforms/downsamples/voxelizes a point cloud.
     
    LaserScan RTABMAP_CORE_EXPORT deskew (const LaserScan &input, double inputStamp, const rtabmap::Transform &velocity)
     Lidar deskewing.
     
    void RTABMAP_CORE_EXPORT extractXYZCorrespondences (const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)
     Extracts 3D point correspondences between two sets of labeled 3D points.
     
    void RTABMAP_CORE_EXPORT extractXYZCorrespondencesRANSAC (const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)
     Extracts reliable 3D point correspondences between two sets of labeled 3D points using RANSAC filtering.
     
    void RTABMAP_CORE_EXPORT extractXYZCorrespondences (const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const cv::Mat &depthImage1, const cv::Mat &depthImage2, float cx, float cy, float fx, float fy, float maxDepth, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)
     Extracts 3D point correspondences from 2D pixel matches using depth images.
     
    void RTABMAP_CORE_EXPORT extractXYZCorrespondences (const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZ > &cloud1, const pcl::PointCloud< pcl::PointXYZ > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)
     Extracts 3D correspondences from 2D feature matches using pcl::PointXYZ organized point clouds.
     
    void RTABMAP_CORE_EXPORT extractXYZCorrespondences (const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZRGB > &cloud1, const pcl::PointCloud< pcl::PointXYZRGB > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)
     Extracts 3D correspondences from 2D feature matches using pcl::PointXYZRGB organized point clouds.
     
    int RTABMAP_CORE_EXPORT countUniquePairs (const std::multimap< int, pcl::PointXYZ > &wordsA, const std::multimap< int, pcl::PointXYZ > &wordsB)
     Counts the number of unique 3D point correspondences between two sets of word-indexed features.
     
    void RTABMAP_CORE_EXPORT filterMaxDepth (pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2, float maxDepth, char depthAxis, bool removeDuplicates)
     Filters pairs of 3D points by maximum depth along a specified axis and optionally removes duplicates.
     
    void RTABMAP_CORE_EXPORT findCorrespondences (const std::multimap< int, cv::KeyPoint > &wordsA, const std::multimap< int, cv::KeyPoint > &wordsB, std::list< std::pair< cv::Point2f, cv::Point2f > > &pairs)
     Finds 2D point correspondences between two sets of keypoints based on matching word IDs.
     
    void RTABMAP_CORE_EXPORT findCorrespondences (const std::multimap< int, cv::Point3f > &words1, const std::multimap< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *uniqueCorrespondences=0)
     Finds 3D point correspondences between two sets of points based on matching word IDs.
     
    void RTABMAP_CORE_EXPORT findCorrespondences (const std::map< int, cv::Point3f > &words1, const std::map< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *correspondences=0)
     Finds 3D point correspondences between two sets of uniquely indexed 3D points.
     
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT generateKeypoints3DDepth (const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, float minDepth=0, float maxDepth=0)
     Projects 2D keypoints to 3D space using the provided depth image and camera models.
     
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT generateKeypoints3DDepth (const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const CameraModel &cameraModel, float minDepth=0, float maxDepth=0)
     Projects 2D keypoints to 3D space using the provided depth image and camera model.
     
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT generateKeypoints3DDisparity (const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, const StereoCameraModel &stereoCameraModel, float minDepth=0, float maxDepth=0)
     Projects 2D keypoints into 3D space using a disparity image and a stereo camera model.
     
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT generateKeypoints3DStereo (const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const StereoCameraModel &model, const std::vector< unsigned char > &mask=std::vector< unsigned char >(), float minDepth=0, float maxDepth=0)
     Computes 3D keypoints from corresponding 2D points in a stereo image pair.
     
    +std::map< int, cv::Point3f > RTABMAP_CORE_EXPORT generateWords3DMono (const std::map< int, cv::KeyPoint > &kpts, const std::map< int, cv::KeyPoint > &previousKpts, const CameraModel &cameraModel, Transform &cameraTransform, float ransacReprojThreshold=3.0f, float ransacConfidence=0.99f, int varianceMedianRatio=4, const std::map< int, cv::Point3f > &refGuess3D=std::map< int, cv::Point3f >(), double *variance=0, std::vector< int > *matchesOut=0)
     
    std::multimap< int, cv::KeyPoint > RTABMAP_CORE_EXPORT aggregate (const std::list< int > &wordIds, const std::vector< cv::KeyPoint > &keypoints)
     Aggregates word IDs and corresponding keypoints into a multimap.
     
    LaserScan RTABMAP_CORE_EXPORT commonFiltering (const LaserScan &scan, int downsamplingStep, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalK=0, float normalRadius=0.0f, float groundNormalsUp=0.0f)
     Applies a common set of filters to a LaserScan, including downsampling, range limits, voxel grid filtering, and normal estimation.
     
    RTABMAP_DEPRECATED LaserScan RTABMAP_CORE_EXPORT commonFiltering (const LaserScan &scan, int downsamplingStep, float rangeMin, float rangeMax, float voxelSize, int normalK, float normalRadius, bool forceGroundNormalsUp)
     Applies a common set of filters to a LaserScan, including downsampling, range limits, voxel grid filtering, and normal estimation.
     
    LaserScan RTABMAP_CORE_EXPORT rangeFiltering (const LaserScan &scan, float rangeMin, float rangeMax)
     Filters a LaserScan data on a minimum and maximum Euclidean range.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)
     Filters a point cloud of type pcl::PointXYZ.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)
     Filters a point cloud of type pcl::PointXYZRGB.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)
     Filters a point cloud of type pcl::PointNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)
     Filters a point cloud of type pcl::PointXYZRGBNormal.
     
    +void RTABMAP_CORE_EXPORT rangeSplitFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)
     Splits a point cloud of type pcl::PointXYZ.
     
    +void RTABMAP_CORE_EXPORT rangeSplitFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)
     Splits a point cloud of type pcl::PointXYZRGB.
     
    +void RTABMAP_CORE_EXPORT rangeSplitFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)
     Splits a point cloud of type pcl::PointNormal.
     
    +void RTABMAP_CORE_EXPORT rangeSplitFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)
     Splits a point cloud of type pcl::PointXYZRGBNormal.
     
    +LaserScan RTABMAP_CORE_EXPORT downsample (const LaserScan &cloud, int step)
     Downsamples a LaserScan.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT downsample (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int step)
     Downsamples a point cloud of type pcl::PointXYZ.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT downsample (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int step)
     Downsamples a point cloud of type pcl::PointXYZRGB.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT downsample (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int step)
     Downsamples a point cloud of type pcl::PointXYZI.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT downsample (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int step)
     Downsamples a point cloud of type pcl::PointNormal.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT downsample (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int step)
     Downsamples a point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT downsample (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int step)
     Downsamples a point cloud of type pcl::PointXYZINormal.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointNormal on provided indices.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZRGB on provided indices.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZRGBNormal on provided indices.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZI on provided indices.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZINormal on provided indices.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointNormal.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZRGB.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZI.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT voxelize (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float voxelSize)
     Performs voxel grid downsampling on a point cloud of type pcl::PointXYZINormal.
     
    pcl::PointCloud< pcl::PointXYZ >::Ptr uniformSampling (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)
     DEPRECATED: Use voxelize() instead.
     
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr uniformSampling (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)
     DEPRECATED: Use voxelize() instead.
     
    pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr uniformSampling (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)
     DEPRECATED: Use voxelize() instead.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT randomSampling (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int samples)
     Performs random sampling on a point cloud of type pcl::PointXYZ.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT randomSampling (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int samples)
     Performs random sampling on a point cloud of type pcl::PointNormal.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT randomSampling (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int samples)
     Performs random sampling on a point cloud of type pcl::PointXYZRGB.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT randomSampling (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int samples)
     Performs random sampling on a point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT randomSampling (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int samples)
     Performs random sampling on a point cloud of type pcl::PointXYZI.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT randomSampling (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int samples)
     Performs random sampling on a point cloud of type pcl::PointXYZINormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZ and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZRGB and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZI and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointNormal and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZRGBNormal and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZINormal and returns filtered indices.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZ and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZRGB and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZI and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointNormal and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZRGBNormal and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT passThrough (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)
     Performs pass-through filtering on a point cloud of type pcl::PointXYZINormal and returns a new point cloud of the filtered points.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox (const pcl::PCLPointCloud2::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PCLPointCloud2 and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZ and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointNormal and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZRGB and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZRGBNormal and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZI and returns filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZINormal and returns filtered indices.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZ and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointNormal and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZRGB and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZI and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZINormal and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT cropBox (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
     Performs crop box filtering on a point cloud of type pcl::PointXYZRGBNormal and returns a new point cloud of the filtered points.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT frustumFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)
     Performs frustum filtering on a point cloud of type pcl::PointXYZ and returns filtered indices.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT frustumFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)
     Performs frustum filtering on a point cloud of type pcl::PointXYZ and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT frustumFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)
     Performs frustum filtering on a point cloud of type pcl::PointXYZRGB and returns a new point cloud of the filtered points.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud)
     Remove NaN points from a point cloud of type pcl::PointXYZ.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud)
     Remove NaN points from a point cloud of type pcl::PointXYZRGB.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud)
     Remove NaN points from a point cloud of type pcl::PointXYZI.
     
    +pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud (const pcl::PCLPointCloud2::Ptr &cloud)
     Remove NaN points from a point cloud of type pcl::PCLPointCloud2.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud)
     Removes points with NaN normal values from a point cloud of type pcl::PointNormal.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud)
     Removes points with NaN normal values from a point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud)
     Removes points with NaN normal values from a point cloud of type pcl::PointXYZINormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZ.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZRGB.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZI.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZINormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZ with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointNormal with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZRGB with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZRGBNormal with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZI with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)
     Radius filtering for point cloud of type pcl::PointXYZINormal with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZ.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZRGB.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZI.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZINormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZ with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointNormal with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZRGB with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZRGBNormal with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZI with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
     Proportional radius filtering for point cloud of type pcl::PointXYZINormal with indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZ, returning filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZRGB, returning filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointNormal, returning filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZINormal, returning filtered indices.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZRGBNormal, returning filtered indices.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZ, returning a new filtered point cloud.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZRGB, returning a new filtered point cloud.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointNormal, returning a new filtered point cloud.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZINormal, returning a new filtered point cloud.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT subtractFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)
     Subtract filtering for point cloud of type pcl::PointXYZRGBNormal, returning a new filtered point cloud.
     
    pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))
     Performs adaptive radius-based subtraction filtering on a point cloud.
     
    pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))
     Performs adaptive radius-based subtraction filtering on a point cloud with normals, also considering normal direction differences.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointXYZ.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointXYZRGB.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointXYZ.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointXYZRGB.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointXYZI.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
     Point normal filtering for point cloud of type pcl::PointXYZINormal.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointXYZ.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointXYZRGB.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointXYZ inside provided indices.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointNormal inside provided indices.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointXYZRGB inside provided indices.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointXYZRGBNormal inside provided indices.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointXYZI inside provided indices.
     
    +std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
     Extract clusters from point cloud of type pcl::PointXYZ.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
     Extract indices from point cloud of type pcl::PointXYZ.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
     Extract indices from point cloud of type pcl::PointNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
     Extract indices from point cloud of type pcl::PointXYZRGB.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
     Extract indices from point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
     Extract indices from point cloud of type pcl::PointXYZI.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
     Extract indices from point cloud of type pcl::PointXYZINormal.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)
     Extract points from point cloud of type pcl::PointXYZ with corresponding indices.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)
     Extract points from point cloud of type pcl::PointXYZRGB with corresponding indices.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)
     Extract points from point cloud of type pcl::PointXYZRGBNormal with corresponding indices.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)
     Extract points from point cloud of type pcl::PointXYZI with corresponding indices.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT extractIndices (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)
     Extract points from point cloud of type pcl::PointXYZINormal with corresponding indices.
     
    pcl::IndicesPtr RTABMAP_CORE_EXPORT extractPlane (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float distanceThreshold, int maxIterations=100, pcl::ModelCoefficients *coefficientsOut=0)
     Extracts the indices of the inliers that belong to a plane using RANSAC.
     
    +pcl::IndicesPtr RTABMAP_CORE_EXPORT extractPlane (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float distanceThreshold, int maxIterations=100, pcl::ModelCoefficients *coefficientsOut=0)
     
    RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT occupancy2DFromLaserScan (const cv::Mat &scan, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)
     
    RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT occupancy2DFromLaserScan (const cv::Mat &scan, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)
     
    void RTABMAP_CORE_EXPORT occupancy2DFromLaserScan (const cv::Mat &scanHit, const cv::Mat &scanNoHit, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)
     Generates 2D occupancy grid maps (free and occupied cells) from laser scan data.
     
    cv::Mat RTABMAP_CORE_EXPORT create2DMapFromOccupancyLocalMaps (const std::map< int, Transform > &poses, const std::map< int, std::pair< cv::Mat, cv::Mat > > &occupancy, float cellSize, float &xMin, float &yMin, float minMapSize=0.0f, bool erode=false, float footprintRadius=0.0f)
     Creates a 2D occupancy grid map from local occupancy data.
     
    RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT create2DMap (const std::map< int, Transform > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)
     
    RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT create2DMap (const std::map< int, Transform > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)
     
    cv::Mat RTABMAP_CORE_EXPORT create2DMap (const std::map< int, Transform > &poses, const std::map< int, std::pair< cv::Mat, cv::Mat > > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)
     Generates a 2D occupancy grid map from a set of poses, laser scans, and viewpoints.
     
    void RTABMAP_CORE_EXPORT rayTrace (const cv::Point2i &start, const cv::Point2i &end, cv::Mat &grid, bool stopOnObstacle)
     Performs a 2D ray tracing operation between two points on a grid map.
     
    cv::Mat RTABMAP_CORE_EXPORT convertMap2Image8U (const cv::Mat &map8S, bool pgmFormat=false)
     Converts an occupancy grid map (CV_8S) to a grayscale image (CV_8U).
     
    cv::Mat RTABMAP_CORE_EXPORT convertImage8U2Map (const cv::Mat &map8U, bool pgmFormat=false)
     Converts a grayscale occupancy image (CV_8U) to an occupancy grid map (CV_8S).
     
    cv::Mat RTABMAP_CORE_EXPORT erodeMap (const cv::Mat &map)
     Performs erosion on an occupancy grid map to reduce small noisy obstacles.
     
    template<typename PointT >
    void segmentObstaclesFromGround (const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)
     Segments ground and obstacle indices from a point cloud using surface normals and clustering.
     
    void RTABMAP_CORE_EXPORT setRansacDeterministicSeed (bool enable)
     Toggle a deterministic seed for OpenGV's internal RANSAC RNG.
     
    bool RTABMAP_CORE_EXPORT ransacDeterministicSeedEnabled ()
     
    Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const CameraModel &cameraModel, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const Transform &guess=Transform::getIdentity(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)
     Estimates a 6-DOF camera transform from 3D-2D point correspondences using PnP RANSAC.
     
    Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< CameraModel > &cameraModels, unsigned int samplingPolicy, int minInliers, int iterations, double reprojError, int flagsPnP, int refineIterations, int varianceMedianRatio, float maxVariance, const Transform &guess, const std::map< int, cv::Point3f > &words3B, cv::Mat *covariance, std::vector< std::vector< int > > *matchesOut, std::vector< std::vector< int > > *inliersOut, bool splitLinearCovarianceComponents)
     Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library.
     
    Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< CameraModel > &cameraModels, unsigned int samplingPolicy=0, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const Transform &guess=Transform::getIdentity(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)
     Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library.
     
    Transform RTABMAP_CORE_EXPORT estimateMotion3DTo3D (const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::Point3f > &words3B, int minInliers=10, double inliersDistance=0.1, int iterations=100, int refineIterations=5, cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0)
     Estimates the 3D rigid transformation between two sets of 3D points.
     
    void RTABMAP_CORE_EXPORT solvePnPRansac (const std::vector< cv::Point3f > &objectPoints, const std::vector< cv::Point2f > &imagePoints, const cv::Mat &cameraMatrix, const cv::Mat &distCoeffs, cv::Mat &rvec, cv::Mat &tvec, bool useExtrinsicGuess, int iterationsCount, float reprojectionError, int minInliersCount, std::vector< int > &inliers, int flags, int refineIterations=1, float refineSigma=3.0f)
     Estimates the camera pose using the PnP RANSAC algorithm and optionally refines it.
     
    +int RTABMAP_CORE_EXPORT getCorrespondencesCount (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_target, float maxDistance)
     
    Transform RTABMAP_CORE_EXPORT transformFromXYZCorrespondencesSVD (const pcl::PointCloud< pcl::PointXYZ > &cloud1, const pcl::PointCloud< pcl::PointXYZ > &cloud2)
     Estimates the rigid 3D transformation between two point clouds using SVD.
     
    Transform RTABMAP_CORE_EXPORT transformFromXYZCorrespondences (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud1, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud2, double inlierThreshold=0.02, int iterations=100, int refineModelIterations=10, double refineModelSigma=3.0, std::vector< int > *inliers=0, cv::Mat *variance=0)
     Estimates a rigid transformation between two point clouds using RANSAC with optional refinement.
     
    +void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences (const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)
     Compute with variance and correspondences of pcl::PointNormal point cloud type.
     
    +void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences (const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)
     Compute with variance and correspondences of pcl::PointXYZINormal point cloud type.
     
    +void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)
     Compute with variance and correspondences of pcl::PointXYZ point cloud type.
     
    +void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences (const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)
     Compute with variance and correspondences of pcl::PointXYZI point cloud type.
     
    Transform RTABMAP_CORE_EXPORT icp (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZ > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)
     Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform.
     
    Transform RTABMAP_CORE_EXPORT icp (const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZI > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)
     Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform.
     
    Transform RTABMAP_CORE_EXPORT icpPointToPlane (const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointNormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)
     Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric.
     
    Transform RTABMAP_CORE_EXPORT icpPointToPlane (const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZINormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)
     Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric.
     
    void RTABMAP_CORE_EXPORT createPolygonIndexes (const std::vector< pcl::Vertices > &polygons, int cloudSize, std::vector< std::set< int > > &neighborPolygons, std::vector< std::set< int > > &vertexPolygons)
     Given a set of polygons, create two indexes: polygons to neighbor polygons and vertices to polygons.
     
    +std::list< std::list< int > > RTABMAP_CORE_EXPORT clusterPolygons (const std::vector< std::set< int > > &neighborPolygons, int minClusterSize=0)
     
    +std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT organizedFastMesh (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, double angleTolerance, bool quad, int trianglePixelSize, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))
     
    +std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT organizedFastMesh (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, double angleTolerance=M_PI/16, bool quad=true, int trianglePixelSize=2, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))
     
    +std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT organizedFastMesh (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, double angleTolerance=M_PI/16, bool quad=true, int trianglePixelSize=2, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))
     
    +void RTABMAP_CORE_EXPORT appendMesh (pcl::PointCloud< pcl::PointXYZRGBNormal > &cloudA, std::vector< pcl::Vertices > &polygonsA, const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloudB, const std::vector< pcl::Vertices > &polygonsB)
     
    +void RTABMAP_CORE_EXPORT appendMesh (pcl::PointCloud< pcl::PointXYZRGB > &cloudA, std::vector< pcl::Vertices > &polygonsA, const pcl::PointCloud< pcl::PointXYZRGB > &cloudB, const std::vector< pcl::Vertices > &polygonsB)
     
    +std::vector< int > RTABMAP_CORE_EXPORT filterNotUsedVerticesFromMesh (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::vector< pcl::Vertices > &polygons, pcl::PointCloud< pcl::PointXYZRGBNormal > &outputCloud, std::vector< pcl::Vertices > &outputPolygons)
     
    +std::vector< int > RTABMAP_CORE_EXPORT filterNotUsedVerticesFromMesh (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< pcl::Vertices > &polygons, pcl::PointCloud< pcl::PointXYZRGB > &outputCloud, std::vector< pcl::Vertices > &outputPolygons)
     
    +std::vector< int > RTABMAP_CORE_EXPORT filterNaNPointsFromMesh (const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< pcl::Vertices > &polygons, pcl::PointCloud< pcl::PointXYZRGB > &outputCloud, std::vector< pcl::Vertices > &outputPolygons)
     
    +std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT filterCloseVerticesFromMesh (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr cloud, const std::vector< pcl::Vertices > &polygons, float radius, float angle, bool keepLatestInRadius)
     
    +std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT filterInvalidPolygons (const std::vector< pcl::Vertices > &polygons)
     
    +pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT createMesh (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloudWithNormals, float gp3SearchRadius=0.025, float gp3Mu=2.5, int gp3MaximumNearestNeighbors=100, float gp3MaximumSurfaceAngle=M_PI/4, float gp3MinimumAngle=M_PI/18, float gp3MaximumAngle=2 *M_PI/3, bool gp3NormalConsistency=true)
     
    +pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT createTextureMesh (const pcl::PolygonMesh::Ptr &mesh, const std::map< int, Transform > &poses, const std::map< int, CameraModel > &cameraModels, const std::map< int, cv::Mat > &cameraDepths, float maxDistance=0.0f, float maxDepthError=0.0f, float maxAngle=0.0f, int minClusterSize=50, const std::vector< float > &roiRatios=std::vector< float >(), const ProgressState *state=0, std::vector< std::map< int, pcl::PointXY > > *vertexToPixels=0, bool distanceToCamPolicy=false, int numThreads=1)
     
    +pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT createTextureMesh (const pcl::PolygonMesh::Ptr &mesh, const std::map< int, Transform > &poses, const std::map< int, std::vector< CameraModel > > &cameraModels, const std::map< int, cv::Mat > &cameraDepths, float maxDistance=0.0f, float maxDepthError=0.0f, float maxAngle=0.0f, int minClusterSize=50, const std::vector< float > &roiRatios=std::vector< float >(), const ProgressState *state=0, std::vector< std::map< int, pcl::PointXY > > *vertexToPixels=0, bool distanceToCamPolicy=false, int numThreads=1)
     
    void RTABMAP_CORE_EXPORT cleanTextureMesh (pcl::TextureMesh &textureMesh, int minClusterSize)
     
    +pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT concatenateTextureMeshes (const std::list< pcl::TextureMesh::Ptr > &meshes)
     
    +void RTABMAP_CORE_EXPORT concatenateTextureMaterials (pcl::TextureMesh &mesh, const cv::Size &imageSize, int textureSize, int maxTextures, float &scale, std::vector< bool > *materialsKept=0)
     
    +std::vector< std::vector< RTABMAP_PCL_INDEX > > RTABMAP_CORE_EXPORT convertPolygonsFromPCL (const std::vector< pcl::Vertices > &polygons)
     
    +std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > RTABMAP_CORE_EXPORT convertPolygonsFromPCL (const std::vector< std::vector< pcl::Vertices > > &polygons)
     
    +std::vector< pcl::Vertices > RTABMAP_CORE_EXPORT convertPolygonsToPCL (const std::vector< std::vector< RTABMAP_PCL_INDEX > > &polygons)
     
    +std::vector< std::vector< pcl::Vertices > > RTABMAP_CORE_EXPORT convertPolygonsToPCL (const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &tex_polygons)
     
    +pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT assembleTextureMesh (const cv::Mat &cloudMat, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons, const std::vector< std::vector< Eigen::Vector2f > > &texCoords, cv::Mat &textures, bool mergeTextures=false)
     
    +pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT assemblePolygonMesh (const cv::Mat &cloudMat, const std::vector< std::vector< RTABMAP_PCL_INDEX > > &polygons)
     
    cv::Mat RTABMAP_CORE_EXPORT mergeTextures (pcl::TextureMesh &mesh, const std::map< int, cv::Mat > &images, const std::map< int, CameraModel > &calibrations, const Memory *memory=0, const DBDriver *dbDriver=0, int textureSize=4096, int textureCount=1, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels=std::vector< std::map< int, pcl::PointXY > >(), bool gainCompensation=true, float gainBeta=10.0f, bool gainRGB=true, bool blending=true, int blendingDecimation=0, int brightnessContrastRatioLow=0, int brightnessContrastRatioHigh=0, bool exposureFusion=false, const ProgressState *state=0, unsigned char blankValue=255, bool clearVertexColorUnderTexture=true, std::map< int, std::map< int, cv::Vec4d > > *gains=0, std::map< int, std::map< int, cv::Mat > > *blendingGains=0, std::pair< float, float > *contrastValues=0)
     
    +cv::Mat RTABMAP_CORE_EXPORT mergeTextures (pcl::TextureMesh &mesh, const std::map< int, cv::Mat > &images, const std::map< int, std::vector< CameraModel > > &calibrations, const Memory *memory=0, const DBDriver *dbDriver=0, int textureSize=4096, int textureCount=1, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels=std::vector< std::map< int, pcl::PointXY > >(), bool gainCompensation=true, float gainBeta=10.0f, bool gainRGB=true, bool blending=true, int blendingDecimation=0, int brightnessContrastRatioLow=0, int brightnessContrastRatioHigh=0, bool exposureFusion=false, const ProgressState *state=0, unsigned char blankValue=255, bool clearVertexColorUnderTexture=true, std::map< int, std::map< int, cv::Vec4d > > *gains=0, std::map< int, std::map< int, cv::Mat > > *blendingGains=0, std::pair< float, float > *contrastValues=0)
     
    +void RTABMAP_CORE_EXPORT fixTextureMeshForVisualization (pcl::TextureMesh &textureMesh)
     
    +RTABMAP_DEPRECATED bool RTABMAP_CORE_EXPORT multiBandTexturing (const std::string &outputOBJPath, const pcl::PCLPointCloud2 &cloud, const std::vector< pcl::Vertices > &polygons, const std::map< int, Transform > &cameraPoses, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels, const std::map< int, cv::Mat > &images, const std::map< int, std::vector< CameraModel > > &cameraModels, const Memory *memory=0, const DBDriver *dbDriver=0, int textureSize=8192, const std::string &textureFormat="jpg", const std::map< int, std::map< int, cv::Vec4d > > &gains=std::map< int, std::map< int, cv::Vec4d > >(), const std::map< int, std::map< int, cv::Mat > > &blendingGains=std::map< int, std::map< int, cv::Mat > >(), const std::pair< float, float > &contrastValues=std::pair< float, float >(0, 0), bool gainRGB=true)
     
    bool RTABMAP_CORE_EXPORT multiBandTexturing (const std::string &outputOBJPath, const pcl::PCLPointCloud2 &cloud, const std::vector< pcl::Vertices > &polygons, const std::map< int, Transform > &cameraPoses, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels, const std::map< int, cv::Mat > &images, const std::map< int, std::vector< CameraModel > > &cameraModels, const Memory *memory=0, const DBDriver *dbDriver=0, unsigned int textureSize=8192, unsigned int textureDownscale=2, const std::string &nbContrib="1 5 10 0", const std::string &textureFormat="jpg", const std::map< int, std::map< int, cv::Vec4d > > &gains=std::map< int, std::map< int, cv::Vec4d > >(), const std::map< int, std::map< int, cv::Mat > > &blendingGains=std::map< int, std::map< int, cv::Mat > >(), const std::pair< float, float > &contrastValues=std::pair< float, float >(0, 0), bool gainRGB=true, unsigned int unwrapMethod=0, bool fillHoles=false, unsigned int padding=5, double bestScoreThreshold=0.1, double angleHardThreshold=90.0, bool forceVisibleByAllVertices=false)
     
    +cv::Mat RTABMAP_CORE_EXPORT computeNormals (const cv::Mat &laserScan, int searchK, float searchRadius)
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, int searchK=20, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals2D (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeNormals2D (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals2D (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals2D (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int searchK=5, float searchRadius=0.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float maxDepthChangeFactor=0.02f, float normalSmoothingSize=10.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +pcl::PointCloud< pcl::Normal >::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float maxDepthChangeFactor=0.02f, float normalSmoothingSize=10.0f, const Eigen::Vector3f &viewPoint=Eigen::Vector3f(0, 0, 0))
     
    +float RTABMAP_CORE_EXPORT computeNormalsComplexity (const LaserScan &scan, const Transform &t=Transform::getIdentity(), cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)
     Computes the complexity of surface normals in a point cloud of type LaserScan.
     
    +float RTABMAP_CORE_EXPORT computeNormalsComplexity (const pcl::PointCloud< pcl::Normal > &normals, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)
     Computes the complexity of surface normals in a point cloud of type pcl::Normal.
     
    +float RTABMAP_CORE_EXPORT computeNormalsComplexity (const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)
     Computes the complexity of surface normals in a point cloud of type pcl::PointNormal.
     
    +float RTABMAP_CORE_EXPORT computeNormalsComplexity (const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)
     Computes the complexity of surface normals in a point cloud of type pcl::PointXYZINormal.
     
    +float RTABMAP_CORE_EXPORT computeNormalsComplexity (const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)
     Computes the complexity of surface normals in a point cloud of type pcl::PointXYZRGBNormal.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT mls (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float searchRadius=0.0f, int polygonialOrder=2, int upsamplingMethod=0, float upsamplingRadius=0.0f, float upsamplingStep=0.0f, int pointDensity=0, float dilationVoxelSize=1.0f, int dilationIterations=0)
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT mls (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float searchRadius=0.0f, int polygonialOrder=2, int upsamplingMethod=0, float upsamplingRadius=0.0f, float upsamplingStep=0.0f, int pointDensity=0, float dilationVoxelSize=1.0f, int dilationIterations=0)
     
    +RTABMAP_DEPRECATED LaserScan RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (const LaserScan &scan, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)
     
    +LaserScan RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (const LaserScan &scan, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)
     
    +RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)
     
    +RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)
     
    +RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint, bool forceGroundNormalsUp)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint (pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0), float groundNormalsUp=0.0f)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints (const std::map< int, Transform > &poses, const std::vector< int > &cameraIndices, pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float groundNormalsUp=0.0f)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints (const std::map< int, Transform > &poses, const std::vector< int > &cameraIndices, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float groundNormalsUp=0.0f)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints (const std::map< int, Transform > &poses, const std::vector< int > &cameraIndices, pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float groundNormalsUp=0.0f)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints (const std::map< int, Transform > &poses, const pcl::PointCloud< pcl::PointXYZ >::Ptr &rawCloud, const std::vector< int > &rawCameraIndices, pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float groundNormalsUp=0.0f)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints (const std::map< int, Transform > &poses, const pcl::PointCloud< pcl::PointXYZ >::Ptr &rawCloud, const std::vector< int > &rawCameraIndices, pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float groundNormalsUp=0.0f)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints (const std::map< int, Transform > &poses, const pcl::PointCloud< pcl::PointXYZ >::Ptr &rawCloud, const std::vector< int > &rawCameraIndices, pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float groundNormalsUp=0.0f)
     
    +void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints (const std::map< int, Transform > &viewpoints, const LaserScan &rawScan, const std::vector< int > &viewpointIds, LaserScan &scan, float groundNormalsUp=0.0f)
     
    +pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT meshDecimation (const pcl::PolygonMesh::Ptr &mesh, float factor)
     
    +template<typename pointT >
    std::vector< pcl::Vertices > normalizePolygonsSide (const pcl::PointCloud< pointT > &cloud, const std::vector< pcl::Vertices > &polygons, const pcl::PointXYZ &viewPoint=pcl::PointXYZ(0, 0, 0))
     
    bool RTABMAP_CORE_EXPORT intersectRayTriangle (const Eigen::Vector3f &p, const Eigen::Vector3f &dir, const Eigen::Vector3f &v0, const Eigen::Vector3f &v1, const Eigen::Vector3f &v2, float &distance, Eigen::Vector3f &normal)
     
    +int RTABMAP_CORE_EXPORT saveOBJFile (const std::string &file_name, const pcl::TextureMesh &tex_mesh, unsigned precision=5)
     
    +int RTABMAP_CORE_EXPORT saveOBJFile (const std::string &file_name, const pcl::PolygonMesh &mesh, unsigned precision=5)
     
    LaserScan RTABMAP_CORE_EXPORT transformLaserScan (const LaserScan &laserScan, const Transform &transform)
     Applies a 3D transform to all points (and normals if present) in a LaserScan.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &transform)
     Transforms pcl::PointXYZ point cloud type.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const Transform &transform)
     Transforms pcl::PointXYZI point cloud type.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Transform &transform)
     Transforms pcl::PointXYZRGB point cloud type.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Transform &transform)
     Transforms pcl::PointNormal point cloud type.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Transform &transform)
     Transforms pcl::PointXYZRGBNormal point cloud type.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Transform &transform)
     Transforms pcl::PointXYZINormal point cloud type.
     
    +pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)
     Transforms pcl::PointXYZ point cloud type with specified indices.
     
    +pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)
     Transforms pcl::PointXYZI point cloud type with specified indices.
     
    +pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)
     Transforms pcl::PointXYZRGB point cloud type with specified indices.
     
    +pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)
     Transforms pcl::PointNormal point cloud type with specified indices.
     
    +pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)
     Transforms pcl::PointXYZRGBNormal point cloud type with specified indices.
     
    +pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT transformPointCloud (const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)
     Transforms pcl::PointXYZINormal point cloud type with specified indices.
     
    +cv::Point3f RTABMAP_CORE_EXPORT transformPoint (const cv::Point3f &pt, const Transform &transform)
     Transforms cv::Point3f point type.
     
    +cv::Point3d RTABMAP_CORE_EXPORT transformPoint (const cv::Point3d &pt, const Transform &transform)
     Transforms cv::Point3d point type.
     
    +pcl::PointXYZ RTABMAP_CORE_EXPORT transformPoint (const pcl::PointXYZ &pt, const Transform &transform)
     Transforms pcl::PointXYZ point type.
     
    +pcl::PointXYZI RTABMAP_CORE_EXPORT transformPoint (const pcl::PointXYZI &pt, const Transform &transform)
     Transforms pcl::PointXYZI point type.
     
    +pcl::PointXYZRGB RTABMAP_CORE_EXPORT transformPoint (const pcl::PointXYZRGB &pt, const Transform &transform)
     Transforms pcl::PointXYZRGB point type.
     
    +pcl::PointNormal RTABMAP_CORE_EXPORT transformPoint (const pcl::PointNormal &point, const Transform &transform)
     Transforms pcl::PointNormal point type.
     
    +pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT transformPoint (const pcl::PointXYZRGBNormal &point, const Transform &transform)
     Transforms pcl::PointXYZRGBNormal point type.
     
    +pcl::PointXYZINormal RTABMAP_CORE_EXPORT transformPoint (const pcl::PointXYZINormal &point, const Transform &transform)
     Transforms pcl::PointXYZINormal point type.
     
    +

    Detailed Description

    +

    3D utilities: point cloud conversion and filtering, projection, registration, surface reconstruction, mapping and transforms.

    +

    Declared across util3d.h, util3d_filtering.h, util3d_mapping.h, util3d_registration.h, util3d_surface.h and util3d_transforms.h.

    +

    Function Documentation

    + +

    ◆ projectCloudOnXYPlane()

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + +
    pcl::PointCloud< PointT >::Ptr rtabmap::util3d::projectCloudOnXYPlane (const typename pcl::PointCloud< PointT > & cloud)
    +
    + +

    Projects a point cloud onto the XY plane by setting all Z coordinates to zero.

    +

    This function creates a copy of the input point cloud and modifies each point's Z coordinate to be zero, effectively projecting the entire cloud onto the XY plane.

    +
    Template Parameters
    + + +
    PointTThe type of point used in the point cloud (e.g., pcl::PointXYZ).
    +
    +
    +
    Parameters
    + + +
    cloudThe input point cloud to project.
    +
    +
    +
    Returns
    typename pcl::PointCloud<PointT>::Ptr A pointer to the projected point cloud with Z coordinates set to zero.
    + +

    Definition at line 41 of file util3d_mapping.hpp.

    + +
    +
    + +

    ◆ segmentObstaclesFromGround() [1/3]

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::segmentObstaclesFromGround (const typename pcl::PointCloud< PointT >::Ptr & cloud,
    const typename pcl::IndicesPtr & indices,
    pcl::IndicesPtr & ground,
    pcl::IndicesPtr & obstacles,
    int normalKSearch,
    float groundNormalAngle,
    float clusterRadius,
    int minClusterSize,
    bool segmentFlatObstacles,
    float maxGroundHeight,
    pcl::IndicesPtr * flatObstacles,
    const Eigen::Vector4f & viewPoint,
    float groundNormalsUp 
    )
    +
    + +

    Definition at line 54 of file util3d_mapping.hpp.

    + +
    +
    + +

    ◆ segmentObstaclesFromGround() [2/3]

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::segmentObstaclesFromGround (const typename pcl::PointCloud< PointT >::Ptr & cloud,
    pcl::IndicesPtr & ground,
    pcl::IndicesPtr & obstacles,
    int normalKSearch,
    float groundNormalAngle,
    float clusterRadius,
    int minClusterSize,
    bool segmentFlatObstacles = false,
    float maxGroundHeight = 0.0f,
    pcl::IndicesPtr * flatObstacles = 0,
    const Eigen::Vector4f & viewPoint = Eigen::Vector4f(0, 0, 100, 0),
    float groundNormalsUp = 0 
    )
    +
    + +

    Segments ground and obstacle indices from a point cloud using surface normals and clustering.

    +
    See also
    segmentObstaclesFromGround() with indices
    + +

    Definition at line 202 of file util3d_mapping.hpp.

    + +
    +
    + +

    ◆ occupancy2DFromGroundObstacles() [1/2]

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::occupancy2DFromGroundObstacles (const typename pcl::PointCloud< PointT >::Ptr & cloud,
    const pcl::IndicesPtr & groundIndices,
    const pcl::IndicesPtr & obstaclesIndices,
    cv::Mat & ground,
    cv::Mat & obstacles,
    float cellSize 
    )
    +
    + +

    Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data.

    +
    See also
    occupancy2DFromGroundObstacles() without indices
    + +

    Definition at line 234 of file util3d_mapping.hpp.

    + +
    +
    + +

    ◆ occupancy2DFromGroundObstacles() [2/2]

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::occupancy2DFromGroundObstacles (const typename pcl::PointCloud< PointT >::Ptr & groundCloud,
    const typename pcl::PointCloud< PointT >::Ptr & obstaclesCloud,
    cv::Mat & ground,
    cv::Mat & obstacles,
    float cellSize 
    )
    +
    + +

    Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupancy data.

    +

    This function takes two 3D point clouds—representing ground and obstacles—and performs the following steps:

      +
    • Projects them onto the XY plane (setting Z = 0).
    • +
    • Voxelizes them based on the specified cell size.
    • +
    • Converts the resulting 2D points into OpenCV matrices (1-row, N-columns, CV_32FC2) where each element is a (x, y) coordinate.
    • +
    +
    Template Parameters
    + + +
    PointTThe type of point in the input point clouds (e.g., pcl::PointXYZ).
    +
    +
    +
    Parameters
    + + + + + + +
    groundCloudThe input point cloud representing ground points.
    obstaclesCloudThe input point cloud representing obstacle points.
    groundOutput matrix containing 2D (x, y) coordinates of projected ground points (type: CV_32FC2).
    obstaclesOutput matrix containing 2D (x, y) coordinates of projected obstacle points (type: CV_32FC2).
    cellSizeThe size of each voxel/grid cell used for downsampling the projected cloud (in meters).
    +
    +
    + +

    Definition at line 264 of file util3d_mapping.hpp.

    + +
    +
    + +

    ◆ occupancy2DFromCloud3D() [1/2]

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::occupancy2DFromCloud3D (const typename pcl::PointCloud< PointT >::Ptr & cloud,
    const pcl::IndicesPtr & indices,
    cv::Mat & ground,
    cv::Mat & obstacles,
    float cellSize = 0.05f,
    float groundNormalAngle = M_PI_4,
    int minClusterSize = 20,
    bool segmentFlatObstacles = false,
    float maxGroundHeight = 0.0f 
    )
    +
    + +

    Generates 2D ground and obstacle occupancy data from a 3D point cloud.

    +

    This function performs segmentation on a 3D point cloud to separate ground and obstacle points based on normal orientation and clustering, then projects both onto the XY plane to create 2D occupancy representations using voxelization.

    +

    The resulting occupancy data is returned as two OpenCV matrices (cv::Mat) of type CV_32FC2, where each entry contains a 2D point (x, y) in meters corresponding to a ground or obstacle voxel.

    +
    Template Parameters
    + + +
    PointTThe type of point used in the input point cloud (e.g., pcl::PointXYZ).
    +
    +
    +
    Parameters
    + + + + + + + + + + +
    cloudThe input 3D point cloud.
    indicesOptional subset of points from the cloud to use for processing (can be full cloud indices).
    groundOutput matrix containing 2D ground points projected and voxelized (CV_32FC2).
    obstaclesOutput matrix containing 2D obstacle points projected and voxelized (CV_32FC2).
    cellSizeThe voxel size (in meters) for projecting and grouping points in 2D.
    groundNormalAngleMaximum allowable angle (in radians) between a point's normal and the vertical axis for it to be considered part of the ground.
    minClusterSizeMinimum number of points required to form a valid obstacle cluster.
    segmentFlatObstaclesWhether to separate flat horizontal surfaces (e.g., tables) from the ground and treat them as obstacles.
    maxGroundHeightMaximum Z value (in meters) for a surface to be considered ground. If 0, height filtering is disabled.
    +
    +
    +
    Note
    Internally, this function calls: +
    + +

    Definition at line 309 of file util3d_mapping.hpp.

    + +
    +
    + +

    ◆ occupancy2DFromCloud3D() [2/2]

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::occupancy2DFromCloud3D (const typename pcl::PointCloud< PointT >::Ptr & cloud,
    cv::Mat & ground,
    cv::Mat & obstacles,
    float cellSize = 0.05f,
    float groundNormalAngle = M_PI_4,
    int minClusterSize = 20,
    bool segmentFlatObstacles = false,
    float maxGroundHeight = 0.0f 
    )
    +
    + +

    Generates 2D ground and obstacle occupancy data from a 3D point cloud.

    +
    See also
    occupancy2DFromCloud3D() with indices
    + +

    Definition at line 348 of file util3d_mapping.hpp.

    + +
    +
    + +

    ◆ normalizePolygonsSide()

    + +
    +
    +
    +template<typename pointT >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< pcl::Vertices > rtabmap::util3d::normalizePolygonsSide (const typename pcl::PointCloud< pointT > & cloud,
    const std::vector< pcl::Vertices > & polygons,
    const pcl::PointXYZ & viewPoint 
    )
    +
    + +

    Definition at line 20 of file util3d_surface.hpp.

    + +
    +
    + +

    ◆ denseMeshPostProcessing()

    + +
    +
    +
    +template<typename pointRGBT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::denseMeshPostProcessing (pcl::PolygonMeshPtr & mesh,
    float meshDecimationFactor,
    int maximumPolygons,
    const typename pcl::PointCloud< pointRGBT >::Ptr & cloud,
    float transferColorRadius,
    bool coloredOutput,
    bool cleanMesh,
    int minClusterSize,
    ProgressState * progressState 
    )
    +
    + +

    Definition at line 50 of file util3d_surface.hpp.

    + +
    +
    + +

    ◆ intersectRayMesh()

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool rtabmap::util3d::intersectRayMesh (const Eigen::Vector3f & origin,
    const Eigen::Vector3f & dir,
    const typename pcl::PointCloud< PointT > & cloud,
    const std::vector< pcl::Vertices > & polygons,
    bool ignoreBackFaces,
    float & distance,
    Eigen::Vector3f & normal,
    int & index 
    )
    +
    + +

    Definition at line 315 of file util3d_surface.hpp.

    + +
    +
    + +

    ◆ rgbFromCloud()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::rgbFromCloud (const pcl::PointCloud< pcl::PointXYZRGBA > & cloud,
    bool bgrOrder = true 
    )
    +
    + +

    Converts a PCL point cloud with RGBA information to an OpenCV RGB or BGR image.

    +

    This function takes a structured point cloud (organized as height × width) and creates a corresponding OpenCV cv::Mat image containing the RGB (or BGR) color values from the cloud.

    +
    Parameters
    + + + +
    cloudThe input organized point cloud of type pcl::PointCloud<pcl::PointXYZRGBA>. The cloud must be organized (i.e., cloud.width and cloud.height must be greater than 0).
    bgrOrderIf true, the output image will be in BGR format (OpenCV default); if false, it will be RGB.
    +
    +
    +
    Returns
    A cv::Mat of type CV_8UC3 with the same width and height as the input point cloud, containing RGB or BGR color values depending on the bgrOrder flag.
    +
    Note
    This function assumes that the point cloud is organized. If the cloud is unorganized, the behavior is undefined.
    +
    See also
    pcl::PointCloud, cv::Mat
    + +
    +
    + +

    ◆ depthFromCloud()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::depthFromCloud (const pcl::PointCloud< pcl::PointXYZRGBA > & cloud,
    bool depth16U = true 
    )
    +
    + +

    Generates a depth image from a PCL organized point cloud.

    +

    This function converts a given organized point cloud of type pcl::PointXYZRGBA into a depth image (cv::Mat) in either 32-bit float or 16-bit unsigned format. The depth image contains the Z coordinate (depth) values of each point.

    +
    Parameters
    + + + +
    [in]cloudThe input organized point cloud (height x width), where each point contains XYZ and RGBA.
    [in]depth16UIf true, output depth will be in 16-bit unsigned integer (millimeters); otherwise, 32-bit float (meters).
    +
    +
    +
    Returns
    A depth image (cv::Mat) of the same resolution as the input cloud, with type CV_16UC1 or CV_32FC1.
    +
    Note
    The function assumes that the point cloud is organized (structured as an image).
    + +
    +
    + +

    ◆ rgbdFromCloud()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::rgbdFromCloud (const pcl::PointCloud< pcl::PointXYZRGBA > & cloud,
    cv::Mat & rgb,
    cv::Mat & depth,
    bool bgrOrder = true,
    bool depth16U = true 
    )
    +
    + +

    Converts a PCL point cloud (with RGBA colors) into aligned RGB and depth OpenCV images.

    +

    This function extracts RGB and depth information from a structured PCL point cloud (organized point cloud with width and height) and fills the corresponding OpenCV matrices.

    +
    Parameters
    + + + + + + +
    [in]cloudThe input organized point cloud containing RGBA data (structured as height x width).
    [out]frameBGRThe output color image (CV_8UC3). The channels are ordered as BGR if bgrOrder is true, otherwise RGB.
    [out]frameDepthThe output depth image (either CV_32FC1 for meters or CV_16UC1 for millimeters depending on depth16U).
    [in]bgrOrderIf true, store colors in BGR order. If false, store as RGB.
    [in]depth16UIf true, store depth as 16-bit unsigned integers (in millimeters), otherwise use 32-bit floats (in meters).
    +
    +
    +
    Note
    The function assumes that the point cloud is organized. If the point cloud is not organized, the output matrices will not be valid.
    + +
    +
    + +

    ◆ projectDepthTo3D()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointXYZ RTABMAP_CORE_EXPORT rtabmap::util3d::projectDepthTo3D (const cv::Mat & depthImage,
    float x,
    float y,
    float cx,
    float cy,
    float fx,
    float fy,
    bool smoothing,
    float depthErrorRatio = 0.02f 
    )
    +
    + +

    Projects a single depth pixel into 3D space.

    +

    This function computes the 3D coordinates of a point given a depth image and camera intrinsic parameters. It optionally applies smoothing and depth error compensation to improve the accuracy of the result.

    +
    Parameters
    + + + + + + + + + + +
    depthImageThe depth image (CV_16UC1 in millimeters or CV_32FC1 in meters).
    xThe x coordinate (column index) of the pixel to project.
    yThe y coordinate (row index) of the pixel to project.
    cxThe principal point x-coordinate. If set to 0, it will default to image center.
    cyThe principal point y-coordinate. If set to 0, it will default to image center.
    fxThe focal length in x direction (in pixels).
    fyThe focal length in y direction (in pixels).
    smoothingWhether to apply smoothing on the depth value at (x, y).
    depthErrorRatioRatio used to reject outlier depths when smoothing is enabled.
    +
    +
    +
    Returns
    A pcl::PointXYZ containing the 3D coordinates of the pixel in the depth image. If the depth value is invalid or <= 0, all coordinates are set to NaN.
    + +
    +
    + +

    ◆ projectDepthTo3DRay()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Eigen::Vector3f RTABMAP_CORE_EXPORT rtabmap::util3d::projectDepthTo3DRay (const cv::Size & imageSize,
    float x,
    float y,
    float cx,
    float cy,
    float fx,
    float fy 
    )
    +
    + +

    Projects pixel coordinates to a normalized 3D ray in camera coordinates.

    +

    This function computes the direction of a 3D ray from the camera origin through a pixel in the image plane, assuming a pinhole camera model. The returned ray is not scaled by depth; it has a fixed z component of 1.0.

    +
    Parameters
    + + + + + + + + +
    imageSizeThe size of the image (width, height).
    xThe x-coordinate of the pixel in the image.
    yThe y-coordinate of the pixel in the image.
    cxThe x-coordinate of the principal point. If zero or negative, defaults to (image width / 2) - 0.5.
    cyThe y-coordinate of the principal point. If zero or negative, defaults to (image height / 2) - 0.5.
    fxThe focal length in the x direction (pixels).
    fyThe focal length in the y direction (pixels).
    +
    +
    +
    Returns
    A normalized Eigen::Vector3f representing the direction of the ray in camera coordinates.
    + +
    +
    + +

    ◆ cloudFromDepth() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepth (const cv::Mat & imageDepth,
    float cx,
    float cy,
    float fx,
    float fy,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0 
    )
    +
    + +

    Converts a depth image to a 3D point cloud.

    +

    This function uses the camera model's intrinsic parameters to convert each pixel in the depth image to a 3D point in the camera's coordinate system. It handles the decimation of the image and ensures the resulting point cloud does not exceed the specified maximum and minimum depth values.

    +
    Parameters
    + + + + + + + + + + +
    [in]imageDepthThe input depth image, which should be of type CV_16UC1 or CV_32FC1.
    [in]cxThe optical center of the camera in the x-axis (usually the center of the image).
    [in]cyThe optical center of the camera in the y-axis (usually the center of the image).
    [in]fxThe focal length of the camera in the x-axis.
    [in]fyThe focal length of the camera in the y-axis.
    [in]decimationDecimation factor, used to reduce the image resolution (use 0 for no decimation).
    [in]maxDepthThe maximum depth value to consider when creating the point cloud.
    [in]minDepthThe minimum depth value to consider when creating the point cloud.
    [out]validIndicesA pointer to a vector where the indices of valid points will be stored. If null, this is ignored.
    +
    +
    +
    Returns
    A pcl::PointCloud<pcl::PointXYZ>::Ptr containing the 3D points corresponding to the depth image.
    +
    Deprecated:
    This function is deprecated and will be removed in future versions. Use the cloudFromDepth function that accepts a rtabmap::CameraModel instead.
    + +
    +
    + +

    ◆ cloudFromDepth() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepth (const cv::Mat & imageDepth,
    const CameraModel & model,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0 
    )
    +
    + +

    Converts a depth image to a 3D point cloud using a camera model.

    +

    This function performs the conversion of a depth image to a point cloud using the provided CameraModel object. It handles decimation, validates the depth values, and calculates the corresponding 3D coordinates in the camera's optical coordinate system.

    +
    Parameters
    + + + + + + + +
    [in]imageDepthInThe input depth image, which should be of type CV_16UC1 or CV_32FC1.
    [in]modelThe camera model containing the intrinsic parameters (fx, fy, cx, cy).
    [in]decimationThe decimation factor for image resolution reduction (use 0 for no decimation).
    [in]maxDepthThe maximum depth value to consider when creating the point cloud.
    [in]minDepthThe minimum depth value to consider when creating the point cloud.
    [out]validIndicesA pointer to a vector to store indices of valid points in the point cloud. If null, it is ignored.
    +
    +
    +
    Returns
    A pcl::PointCloud<pcl::PointXYZ>::Ptr containing the 3D points corresponding to the depth image.
    + +
    +
    + +

    ◆ cloudFromDepthRGB() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepthRGB (const cv::Mat & imageRgb,
    const cv::Mat & imageDepth,
    float cx,
    float cy,
    float fx,
    float fy,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0 
    )
    +
    + +

    Creates a point cloud from an RGB image and a depth image.

    +

    This function uses the RGB and depth images, along with camera intrinsic parameters, to generate a point cloud where each point contains RGB color and 3D spatial information. It also handles decimation and depth constraints (min/max depth) for efficient processing and memory management.

    +
    Parameters
    + + + + + + + + + + + +
    imageRgbThe RGB image (e.g., in BGR format for OpenCV).
    imageDepthThe depth image (CV_16UC1 or CV_32FC1 format).
    cxThe x-coordinate of the camera's principal point (optical center).
    cyThe y-coordinate of the camera's principal point.
    fxThe focal length in x-direction (in pixels).
    fyThe focal length in y-direction (in pixels).
    decimationThe decimation factor for the image (negative value for decimation from RGB size).
    maxDepthThe maximum depth value to consider for valid points (set 0 to ignore).
    minDepthThe minimum depth value to consider for valid points.
    validIndicesA pointer to a vector that will store valid point indices (optional).
    +
    +
    +
    Returns
    A shared pointer to a point cloud (pcl::PointCloud<pcl::PointXYZRGB>) containing RGB and 3D point data.
    +
    Deprecated:
    This function is deprecated and will be removed in future versions. Use the version that accepts a rtabmap::CameraModel instead.
    + +
    +
    + +

    ◆ cloudFromDepthRGB() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDepthRGB (const cv::Mat & imageRgb,
    const cv::Mat & imageDepth,
    const CameraModel & model,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0 
    )
    +
    + +

    Creates a point cloud from an RGB image and a depth image using a CameraModel.

    +

    This function generates a point cloud where each point contains RGB color and 3D spatial information derived from the provided RGB and depth images, using intrinsic parameters provided in the CameraModel. It also applies decimation for efficiency, and depth constraints (min/max depth) to limit the points to a valid range.

    +
    Parameters
    + + + + + + + + +
    imageRgbThe RGB image (e.g., in BGR format for OpenCV).
    imageDepthInThe depth image (CV_16UC1 or CV_32FC1 format).
    modelA CameraModel object that contains intrinsic camera parameters (fx, fy, cx, cy).
    decimationThe decimation factor for the image (negative value for decimation from RGB size).
    maxDepthThe maximum depth value to consider for valid points (set 0 to ignore).
    minDepthThe minimum depth value to consider for valid points.
    validIndicesA pointer to a vector that will store valid point indices (optional).
    +
    +
    +
    Returns
    A shared pointer to a point cloud (pcl::PointCloud<pcl::PointXYZRGB>) containing RGB and 3D point data.
    +
    Note
    This version uses a CameraModel to encapsulate the camera parameters.
    + +
    +
    + +

    ◆ cloudFromDisparity()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDisparity (const cv::Mat & imageDisparity,
    const StereoCameraModel & model,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0 
    )
    +
    + +

    Converts a disparity image to a 3D point cloud.

    +

    This function takes a disparity image and projects each disparity value to a 3D point in space using the provided stereo camera model. The points are stored in a pcl::PointCloud object. The function also supports decimating the image for faster processing.

    +
    Parameters
    + + + + + + + +
    imageDisparityThe input disparity image, which must be of type CV_32FC1 (floating-point) or CV_16SC1 (16-bit signed short).
    modelThe stereo camera model used to project disparity to 3D.
    decimationThe decimation factor for downsampling the image. It must be greater than or equal to 1.
    maxDepthThe maximum depth for valid points in meters. Points with a depth greater than this value will be discarded. A non-positive value means no maximum depth constraint.
    minDepthThe minimum depth for valid points in meters. Points with a depth less than this value will be discarded.
    validIndicesAn optional vector that will be filled with the indices of valid points in the cloud (those within the depth constraints). If nullptr, the indices are not stored.
    +
    +
    +
    Returns
    A shared pointer to a pcl::PointCloud<pcl::PointXYZ> containing the 3D points derived from the disparity image.
    +
    Note
    If the disparity image dimensions are not divisible by the decimation factor, the decimation factor will be adjusted to the highest compatible value.
    + +
    +
    + +

    ◆ cloudFromDisparityRGB()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromDisparityRGB (const cv::Mat & imageRgb,
    const cv::Mat & imageDisparity,
    const StereoCameraModel & model,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0 
    )
    +
    + +

    Converts a disparity image and an RGB image to a 3D point cloud with color.

    +

    This function takes both a disparity image and an RGB image to create a colored 3D point cloud. Each RGB pixel is associated with a 3D point generated from the disparity value. The function also supports decimating the images for faster processing.

    +
    Parameters
    + + + + + + + + +
    imageRgbThe input RGB image, which must have 3 channels (color->BGR) or 1 channel (grayscale). The image is used to assign colors to the 3D points.
    imageDisparityThe input disparity image, which must be of type CV_32FC1 (floating-point) or CV_16SC1 (16-bit signed short).
    modelThe stereo camera model used to project disparity to 3D.
    decimationThe decimation factor for downsampling the images. It must be greater than or equal to 1.
    maxDepthThe maximum depth for valid points in meters. Points with a depth greater than this value will be discarded. A non-positive value means no maximum depth constraint.
    minDepthThe minimum depth for valid points in meters. Points with a depth less than this value will be discarded.
    validIndicesAn optional vector that will be filled with the indices of valid points in the cloud (those within the depth constraints). If nullptr, the indices are not stored.
    +
    +
    +
    Returns
    A shared pointer to a pcl::PointCloud<pcl::PointXYZRGB> containing the 3D points with associated RGB color values.
    +
    Note
    If the disparity image dimensions are not divisible by the decimation factor, the decimation factor will be adjusted to the highest compatible value.
    +
    Warning
    The RGB image must have the same size as the disparity image.
    + +
    +
    + +

    ◆ cloudFromStereoImages()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromStereoImages (const cv::Mat & imageLeft,
    const cv::Mat & imageRight,
    const StereoCameraModel & model,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0,
    const ParametersMap & parameters = ParametersMap() 
    )
    +
    + +

    Converts a pair of stereo images (left and right) into a 3D point cloud with RGB color information.

    +

    This function takes a pair of stereo images, computes the disparity map between the left and right images, and then converts the disparity map into a 3D point cloud where each point contains the 3D coordinates (x, y, z) and RGB color values from the corresponding pixel in the left image.

    +

    The function supports both color and monochrome images and performs stereo rectification and disparity calculation internally. The resulting 3D point cloud is returned in the PCL format with RGB color for each point, using the pcl::PointXYZRGB type. Points outside the specified depth range are discarded.

    +
    Parameters
    + + + + + + + + + +
    [in]imageLeftThe left stereo image (either grayscale or color). If color, the image is converted to grayscale internally for disparity calculation.
    [in]imageRightThe right stereo image (either grayscale or color). If color, the image is converted to grayscale internally for disparity calculation.
    [in]modelThe stereo camera model that contains the parameters for projecting disparity values into 3D.
    [in]decimationThe decimation factor used to downsample the image and reduce computation time. It must be greater than or equal to 1.
    [in]maxDepthThe maximum allowable depth (z value). Points with a depth greater than this value will be discarded.
    [in]minDepthThe minimum allowable depth (z value). Points with a depth smaller than this value will be discarded.
    [out]validIndicesA pointer to a vector that will be filled with the indices of the valid points in the resulting point cloud. Can be set to nullptr if this information is not needed.
    [in]parametersA map of additional parameters for disparity computation, used by the stereo disparity function.
    +
    +
    +
    Returns
    A pointer to a pcl::PointCloud<pcl::PointXYZRGB> containing the 3D points with RGB colors. The cloud is dense only in regions with valid disparity values and within the specified depth range.
    +
    Note
    The function assumes that the input images are rectified and aligned to the same coordinate system. The disparity map is computed from the left and right mono images using the disparityFromStereoImages utility function, which is provided by the util2d namespace.
    +
    Warning
    The input images must have the same size, and the disparity computation assumes that the stereo pair is well-calibrated.
    + +
    +
    + +

    ◆ cloudsFromSensorData()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< pcl::PointCloud< pcl::PointXYZ >::Ptr > RTABMAP_CORE_EXPORT rtabmap::util3d::cloudsFromSensorData (const SensorData & sensorData,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< pcl::IndicesPtr > * validIndices = 0,
    const ParametersMap & stereoParameters = ParametersMap(),
    const std::vector< float > & roiRatios = std::vector< float >(),
    unsigned char confidenceThr = 0 
    )
    +
    + +

    Generates a set of point clouds from sensor data.

    +

    This function processes depth and image data from the provided SensorData object to generate point clouds. It supports both depth camera data (using a camera model) and stereo camera data (using disparity computation). It handles various preprocessing operations like decimation, applying regions of interest (ROIs), and transforming point clouds.

    +

    The function creates a point cloud for each camera model (or stereo camera model) in the SensorData and returns them in a vector of point cloud pointers.

    +
    Parameters
    + + + + + + + + +
    sensorDataA reference to the SensorData object that contains raw depth or image data, along with camera models.
    decimationThe decimation factor to downsample the data. A value of 0 means no decimation. The decimation factor should be a factor of the image width and height.
    maxDepthThe maximum depth value to be considered in the generated point clouds.
    minDepthThe minimum depth value to be considered in the generated point clouds.
    validIndicesAn optional vector to store valid point indices for each point cloud. If provided, the function will populate it with indices of valid points in each corresponding cloud.
    stereoParametersA map of parameters for stereo image processing, used to compute disparity.
    roiRatiosA vector containing four float values representing the region of interest (ROI) in normalized coordinates (left, right, top, bottom). If not specified or set to [0 0 0 0], the entire image is used.
    +
    +
    +
    Returns
    A vector of pcl::PointCloud<pcl::PointXYZ>::Ptr representing the generated point clouds in base coordinate frame.
    +
    Note
      +
    • The sensorData object must contain either depth data (for depth cameras) or image data with a right image (for stereo cameras).
    • +
    • The ROI ratios must be in the range [0.0f, 1.0f] and will be applied to both depth and image data if provided.
    • +
    • If the ROI cannot be divided evenly by the decimation factor, the function will ignore the ROI and log an error.
    • +
    • If the stereo data is provided, disparity will be computed from the left and right images, and the resulting disparity image will be used to generate 3D point clouds.
    • +
    +
    + +
    +
    + +

    ◆ cloudFromSensorData()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudFromSensorData (const SensorData & sensorData,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0,
    const ParametersMap & stereoParameters = ParametersMap(),
    const std::vector< float > & roiRatios = std::vector< float >(),
    unsigned char confidenceThr = 0 
    )
    +
    + +

    Generates a point cloud from sensor data.

    +

    This function processes the provided sensor data, generates point clouds for each sensor, and combines them into a single point cloud. It handles both single-camera and stereo data by calling the cloudsFromSensorData function. The resulting point cloud can be decimated according to the specified parameter and filtered based on depth constraints.

    +
    Parameters
    + + + + + + + + +
    sensorDataThe sensor data containing depth and image information. This data is used to generate the point clouds.
    decimationThe factor by which the generated point cloud should be decimated. A value of 1 means no decimation. The decimation factor should be a factor of the image width and height.
    maxDepthThe maximum depth allowed for valid points in the generated cloud.
    minDepthThe minimum depth allowed for valid points in the generated cloud.
    validIndicesOptional vector to store the indices of valid points in the generated point cloud.
    stereoParametersThe stereo parameters that may be used when dealing with stereo camera data.
    roiRatiosA vector containing four float values representing the region of interest (ROI) ratios (left, right, top, bottom) to crop the sensor images before processing. The values should be between 0 and 1. If not specified or set to [0 0 0 0], the entire image is used.
    +
    +
    +
    Returns
    A pointer to a pcl::PointCloud<pcl::PointXYZ> containing the combined point cloud generated from the sensor data. The point cloud is transformed in base coordinate frame.
    +
    Note
    The function will automatically handle the removal of NaN points from the cloud. If the validIndices pointer is provided, it will be filled with the indices of valid points.
    + +
    +
    + +

    ◆ cloudsRGBFromSensorData()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > RTABMAP_CORE_EXPORT rtabmap::util3d::cloudsRGBFromSensorData (const SensorData & sensorData,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< pcl::IndicesPtr > * validIndices = 0,
    const ParametersMap & stereoParameters = ParametersMap(),
    const std::vector< float > & roiRatios = std::vector< float >(),
    unsigned char confidenceThr = 0 
    )
    +
    + +

    Generates a point cloud with RGB color data from sensor data.

    +

    This function creates RGB point clouds from depth and color images obtained from a sensor. It supports both single camera models and stereo camera models. The RGB and depth images are processed and converted into a 3D point cloud using the provided camera models. Optionally, Region-of-Interest (ROI) ratios can be applied to the images to focus on specific areas.

    +
    Parameters
    + + + + + + + + +
    [in]sensorDataThe sensor data that contains the raw image and depth information.
    [in]decimationThe decimation factor to reduce the resolution of the point cloud.
    [in]maxDepthThe maximum depth to consider while generating the point cloud.
    [in]minDepthThe minimum depth to consider while generating the point cloud.
    [out]validIndicesA pointer to a vector of indices that indicate the valid points in the cloud. If nullptr, no indices will be returned.
    [in]stereoParametersA map of parameters used for stereo vision processing (if stereo camera models are used).
    [in]roiRatiosA vector of 4 floats that represent the region of interest (ROI) ratios (left, right, top, bottom) for cropping the image. Each value should be between 0.0 and 1.0, representing the normalized position of the ROI. A value of 0.0 means no cropping, and a value of 1.0 means full cropping.
    +
    +
    +
    Returns
    A vector of point clouds containing the RGB point cloud data for each camera model. Each point cloud is represented by pcl::PointCloud<pcl::PointXYZRGB>::Ptr. The point clouds are transformed in base coordinate frame.
    +
    Note
    If the sensor data does not contain both image and depth data, or if no camera models are available, an empty vector will be returned.
    +
    +If stereo camera models are used, the left and right images are processed for disparity computation.
    +
    Warning
    The function performs several assertions and checks, such as ensuring that the image and depth images are divisible by the number of camera models, and that the ROI ratios are compatible with the decimation factor.
    + +
    +
    + +

    ◆ cloudRGBFromSensorData()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::cloudRGBFromSensorData (const SensorData & sensorData,
    int decimation = 1,
    float maxDepth = 0.0f,
    float minDepth = 0.0f,
    std::vector< int > * validIndices = 0,
    const ParametersMap & stereoParameters = ParametersMap(),
    const std::vector< float > & roiRatios = std::vector< float >(),
    unsigned char confidenceThr = 0 
    )
    +
    + +

    Generates a point cloud of type pcl::PointXYZRGB from sensor data.

    +

    This function processes sensor data (such as RGB images and depth images) to generate a point cloud of type pcl::PointXYZRGB. It can handle stereo or multiple camera models, apply decimation, and filter points based on the maximum and minimum depth values. Optionally, it can also apply region-of-interest (ROI) ratios.

    +
    Parameters
    + + + + + + + + +
    [in]sensorDataThe sensor data containing raw RGB and depth images, as well as camera models.
    [in]decimationThe decimation factor to reduce the point cloud size. Default is 1.
    [in]maxDepthThe maximum depth value (points beyond this distance will be ignored).
    [in]minDepthThe minimum depth value (points closer than this distance will be ignored).
    [out]validIndicesA vector to store the indices of the valid points in the generated point cloud. It will be resized to the point cloud's size.
    [in]stereoParametersA map of stereo camera parameters, used when dealing with stereo images.
    [in]roiRatiosA vector of four float values representing the region-of-interest (ROI) ratios for cropping the depth and RGB images (left right top bottom). If not specified or set to [0 0 0 0], the entire image is used.
    +
    +
    +
    Returns
    A pointer to a pcl::PointCloud<pcl::PointXYZRGB> containing the generated point cloud. If multiple clouds are generated, they are merged into a single cloud. The validIndices vector is populated if it is provided. The point cloud(s) is/are transformed in base coordinate frame.
    +
    Note
    If the sensor data is stereo, the function will use stereo processing to generate the point cloud. If multiple camera models are provided, it generates and merges the point clouds from each camera.
    +
    +The validIndices vector will be resized and populated if it is passed as an argument.
    + +
    +
    + +

    ◆ laserScanFromDepthImage()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT rtabmap::util3d::laserScanFromDepthImage (const cv::Mat & depthImage,
    float fx,
    float fy,
    float cx,
    float cy,
    float maxDepth = 0,
    float minDepth = 0,
    const Transform & localTransform = Transform::getIdentity() 
    )
    +
    + +

    Converts the middle row of a depth image into a laser scan (point cloud) using camera intrinsics and a local transformation.

    +

    This function projects each pixel from a depth image into 3D space using the camera intrinsics (focal lengths and principal point) and applies a transformation to each point in 3D space. It filters out points that are outside the specified depth range (maxDepth, minDepth) and excludes any invalid points.

    +
    Parameters
    + + + + + + + + + +
    depthImageThe input depth image (single channel, 16-bit unsigned or 32-bit floating point).
    fxThe focal length in the x-axis (in pixels).
    fyThe focal length in the y-axis (in pixels).
    cxThe optical center in the x-axis (in pixels).
    cyThe optical center in the y-axis (in pixels).
    maxDepthThe maximum depth value (in meters). Points with depth larger than this will be discarded. If 0, no maximum depth filtering is applied.
    minDepthThe minimum depth value (in meters). Points with depth smaller than this will be discarded.
    localTransformA transformation that will be applied to all points in the resulting point cloud. This can be an identity transformation if not needed.
    +
    +
    +
    Returns
    pcl::PointCloud<pcl::PointXYZ> The resulting point cloud where each point represents a 3D coordinate projected from the depth image.
    +
    Note
    Assumes the input depth image is either CV_16UC1 (16-bit unsigned integers) or CV_32FC1 (32-bit floating-point).
    +
    +Assumes the camera is pointing parallel to ground (e.g., forward looking camera).
    + +
    +
    + +

    ◆ laserScanFromDepthImages()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT rtabmap::util3d::laserScanFromDepthImages (const cv::Mat & depthImages,
    const std::vector< CameraModel > & cameraModels,
    float maxDepth,
    float minDepth 
    )
    +
    + +

    Converts multiple depth images (e.g., from a stereo or multi-camera setup) into a single laser scan (point cloud).

    +

    This function processes multiple depth images, one for each camera in a stereo or multi-camera setup. It uses the camera models to project the depth values of the middle row to 3D space and combines them into a single point cloud. Each camera's depth image is projected using the associated camera intrinsics, and the points are transformed according to the camera's local transformation.

    +
    Parameters
    + + + + + +
    depthImagesThe input depth images concatenated horizontally. Each camera's depth image is assumed to be of equal width and placed side by side.
    cameraModelsA vector of camera models, one for each depth image in the input. Each model contains the intrinsics and the local transformation for a specific camera.
    maxDepthThe maximum depth value (in meters). Points with depth larger than this will be discarded. If 0, no maximum depth filtering is applied.
    minDepthThe minimum depth value (in meters). Points with depth smaller than this will be discarded.
    +
    +
    +
    Returns
    pcl::PointCloud<pcl::PointXYZ> The resulting point cloud where each point represents a 3D coordinate projected from the depth images.
    +
    Note
    This function assumes that the number of camera models corresponds to the number of sub-images in the input depth images.
    +
    +Each depth image is projected using the corresponding camera model in the cameraModels array.
    +
    +Assumes the cameras are pointing parallel to ground (e.g., forward and backward looking cameras).
    + +
    +
    + +

    ◆ getMinMax3D() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::getMinMax3D (const cv::Mat & laserScan,
    cv::Point3f & min,
    cv::Point3f & max 
    )
    +
    + +

    Computes the minimum and maximum 3D points from a laser scan matrix.

    +

    This function computes the minimum and maximum values along each of the X, Y, and Z axes in the laser scan matrix. The laser scan is assumed to be a matrix of type CV_32FC2, CV_32FC3, CV_32FC4, CV_32FC5, CV_32FC6, or CV_32FC7, where each row represents a point in space. The matrix is expected to have 3 or more channels for 3D data, but it can have additional channels (e.g., intensity, color, etc.).

    +

    The Z-coordinate is only considered if the matrix has at least 3 channels (3D scan). If the scan has fewer than 3 channels, the Z-coordinate is set to 0.

    +
    Parameters
    + + + + +
    laserScanThe input laser scan data, which must be a matrix of type CV_32FC2, CV_32FC3, CV_32FC4, CV_32FC5, CV_32FC6, or CV_32FC7 (with at least 2 channels, and at least 3 channels for 3D).
    minA reference to a cv::Point3f object where the minimum 3D point (X, Y, Z) will be stored.
    maxA reference to a cv::Point3f object where the maximum 3D point (X, Y, Z) will be stored.
    +
    +
    +
    Exceptions
    + + +
    exceptionif the input matrix is empty or has an invalid type.
    +
    +
    + +
    +
    + +

    ◆ getMinMax3D() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::getMinMax3D (const cv::Mat & laserScan,
    pcl::PointXYZ & min,
    pcl::PointXYZ & max 
    )
    +
    + +

    Computes the minimum and maximum 3D points from a laser scan matrix and stores the results in pcl::PointXYZ.

    +

    This function calls the getMinMax3D function that operates on cv::Point3f and converts the results to pcl::PointXYZ format. It is useful when working with PCL data structures for 3D processing.

    +
    Parameters
    + + + + +
    laserScanThe input laser scan data, which must be a matrix of type CV_32FC2, CV_32FC3, CV_32FC4, CV_32FC5, CV_32FC6, or CV_32FC7 (with at least 2 channels, and at least 3 channels for 3D).
    minA reference to a pcl::PointXYZ object where the minimum 3D point (X, Y, Z) will be stored.
    maxA reference to a pcl::PointXYZ object where the maximum 3D point (X, Y, Z) will be stored.
    +
    +
    +
    Exceptions
    + + +
    exceptionif the input matrix is empty or has an invalid type.
    +
    +
    + +
    +
    + +

    ◆ projectDisparityTo3D() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Point3f RTABMAP_CORE_EXPORT rtabmap::util3d::projectDisparityTo3D (const cv::Point2f & pt,
    float disparity,
    const StereoCameraModel & model 
    )
    +
    + +

    Projects a 2D point from the left image and its disparity into 3D space.

    +

    This function converts a 2D point from the left image and its corresponding disparity value into a 3D point in space using the provided stereo camera model.

    +

    The conversion follows the formula:

    +\[ Z = \frac{baseline \times f}{disparity + (cx1 - cx0)} \] +

    +

    Where:

      +
    • baseline is the distance between the left and right camera centers
    • +
    • f is the focal length of the camera
    • +
    • cx1 and cx0 are the x-coordinates of the principal points of the right and left cameras, respectively.
    • +
    +
    Parameters
    + + + + +
    ptThe 2D point in the left image (in pixels).
    disparityThe disparity value for the corresponding point (in pixels).
    modelThe stereo camera model containing the intrinsic parameters.
    +
    +
    +
    Returns
    A 3D point (x, y, z) in space corresponding to the input 2D point and disparity. If the disparity is invalid or any required camera parameters are not set, it returns a point containing NaN values.
    +
    Note
    This function assumes that the disparity value is positive, and that the baseline and focal lengths are also positive.
    + +
    +
    + +

    ◆ projectDisparityTo3D() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Point3f RTABMAP_CORE_EXPORT rtabmap::util3d::projectDisparityTo3D (const cv::Point2f & pt,
    const cv::Mat & disparity,
    const StereoCameraModel & model 
    )
    +
    + +

    Projects a 2D point from the left image and the disparity map into 3D space.

    +

    This function converts a 2D point from the left image and the disparity value from a disparity map into a 3D point in space using the provided stereo camera model.

    +

    The function first retrieves the disparity value for the given 2D point from the disparity map. It then calls the other projectDisparityTo3D function to perform the conversion to 3D.

    +
    Parameters
    + + + + +
    ptThe 2D point in the left image (in pixels).
    disparityThe disparity map (CV_32FC1 or CV_16SC1) from which the disparity value for the point is retrieved.
    modelThe stereo camera model containing the intrinsic parameters.
    +
    +
    +
    Returns
    A 3D point (x, y, z) in space corresponding to the input 2D point and the disparity value. If the point is outside the disparity map bounds or if the disparity value is invalid, it returns a point containing NaN values.
    +
    Note
    This function checks that the input disparity matrix is not empty and has an appropriate type (either CV_32FC1 or CV_16SC1).
    + +
    +
    + +

    ◆ projectCloudToCamera() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCamera (const cv::Size & imageSize,
    const cv::Mat & cameraMatrixK,
    const cv::Mat & laserScan,
    const rtabmap::Transform & cameraTransform 
    )
    +
    + +

    Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image.

    +

    This function projects a laser scan (in /base_link coordinate system) into the camera frame of reference using the camera's intrinsic parameters and the camera's transform. The result is stored in a depth image (cv::Mat), where each pixel corresponds to the distance of the projected point in the camera frame.

    +
    Parameters
    + + + + + +
    [in]imageSizeThe desired size of the output depth image (in pixels).
    [in]cameraMatrixKThe camera matrix (intrinsics), containing the focal lengths and principal points.
    [in]laserScanA matrix of laser scan points. The type can be CV_32FC2 (2D), CV_32FC3, CV_32FC4, etc., where the points are assumed to be in the /base_link coordinate system.
    [in]cameraTransformThe transform from /base_link to /camera_link, used to adjust the point cloud to the camera's reference frame.
    +
    +
    +
    Returns
    A cv::Mat object representing the registered depth image, with each pixel corresponding to the projected point's depth (z value) in the camera frame.
    +
    Exceptions
    + + +
    exceptionif the input cameraTransform is null, the laser scan is empty, or the cameraMatrixK has incorrect dimensions.
    +
    +
    + +
    +
    + +

    ◆ projectCloudToCamera() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCamera (const cv::Size & imageSize,
    const cv::Mat & cameraMatrixK,
    const pcl::PointCloud< pcl::PointXYZ >::Ptr laserScan,
    const rtabmap::Transform & cameraTransform 
    )
    +
    + +

    Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image.

    +

    This function projects a laser scan (pcl::PointCloud) into the camera frame of reference using the camera's intrinsic parameters and the camera's transform. The result is stored in a depth image (cv::Mat), where each pixel corresponds to the distance of the projected point in the camera frame.

    +
    Parameters
    + + + + + +
    [in]imageSizeThe desired size of the output depth image (in pixels).
    [in]cameraMatrixKThe camera matrix (intrinsics), containing the focal lengths and principal points.
    [in]laserScanA pointer to a pcl::PointCloud<pcl::PointXYZ> object containing the laser scan points. The points are assumed to be in the /base_link coordinate system.
    [in]cameraTransformThe transform from /base_link to /camera_link, used to adjust the point cloud to the camera's reference frame.
    +
    +
    +
    Returns
    A cv::Mat object representing the registered depth image, with each pixel corresponding to the projected point's depth (z value) in the camera frame.
    +
    Exceptions
    + + +
    exceptionif the input cameraTransform is null, the laser scan is empty, or the cameraMatrixK has incorrect dimensions.
    +
    +
    + +
    +
    + +

    ◆ projectCloudToCamera() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCamera (const cv::Size & imageSize,
    const cv::Mat & cameraMatrixK,
    const pcl::PCLPointCloud2::Ptr laserScan,
    const rtabmap::Transform & cameraTransform 
    )
    +
    + +

    Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth image.

    +

    This function projects a laser scan (pcl::PCLPointCloud2) into the camera frame of reference using the camera's intrinsic parameters and the camera's transform. The result is stored in a depth image (cv::Mat), where each pixel corresponds to the distance of the projected point in the camera frame.

    +
    Parameters
    + + + + + +
    [in]imageSizeThe desired size of the output depth image (in pixels).
    [in]cameraMatrixKThe camera matrix (intrinsics), containing the focal lengths and principal points.
    [in]laserScanA pointer to a pcl::PCLPointCloud2 object containing the laser scan points. The points are assumed to be in the /base_link coordinate system.
    [in]cameraTransformThe transform from /base_link to /camera_link, used to adjust the point cloud to the camera's reference frame.
    +
    +
    +
    Returns
    A cv::Mat object representing the registered depth image, with each pixel corresponding to the projected point's depth (z value) in the camera frame.
    +
    Exceptions
    + + +
    exceptionif the input cameraTransform is null, the laser scan is empty, or the cameraMatrixK has incorrect dimensions.
    +
    +
    + +
    +
    + +

    ◆ fillProjectedCloudHoles()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::fillProjectedCloudHoles (cv::Mat & depthRegistered,
    bool verticalDirection,
    bool fillToBorder 
    )
    +
    + +

    Fills holes (missing depth values) in a depth image by interpolating between non-zero values.

    +

    This function iterates through a depth image and fills holes by interpolating between the surrounding non-zero depth values. It works either vertically or horizontally, depending on the verticalDirection parameter. The interpolation method fills the missing values based on the linear slope between two valid depth values. Optionally, the interpolation can be extended to the border of the image if fillToBorder is set to true.

    +
    Parameters
    + + + + +
    registeredDepthA matrix representing the registered depth image, where missing depth values are assumed to be zero. The matrix must be of type CV_32FC1.
    verticalDirectionIf true, the holes are filled vertically (by column), otherwise the holes are filled horizontally (by row).
    fillToBorderIf true, the interpolation will fill the depth holes all the way to the border of the image (i.e., it will propagate the nearest valid depth to the edges of the image).
    +
    +
    +
    Note
    The input registeredDepth matrix must be of type CV_32FC1, where depth values are stored as single-precision floating-point numbers.
    +
    +With fillToBorder enabled, the current implementation only fills up to last pixel, i.e., first/last rows or columns are not filled.
    +
    Warning
    This function modifies the input registeredDepth matrix in place.
    + +
    +
    + +

    ◆ filterFloor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::filterFloor (const cv::Mat & depth,
    const std::vector< CameraModel > & cameraModels,
    float threshold,
    cv::Mat * depthBelow = 0 
    )
    +
    + +

    Filters out points below a certain threshold in a depth image based on camera models.

    +

    This function processes a depth image and filters out points below a specified threshold, which are assumed to belong to the floor. It does this by projecting the depth pixels into 3D space (base frame) using the camera models, and if the z-coordinate of the projected point is less than the threshold, the corresponding depth value is set to 0.

    +
    Parameters
    + + + + + +
    depthThe input depth image to be filtered. The matrix should contain depth values in either CV_16UC1 (unsigned short) or CV_32FC1 (float) format.
    cameraModelsA vector of camera models used for reprojection. The camera models are used to convert the 2D image coordinates to 3D space.
    thresholdThe z-threshold in meters, below which points are considered part of the floor and will be filtered out.
    depthBelowA pointer to an optional output depth image where the filtered-out points (below the threshold) will be saved. If this is nullptr, no output is generated for filtered-out points.
    +
    +
    +
    Returns
    A new depth image where points below the specified threshold are set to zero.
    +
    Note
      +
    • The function assumes that the depth image has valid depth values.
    • +
    • If the input depthBelow is provided, it will contain the depth values for the points that were considered as floor points.
    • +
    • The function assumes that all camera models have the same resolution and are valid for reprojection.
    • +
    +
    +
    Exceptions
    + + +
    std::invalid_argumentif the camera models are empty or invalid.
    +
    +
    + +
    +
    + +

    ◆ projectCloudToCameras() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCameras (const pcl::PointCloud< pcl::PointXYZRGBNormal > & cloud,
    const std::map< int, Transform > & cameraPoses,
    const std::map< int, std::vector< CameraModel > > & cameraModels,
    float maxDistance = 0.0f,
    float maxAngle = 0.0f,
    float maxDepthError = 0.0f,
    const std::vector< float > & roiRatios = std::vector< float >(),
    const cv::Mat & projMask = cv::Mat(),
    bool distanceToCamPolicy = false,
    const ProgressState * state = 0 
    )
    +
    + +

    Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy.

    +

    This function takes a point cloud of type pcl::PointXYZRGBNormal and projects each point to the best camera that sees the point. The "best" camera is selected based on the distance, angle, and other parameters like Region of Interest (ROI) ratios and projection mask.

    +
    Parameters
    + + + + + + + + + + +
    cloudThe input point cloud of type pcl::PointXYZRGBNormal containing 3D points.
    cameraPosesA map of camera IDs to their respective poses (transformations).
    cameraModelsA map of camera IDs to their camera models (internal camera parameters).
    maxDistanceMaximum allowable distance from the camera for a point to be considered.
    maxAngleMaximum allowable angle between the camera and the point normal for it to be considered.
    roiRatiosA vector of four floats defining the region of interest ratios for the camera image. See util2d::computeRoi() for format.
    projMaskA binary mask for projection, which will be checked to ensure the point lies within the mask.
    distanceToCamPolicyIf true, the distance to the camera is considered in the decision of the best camera, otherwise distance to center of the camera is used.
    stateA ProgressState object to provide feedback on progress or cancellation.
    +
    +
    +
    Returns
    A vector of pairs, where each pair contains a pair of camera ID and camera index, and a 2D UV coordinate. The UV coordinate represents the projection of each point onto the best camera.
    + +
    +
    + +

    ◆ projectCloudToCameras() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT rtabmap::util3d::projectCloudToCameras (const pcl::PointCloud< pcl::PointXYZINormal > & cloud,
    const std::map< int, Transform > & cameraPoses,
    const std::map< int, std::vector< CameraModel > > & cameraModels,
    float maxDistance = 0.0f,
    float maxAngle = 0.0f,
    float maxDepthError = 0.0f,
    const std::vector< float > & roiRatios = std::vector< float >(),
    const cv::Mat & projMask = cv::Mat(),
    bool distanceToCamPolicy = false,
    const ProgressState * state = 0 
    )
    +
    + +

    Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy.

    +

    This function takes a point cloud of type pcl::PointXYZINormal and projects each point to the best camera that sees the point. The "best" camera is selected based on the distance, angle, and other parameters like Region of Interest (ROI) ratios and projection mask.

    +
    Parameters
    + + + + + + + + + + +
    cloudThe input point cloud of type pcl::PointXYZINormal containing 3D points.
    cameraPosesA map of camera IDs to their respective poses (transformations).
    cameraModelsA map of camera IDs to their camera models (internal camera parameters).
    maxDistanceMaximum allowable distance from the camera for a point to be considered.
    maxAngleMaximum allowable angle between the camera and the point normal for it to be considered.
    roiRatiosA vector of four floats defining the region of interest ratios for the camera image. See util2d::computeRoi() for format.
    projMaskA binary mask for projection, which will be checked to ensure the point lies within the mask.
    distanceToCamPolicyIf true, the distance to the camera is considered in the decision of the best camera, otherwise distance to center of the camera is used.
    stateA ProgressState object to provide feedback on progress or cancellation.
    +
    +
    +
    Returns
    A vector of pairs, where each pair contains a pair of camera ID and camera index, and a 2D UV coordinate. The UV coordinate represents the projection of each point onto the best camera.
    + +
    +
    + +

    ◆ isFinite()

    + +
    +
    + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::util3d::isFinite (const cv::Point3f & pt)
    +
    + +

    Checks if all coordinates of a 3D point are finite.

    +

    This function verifies that the x, y, and z components of the given cv::Point3f are all finite values (i.e., not NaN or infinite).

    +
    Parameters
    + + +
    ptThe 3D point to check.
    +
    +
    +
    Returns
    true if all components of the point are finite, false otherwise.
    + +
    +
    + +

    ◆ concatenateClouds() [1/2]

    + +
    +
    + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenateClouds (const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr > & clouds)
    +
    + +

    Concatenates a list of PointXYZ point clouds into a single point cloud.

    +

    This function takes a list of shared pointers to pcl::PointCloud<pcl::PointXYZ> objects, and merges them into a single point cloud by appending the points of each input cloud.

    +
    Parameters
    + + +
    [in]cloudsA list of pointers to PointXYZ point clouds to concatenate.
    +
    +
    +
    Returns
    A new pcl::PointCloud<pcl::PointXYZ>::Ptr containing all the points from the input clouds.
    + +
    +
    + +

    ◆ concatenateClouds() [2/2]

    + +
    +
    + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenateClouds (const std::list< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > & clouds)
    +
    + +

    Concatenates a list of PointXYZRGB point clouds into a single point cloud.

    +

    This function takes a list of shared pointers to pcl::PointCloud<pcl::PointXYZRGB> objects, and merges them into a single point cloud by appending the points of each input cloud.

    +
    Parameters
    + + +
    [in]cloudsA list of pointers to PointXYZRGB point clouds to concatenate.
    +
    +
    +
    Returns
    A new pcl::PointCloud<pcl::PointXYZRGB>::Ptr containing all the points from the input clouds.
    + +
    +
    + +

    ◆ concatenate() [1/2]

    + +
    +
    + + + + + + + + +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenate (const std::vector< pcl::IndicesPtr > & indices)
    +
    + +

    Concatenates multiple sets of indices into a single index vector.

    +

    This function takes a vector of shared pointers to PCL index vectors and combines them into a single shared pointer containing all indices in the same order as they appear in the input.

    +
    Parameters
    + + +
    indicesA vector of pcl::IndicesPtr (shared pointers to index vectors).
    +
    +
    +
    Returns
    A single pcl::IndicesPtr containing the concatenated indices.
    +
    Note
    The output order preserves the original order of indices from each input set.
    +
    See also
    concatenate(const pcl::IndicesPtr &, const pcl::IndicesPtr &)
    + +
    +
    + +

    ◆ concatenate() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::concatenate (const pcl::IndicesPtr & indicesA,
    const pcl::IndicesPtr & indicesB 
    )
    +
    + +

    Concatenates two sets of indices into one.

    +

    This function creates a new index vector containing all indices from indicesA followed by all indices from indicesB.

    +
    Parameters
    + + + +
    indicesAThe first set of indices to include.
    indicesBThe second set of indices to append.
    +
    +
    +
    Returns
    A pcl::IndicesPtr containing the combined indices from both inputs.
    +
    Note
    The input index vectors are not modified.
    +
    See also
    concatenate(const std::vector<pcl::IndicesPtr> &)
    + +
    +
    + +

    ◆ savePCDWords() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::savePCDWords (const std::string & fileName,
    const std::multimap< int, pcl::PointXYZ > & words,
    const Transform & transform = Transform::getIdentity() 
    )
    +
    + +

    Saves 3D word points to a PCD file, applying a transform to each point.

    +

    This function takes a multimap of word identifiers and corresponding 3D PCL points, applies the given transform to each point, and saves the resulting point cloud to the specified PCD file.

    +
    Parameters
    + + + + +
    fileNameThe path to the output PCD file.
    wordsA multimap containing word IDs and their associated pcl::PointXYZ coordinates.
    transformA transform to apply to each 3D point before saving.
    +
    +
    + +
    +
    + +

    ◆ savePCDWords() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::savePCDWords (const std::string & fileName,
    const std::multimap< int, cv::Point3f > & words,
    const Transform & transform = Transform::getIdentity() 
    )
    +
    + +

    Saves 3D word points (as OpenCV points) to a PCD file, applying a transform to each point.

    +

    This function takes a multimap of word identifiers and corresponding 3D OpenCV points, converts them to PCL format after applying the given transform, and saves them as a point cloud to the specified PCD file.

    +
    Parameters
    + + + + +
    fileNameThe path to the output PCD file.
    wordsA multimap containing word IDs and their associated cv::Point3f coordinates.
    transformA transform to apply to each 3D point before saving.
    +
    +
    + +
    +
    + +

    ◆ loadBINScan()

    + +
    +
    + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::loadBINScan (const std::string & fileName)
    +
    + +

    Loads a KITTI-style Velodyne binary scan file into an OpenCV matrix.

    +

    This function assumes the binary file contains a series of 4-float values per point representing (X, Y, Z, Intensity). It loads the entire file into a cv::Mat with type CV_32FC4.

    +
    Parameters
    + + +
    fileNamePath to the .bin file.
    +
    +
    +
    Returns
    A 1-row cv::Mat with 4 channels (XYZI), one column per point.
    + +
    +
    + +

    ◆ loadBINCloud() [1/2]

    + +
    +
    + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::loadBINCloud (const std::string & fileName)
    +
    + +

    Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud.

    +

    Internally calls loadScan() and converts the result into a pcl::PointCloud<pcl::PointXYZ>.

    +
    Parameters
    + + +
    fileNamePath to the .bin file.
    +
    +
    +
    Returns
    Pointer to the loaded point cloud.
    + +
    +
    + +

    ◆ loadBINCloud() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::loadBINCloud (const std::string & fileName,
    int dim 
    )
    +
    + +

    Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud.

    +
    Parameters
    + + + +
    fileNamePath to the .bin file.
    dimUnused parameter.
    +
    +
    +
    Returns
    Pointer to the loaded point cloud.
    +
    Deprecated:
    This overload exists for compatibility but ignores the dim parameter. Use version without dim directly.
    + +
    +
    + +

    ◆ loadScan()

    + +
    +
    + + + + + + + + +
    LaserScan RTABMAP_CORE_EXPORT rtabmap::util3d::loadScan (const std::string & path)
    +
    + +

    Loads a 3D scan from a file (.pcd, .ply, or .bin format).

    +

    This function detects the file type based on the extension and loads the scan accordingly. Binary .bin files are interpreted using the KITTI format (XYZI). For .pcd or .ply files, a PCL point cloud is loaded and optionally interpreted as 2D if all Z values are 0.

    +
    Parameters
    + + +
    pathPath to the scan file.
    +
    +
    +
    Returns
    A LaserScan object containing the loaded scan data.
    + +
    +
    + +

    ◆ loadCloud()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT rtabmap::util3d::loadCloud (const std::string & path,
    const Transform & transform = Transform::getIdentity(),
    int downsampleStep = 1,
    float voxelSize = 0.0f 
    )
    +
    + +

    Loads and optionally transforms/downsamples/voxelizes a point cloud.

    +

    This function loads a point cloud from a .bin, .pcd, or .ply file. It can apply a transformation, downsample using a step size, or filter using a voxel grid.

    +
    Parameters
    + + + + + +
    pathPath to the scan file.
    transformTransformation to apply to the cloud (must not be null).
    downsampleStepStep size to downsample (1 = no downsampling).
    voxelSizeSize of the voxel grid filter in meters (0 = no filtering).
    +
    +
    +
    Returns
    Transformed and optionally filtered pcl::PointCloud<pcl::PointXYZ>::Ptr.
    +
    Deprecated:
    Use loadScan() instead.
    + +
    +
    + +

    ◆ deskew()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    LaserScan RTABMAP_CORE_EXPORT rtabmap::util3d::deskew (const LaserScan & input,
    double inputStamp,
    const rtabmap::Transform & velocity 
    )
    +
    + +

    Lidar deskewing.

    +
    Parameters
    + + + + + +
    inputlidar, format should have time channel
    inputstamp of the lidar
    velocityin base frame
    velocitystamp at which it has been computed
    +
    +
    +
    Returns
    lidar deskewed
    +

    Deskews a laser scan based on the velocity transform and timestamp information.

    +

    This function takes an input LaserScan with a time channel (kXYZIT format), and deskews the scan based on the provided velocity transform. It assumes that the scan has a time channel with time information for each point relative to inputStamp. The deskewing process involves calculating the pose of the laser at each point in time and correcting the scan data accordingly.

    +
    Parameters
    + + + + +
    [in]inputThe input LaserScan to be deskewed.
    [in]inputStampThe timestamp of the input scan (e.g., epoch time).
    [in]velocityThe velocity transform (linear and angular velocities), in base frame.
    +
    +
    +
    Returns
    A new LaserScan that has been deskewed based on the provided velocity and timestamps.
    +
    Note
    If the velocity is null or if the input scan does not have the correct format, an error will be logged. If the first and last timestamps are identical, deskewing cannot be performed, and an error is logged.
    +
    Warning
    This function assumes that the input LaserScan is in the kXYZIT format (with time data). If not, an error will be logged and an empty LaserScan will be returned.
    +
    Exceptions
    + + +
    exceptionif velocity is null or the format is incorrect.
    +
    +
    + +
    +
    + +

    ◆ extractXYZCorrespondences() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences (const std::multimap< int, pcl::PointXYZ > & words1,
    const std::multimap< int, pcl::PointXYZ > & words2,
    pcl::PointCloud< pcl::PointXYZ > & cloud1,
    pcl::PointCloud< pcl::PointXYZ > & cloud2 
    )
    +
    + +

    Extracts 3D point correspondences between two sets of labeled 3D points.

    +

    This function identifies common point IDs (keys) between two multimap structures containing pcl::PointXYZ points. For each shared key that appears exactly once in both input maps, and where both corresponding points are finite, the matched points are added to two output point clouds.

    +

    The resulting cloud1 and cloud2 point clouds will contain points with a one-to-one correspondence, useful for geometric registration (e.g., ICP).

    +
    Parameters
    + + + + + +
    words1Input multimap of point ID to 3D point for the first dataset.
    words2Input multimap of point ID to 3D point for the second dataset.
    cloud1Output point cloud (corresponding to points from words1).
    cloud2Output point cloud (corresponding to points from words2).
    +
    +
    +
    Note
    Only keys that appear exactly once in both words1 and words2, and whose associated pcl::PointXYZ entries are finite, will be included in the output clouds.
    + +
    +
    + +

    ◆ extractXYZCorrespondencesRANSAC()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondencesRANSAC (const std::multimap< int, pcl::PointXYZ > & words1,
    const std::multimap< int, pcl::PointXYZ > & words2,
    pcl::PointCloud< pcl::PointXYZ > & cloud1,
    pcl::PointCloud< pcl::PointXYZ > & cloud2 
    )
    +
    + +

    Extracts reliable 3D point correspondences between two sets of labeled 3D points using RANSAC filtering.

    +

    This function finds correspondences between words1 and words2 based on shared unique keys. For each common key that appears exactly once in both maps, and where the corresponding 3D points are finite, a candidate correspondence is formed. If more than 7 such pairs exist, RANSAC is used via OpenCV’s cv::findFundamentalMat to reject outliers based on the geometric consistency of the 2D projections.

    +

    Only the inlier correspondences determined by RANSAC are returned in the output point clouds cloud1 and cloud2.

    +
    Parameters
    + + + + + +
    words1Input multimap of point ID to pcl::PointXYZ for the first set of 3D features.
    words2Input multimap of point ID to pcl::PointXYZ for the second set of 3D features.
    cloud1Output point cloud containing inlier points from words1.
    cloud2Output point cloud containing inlier points from words2.
    +
    +
    +
    Note
    At least 8 valid point correspondences are required for RANSAC to compute a fundamental matrix. If fewer than 8 valid matches exist, the function does not modify the output clouds.
    +
    Warning
    Only 2D (x, y) components of the 3D points are used for RANSAC filtering.
    + +
    +
    + +

    ◆ extractXYZCorrespondences() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences (const std::list< std::pair< cv::Point2f, cv::Point2f > > & correspondences,
    const cv::Mat & depthImage1,
    const cv::Mat & depthImage2,
    float cx,
    float cy,
    float fx,
    float fy,
    float maxDepth,
    pcl::PointCloud< pcl::PointXYZ > & cloud1,
    pcl::PointCloud< pcl::PointXYZ > & cloud2 
    )
    +
    + +

    Extracts 3D point correspondences from 2D pixel matches using depth images.

    +

    This function projects matched 2D keypoints (pixel correspondences) from two RGB-D images into 3D space using the provided camera intrinsic parameters. Only valid and finite 3D points are retained. If a maxDepth threshold is provided, points farther than this threshold are excluded.

    +

    The function returns two synchronized point clouds, cloud1 and cloud2, where each point pair at the same index corresponds to a match between the two views.

    +
    Parameters
    + + + + + + + + + + + +
    correspondencesList of 2D point correspondences between image 1 and image 2.
    depthImage1Depth image corresponding to the first set of points (CV_32FC1 or CV_16UC1).
    depthImage2Depth image corresponding to the second set of points (same format as depthImage1).
    cxPrincipal point x-coordinate (camera intrinsic).
    cyPrincipal point y-coordinate (camera intrinsic).
    fxFocal length in x-direction (camera intrinsic).
    fyFocal length in y-direction (camera intrinsic).
    maxDepthMaximum allowed depth for a correspondence to be considered valid. If <= 0, all depths are accepted.
    cloud1Output point cloud with 3D points corresponding to the first image.
    cloud2Output point cloud with 3D points corresponding to the second image.
    +
    +
    +
    Note
      +
    • Both output point clouds are resized to contain only the valid 3D matches after filtering.
    • +
    • Invalid, non-finite, or out-of-range depth values are automatically filtered out.
    • +
    +
    + +
    +
    + +

    ◆ extractXYZCorrespondences() [3/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences (const std::list< std::pair< cv::Point2f, cv::Point2f > > & correspondences,
    const pcl::PointCloud< pcl::PointXYZ > & cloud1,
    const pcl::PointCloud< pcl::PointXYZ > & cloud2,
    pcl::PointCloud< pcl::PointXYZ > & inliers1,
    pcl::PointCloud< pcl::PointXYZ > & inliers2 
    )
    +
    + +

    Extracts 3D correspondences from 2D feature matches using pcl::PointXYZ organized point clouds.

    +

    This function projects 2D keypoint matches into 3D using the corresponding organized point clouds (cloud1 and cloud2). Points that are not finite are discarded.

    +
    Parameters
    + + + + + + +
    correspondencesList of 2D point correspondences between image 1 and image 2.
    cloud1Organized pcl::PointXYZ point cloud corresponding to the first image.
    cloud2Organized pcl::PointXYZ point cloud corresponding to the second image.
    inliers1Output 3D points from cloud1 corresponding to valid 2D matches.
    inliers2Output 3D points from cloud2 corresponding to valid 2D matches.
    +
    +
    +
    Note
      +
    • Only organized point clouds are supported (i.e., width × height layout must match image size from which 2D keypoints were taken).
    • +
    +
    + +
    +
    + +

    ◆ extractXYZCorrespondences() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::extractXYZCorrespondences (const std::list< std::pair< cv::Point2f, cv::Point2f > > & correspondences,
    const pcl::PointCloud< pcl::PointXYZRGB > & cloud1,
    const pcl::PointCloud< pcl::PointXYZRGB > & cloud2,
    pcl::PointCloud< pcl::PointXYZ > & inliers1,
    pcl::PointCloud< pcl::PointXYZ > & inliers2 
    )
    +
    + +

    Extracts 3D correspondences from 2D feature matches using pcl::PointXYZRGB organized point clouds.

    +

    This overload behaves identically to the pcl::PointXYZ version, but supports input point clouds that contain RGB color data. The color is not used—only the XYZ fields are extracted.

    +
    Parameters
    + + + + + + +
    correspondencesList of matched 2D keypoints between two images.
    cloud1Organized pcl::PointXYZRGB point cloud for the first image.
    cloud2Organized pcl::PointXYZRGB point cloud for the second image.
    inliers1Output 3D points from cloud1 corresponding to valid 2D matches.
    inliers2Output 3D points from cloud2 corresponding to valid 2D matches.
    +
    +
    + +
    +
    + +

    ◆ countUniquePairs()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int RTABMAP_CORE_EXPORT rtabmap::util3d::countUniquePairs (const std::multimap< int, pcl::PointXYZ > & wordsA,
    const std::multimap< int, pcl::PointXYZ > & wordsB 
    )
    +
    + +

    Counts the number of unique 3D point correspondences between two sets of word-indexed features.

    +

    This function iterates over the unique keys (word IDs) in wordsA and checks if the same key exists in wordsB. A pair is considered "unique" if both wordsA and wordsB contain exactly one 3D point (i.e., one pcl::PointXYZ) associated with the same key.

    +
    Parameters
    + + + +
    wordsAA multimap of word IDs to 3D points (e.g., from frame A).
    wordsBA multimap of word IDs to 3D points (e.g., from frame B).
    +
    +
    +
    Returns
    The number of unique pairs where both wordsA and wordsB contain exactly one point for a given word ID.
    + +
    +
    + +

    ◆ filterMaxDepth()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::filterMaxDepth (pcl::PointCloud< pcl::PointXYZ > & inliers1,
    pcl::PointCloud< pcl::PointXYZ > & inliers2,
    float maxDepth,
    char depthAxis,
    bool removeDuplicates 
    )
    +
    + +

    Filters pairs of 3D points by maximum depth along a specified axis and optionally removes duplicates.

    +

    This function takes two point clouds (inliers1 and inliers2) containing corresponding 3D points, and filters out pairs where either point exceeds a specified maximum depth value along the given axis. It can also optionally remove duplicate points in the first point cloud.

    +
    Parameters
    + + + + + + +
    [in,out]inliers1The first point cloud of 3D points to be filtered. Points failing the filter will be removed.
    [in,out]inliers2The second point cloud of 3D points corresponding to inliers1. Points failing the filter will be removed. Must be the same size as inliers1.
    [in]maxDepthThe maximum allowed depth value along the specified axis. Points with coordinate values greater or equal to this value on that axis will be removed. If maxDepth is less or equal to zero, no filtering is performed.
    [in]depthAxisThe axis ('x', 'y', or 'z') along which to measure depth for filtering.
    [in]removeDuplicatesIf true, duplicate points in inliers1 (exact coordinate matches) will be removed. Duplicates are detected only in inliers1.
    +
    +
    +
    Warning
    The function modifies inliers1 and inliers2 in place, replacing them with filtered versions.
    + +
    +
    + +

    ◆ findCorrespondences() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::findCorrespondences (const std::multimap< int, cv::KeyPoint > & wordsA,
    const std::multimap< int, cv::KeyPoint > & wordsB,
    std::list< std::pair< cv::Point2f, cv::Point2f > > & pairs 
    )
    +
    + +

    Finds 2D point correspondences between two sets of keypoints based on matching word IDs.

    +

    This function compares two multimap structures containing word IDs associated with cv::KeyPoints. It extracts correspondences where the same word ID appears exactly once in each set.

    +
    Parameters
    + + + + +
    [in]wordsAA multimap from word ID to keypoints in set A.
    [in]wordsBA multimap from word ID to keypoints in set B.
    [out]pairsA list of matching 2D point correspondences (Point2f) between wordsA and wordsB.
    +
    +
    +
    Note
    Only unique word ID matches (count == 1 in both sets) are considered valid correspondences.
    +
    Example
    If wordsA = [1 2 3 4 6 6] and wordsB = [1 1 2 4 5 6 6], the output pairs will contain correspondences for IDs 2 and 4, because only those have exactly one match in both sets.
    + +
    +
    + +

    ◆ findCorrespondences() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::findCorrespondences (const std::multimap< int, cv::Point3f > & words1,
    const std::multimap< int, cv::Point3f > & words2,
    std::vector< cv::Point3f > & inliers1,
    std::vector< cv::Point3f > & inliers2,
    float maxDepth,
    std::vector< int > * uniqueCorrespondences = 0 
    )
    +
    + +

    Finds 3D point correspondences between two sets of points based on matching word IDs.

    +

    This function compares two multimaps of 3D points (typically from different views or frames). It returns point pairs where the same word ID appears once in both maps, the points are finite and valid, and optionally filtered by a maximum X-depth.

    +
    Parameters
    + + + + + + + +
    [in]words1A multimap of word IDs to 3D points in the first set.
    [in]words2A multimap of word IDs to 3D points in the second set.
    [out]inliers1Output vector of 3D points from words1 with valid correspondences.
    [out]inliers2Output vector of corresponding 3D points from words2.
    [in]maxDepthOptional filter: only points with X-values in (0, maxDepth] are kept. Use <= 0 to disable.
    [out]uniqueCorrespondences(Optional) Vector of word IDs corresponding to each pair.
    +
    +
    +
    Note
    Only pairs with exactly one occurrence in each map and non-zero, finite coordinates are kept.
    + +
    +
    + +

    ◆ findCorrespondences() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::findCorrespondences (const std::map< int, cv::Point3f > & words1,
    const std::map< int, cv::Point3f > & words2,
    std::vector< cv::Point3f > & inliers1,
    std::vector< cv::Point3f > & inliers2,
    float maxDepth,
    std::vector< int > * correspondences = 0 
    )
    +
    + +

    Finds 3D point correspondences between two sets of uniquely indexed 3D points.

    +

    This overload works with std::map, where each word ID appears at most once. It finds matching IDs and returns valid point pairs based on similar criteria to the multimap version.

    +
    Parameters
    + + + + + + + +
    [in]words1A map of word IDs to 3D points in the first set.
    [in]words2A map of word IDs to 3D points in the second set.
    [out]inliers1Output vector of 3D points from words1 with valid correspondences.
    [out]inliers2Output vector of corresponding 3D points from words2.
    [in]maxDepthOptional filter: only points with X-values in (0, maxDepth] are kept. Use <= 0 to disable.
    [out]correspondences(Optional) Vector of word IDs corresponding to valid matched pairs.
    +
    +
    +
    Note
    Finite, non-zero points are required. The function ignores word IDs not found in both sets.
    + +
    +
    + +

    ◆ generateKeypoints3DDepth() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DDepth (const std::vector< cv::KeyPoint > & keypoints,
    const cv::Mat & depth,
    const std::vector< CameraModel > & cameraModels,
    float minDepth = 0,
    float maxDepth = 0 
    )
    +
    + +

    Projects 2D keypoints to 3D space using the provided depth image and camera models.

    +

    This function takes a vector of 2D keypoints and projects them into 3D space by using depth values from a depth image and the associated camera models. It supports multi-camera setups by assuming the depth image is horizontally stacked with sub-images corresponding to each camera.

    +

    If a depth value at a keypoint location is invalid or outside the specified depth range (minDepth, maxDepth), the output 3D point will be set to NaN.

    +
    Parameters
    + + + + + + +
    keypointsA vector of 2D keypoints (in image coordinates).
    depthThe depth image (must be either CV_32FC1 or CV_16UC1). For multiple cameras, the depth images should be horizontally concatenated.
    cameraModelsA vector of camera models, one per camera. Each model must provide intrinsic parameters and optionally a local transform to apply to the resulting 3D point.
    minDepthMinimum valid depth value. If negative, no minimum is enforced.
    maxDepthMaximum valid depth value. If zero or negative, no maximum is enforced.
    +
    +
    +
    Returns
    A vector of 3D points (cv::Point3f) corresponding to the input keypoints. If the depth is invalid or outside the valid range, the point will contain NaNs.
    +
    Exceptions
    + + +
    Assertionfailure if the depth image is empty or not of the expected type, or if the camera model vector is empty, or if camera index computation fails.
    +
    +
    + +
    +
    + +

    ◆ generateKeypoints3DDepth() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DDepth (const std::vector< cv::KeyPoint > & keypoints,
    const cv::Mat & depth,
    const CameraModel & cameraModel,
    float minDepth = 0,
    float maxDepth = 0 
    )
    +
    + +

    Projects 2D keypoints to 3D space using the provided depth image and camera model.

    +
    See also
    util3d::generateKeypoints3DDepth()
    + +
    +
    + +

    ◆ generateKeypoints3DDisparity()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DDisparity (const std::vector< cv::KeyPoint > & keypoints,
    const cv::Mat & disparity,
    const StereoCameraModel & stereoCameraModel,
    float minDepth = 0,
    float maxDepth = 0 
    )
    +
    + +

    Projects 2D keypoints into 3D space using a disparity image and a stereo camera model.

    +

    This function computes 3D coordinates for each input 2D keypoint by using the disparity image and the stereo camera model. Invalid or out-of-range depth values result in 3D points with NaN components.

    +

    The function applies the local transform of the left camera (from the stereo model) to each valid 3D point, if the transform is not null or identity.

    +
    Parameters
    + + + + + + +
    keypointsA vector of 2D keypoints (image coordinates) to be projected into 3D.
    disparityThe disparity image (must be of type CV_16SC1 or CV_32F). Disparity values should correspond to the keypoints' locations.
    stereoCameraModelA valid stereo camera model that provides projection parameters and an optional local transform.
    minDepthMinimum depth threshold. If negative, no minimum constraint is applied.
    maxDepthMaximum depth threshold. If zero or negative, no maximum constraint is applied.
    +
    +
    +
    Returns
    A vector of 3D points (cv::Point3f) corresponding to the input keypoints. Points with invalid or out-of-range depth are returned as (NaN, NaN, NaN).
    +
    Exceptions
    + + +
    Assertionfailure if the disparity image is empty or of incorrect type, or if the stereo camera model is not valid for projection.
    +
    +
    + +
    +
    + +

    ◆ generateKeypoints3DStereo()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT rtabmap::util3d::generateKeypoints3DStereo (const std::vector< cv::Point2f > & leftCorners,
    const std::vector< cv::Point2f > & rightCorners,
    const StereoCameraModel & model,
    const std::vector< unsigned char > & mask = std::vector< unsigned char >(),
    float minDepth = 0,
    float maxDepth = 0 
    )
    +
    + +

    Computes 3D keypoints from corresponding 2D points in a stereo image pair.

    +

    This function triangulates 3D points from pairs of corresponding 2D points (leftCorners, rightCorners) using a given stereo camera model. It optionally applies a validity mask and filters 3D points by depth range.

    +

    For each point pair, the disparity is computed as the x-coordinate difference between left and right corners. Only positive disparities are considered valid. If a mask is provided, only entries with a non-zero value are processed.

    +

    The resulting 3D points are optionally transformed using the stereo camera model's local transform, if one is defined and non-identity.

    +

    Invalid or out-of-range points are set to (NaN, NaN, NaN).

    +
    Parameters
    + + + + + + + +
    leftCornersA vector of 2D points from the left stereo image.
    rightCornersA vector of corresponding 2D points from the right stereo image.
    modelThe stereo camera model containing intrinsic parameters and optional local transform.
    mask(Optional) A binary mask indicating which matches are valid (non-zero = valid). If empty, all matches are considered valid.
    minDepthMinimum allowed depth value. If negative, no minimum is applied.
    maxDepthMaximum allowed depth value. If zero or negative, no maximum is applied.
    +
    +
    +
    Returns
    A vector of 3D points (cv::Point3f) corresponding to valid stereo matches. Invalid points or those outside the depth range are returned as (NaN, NaN, NaN).
    +
    Exceptions
    + + +
    Assertionfailure if the input vectors are inconsistent in size, or if the stereo camera model is invalid (e.g., non-positive focal length or baseline).
    +
    +
    + +
    +
    + +

    ◆ aggregate()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::multimap< int, cv::KeyPoint > RTABMAP_CORE_EXPORT rtabmap::util3d::aggregate (const std::list< int > & wordIds,
    const std::vector< cv::KeyPoint > & keypoints 
    )
    +
    + +

    Aggregates word IDs and corresponding keypoints into a multimap.

    +

    This function pairs each word ID from the input list with the corresponding keypoint from the input vector and stores them in a std::multimap<int, cv::KeyPoint>.

    +

    It is assumed that the wordIds list and the keypoints vector are of the same length and ordered such that each word ID corresponds to the keypoint at the same index.

    +
    Parameters
    + + + +
    wordIdsA list of integer word IDs (e.g., visual word identifiers).
    keypointsA vector of keypoints associated with the word IDs.
    +
    +
    +
    Returns
    A multimap where each key is a word ID and the value is the corresponding cv::KeyPoint. Multiple keypoints can be associated with the same word ID.
    +
    Exceptions
    + + +
    Assertionfailure if wordIds.size() != keypoints.size().
    +
    +
    + +
    +
    + +

    ◆ commonFiltering() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    LaserScan RTABMAP_CORE_EXPORT rtabmap::util3d::commonFiltering (const LaserScan & scan,
    int downsamplingStep,
    float rangeMin = 0.0f,
    float rangeMax = 0.0f,
    float voxelSize = 0.0f,
    int normalK = 0,
    float normalRadius = 0.0f,
    float groundNormalsUp = 0.0f 
    )
    +
    + +

    Applies a common set of filters to a LaserScan, including downsampling, range limits, voxel grid filtering, and normal estimation.

    +

    This function performs a sequence of optional preprocessing steps on the input LaserScan:

      +
    • Downsampling: Reduces the number of points by selecting every N-th point.
    • +
    • Range filtering: Removes points outside the specified minimum and maximum range.
    • +
    • Voxel grid filtering: Reduces point density using a voxel grid.
    • +
    • Normal estimation: Computes surface normals using k-nearest neighbors or radius search.
    • +
    • Normal reorientation: normals are first flipped to face the view point, then optionally oriented upward if this condition is fulfilled: for each normal, if normal.z < -groundNormalsUp and the corresponding point is below viewpoint, it is flipped upward. The view point is the sensor origin, as the scan is kept in sensor frame (its local transform is not applied), so "below" and "upward" are along the sensor Z axis.
    • +
    +

    The function supports both 2D and 3D scans and adapts behavior based on whether the scan contains RGB or intensity data.

    +

    Depending on the filtering options used, the output point cloud may be dense if the input is organized.

    +
    Parameters
    + + + + + + + + + +
    scanInInput LaserScan to be filtered.
    downsamplingStepStep size for downsampling. A value >1 will reduce the scan resolution. For organized scans, only the largest dimension is downsampled and the result is dense. For example, if the input organized scan is 16x1024, the resulting scan will be 1x8192 (if all values are valid).
    rangeMinMinimum range to keep points from the scan viewpoint. Points closer than this value will be discarded. Output point cloud will be dense. Set to 0 to disable.
    rangeMaxMaximum range to keep points from the scan viewpoint. Points farther than this value will be discarded. Output point cloud will be dense. Set to 0 to disable.
    voxelSizeSize of the voxel grid in meters. A value >0 enables voxel filtering. Output point cloud will be dense.
    normalKNumber of nearest neighbors to use for normal estimation. Set to 0 to disable.
    normalRadiusRadius used for normal estimation. Set to 0 to disable.
    groundNormalsUpIf >0, normal vectors close to -Z axis will be oriented upward (+Z). Expected value is around 0.8.
    +
    +
    +
    Returns
    A new LaserScan instance with the applied filters and potential normals.
    +
    See also
    adjustNormalsToViewPoint()
    + +
    +
    + +

    ◆ commonFiltering() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED LaserScan RTABMAP_CORE_EXPORT rtabmap::util3d::commonFiltering (const LaserScan & scan,
    int downsamplingStep,
    float rangeMin,
    float rangeMax,
    float voxelSize,
    int normalK,
    float normalRadius,
    bool forceGroundNormalsUp 
    )
    +
    + +

    Applies a common set of filters to a LaserScan, including downsampling, range limits, voxel grid filtering, and normal estimation.

    +
    Deprecated:
    Use version with groundNormalsUp as float. For forceGroundNormalsUp=true, set groundNormalsUpAngle=0.8, otherwise set groundNormalsUpAngle=0.0.
    + +
    +
    + +

    ◆ rangeFiltering()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    LaserScan RTABMAP_CORE_EXPORT rtabmap::util3d::rangeFiltering (const LaserScan & scan,
    float rangeMin,
    float rangeMax 
    )
    +
    + +

    Filters a LaserScan data on a minimum and maximum Euclidean range.

    +

    This function removes scan points from the input LaserScan that fall outside the specified minimum and maximum range (in meters) from the LaserScan's viewpoint.

    +
    Parameters
    + + + + +
    scanThe input LaserScan object containing the scan data.
    rangeMinThe minimum range threshold. Points closer than this will be excluded.
    rangeMaxThe maximum range threshold. Points farther than this will be excluded.
    +
    +
    +
    Returns
    A new LaserScan object containing only the points within the specified range. If the input scan is empty or the range limits are both zero, the original scan is returned.
    +
    Note
    The function handles both 2D and 3D scans based on the scan.is2d() flag. The function doesn't keep the scan organized if the input is.
    +
    Exceptions
    + + +
    Assertionfailure if either rangeMin or rangeMax is negative.
    +
    +
    + +
    +
    + +

    ◆ uniformSampling() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZ >::Ptr rtabmap::util3d::uniformSampling (const pcl::PointCloud< pcl::PointXYZ >::Ptr & cloud,
    float voxelSize 
    )
    +
    +inline
    +
    + +

    DEPRECATED: Use voxelize() instead.

    +

    Performs uniform sampling of a point cloud by applying voxel grid filtering with the specified voxel size. This is a legacy wrapper for voxelize().

    +
    Parameters
    + + + +
    cloudThe input point cloud (pcl::PointXYZ).
    voxelSizeThe voxel size (resolution) used for downsampling.
    +
    +
    +
    Returns
    A downsampled point cloud using voxel grid filtering.
    +
    Deprecated:
    This function is deprecated. Use voxelize() for equivalent behavior.
    + +

    Definition at line 359 of file util3d_filtering.h.

    + +
    +
    + +

    ◆ uniformSampling() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr rtabmap::util3d::uniformSampling (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & cloud,
    float voxelSize 
    )
    +
    +inline
    +
    + +

    DEPRECATED: Use voxelize() instead.

    +

    Performs uniform sampling of a point cloud by applying voxel grid filtering with the specified voxel size. This is a legacy wrapper for voxelize().

    +
    Parameters
    + + + +
    cloudThe input point cloud (pcl::PointXYZRGB).
    voxelSizeThe voxel size (resolution) used for downsampling.
    +
    +
    +
    Returns
    A downsampled point cloud using voxel grid filtering.
    +
    Deprecated:
    This function is deprecated. Use voxelize() for equivalent behavior.
    + +

    Definition at line 377 of file util3d_filtering.h.

    + +
    +
    + +

    ◆ uniformSampling() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr rtabmap::util3d::uniformSampling (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr & cloud,
    float voxelSize 
    )
    +
    +inline
    +
    + +

    DEPRECATED: Use voxelize() instead.

    +

    Performs uniform sampling of a point cloud by applying voxel grid filtering with the specified voxel size. This is a legacy wrapper for voxelize().

    +
    Parameters
    + + + +
    cloudThe input point cloud (pcl::PointXYZRGBNormal).
    voxelSizeThe voxel size (resolution) used for downsampling.
    +
    +
    +
    Returns
    A downsampled point cloud using voxel grid filtering.
    +
    Deprecated:
    This function is deprecated. Use voxelize() for equivalent behavior.
    + +

    Definition at line 395 of file util3d_filtering.h.

    + +
    +
    + +

    ◆ subtractAdaptiveFiltering() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::subtractAdaptiveFiltering (const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & cloud,
    const pcl::IndicesPtr & indices,
    const pcl::PointCloud< pcl::PointXYZRGB >::Ptr & subtractCloud,
    const pcl::IndicesPtr & subtractIndices,
    float radiusSearchRatio = 0.01,
    int minNeighborsInRadius = 1,
    const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0, 0, 0) 
    )
    +
    + +

    Performs adaptive radius-based subtraction filtering on a point cloud.

    +

    This function removes points from the input cloud that have at least minNeighborsInRadius neighbors within an adaptive radius in the subtractCloud. The search radius is scaled proportionally to the distance of each point from the viewpoint, using the radiusSearchRatio.

    +
    Parameters
    + + + + + + + + +
    cloudThe input point cloud to filter.
    indicesThe subset of points in cloud to consider. If empty, the entire cloud is used.
    subtractCloudThe reference point cloud to search against.
    subtractIndicesOptional indices for subtractCloud. If empty, the full cloud is used.
    radiusSearchRatioThe ratio to scale the radius based on distance to viewpoint.
    minNeighborsInRadiusMinimum number of neighbors required to consider a point "covered".
    viewpointThe reference viewpoint used to compute adaptive search radius.
    +
    +
    +
    Returns
    The retained point indices from cloud.
    +
    Note
    Points with fewer than minNeighborsInRadius neighbors in the subtract cloud are retained.
    +
    Warning
    This version does not consider surface normals; it is purely geometric.
    + +
    +
    + +

    ◆ subtractAdaptiveFiltering() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::subtractAdaptiveFiltering (const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr & cloud,
    const pcl::IndicesPtr & indices,
    const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr & subtractCloud,
    const pcl::IndicesPtr & subtractIndices,
    float radiusSearchRatio = 0.01,
    float maxAngle = M_PI/4.0f,
    int minNeighborsInRadius = 1,
    const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0, 0, 0) 
    )
    +
    + +

    Performs adaptive radius-based subtraction filtering on a point cloud with normals, also considering normal direction differences.

    +

    This function removes points from the input cloud that have at least minNeighborsInRadius neighbors within an adaptive radius in the subtractCloud, unless the angular difference between normals exceeds maxAngle.

    +

    The search radius is scaled based on the distance of each point from the viewpoint, using the radiusSearchRatio. For neighbors found, the angle between their normals and the input point’s normal is evaluated. If the angle exceeds maxAngle, the neighbor is ignored.

    +
    Parameters
    + + + + + + + + + +
    cloudThe input point cloud with normals to filter.
    indicesThe subset of points in cloud to consider. If empty, the entire cloud is used.
    subtractCloudThe reference point cloud with normals to search against.
    subtractIndicesOptional indices for subtractCloud. If empty, the full cloud is used.
    radiusSearchRatioThe ratio to scale the radius based on distance to viewpoint.
    maxAngleMaximum angle (in radians) allowed between normals of matched neighbors.
    minNeighborsInRadiusMinimum number of valid neighbors required to exclude a point.
    viewpointThe reference viewpoint used to compute adaptive search radius.
    +
    +
    +
    Returns
    The retained point indices from cloud.
    +
    Note
    Neighbors with normals exceeding maxAngle from the input point's normal are discarded. Points with fewer than minNeighborsInRadius valid neighbors are retained.
    + +
    +
    + +

    ◆ extractPlane()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT rtabmap::util3d::extractPlane (const pcl::PointCloud< pcl::PointXYZ >::Ptr & cloud,
    const pcl::IndicesPtr & indices,
    float distanceThreshold,
    int maxIterations = 100,
    pcl::ModelCoefficients * coefficientsOut = 0 
    )
    +
    + +

    Extracts the indices of the inliers that belong to a plane using RANSAC.

    +

    This function uses the RANSAC algorithm to fit a plane model to a set of 3D points and returns the indices of the points that are considered inliers (i.e., those that lie close to the fitted plane). It also optionally outputs the coefficients of the plane (normal and offset).

    +
    Parameters
    + + + + + + +
    cloudThe input point cloud.
    indicesAn optional set of indices in the point cloud to use for segmentation. If empty, the whole cloud is used.
    distanceThresholdThe distance threshold for considering points as inliers to the plane. Points within this threshold are classified as inliers.
    maxIterationsThe maximum number of iterations the RANSAC algorithm should run.
    coefficientsOutAn optional output pointer to store the coefficients of the plane model. The coefficients include the plane normal and offset.
    +
    +
    +
    Returns
    A list of indices of points that are considered inliers to the fitted plane.
    +
    Note
    If the input indices is empty, the entire point cloud will be used for segmentation.
    +
    +If the coefficientsOut is not null, it will be filled with the model coefficients of the plane.
    + +
    +
    + +

    ◆ occupancy2DFromLaserScan() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT rtabmap::util3d::occupancy2DFromLaserScan (const cv::Mat & scan,
    cv::Mat & empty,
    cv::Mat & occupied,
    float cellSize,
    bool unknownSpaceFilled = false,
    float scanMaxRange = 0.0f 
    )
    +
    +
    Deprecated:
    Use the overload taking a viewpoint, so that ray tracing starts from the sensor and not from the base frame.
    + +
    +
    + +

    ◆ occupancy2DFromLaserScan() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT rtabmap::util3d::occupancy2DFromLaserScan (const cv::Mat & scan,
    const cv::Point3f & viewpoint,
    cv::Mat & empty,
    cv::Mat & occupied,
    float cellSize,
    bool unknownSpaceFilled = false,
    float scanMaxRange = 0.0f 
    )
    +
    +
    Deprecated:
    Use the overload taking scanHit / scanNoHit; passing a null scanNoHit is equivalent to this one.
    + +
    +
    + +

    ◆ occupancy2DFromLaserScan() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::occupancy2DFromLaserScan (const cv::Mat & scanHit,
    const cv::Mat & scanNoHit,
    const cv::Point3f & viewpoint,
    cv::Mat & empty,
    cv::Mat & occupied,
    float cellSize,
    bool unknownSpaceFilled = false,
    float scanMaxRange = 0.0f 
    )
    +
    + +

    Generates 2D occupancy grid maps (free and occupied cells) from laser scan data.

    +

    This function takes in a laser scan composed of hit and no-hit points and computes two 2D maps:

      +
    • empty: 2D coordinates of free space (where the laser passed without hitting obstacles).
    • +
    • occupied: precise 2D coordinates of obstacle hits (where the laser reflected).
    • +
    +

    The internal representation uses a temporary occupancy map generated from create2DMap(), from which free cells are extracted. Obstacle points are directly passed through, potentially clipped by a maximum range filter.

    +
    Parameters
    + + + + + + + + + +
    [in]scanHitInCV_32FC2 or CV_32FC(n>=2) matrix representing obstacle hits in 2D or 3D space (relative to base frame, not laser frame).
    [in]scanNoHitInCV_32FC2 or CV_32FC(n>=2) matrix representing laser rays that did not hit an obstacle (relative to base frame, not laser frame).
    [in]viewpointThe viewpoint (sensor origin) from which the scan was taken, in 3D space, relative to base frame. This used to determinate the origin of ray tracing.
    [out]emptyOutput matrix (CV_32FC2) of free space points derived from ray tracing.
    [out]occupiedOutput matrix (CV_32FC2) of occupied (hit) points, filtered by max range if required.
    [in]cellSizeThe resolution of the occupancy map grid (in meters per cell).
    [in]unknownSpaceFilledIf true, unknown space between hits is also filled via ray tracing.
    [in]scanMaxRangeMaximum range of the scan (in meters). Values beyond this are clipped.
    +
    +
    +
    Note
    The function assumes a single scan already converted in base frame for internal processing.
    +
    +If scanMaxRange <= cellSize, no range filtering is applied to the occupied points.
    +
    See also
    create2DMap(), util3d::rangeFiltering()
    + +
    +
    + +

    ◆ create2DMapFromOccupancyLocalMaps()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMapFromOccupancyLocalMaps (const std::map< int, Transform > & poses,
    const std::map< int, std::pair< cv::Mat, cv::Mat > > & occupancy,
    float cellSize,
    float & xMin,
    float & yMin,
    float minMapSize = 0.0f,
    bool erode = false,
    float footprintRadius = 0.0f 
    )
    +
    + +

    Creates a 2D occupancy grid map from local occupancy data.

    +

    Generates a 2D occupancy grid (CV_8S) where:

      +
    • -1 indicates unknown space,
    • +
    • 0 indicates free space,
    • +
    • 100 indicates an occupied (obstacle) cell.
    • +
    +

    This function transforms and merges local empty/occupied occupancy maps from multiple robot poses into a single global 2D grid map.

    +
    Parameters
    + + + + + + + + + +
    posesInMap of robot poses, indexed by node ID.
    occupancyMap of local occupancy data, indexed by node ID. Each pair contains two cv::Mat elements:
      +
    • First: empty cells (CV_32FC2) relative to base frame,
    • +
    • Second: occupied cells (CV_32FC2) relative to base frame.
    • +
    +
    cellSizeThe resolution of the map in meters per cell.
    [out]xMinMinimum x-coordinate (origin offset) of the resulting map (in meters).
    [out]yMinMinimum y-coordinate (origin offset) of the resulting map (in meters).
    minMapSizeMinimum width/height of the output map in meters. If 0, size is computed from poses and occupancy data.
    erodeWhether to post-process (erode) noisy obstacles. This helps remove isolated or thin obstacle artifacts.
    footprintRadiusRadius of the robot footprint (in meters). Free space will be cleared under the robot.
    +
    +
    +
    Returns
    cv::Mat The resulting occupancy grid map (CV_8S): -1 = unknown, 0 = free space, 100 = obstacle.
    +
    Warning
    The output map can be very large if poses are far apart or cellSize is small. The function will not create a map if the estimated size exceeds reasonable limits (e.g. > 1.5 km).
    +
    Note
    The function will fill small holes surrounded by known cells and optionally erode noisy borders.
    + +
    +
    + +

    ◆ create2DMap() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMap (const std::map< int, Transform > & poses,
    const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > & scans,
    float cellSize,
    bool unknownSpaceFilled,
    float & xMin,
    float & yMin,
    float minMapSize = 0.0f,
    float scanMaxRange = 0.0f 
    )
    +
    +
    Deprecated:
    Use the overload taking viewpoints, so that ray tracing starts from the sensor and not from the base frame.
    + +
    +
    + +

    ◆ create2DMap() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMap (const std::map< int, Transform > & poses,
    const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > & scans,
    const std::map< int, cv::Point3f > & viewpoints,
    float cellSize,
    bool unknownSpaceFilled,
    float & xMin,
    float & yMin,
    float minMapSize = 0.0f,
    float scanMaxRange = 0.0f 
    )
    +
    +
    Deprecated:
    Use the overload taking cv::Mat scans.
    + +
    +
    + +

    ◆ create2DMap() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::create2DMap (const std::map< int, Transform > & poses,
    const std::map< int, std::pair< cv::Mat, cv::Mat > > & scans,
    const std::map< int, cv::Point3f > & viewpoints,
    float cellSize,
    bool unknownSpaceFilled,
    float & xMin,
    float & yMin,
    float minMapSize = 0.0f,
    float scanMaxRange = 0.0f 
    )
    +
    + +

    Generates a 2D occupancy grid map from a set of poses, laser scans, and viewpoints.

    +

    This function aggregates laser scan data from multiple poses and creates a 2D occupancy grid (CV_8S: signed 8-bit) where:

      +
    • -1 represents unknown space,
    • +
    • 0 represents free space,
    • +
    • 100 represents occupied space (obstacles).
    • +
    +

    The scans are first transformed into the global map frame using the corresponding pose. Obstacles and free space are inserted using ray tracing. Optionally, unknown areas between known rays can also be filled using radial sweeping.

    +
    Parameters
    + + + + + + + + + + +
    posesA map of node IDs to 3D poses (used to transform local scans to the global frame).
    scansA map of node IDs to pairs of laser scans (<hit, no-hit>), each as a cv::Mat of type CV_32FC2.
      +
    • first: endpoints of beams hitting obstacles (relative to base frame, not laser frame).
    • +
    • second: endpoints of beams not hitting any obstacle (relative to base frame, not laser frame).
    • +
    +
    viewpointsA map of node IDs to local sensor origin offsets relative to each pose (e.g., lidar offset /base_link -> /base_scan). This is used to determinate the starting point for each ray trace.
    cellSizeThe size of each grid cell in meters.
    unknownSpaceFilledIf true, fills areas between known rays (fan sweeping) up to scanMaxRange.
    [out]xMinThe minimum x value (in meters) of the grid origin relative to map coordinates.
    [out]yMinThe minimum y value (in meters) of the grid origin relative to map coordinates.
    minMapSizeThe minimum width and height (in meters) of the map. Ensures the output map has a minimum footprint.
    scanMaxRangeThe maximum range (in meters) of the sensor. Used to limit ray tracing and padding.
    +
    +
    +
    Returns
    A 2D occupancy grid map (cv::Mat of type CV_8S) where:
      +
    • -1 = unknown
    • +
    • 0 = free space
    • +
    • 100 = obstacle
    • +
    +
    +
    Note
    If scanMaxRange <= 0, map size is determined based on scan data bounds.
    +
    +Grid coordinates are calculated with padding to ensure all points fall within the map.
    +
    +This function uses ray tracing internally via the rayTrace() function.
    + +
    +
    + +

    ◆ rayTrace()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::rayTrace (const cv::Point2i & start,
    const cv::Point2i & end,
    cv::Mat & grid,
    bool stopOnObstacle 
    )
    +
    + +

    Performs a 2D ray tracing operation between two points on a grid map.

    +

    This function draws a line from the start point to the end point on a grid (e.g., occupancy grid), marking all traversed cells as free (value = 0) unless an obstacle (value = 100) is encountered. The line follows an integer rasterization algorithm (like Bresenham’s line), accounting for steep slopes by transposing axes when needed.

    +
    Parameters
    + + + + + +
    startThe starting point of the ray (2D grid coordinates).
    endThe ending point of the ray (2D grid coordinates). This point is clipped to the grid bounds.
    gridA mutable 2D grid represented as a cv::Mat of signed char values. Assumes 100 denotes obstacles; 0 denotes free space.
    stopOnObstacleIf true, the ray trace stops upon hitting a cell marked with 100 (an obstacle).
    +
    +
    +
    Note
      +
    • If the slope of the line is steep (outside the range [-1, 1]), the algorithm swaps x and y axes for correctness.
    • +
    • The function ensures both the start and end points are within the bounds of the grid.
    • +
    • All visited cells along the path (except obstacles when stopOnObstacle is true) will be updated to 0 (free).
    • +
    • The grid must have type CV_8SC1 (signed 8-bit single-channel matrix).
    • +
    +
    + +
    +
    + +

    ◆ convertMap2Image8U()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::convertMap2Image8U (const cv::Mat & map8S,
    bool pgmFormat = false 
    )
    +
    + +

    Converts an occupancy grid map (CV_8S) to a grayscale image (CV_8U).

    +

    This function takes a signed 8-bit occupancy grid map and produces a corresponding 8-bit unsigned grayscale image. The pixel values are mapped based on the occupancy values:

    +
      +
    • 0 (free space) → 178 (normal) or 254 (PGM format)
    • +
    • 100 (obstacle) → 0 (black)
    • +
    • -2 (robot footprint) → 200 (normal) or 254 (PGM format)
    • +
    • -1 (unknown) → 89 (normal) or 205 (PGM format)
    • +
    • v > 50 (partial obstacle): scaled to range [0, 89]
    • +
    • v < 50 (partial free): scaled to range [89, 178]
    • +
    +

    If pgmFormat is true, the vertical axis is flipped (for PGM format compatibility).

    +
    Parameters
    + + + +
    map8SThe input occupancy grid map as a CV_8S single-channel matrix. Must contain values such as -1 (unknown), 0 (free), 100 (occupied).
    pgmFormatIf true, output will be formatted for PGM file format (inverted Y-axis and different gray scale mapping).
    +
    +
    +
    Returns
    A CV_8U grayscale image with pixel values representing occupancy status.
    +
    Exceptions
    + + +
    UASSERTif the input map is not a single-channel CV_8S matrix.
    +
    +
    + +
    +
    + +

    ◆ convertImage8U2Map()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::convertImage8U2Map (const cv::Mat & map8U,
    bool pgmFormat = false 
    )
    +
    + +

    Converts a grayscale occupancy image (CV_8U) to an occupancy grid map (CV_8S).

    +

    This function interprets grayscale pixel values from an input image and converts them into occupancy values used in a typical occupancy grid map:

      +
    • 100: Occupied
    • +
    • 0: Free
    • +
    • -1: Unknown
    • +
    • -2: Free space under robot footprint (non-PGM only)
    • +
    +

    The interpretation differs slightly depending on whether the input image is in PGM format (common in ROS map_server) or in standard grayscale.

    +
    Parameters
    + + + +
    map8UInput grayscale image (type CV_8U, single-channel).
    pgmFormatIf true, assumes PGM format:
      +
    • 0 = occupied
    • +
    • 254 = free
    • +
    • 205 = unknown If false (normal format):
    • +
    • 0 = occupied
    • +
    • 178 = free
    • +
    • 200 = footprint (free space under robot)
    • +
    • 89 = unknown
    • +
    +
    +
    +
    +
    Returns
    A CV_8S occupancy grid map with encoded occupancy values.
    +
    Exceptions
    + + +
    Assertionfailure if input image is not of type CV_8U or not single-channel.
    +
    +
    + +
    +
    + +

    ◆ erodeMap()

    + +
    +
    + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::erodeMap (const cv::Mat & map)
    +
    + +

    Performs erosion on an occupancy grid map to reduce small noisy obstacles.

    +

    This function scans a given occupancy grid (CV_8SC1 format) and removes obstacle cells (value 100) that are surrounded by at least 3 empty cells (value 0) and no adjacent unknown cells (value -1). These obstacles are likely noise and are converted into empty space (value 0) in the resulting map.

    +
    Parameters
    + + +
    mapInput occupancy grid map of type CV_8SC1 where:
      +
    • 100 represents obstacles,
    • +
    • 0 represents free space,
    • +
    • -1 represents unknown space.
    • +
    +
    +
    +
    +
    Returns
    A new cv::Mat of the same size and type as the input map, with eroded obstacles.
    + +
    +
    + +

    ◆ segmentObstaclesFromGround() [3/3]

    + +
    +
    +
    +template<typename PointT >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void rtabmap::util3d::segmentObstaclesFromGround (const typename pcl::PointCloud< PointT >::Ptr & cloud,
    const pcl::IndicesPtr & indices,
    pcl::IndicesPtr & ground,
    pcl::IndicesPtr & obstacles,
    int normalKSearch,
    float groundNormalAngle,
    float clusterRadius,
    int minClusterSize,
    bool segmentFlatObstacles = false,
    float maxGroundHeight = 0.0f,
    pcl::IndicesPtr * flatObstacles = 0,
    const Eigen::Vector4f & viewPoint = Eigen::Vector4f(0, 0, 100, 0),
    float groundNormalsUp = 0 
    )
    +
    + +

    Segments ground and obstacle indices from a point cloud using surface normals and clustering.

    +

    This function analyzes a point cloud to identify flat surfaces (e.g., ground) and separates them from potential obstacles based on normal orientation, height constraints, and optional clustering. Optionally, flat obstacles (e.g., tables, ramps) can be segmented separately.

    +
    Template Parameters
    + + +
    PointTThe type of point used in the point cloud (e.g., pcl::PointXYZ).
    +
    +
    +
    Parameters
    + + + + + + + + + + + + + + +
    cloudThe input point cloud.
    indicesOptional input indices to consider from the cloud (e.g., from a prior ROI extraction).
    groundOutput pointer where indices corresponding to ground points will be stored.
    obstaclesOutput pointer where indices corresponding to obstacle points will be stored.
    normalKSearchNumber of neighbors to use for normal estimation.
    groundNormalAngleMaximum angle (in radians) between the estimated normal and the "up" direction for a surface to be considered ground.
    clusterRadiusThe Euclidean distance threshold for clustering flat surfaces and obstacles.
    minClusterSizeThe minimum number of points required to form a valid cluster.
    segmentFlatObstaclesIf true, flat but non-ground surfaces (e.g., tables) are detected and optionally returned via flatObstacles.
    maxGroundHeightMaximum Z-height for a surface to be considered ground (0 disables filtering). Note that all obstacle points under that threshold will be ignored (i.e., won't be returned in obstacles).
    flatObstaclesOptional output pointer where indices corresponding to flat obstacles will be stored (only valid if segmentFlatObstacles is true).
    viewPointThe viewpoint to use for normal estimation (important for consistent orientation).
    groundNormalsUpThreshold (between 0 and 1) used to detect and flip ground-facing normals (set to 0.0f to disable). If the Z component of a normal is less than -groundNormalsUp and the corresponding point is below the viewpoint, the normal will be flipped.
    +
    +
    + +
    +
    + +

    ◆ setRansacDeterministicSeed()

    + +
    +
    + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::setRansacDeterministicSeed (bool enable)
    +
    + +

    Toggle a deterministic seed for OpenGV's internal RANSAC RNG.

    +

    OpenGV's SampleConsensusProblem (and its multi-camera sibling) seeds its internal std::mt19937 from the system clock when default-constructed, which makes every estimateMotion3DTo2D() call non-reproducible across runs. Calling setRansacDeterministicSeed(true) reseeds OpenGV's RNG with the fixed value 12345 before each RANSAC pass so identical inputs always produce identical inlier sets, covariances and output transforms.

    +

    Intended for tests; production code should leave this off (default).

    +
    Parameters
    + + +
    enableIf true, force the deterministic seed; if false (default), use OpenGV's system-clock seed.
    +
    +
    + +
    +
    + +

    ◆ ransacDeterministicSeedEnabled()

    + +
    +
    + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::util3d::ransacDeterministicSeedEnabled ()
    +
    +
    Returns
    Whether the deterministic-seed toggle is currently enabled.
    + +
    +
    + +

    ◆ estimateMotion3DTo2D() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo2D (const std::map< int, cv::Point3f > & words3A,
    const std::map< int, cv::KeyPoint > & words2B,
    const CameraModel & cameraModel,
    int minInliers = 10,
    int iterations = 100,
    double reprojError = 5.,
    int flagsPnP = 0,
    int pnpRefineIterations = 1,
    int varianceMedianRatio = 4,
    float maxVariance = 0,
    const Transform & guess = Transform::getIdentity(),
    const std::map< int, cv::Point3f > & words3B = std::map< int, cv::Point3f >(),
    cv::Mat * covariance = 0,
    std::vector< int > * matchesOut = 0,
    std::vector< int > * inliersOut = 0,
    bool splitLinearCovarianceComponents = false 
    )
    +
    + +

    Estimates a 6-DOF camera transform from 3D-2D point correspondences using PnP RANSAC.

    +

    This function estimates the motion (transform) between two views by solving the Perspective-n-Point (PnP) problem using 3D points from one frame and their corresponding 2D keypoints in another frame. It optionally refines the result, computes covariance of the pose estimate, and handles degenerate cases.

    +
    Parameters
    + + + + + + + + + + + + + + + + + +
    words3A3D points in frame A, indexed by feature ID.
    words2B2D keypoints in frame B, indexed by feature ID (shared with words3A).
    cameraModelIntrinsic and extrinsic parameters of the camera (must be valid).
    minInliersMinimum number of inliers required to accept the estimated transform. If the value is <4, it is set internally to 4.
    iterationsNumber of RANSAC iterations for PnP.
    reprojErrorMaximum allowed reprojection error (in pixels) to consider a point an inlier.
    flagsPnPFlags to control the cv::solvePnPRansac behavior (e.g., cv::SOLVEPNP_ITERATIVE).
    refineIterationsNumber of iterations for non-linear optimization (set to 0 to disable refinement).
    varianceMedianRatioIndex divisor used to select the robust variance threshold from sorted error residuals (e.g., 4 → use the 25% percentile).
    maxVarianceMaximum allowed median variance (linear error). Estimates with higher variance are rejected.
    guessInitial guess for the camera pose (must not be null). Typically from odometry or motion model.
    words3BOptional 3D points in frame B (if available). Used to better estimate 3D errors and variances.
    covarianceOptional output pointer for the estimated 6x6 pose covariance matrix. The matrix contains linear variance in the top-left 3x3 and angular variance in the bottom-right 3x3.
    matchesOutOptional output vector of all matched IDs used (regardless of inlier status).
    inliersOutOptional output vector of matched IDs that were determined to be inliers.
    splitLinearCovarianceComponentsWhether to split and compute variance for X, Y, Z components separately.
    +
    +
    +
    Returns
    The estimated transformation from frame B to frame A. If estimation fails or is rejected due to variance, a null transform is returned (i.e., transform.isNull() will be true).
    +
    Note
      +
    • If words3B is provided, 3D variance is computed by comparing reprojected points to actual transformed points.
    • +
    • If words3B is empty, variance is estimated using reprojection error only.
    • +
    • The function assumes the camera model's local transform is known and factored into the pose estimation.
    • +
    +
    +
    See also
    cv::solvePnPRansac
    + +
    +
    + +

    ◆ estimateMotion3DTo2D() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo2D (const std::map< int, cv::Point3f > & words3A,
    const std::map< int, cv::KeyPoint > & words2B,
    const std::vector< CameraModel > & cameraModels,
    unsigned int samplingPolicy,
    int minInliers,
    int iterations,
    double reprojError,
    int flagsPnP,
    int refineIterations,
    int varianceMedianRatio,
    float maxVariance,
    const Transform & guess,
    const std::map< int, cv::Point3f > & words3B,
    cv::Mat * covariance,
    std::vector< std::vector< int > > * matchesOut,
    std::vector< std::vector< int > > * inliersOut,
    bool splitLinearCovarianceComponents 
    )
    +
    + +

    Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library.

    +

    This function uses a robust multi-camera Perspective-n-Point (PnP) algorithm to estimate the transformation from a 3D point cloud (scene A) to a set of 2D keypoints (scene B) given the corresponding camera models and initial pose guess. The method supports multiple camera models and uses RANSAC with OpenGV for outlier rejection.

    +
    Parameters
    + + + + + + + + + + + + + + + + + + +
    words3A3D points in the source frame (scene A), indexed by feature ID.
    words2B2D keypoints in the destination frame (scene B), indexed by feature ID.
    cameraModelsList of camera models (multi-camera rig setup) for the destination frame.
    samplingPolicySampling strategy (0 = auto, 1 = any, 2 = homogeneous multi-camera).
    minInliersMinimum number of inliers required to consider the estimated transform as valid.
    iterationsMaximum number of RANSAC iterations.
    reprojErrorReprojection error threshold used by RANSAC.
    flagsPnPPnP flags (not used internally).
    refineIterationsNumber of pose refinement iterations after RANSAC (not used internally).
    varianceMedianRatioDivider used to compute median-based variance from the error distribution.
    maxVarianceMaximum allowed variance to accept the transform. Higher values permit more noisy estimates.
    guessInitial guess of the transformation.
    words3BOptional 3D points in destination frame (scene B) to evaluate the covariance using 3D correspondences, otherwise covariance is estimated from reprojection errors.
    covarianceOptional output 6x6 covariance matrix of the estimated transform.
    matchesOutOptional output: matches grouped per camera.
    inliersOutOptional output: inliers grouped per camera.
    splitLinearCovarianceComponentsIf true, linear covariance is split into separate x/y/z components.
    +
    +
    +
    Returns
    The estimated Transform from scene A to scene B. Returns a null Transform if estimation fails or variance exceeds threshold.
    +
    Note
    This function requires RTAB-Map to be built with OpenGV support.
    +
    Warning
    The function assumes all camera models have the same image width and valid intrinsic parameters.
    +
    See also
    https://github.com/laurentkneip/opengv
    + +
    +
    + +

    ◆ estimateMotion3DTo2D() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo2D (const std::map< int, cv::Point3f > & words3A,
    const std::map< int, cv::KeyPoint > & words2B,
    const std::vector< CameraModel > & cameraModels,
    unsigned int samplingPolicy = 0,
    int minInliers = 10,
    int iterations = 100,
    double reprojError = 5.,
    int flagsPnP = 0,
    int pnpRefineIterations = 1,
    int varianceMedianRatio = 4,
    float maxVariance = 0,
    const Transform & guess = Transform::getIdentity(),
    const std::map< int, cv::Point3f > & words3B = std::map< int, cv::Point3f >(),
    cv::Mat * covariance = 0,
    std::vector< int > * matchesOut = 0,
    std::vector< int > * inliersOut = 0,
    bool splitLinearCovarianceComponents = false 
    )
    +
    + +

    Estimates the 3D-to-2D motion (pose) transformation between a set of 3D points and their corresponding 2D keypoints using the OpenGV library.

    +
    See also
    estimateMotion3DTo2D(), the only difference is that output matches and inliers are combined in same vector instead of per camera
    + +
    +
    + +

    ◆ estimateMotion3DTo3D()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::estimateMotion3DTo3D (const std::map< int, cv::Point3f > & words3A,
    const std::map< int, cv::Point3f > & words3B,
    int minInliers = 10,
    double inliersDistance = 0.1,
    int iterations = 100,
    int refineIterations = 5,
    cv::Mat * covariance = 0,
    std::vector< int > * matchesOut = 0,
    std::vector< int > * inliersOut = 0 
    )
    +
    + +

    Estimates the 3D rigid transformation between two sets of 3D points.

    +

    This function matches 3D points from two frames (A and B) using their unique IDs, filters correspondences based on a minimum number of inliers and distance threshold, and estimates the 6DoF transformation using PCL's RANSAC-based method.

    +
    Parameters
    + + + + + + + + + + +
    words3AA map of 3D points from the previous frame (id -> point).
    words3BA map of 3D points from the current frame (id -> point).
    minInliersMinimum number of inliers required to accept the transformation.
    inliersDistanceMaximum distance between correspondences to be considered inliers.
    iterationsMaximum number of RANSAC iterations.
    refineIterationsNumber of iterations for refining the transformation after RANSAC.
    covariance(Optional) Output 6x6 covariance matrix of the estimated transform.
    matchesOut(Optional) Output vector of all matched point IDs (from words3A).
    inliersOut(Optional) Output vector of inlier point IDs (subset of matchesOut).
    +
    +
    +
    Returns
    A Transform object representing the estimated rigid body motion from frame B to A. If not enough inliers are found or the estimation fails, a null Transform is returned.
    + +
    +
    + +

    ◆ solvePnPRansac()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::solvePnPRansac (const std::vector< cv::Point3f > & objectPoints,
    const std::vector< cv::Point2f > & imagePoints,
    const cv::Mat & cameraMatrix,
    const cv::Mat & distCoeffs,
    cv::Mat & rvec,
    cv::Mat & tvec,
    bool useExtrinsicGuess,
    int iterationsCount,
    float reprojectionError,
    int minInliersCount,
    std::vector< int > & inliers,
    int flags,
    int refineIterations = 1,
    float refineSigma = 3.0f 
    )
    +
    + +

    Estimates the camera pose using the PnP RANSAC algorithm and optionally refines it.

    +

    This function computes the rotation and translation vectors (rvec, tvec) that transform 3D object points into the camera frame, using the Perspective-n-Point (PnP) method with RANSAC for robust outlier rejection. After an initial estimation using OpenCV's solvePnPRansac, it optionally refines the model iteratively based on reprojection error thresholds.

    +
    Parameters
    + + + + + + + + + + + + + + + +
    objectPointsA vector of 3D points in the object coordinate space.
    imagePointsA vector of corresponding 2D points in the image plane.
    cameraMatrixThe camera intrinsic matrix (3x3).
    distCoeffsVector of distortion coefficients (k1, k2, p1, p2, k3, ...).
    rvecOutput rotation vector (Rodrigues form).
    tvecOutput translation vector.
    useExtrinsicGuessIf true, uses the provided rvec and tvec as an initial guess.
    iterationsCountThe number of RANSAC iterations.
    reprojectionErrorMaximum allowed reprojection error to classify an inlier.
    minInliersCountMinimum number of inliers required to accept a model.
    inliersOutput vector of indices of inlier points.
    flagsMethod for solving PnP (cv::SOLVEPNP_* flags).
    refineIterationsNumber of refinement iterations after RANSAC.
    refineSigmaMultiplier for the reprojection error standard deviation to define adaptive inlier threshold.
    +
    +
    +
    Note
    This function uses OpenCV 3's implementation of solvePnPRansac for robustness. After RANSAC, the pose is optionally refined by minimizing reprojection error on inliers.
    +
    Warning
    Refinement may oscillate or terminate early if convergence is poor or the inlier set becomes unstable.
    +
    See also
    cv::solvePnP, cv::solvePnPRansac
    + +
    +
    + +

    ◆ transformFromXYZCorrespondencesSVD()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::transformFromXYZCorrespondencesSVD (const pcl::PointCloud< pcl::PointXYZ > & cloud1,
    const pcl::PointCloud< pcl::PointXYZ > & cloud2 
    )
    +
    + +

    Estimates the rigid 3D transformation between two point clouds using SVD.

    +

    This function computes the transformation (rotation and translation) that best aligns cloud2 to cloud1 using Singular Value Decomposition (SVD) based on point correspondences. It assumes a one-to-one correspondence between points in the two clouds.

    +

    Internally, it uses PCL's TransformationEstimationSVD to compute the 4x4 transformation matrix, which is then converted to a Transform object.

    +
    Parameters
    + + + +
    cloud1Target point cloud (reference frame).
    cloud2Source point cloud to be aligned with cloud1. It must have the same number of points as cloud1, and the points should correspond to each other by index.
    +
    +
    +
    Returns
    A Transform representing the rigid-body transformation from cloud1 to cloud2.
    +
    Note
    This function does not perform any outlier rejection or correspondence estimation— it assumes that the input clouds are already matched appropriately.
    + +
    +
    + +

    ◆ transformFromXYZCorrespondences()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::transformFromXYZCorrespondences (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & cloud1,
    const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & cloud2,
    double inlierThreshold = 0.02,
    int iterations = 100,
    int refineModelIterations = 10,
    double refineModelSigma = 3.0,
    std::vector< int > * inliers = 0,
    cv::Mat * variance = 0 
    )
    +
    + +

    Estimates a rigid transformation between two point clouds using RANSAC with optional refinement.

    +

    This function finds a 3D rigid-body transform from cloud1 to cloud2 using one-to-one point correspondences. It applies a RANSAC-based outlier rejection and optionally refines the transformation with iterative model optimization.

    +

    It also optionally returns the inlier indices used to compute the final model and an approximate 6x6 covariance matrix of the transform.

    +
    Parameters
    + + + + + + + + + +
    cloud1Target point cloud (reference frame). Must contain at least 3 points and match cloud2 in size.
    cloud2Source point cloud to align to cloud1. Must be the same size as cloud1.
    inlierThresholdMaximum Euclidean distance (in meters) between corresponding points for them to be considered inliers.
    iterationsNumber of RANSAC iterations to perform.
    refineIterationsNumber of refinement steps to perform after the initial RANSAC. If set to 0, no refinement is done.
    refineSigmaMultiplier for standard deviation used to adjust the inlier threshold during refinement.
    inliersOutOptional pointer to a vector that will receive the indices of the inlier correspondences.
    covarianceOptional pointer to a 6x6 covariance matrix of the estimated transform (as CV_64FC1). Will be identity if set and no inliers are found.
    +
    +
    +
    Returns
    A Transform representing the estimated pose from cloud1 to cloud2. If no valid model is found, the returned transform will be identity.
    +
    Note
    This function assumes a one-to-one correspondence between points in the two clouds (e.g., index i in cloud1 corresponds to index i in cloud2).
    +
    +If fewer than 3 points are provided or point counts do not match, the identity transform is returned.
    +
    Warning
    Inlier refinement is sensitive to oscillation and may stop early if alternating inlier counts are detected.
    + +
    +
    + +

    ◆ icp() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::icp (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & cloud_source,
    const pcl::PointCloud< pcl::PointXYZ >::ConstPtr & cloud_target,
    double maxCorrespondenceDistance,
    int maximumIterations,
    bool & hasConverged,
    pcl::PointCloud< pcl::PointXYZ > & cloud_source_registered,
    float epsilon = 0.0f,
    bool icp2D = false,
    float ransacOutlierRatio = 0.0f,
    int * iterationsDone = nullptr 
    )
    +
    + +

    Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform.

    +

    This function aligns the cloud_source to the cloud_target using PCL's ICP algorithm. It optionally supports 2D ICP, which constrains the estimated transformation to the XY-plane with rotation about the Z-axis.

    +

    The result is returned as a Transform representing the transformation from source to target. The aligned version of the source cloud is written into cloud_source_registered.

    +
    Parameters
    + + + + + + + + + +
    cloud_sourceThe input source point cloud to align.
    cloud_targetThe input target point cloud to align to.
    maxCorrespondenceDistanceMaximum distance threshold for point correspondences.
    maximumIterationsMaximum number of ICP iterations to perform.
    [out]hasConvergedSet to true if ICP converged to a solution; false otherwise.
    [out]cloud_source_registeredOutput point cloud containing the source aligned to the target.
    epsilonConvergence threshold for transformation changes between iterations (applied as squared value).
    icp2DIf true, enforces 2D ICP using only XY translation and Z rotation (ignores Z and X/Y rotation).
    +
    +
    +
    Returns
    Transform The estimated transformation from cloud_source to cloud_target.
    +
    Note
    All input points in both clouds must be finite (i.e., no NaNs or infinite values).
    +
    See also
    pcl::IterativeClosestPoint
    +
    +pcl::registration::TransformationEstimation2D
    + +
    +
    + +

    ◆ icp() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::icp (const pcl::PointCloud< pcl::PointXYZI >::ConstPtr & cloud_source,
    const pcl::PointCloud< pcl::PointXYZI >::ConstPtr & cloud_target,
    double maxCorrespondenceDistance,
    int maximumIterations,
    bool & hasConverged,
    pcl::PointCloud< pcl::PointXYZI > & cloud_source_registered,
    float epsilon = 0.0f,
    bool icp2D = false,
    float ransacOutlierRatio = 0.0f,
    int * iterationsDone = nullptr 
    )
    +
    + +

    Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting transform.

    +
    See also
    util3d::icp()
    +
    Parameters
    + + +
    ransacOutlierRatioIf > 0 and < 1, install a PCL RANSAC correspondence rejector with inlier threshold = ransacOutlierRatio * maxCorrespondenceDistance. 0 disables the rejector (default).
    +
    +
    + +
    +
    + +

    ◆ icpPointToPlane() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::icpPointToPlane (const pcl::PointCloud< pcl::PointNormal >::ConstPtr & cloud_source,
    const pcl::PointCloud< pcl::PointNormal >::ConstPtr & cloud_target,
    double maxCorrespondenceDistance,
    int maximumIterations,
    bool & hasConverged,
    pcl::PointCloud< pcl::PointNormal > & cloud_source_registered,
    float epsilon = 0.0f,
    bool icp2D = false,
    float ransacOutlierRatio = 0.0f,
    int * iterationsDone = nullptr 
    )
    +
    + +

    Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric.

    +

    This function aligns a source point cloud to a target point cloud using PCL's point-to-plane ICP implementation with a linear least squares estimator. It returns the estimated transformation from the source to the target.

    +

    Optionally, if icp2D is true, the resulting transformation is projected to 3DoF (XY translation and rotation about Z).

    +
    Parameters
    + + + + + + + + + +
    cloud_sourceInput source point cloud with normals.
    cloud_targetInput target point cloud with normals.
    maxCorrespondenceDistanceMaximum distance for considering point correspondences.
    maximumIterationsMaximum number of ICP iterations to perform.
    [out]hasConvergedSet to true if the ICP algorithm successfully converged.
    [out]cloud_source_registeredOutput cloud representing the aligned source.
    epsilonConvergence threshold for the transformation change (used as squared value).
    icp2DIf true, the result is projected to 2D (XY + Yaw only).
    +
    +
    +
    Returns
    The transformation from the source to the target cloud.
    +
    Note
    All points and normals in both input clouds must be finite (no NaNs or infinities).
    +
    See also
    pcl::IterativeClosestPoint
    +
    +pcl::registration::TransformationEstimationPointToPlaneLLS
    + +
    +
    + +

    ◆ icpPointToPlane() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Transform RTABMAP_CORE_EXPORT rtabmap::util3d::icpPointToPlane (const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr & cloud_source,
    const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr & cloud_target,
    double maxCorrespondenceDistance,
    int maximumIterations,
    bool & hasConverged,
    pcl::PointCloud< pcl::PointXYZINormal > & cloud_source_registered,
    float epsilon = 0.0f,
    bool icp2D = false,
    float ransacOutlierRatio = 0.0f,
    int * iterationsDone = nullptr 
    )
    +
    + +

    Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric.

    +
    See also
    util3d::icpPointToPlane()
    +
    Parameters
    + + +
    ransacOutlierRatioIf > 0 and < 1, install a PCL RANSAC correspondence rejector with inlier threshold = ransacOutlierRatio * maxCorrespondenceDistance. 0 disables the rejector (default).
    +
    +
    + +
    +
    + +

    ◆ createPolygonIndexes()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::createPolygonIndexes (const std::vector< pcl::Vertices > & polygons,
    int cloudSize,
    std::vector< std::set< int > > & neighborPolygons,
    std::vector< std::set< int > > & vertexPolygons 
    )
    +
    + +

    Given a set of polygons, create two indexes: polygons to neighbor polygons and vertices to polygons.

    +
    Parameters
    + + + + + +
    polygonsthe polygons to be indexed.
    cloudSizethe size of the cloud of the corresponding mesh to polygons (must be at least as high as the highest vertex value contained in the polygons).
    neighborPolygonsreturned index from polygons to neighbor polygons (index size = polygons size).
    vertexPolygonsreturned index from vertices to polygons (index size = cloudSize).
    +
    +
    + +
    +
    + +

    ◆ cleanTextureMesh()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void RTABMAP_CORE_EXPORT rtabmap::util3d::cleanTextureMesh (pcl::TextureMesh & textureMesh,
    int minClusterSize 
    )
    +
    +

    Remove not textured polygon clusters. If minClusterSize<0, only the largest cluster is kept.

    + +
    +
    + +

    ◆ mergeTextures()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cv::Mat RTABMAP_CORE_EXPORT rtabmap::util3d::mergeTextures (pcl::TextureMesh & mesh,
    const std::map< int, cv::Mat > & images,
    const std::map< int, CameraModel > & calibrations,
    const Memory * memory = 0,
    const DBDriver * dbDriver = 0,
    int textureSize = 4096,
    int textureCount = 1,
    const std::vector< std::map< int, pcl::PointXY > > & vertexToPixels = std::vector< std::map< int, pcl::PointXY > >(),
    bool gainCompensation = true,
    float gainBeta = 10.0f,
    bool gainRGB = true,
    bool blending = true,
    int blendingDecimation = 0,
    int brightnessContrastRatioLow = 0,
    int brightnessContrastRatioHigh = 0,
    bool exposureFusion = false,
    const ProgressState * state = 0,
    unsigned char blankValue = 255,
    bool clearVertexColorUnderTexture = true,
    std::map< int, std::map< int, cv::Vec4d > > * gains = 0,
    std::map< int, std::map< int, cv::Mat > > * blendingGains = 0,
    std::pair< float, float > * contrastValues = 0 
    )
    +
    +

    Merge all textures in the mesh into "textureCount" textures of size "textureSize".

    Returns
    merged textures corresponding to new materials set in TextureMesh (height=textureSize, width=textureSize*materials)
    + +
    +
    + +

    ◆ multiBandTexturing()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::util3d::multiBandTexturing (const std::string & outputOBJPath,
    const pcl::PCLPointCloud2 & cloud,
    const std::vector< pcl::Vertices > & polygons,
    const std::map< int, Transform > & cameraPoses,
    const std::vector< std::map< int, pcl::PointXY > > & vertexToPixels,
    const std::map< int, cv::Mat > & images,
    const std::map< int, std::vector< CameraModel > > & cameraModels,
    const Memory * memory = 0,
    const DBDriver * dbDriver = 0,
    unsigned int textureSize = 8192,
    unsigned int textureDownscale = 2,
    const std::string & nbContrib = "1 5 10 0",
    const std::string & textureFormat = "jpg",
    const std::map< int, std::map< int, cv::Vec4d > > & gains = std::map< int, std::map< int, cv::Vec4d > >(),
    const std::map< int, std::map< int, cv::Mat > > & blendingGains = std::map< int, std::map< int, cv::Mat > >(),
    const std::pair< float, float > & contrastValues = std::pair< float, float >(0, 0),
    bool gainRGB = true,
    unsigned int unwrapMethod = 0,
    bool fillHoles = false,
    unsigned int padding = 5,
    double bestScoreThreshold = 0.1,
    double angleHardThreshold = 90.0,
    bool forceVisibleByAllVertices = false 
    )
    +
    +

    Texture mesh with AliceVision's multiband texturing approach. See also https://meshroom-manual.readthedocs.io/en/bibtex1/node-reference/nodes/Texturing.html.

    Parameters
    + + + + + + + + + + + + + + + + + + + + + + + + +
    outputOBJPathOutput OBJ path
    cloudinput Cloud of the mesh.
    polygonsInput polygons of the mesh.
    cameraPosesPoses of the cameras.
    vertexToPixelsOutput from createTextureMesh().
    imagesImages corresponding to cameraPoses, raw or compressed, can be empty if memory or dbDriver should be used.
    cameraModelsCamera calibrations corresponding to cameraPoses.
    memoryShould be set if images and dbDriver are not set.
    dbDriverShould be set if images and memory are not set.
    textureSizeOutput texture size 1024, 2048, 4096, 8192, 16384.
    textureDownscaleDownscaling to 4 or 8 will reduce the texture quality but speed up the computation time. Set Texture Downscale to 1 instead of 2 to get the maximum possible resolution with the resolution of your images. The output texture size will be divided by this value, e.g., with texture size of 8192 and downscale value of 2, the output will be 4096.
    nbContribnumber of contributions per frequency band for the multi-band blending (should be 4 values)
    textureFormatOutput texture format: "png" or "jpg".
    gainsOptional output of mergeTextures().
    blendingGainsOptional output of mergeTextures().
    contrastValuesOptional output of mergeTextures().
    gainRGBApply gain compensation on each RGB channels separately, otherwise it is apply equally to all channels.
    unwrapMethodMethod to unwrap input mesh if it does not have UV coordinates 0=Basic (> 600k faces) fast and simple. Can generate multiple atlases 2=LSCM (<= 600k faces): optimize space. Generates one atlas 1=ABF (<= 300k faces): optimize space and stretch. Generates one atlas.
    fillHolesFill Texture holes with plausible values True/False.
    paddingTexture edge padding size in pixel (0-100).
    bestScoreThreshold0.0 to disable filtering based on threshold to relative best score (0.0-1.0).
    angleHardThreshold0.0 to disable angle hard threshold filtering (0.0, 180.0).
    forceVisibleByAllVerticesTriangle visibility is based on the union of vertices visibility.
    +
    +
    + +
    +
    + +

    ◆ intersectRayTriangle()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool RTABMAP_CORE_EXPORT rtabmap::util3d::intersectRayTriangle (const Eigen::Vector3f & p,
    const Eigen::Vector3f & dir,
    const Eigen::Vector3f & v0,
    const Eigen::Vector3f & v1,
    const Eigen::Vector3f & v2,
    float & distance,
    Eigen::Vector3f & normal 
    )
    +
    +

    intersectRayTriangle(): find the 3D intersection of a ray with a triangle Input: p = origin of the ray dir = direction of the ray v0 = point 0 of the triangle v1 = point 1 of the triangle v2 = point 2 of the triangle Output: distance = distance from origin along ray direction normal = normal of the triangle (not normalized) Return: true = intersect in unique point inside the triangle

    +

    Intersection point can be computed with "I = p + dir*distance"

    +

    Copyright 2001 softSurfer, 2012 Dan Sunday This code may be freely used and modified for any purpose providing that this copyright notice is included with it. SoftSurfer makes no warranty for this code, and cannot be held liable for any real or imagined damage resulting from its use. Users of this code must verify correctness for their application.

    +

    Mathieu: Adapted for PCL format

    + +
    +
    + +

    ◆ transformLaserScan()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    LaserScan RTABMAP_CORE_EXPORT rtabmap::util3d::transformLaserScan (const LaserScan & laserScan,
    const Transform & transform 
    )
    +
    + +

    Applies a 3D transform to all points (and normals if present) in a LaserScan.

    +

    This function transforms each point in the input LaserScan using the specified Transform. The transformation is applied on a cloned copy of the scan data, preserving the original. It supports both 2D and 3D scans, and if normals are present, they are also properly transformed.

    +

    The transformation is only applied if it is neither null nor the identity transform.

    +
    Parameters
    + + + +
    laserScanThe input LaserScan object containing scan data to be transformed.
    transformA Transform representing the spatial transformation to apply (translation + rotation). Can be 3DoF or 6DoF depending on the scan dimensionality.
    +
    +
    +
    Returns
    A new LaserScan object with transformed points (and optionally normals), and the same metadata such as range limits, angle information, format, and local transform as the input scan.
    +

    Behavior:

    +
      +
    • If the transform is null or identity, the scan is returned unchanged.
    • +
    • If the scan has normals (e.g., format is kXYZNormal, kXYZINormal, etc.), both positions and normals are transformed.
    • +
    • If the scan has no normals, only point positions are transformed.
    • +
    • Angle-based scans (2D with valid angle increment) retain angular properties in the returned object.
    • +
    • The localTransform of the original scan is preserved in the returned scan.
    • +
    +

    Supported Formats:

    +

    This function works with all valid formats defined by LaserScan::Format, including:

      +
    • 2D: kXY, kXYI, kXYNormal, kXYINormal
    • +
    • 3D: kXYZ, kXYZI, kXYZNormal, kXYZINormal, kXYZRGB, kXYZRGBNormal, kXYZIT
    • +
    +
    See also
    LaserScan, Transform, util3d::transformPoint()
    + +
    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespaces.html b/preview/pr-1773/api/latest/namespaces.html new file mode 100644 index 00000000..c431f981 --- /dev/null +++ b/preview/pr-1773/api/latest/namespaces.html @@ -0,0 +1,270 @@ + + + + + + + + +RTAB-Map: Namespace List + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     ►Nrtabmap
    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/namespaces_dup.js b/preview/pr-1773/api/latest/namespaces_dup.js new file mode 100644 index 00000000..8666c6f8 --- /dev/null +++ b/preview/pr-1773/api/latest/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "rtabmap", "namespacertabmap.html", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/nav_f.png b/preview/pr-1773/api/latest/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/nav_fd.png b/preview/pr-1773/api/latest/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/nav_g.png b/preview/pr-1773/api/latest/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/navtree.css b/preview/pr-1773/api/latest/navtree.css new file mode 100644 index 00000000..6b1e5e46 --- /dev/null +++ b/preview/pr-1773/api/latest/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url('splitbar.png'); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/preview/pr-1773/api/latest/navtree.js b/preview/pr-1773/api/latest/navtree.js new file mode 100644 index 00000000..93dd3d46 --- /dev/null +++ b/preview/pr-1773/api/latest/navtree.js @@ -0,0 +1,559 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, setFocus) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + +RTAB-Map: Related Pages + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/parameters.html b/preview/pr-1773/api/latest/parameters.html new file mode 100644 index 00000000..32b65164 --- /dev/null +++ b/preview/pr-1773/api/latest/parameters.html @@ -0,0 +1,1756 @@ + + + + + + + + +RTAB-Map: Parameter reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Parameter reference
    +
    +
    +

    Every setting in RTAB-Map is a Group/Name string key with a string value, collected in a rtabmap::ParametersMap. The 617 parameters below are declared in Parameters.h; the same keys are used by rtabmap::Rtabmap and rtabmap::Odometry, by the applications, by the --Param Group/Name value command-line arguments of the tools and by the ROS wrappers, so a setting found here applies everywhere.

    +
    + +
    rtabmap.init(parameters, "map.db");
    +
    static std::string kMemSTMSize()
    Key of parameter Mem/STMSize : "Short-term memory size." Default value: 10 ( unsigned int ).
    Definition Parameters.h:226
    + +
    std::pair< std::string, std::string > ParametersPair
    A single parameter key/value pair, the entry type of ParametersMap.
    Definition Parameters.h:46
    +
    std::map< std::string, std::string > ParametersMap
    Parameter keys mapped to their values, as used by every configurable class (see Parameters).
    Definition Parameters.h:44
    +

    Each key links to its accessor on rtabmap::Parameters, which is also how the key is spelled in code (Parameters::kMemSTMSize() for Mem/STMSize). Defaults given with a condition depend on how RTAB-Map was built; call rtabmap::Parameters::getDefaultParameters() to read the values of the build in use.

    +

    Groups: Rtabmap, Mem, Kp, DbSqlite3, Db, SURF, SIFT, BRIEF, FAST, GFTT, ORB, FREAK, BRISK, KAZE, SuperPoint, SuperPointRpautrat, PyDetector, Bayes, VhEp, RGBD, Optimizer, g2o, GTSAM, Odom, OdomF2M, OdomMono, OdomFovis, OdomViso2, OdomORBSLAM, OdomOKVIS, OdomLOAM, OdomMSCKF, OdomVINSFusion, OdomOpenVINS, OdomOpen3D, OdomCuVSLAM, OdomLIOSAM, Reg, Vis, PyMatcher, GMS, PyDescriptor, Icp, Stereo, StereoBM, StereoSGBM, Grid, GridGlobal, Marker, MarkerAprilTag, MarkerOpenCV, ImuFilter

    +

    +

    +Rtabmap

    +

    Top-level loop closure detection and map management.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Rtabmap/PublishStats bool true Publishing statistics.
    Rtabmap/PublishLastSignature bool true Publishing last signature.
    Rtabmap/PublishPdf bool true Publishing pdf.
    Rtabmap/PublishLikelihood bool true Publishing likelihood.
    Rtabmap/PublishRAMUsage bool false Publishing RAM usage in statistics (may add a small overhead to get info from the system).
    Rtabmap/ComputeRMSE bool true Compute root mean square error (RMSE) and publish it in statistics, if ground truth is provided.
    Rtabmap/SaveWMState bool false Save working memory state after each update in statistics.
    Rtabmap/TimeThr float 0 Maximum time allowed for map update (ms) (0 means infinity). When map update time exceeds this fixed time threshold, some nodes in Working Memory (WM) are transferred to Long-Term Memory to limit the size of the WM and decrease the update time.
    Rtabmap/MemoryThr int 0 Maximum nodes in the Working Memory (0 means infinity). Similar to Rtabmap/TimeThr, when the number of nodes in Working Memory (WM) exceeds this treshold, some nodes are transferred to Long-Term Memory to keep WM size fixed.
    Rtabmap/DetectionRate float 1 Detection rate (Hz). RTAB-Map will filter input images to satisfy this rate.
    Rtabmap/ImageBufferSize unsigned int 1 Data buffer size (0 min inf).
    Rtabmap/CreateIntermediateNodes bool false Create intermediate nodes between loop closure detection. Only used when Rtabmap/DetectionRate>0.
    Rtabmap/WorkingDirectory string "" Working directory.
    Rtabmap/MaxRetrieved unsigned int 2 Maximum nodes retrieved at the same time from LTM.
    Rtabmap/MaxRepublished unsigned int 2 Maximum nodes republished when requesting missing data. When RGBD/Enabled=false, only loop closure data is republished, otherwise the closest nodes from the current localization are republished first. Ignored if Rtabmap/PublishLastSignature=false.
    Rtabmap/StatisticLogsBufferedInRAM bool true Statistic logs buffered in RAM instead of written to hard drive after each iteration.
    Rtabmap/StatisticLogged bool false Logging enabled.
    Rtabmap/StatisticLoggedHeaders bool true Add column header description to log files.
    Rtabmap/StartNewMapOnLoopClosure bool false Start a new map only if there is a global loop closure with a previous map.
    Rtabmap/StartNewMapOnGoodSignature bool false Start a new map only if the first signature is not bad (i.e., has enough features, see Kp/BadSignRatio).
    Rtabmap/ImagesAlreadyRectified bool true Images are already rectified. By default RTAB-Map assumes that received images are rectified. If they are not, they can be rectified by RTAB-Map if this parameter is false.
    Rtabmap/RectifyOnlyFeatures bool false If Rtabmap/ImagesAlreadyRectified is false and this parameter is true, the whole RGB image will not be rectified, only the features. Warning: As projection of RGB-D image to point cloud is assuming that images are rectified, the generated point cloud map will have wrong colors if this parameter is true.
    Rtabmap/LoopThr float 0.11 Loop closing threshold.
    Rtabmap/LoopRatio float 0 The loop closure hypothesis must be over LoopRatio x lastHypothesisValue.
    Rtabmap/LoopGPS bool true Use GPS to filter likelihood (if GPS is recorded). Only locations inside the local radius RGBD/LocalRadius of the current GPS location are considered for loop closure detection.
    Rtabmap/VirtualPlaceLikelihoodRatio int 0 Likelihood ratio for virtual place (for no loop closure hypothesis): 0=Mean / StdDev, 1=StdDev / (Max-Mean)
    +

    +

    +Mem

    +

    Memory management: what is kept in STM/WM, what is transferred to LTM.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Mem/RehearsalSimilarity float 0.6 Rehearsal similarity.
    Mem/ImageKept bool false Keep raw images in RAM.
    Mem/BinDataKept bool true Keep binary data in db.
    Mem/RawDescriptorsKept bool true Raw descriptors kept in memory.
    Mem/LoadVisualLocalFeaturesOnInit bool true Load all local visual features (keypoints, descriptors and 3D points) in RAM when loading an existing database. This can add significant time to initialize the memory but the features will be already loaded before computing loop closure transforms. If false, the features are loaded on-demand from the database when a loop closure transformation should be estimated.
    Mem/MapLabelsAdded bool true Create map labels. The first node of a map will be labeled as "map#" where # is the map ID.
    Mem/SaveDepth16Format bool false Save depth image into 16 bits format to reduce memory used. Warning: values over ~65 meters are ignored (maximum 65535 millimeters).
    Mem/NotLinkedNodesKept bool true Keep not linked nodes in db (rehearsed nodes and deleted nodes).
    Mem/IntermediateNodeDataKept bool false Keep intermediate node data in db.
    Mem/ImageCompressionFormat string .jpg RGB image compression format. It should be ".jpg" or ".png".
    Mem/DepthCompressionFormat string .rvl Depth image compression format for 16UC1 depth type. It should be ".png" or ".rvl". If depth type is 32FC1, ".png" is used.
    Mem/STMSize unsigned int 10 Short-term memory size.
    Mem/IncrementalMemory bool true SLAM mode, otherwise it is Localization mode.
    Mem/LocalizationReadOnly bool false In localization mode, open the database in read-only mode (ignored if Mem/IncrementalMemory=true). Currrenty incompatible with memory management (Rtabmap/LoopThr and Rtabmap/MemoryThr cannot be used) and if there are disjoint sessions in working memory. Last localization pose won't be saved back in the database at the end of the session, so the robot will always restart to original last localization pose, unless RGBD/StartAtOrigin is used or an external initial pose is provided on initialization.
    Mem/LocalizationDataSaved bool false Save localization data during localization session (when Mem/IncrementalMemory=false). When enabled, the database will then also grow in localization mode. This mode would be used only for debugging purpose.
    Mem/ReduceGraph bool false Reduce graph. Merge nodes when loop closures are added (ignoring those with user data). Note that this approach assumes that 100%% of the loop closures accepted are good, so it is highly recommended to enable RGBD/OptimizeMaxError at the same time.
    Mem/RecentWmRatio float 0.2 Ratio of locations after the last loop closure in WM that cannot be transferred.
    Mem/TransferSortingByWeightId bool false On transfer, signatures are sorted by weight->ID only (i.e. the oldest of the lowest weighted signatures are transferred first). If false, the signatures are sorted by weight->Age->ID (i.e. the oldest inserted in WM of the lowest weighted signatures are transferred first). Note that retrieval updates the age, not the ID.
    Mem/RehearsalIdUpdatedToNewOne bool false On merge, update to new id. When false, no copy. Keep this disable if Rtabmap/CreateIntermediateNodes=true.
    Mem/RehearsalWeightIgnoredWhileMoving bool false When the robot is moving, weights are not updated on rehearsal.
    Mem/GenerateIds bool true True=Generate location IDs, False=use input image IDs.
    Mem/BadSignaturesIgnored bool false Bad signatures are ignored.
    Mem/InitWMWithAllNodes bool false Initialize the Working Memory with all nodes in Long-Term Memory. When false, it is initialized with nodes of the previous session.
    Mem/DepthAsMask bool true Use depth image as mask when extracting features for vocabulary.
    Mem/DepthMaskFloorThr float 0.0 Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if Mem/DepthAsMask is false.
    Mem/StereoFromMotion bool false Triangulate features without depth using stereo from motion (odometry). It would be ignored if Mem/DepthAsMask is true and the feature detector used supports masking.
    Mem/ImagePreDecimation unsigned int 1 Decimation of the RGB image before visual feature detection. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If Mem/DepthAsMask is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.
    Mem/ImagePostDecimation unsigned int 1 Decimation of the RGB image before saving it to database. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. Decimation is done from the original image. If set to same value than Mem/ImagePreDecimation, data already decimated is saved (no need to re-decimate the image).
    Mem/CompressionParallelized bool true Compression of sensor data is multi-threaded.
    Mem/LaserScanDownsampleStepSize int 1 If > 1, downsample the laser scans when creating a signature.
    Mem/LaserScanVoxelSize float 0.0 If > 0 m, voxel filtering is done on laser scans when creating a signature. If the laser scan had normals, they will be removed. To recompute the normals, make sure to use Mem/LaserScanNormalK or Mem/LaserScanNormalRadius parameters.
    Mem/LaserScanNormalK int 0 If > 0 and laser scans don't have normals, normals will be computed with K search neighbors when creating a signature.
    Mem/LaserScanNormalRadius float 0.0 If > 0 m and laser scans don't have normals, normals will be computed with radius search neighbors when creating a signature.
    Mem/UseOdomFeatures bool true Use odometry features instead of regenerating them.
    Mem/UseOdomGravity bool false Use odometry instead of IMU orientation to add gravity links to new nodes created. We assume that odometry is already aligned with gravity (e.g., we are using a VIO approach). Gravity constraints are used by graph optimization only if Optimizer/GravitySigma is not zero.
    Mem/CovOffDiagIgnored bool true Ignore off diagonal values of the covariance matrix.
    Mem/GlobalDescriptorStrategy int 0 Extract global descriptor from sensor data. 0=disabled, 1=PyDescriptor
    Mem/RotateImagesUpsideUp bool false Rotate images so that upside is up if they are not already. This can be useful in case the robots don't have all same camera orientation but are using the same map, so that not rotation-invariant visual features can still be used across the fleet.
    +

    +

    +Kp

    +

    Bag-of-words dictionary used for global loop closure detection.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Kp/NNStrategy int 1 FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, FLANN KdTree Single=5, NanoFLANN KdTree=6
    Kp/IncrementalDictionary bool true
    Kp/IncrementalFlann bool true When using FLANN based strategy, add/remove points to its index without always rebuilding the index (the index is only rebuilt when too many of its features have been removed, see Kp/FlannRebalancingFactor).
    Kp/FlannRebalancingFactor float 2.0 Rebuild the incremental FLANN index (see Kp/IncrementalFlann) once the ratio (factor-1)/factor of its features has been removed, e.g. half of them for a factor of 2. Rebuilding frees the memory of the removed features and speeds up the searches. Features are mostly removed when memory management is enabled (Rtabmap/TimeThr or Rtabmap/MemoryThr). Set to 1 to never rebuild, which also uses less memory as the features don't have to be referenced one by one.
    Kp/FlannThreads int 1 Number of threads used for FLANN kNN search (batched queries). Set to 0 for all available.
    Kp/ByteToFloat bool false For Kp/NNStrategy=1, binary descriptors are converted to float by converting each byte to float instead of converting each bit to float. When converting bytes instead of bits, less memory is used and search is faster at the cost of slightly less accurate matching.
    Kp/MaxDepth float 0 Filter extracted keypoints by depth (0=inf).
    Kp/MinDepth float 0 Filter extracted keypoints by depth.
    Kp/MaxFeatures int 500 Maximum features extracted from the images (0 means not bounded, <0 means no extraction).
    Kp/SSC bool false If true, SSC (Suppression via Square Covering) is applied to limit keypoints.
    Kp/BadSignRatio float 0.5 Bad signature ratio. If Kp/MaxFeatures=0, the ratio is computed from the average number of words per signature (less than Ratio x AverageWordsPerImage = bad).
    Kp/NndrRatio float 0.8 NNDR ratio (A matching pair is detected, if its distance is closer than X times the distance of the second nearest neighbor.)
    Kp/DetectorStrategy int 8 with CV_MAJOR_VERSION &gt; 2 && !defined(HAVE_OPENCV_XFEATURES2D)
    +6 otherwise
    0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat
    Kp/TfIdfLikelihoodUsed bool true Use of the td-idf strategy to compute the likelihood.
    Kp/Parallelized bool true If the dictionary update and signature creation were parallelized.
    Kp/RoiRatios string 0.0 0.0 0.0 0.0 Region of interest ratios [left, right, top, bottom].
    Kp/DictionaryPath string "" Path of the pre-computed dictionary
    Kp/NewWordsComparedTogether bool true When adding new words to dictionary, they are compared also with each other (to detect same words in the same signature).
    Kp/FlannIndexSaved bool false Save FLANN index during localization session (when Mem/IncrementalMemory=false). The FLANN index will be saved to database after the first time localization mode is used, then on next sessions, the index is reloaded from the database instead of being rebuilt again. This can save significant loading time when the visual word dictionary is big (>1M words). Note that if the dictionary is modified (parameters or data), the index will be rebuilt and saved again on the next session. Ignored on initialization if Mem/InitWMWithAllNodes is enabled.
    Kp/SerializeWithChecksum bool true On serialization of the FLANN index, compute checksum of the data used by the FLANN index. This adds a slight overhead on serialization/deserialization to make sure that the dictionary data correspond to same data used when the index was built.
    Kp/SubPixWinSize int 3 See cv::cornerSubPix().
    Kp/SubPixIterations int 0 See cv::cornerSubPix(). 0 disables sub pixel refining.
    Kp/SubPixEps double 0.02 See cv::cornerSubPix().
    Kp/GridRows int 1 Number of rows of the grid used to extract uniformly "@ref param_KpMaxFeatures "Kp/MaxFeatures" / grid cells" features from each cell.
    Kp/GridCols int 1 Number of columns of the grid used to extract uniformly "@ref param_KpMaxFeatures "Kp/MaxFeatures" / grid cells" features from each cell.
    +

    +

    +DbSqlite3

    + + + + + + + + + + + + + +
    Key Type Default Description
    DbSqlite3/InMemory bool false Using database in the memory instead of a file on the hard disk.
    DbSqlite3/CacheSize unsigned int 10000 PRAGMA cache_size: number of database pages kept in SQLite's page cache (approx. cacheSize * page_size bytes, often ~4 KiB per page). Larger values reduce disk I/O when the working set fits in RAM. SQLite built-in default is typically 2000 pages.
    DbSqlite3/JournalMode int 3 PRAGMA journal_mode: rollback journal storage. See sqlite.org/pragma.html::pragma_journal_mode for more details. 0=DELETE (SQLite default): journal file deleted after each commit. 1=TRUNCATE: journal truncated to zero length. 2=PERSIST: journal file kept, header zeroed after commit. 3=MEMORY: journal in RAM only; faster, weaker crash safety. 4=OFF: no journal; fastest, risk of corruption on crash.
    DbSqlite3/Synchronous int 0 PRAGMA synchronous: how aggressively SQLite syncs the database to disk. See sqlite.org/pragma.html::pragma_synchronous for more details. 0=OFF: no wait for persistent storage; fastest, corruption possible on power loss. 1=NORMAL: sync at critical moments (common SQLite default with WAL). 2=FULL (SQLite safest default): sync after every commit; slowest.
    DbSqlite3/TempStore int 2 PRAGMA temp_store: where SQLite stores temporary tables and indices. See sqlite.org/pragma.html::pragma_temp_store for more details. 0=DEFAULT: SQLite compile-time default (often on-disk temp files). 1=FILE: temporary files in the system temp directory. 2=MEMORY: temporary data in RAM when possible.
    +

    +

    +Db

    +

    Database (long-term memory) storage.

    + + + + + +
    Key Type Default Description
    Db/TargetVersion string "" Target database version for backward compatibility purpose. Only Major and minor versions are used and should be set (e.g., 0.19 vs 0.20 or 1.0 vs 2.0). Patch version is ignored (e.g., 0.20.1 and 0.20.3 will generate a 0.20 database).
    +

    +

    +SURF

    + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    SURF/Extended bool false Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors).
    SURF/HessianThreshold float 500 Threshold for hessian keypoint detector used in SURF.
    SURF/Octaves int 4 Number of pyramid octaves the keypoint detector will use.
    SURF/OctaveLayers int 2 Number of octave layers within each octave.
    SURF/Upright bool false Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation).
    SURF/GpuVersion bool false GPU-SURF: Use GPU version of SURF. This option is enabled only if OpenCV is built with CUDA and GPUs are detected.
    SURF/GpuKeypointsRatio float 0.01 Used with SURF GPU.
    +

    +

    +SIFT

    + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    SIFT/NOctaveLayers int 3 The number of layers in each octave. 3 is the value used in D. Lowe paper. The number of octaves is computed automatically from the image resolution. Not used by CudaSift, the number of octaves is still computed automatically.
    SIFT/ContrastThreshold double 0.04 The contrast threshold used to filter out weak features in semi-uniform (low-contrast) regions. The larger the threshold, the less features are produced by the detector. Not used by CudaSift (see SIFT/GaussianThreshold instead).
    SIFT/EdgeThreshold double 10 The threshold used to filter out edge-like features. Note that the its meaning is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are filtered out (more features are retained).
    SIFT/Sigma double 1.6 The sigma of the Gaussian applied to the input image at the octave #0. If your image is captured with a weak camera with soft lenses, you might want to reduce the number.
    SIFT/PreciseUpscale bool false Whether to enable precise upscaling in the scale pyramid (OpenCV >= 4.8).
    SIFT/RootSIFT bool false Apply RootSIFT normalization of the descriptors.
    SIFT/Gpu bool false CudaSift: Use GPU version of SIFT. This option is enabled only if RTAB-Map is built with CudaSift dependency and GPUs are detected.
    SIFT/GaussianThreshold float 2.0 CudaSift: Threshold on difference of Gaussians for feature pruning. The higher the threshold, the less features with low response/hessian are produced by the detector.
    SIFT/MaxGaussianThreshold float 0.0 CudaSift: Maximum threshold on difference of Gaussians for feature pruning (ignored if smaller or equal than SIFT/GaussianThreshold). The lower the threshold, the less features with high response/hessian are produced by the detector.
    SIFT/Upscale bool false CudaSift: Whether to enable upscaling.
    +

    +

    +BRIEF

    + + + + + +
    Key Type Default Description
    BRIEF/Bytes int 32 Bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes.
    +

    +

    +FAST

    + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    FAST/Threshold int 20 Threshold on difference between intensity of the central pixel and pixels of a circle around this pixel.
    FAST/NonmaxSuppression bool true If true, non-maximum suppression is applied to detected corners (keypoints).
    FAST/Gpu bool false GPU-FAST: Use GPU version of FAST. This option is enabled only if OpenCV is built with CUDA and GPUs are detected.
    FAST/GpuKeypointsRatio double 0.05 Used with FAST GPU.
    FAST/MinThreshold int 7 Minimum threshold. Used only when FAST/GridRows and FAST/GridCols are set.
    FAST/MaxThreshold int 200 Maximum threshold. Used only when FAST/GridRows and FAST/GridCols are set.
    FAST/GridRows int 0 Grid rows (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.
    FAST/GridCols int 0 Grid cols (0 to disable). Adapts the detector to partition the source image into a grid and detect points in each cell.
    FAST/CV int 0 Enable FastCV implementation if non-zero (and RTAB-Map is built with FastCV support). Values should be 9 and 10.
    +

    +

    +GFTT

    + + + + + + + + + + + + + + + +
    Key Type Default Description
    GFTT/QualityLevel double 0.001
    GFTT/MinDistance double 7
    GFTT/BlockSize int 3
    GFTT/UseHarrisDetector bool false
    GFTT/K double 0.04
    GFTT/Gpu bool false GPU-GFTT: Use GPU version of GFTT. This option is enabled only if OpenCV>=3 is built with CUDA and GPUs are detected.
    +

    +

    +ORB

    + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    ORB/ScaleFactor float 2 Pyramid decimation ratio, greater than 1. scaleFactor==2 means the classical pyramid, where each next level has 4x less pixels than the previous, but such a big scale factor will degrade feature matching scores dramatically. On the other hand, too close to 1 scale factor will mean that to cover certain scale range you will need more pyramid levels and so the speed will suffer.
    ORB/NLevels int 3 The number of pyramid levels. The smallest level will have linear size equal to input_image_linear_size/pow(scaleFactor, nlevels).
    ORB/EdgeThreshold int 19 This is size of the border where the features are not detected. It should roughly match the patchSize parameter.
    ORB/FirstLevel int 0 It should be 0 in the current implementation.
    ORB/WTA_K int 2 The number of points that produce each element of the oriented BRIEF descriptor. The default value 2 means the BRIEF where we take a random point pair and compare their brightnesses, so we get 0/1 response. Other possible values are 3 and 4. For example, 3 means that we take 3 random points (of course, those point coordinates are random, but they are generated from the pre-defined seed, so each element of BRIEF descriptor is computed deterministically from the pixel rectangle), find point of maximum brightness and output index of the winner (0, 1 or 2). Such output will occupy 2 bits, and therefore it will need a special variant of Hamming distance, denoted as NORM_HAMMING2 (2 bits per bin). When WTA_K=4, we take 4 random points to compute each bin (that will also occupy 2 bits with possible values 0, 1, 2 or 3).
    ORB/ScoreType int 0 The default HARRIS_SCORE=0 means that Harris algorithm is used to rank features (the score is written to KeyPoint::score and is used to retain best nfeatures features); FAST_SCORE=1 is alternative value of the parameter that produces slightly less stable keypoints, but it is a little faster to compute.
    ORB/PatchSize int 31 size of the patch used by the oriented BRIEF descriptor. Of course, on smaller pyramid layers the perceived image area covered by a feature will be larger.
    ORB/Gpu bool false GPU-ORB: Use GPU version of ORB. This option is enabled only if OpenCV is built with CUDA and GPUs are detected.
    +

    +

    +FREAK

    + + + + + + + + + + + +
    Key Type Default Description
    FREAK/OrientationNormalized bool true Enable orientation normalization.
    FREAK/ScaleNormalized bool true Enable scale normalization.
    FREAK/PatternScale float 22 Scaling of the description pattern.
    FREAK/NOctaves int 4 Number of octaves covered by the detected keypoints.
    +

    +

    +BRISK

    + + + + + + + + + +
    Key Type Default Description
    BRISK/Thresh int 30 FAST/AGAST detection threshold score.
    BRISK/Octaves int 3 Detection octaves. Use 0 to do single scale.
    BRISK/PatternScale float 1 Apply this scale to the pattern used for sampling the neighbourhood of a keypoint.
    +

    +

    +KAZE

    + + + + + + + + + + + + + + + +
    Key Type Default Description
    KAZE/Extended bool false Set to enable extraction of extended (128-byte) descriptor.
    KAZE/Upright bool false Set to enable use of upright descriptors (non rotation-invariant).
    KAZE/Threshold float 0.001 Detector response threshold to accept keypoint.
    KAZE/NOctaves int 4 Maximum octave evolution of the image.
    KAZE/NOctaveLayers int 4 Default number of sublevels per scale level.
    KAZE/Diffusivity int 1 Diffusivity type: 0=DIFF_PM_G1, 1=DIFF_PM_G2, 2=DIFF_WEICKERT or 3=DIFF_CHARBONNIER.
    +

    +

    +SuperPoint

    + + + + + + + + + + + + + +
    Key Type Default Description
    SuperPoint/ModelPath string "" [Required] Path to pre-trained weights Torch file of SuperPoint (*.pt).
    SuperPoint/Threshold float 0.010 Detector response threshold to accept keypoint.
    SuperPoint/NMS bool true If true, non-maximum suppression is applied to detected keypoints.
    SuperPoint/NMSRadius int 4 [SuperPoint/NMS=true] Minimum distance (pixels) between keypoints.
    SuperPoint/Cuda bool true Use Cuda device for Torch, otherwise CPU device is used by default.
    +

    +

    +SuperPointRpautrat

    + + + + + + + + + + + + + + + +
    Key Type Default Description
    SuperPointRpautrat/WeightsPath string "" [Required] SuperPoint weights file (*.pth).
    SuperPointRpautrat/ModelPath string "" [Required] SuperPoint python model file (superpoint_pytorch.py).
    SuperPointRpautrat/Threshold float 0.005 Detector response threshold to accept keypoint.
    SuperPointRpautrat/NMS bool true If true, non-maximum suppression is applied to detected keypoints.
    SuperPointRpautrat/NMSRadius int 4 [SuperPointRpautrat/NMS=true] Minimum distance (pixels) between keypoints.
    SuperPointRpautrat/Cuda bool true Use Cuda device for Torch, otherwise CPU device is used by default.
    +

    +

    +PyDetector

    + + + + + + + +
    Key Type Default Description
    PyDetector/Path string "" Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied.
    PyDetector/Cuda bool true Use cuda.
    +

    +

    +Bayes

    +

    Bayes filter used for loop closure hypotheses.

    + + + + + + + + + + + +
    Key Type Default Description
    Bayes/VirtualPlacePriorThr float 0.9 Virtual place prior. Considering that we are at a new place, this is the prior probability to move again to a new place (unvisited location). The prior probability to move to a previously visited location is 1 - VirtualPlacePriorThr (split equally against all previously visited locations).
    Bayes/PredictionLC string 0.1 0.36 0.30 0.16 0.062 0.0151 0.00255 0.000324 2.5e-05 1e-06 4.8e-08 1.2e-09 1.9e-11 2.2e-13 1.7e-15 8.5e-18 2.9e-20 6.9e-23 Prediction of loop closures (Gaussian-like, here with sigma=1.6) - Format: {VirtualPlaceProb, LoopClosureProb, NeighborLvl1, NeighborLvl2, ...}. Considering we are at a previously visited location, the first value is the probability to move to a new place (unvisited location), the second value is the probability to stay at the same location, the third value is the probability to move to a neighbor or loop closure at the first depth level, the fourth value is the probability to move to a neighbor or loop closure at the second depth level, etc. If the sum of the values is not 1, the difference is normalized against all remaining visited locations. Normally, the sum of these values should be 1.
    Bayes/FullPredictionUpdate bool false Regenerate all the prediction matrix on each iteration (otherwise only removed/added ids are updated).
    Bayes/SparsePrediction bool true Use a sparse representation of the prediction instead of a dense matrix, which significantly reduces memory usage and processing time on large maps. Ignored when the values of Bayes/PredictionLC sum to less than 1, as the prediction is then not sparse.
    +

    +

    +VhEp

    + + + + + + + + + + + +
    Key Type Default Description
    VhEp/Enabled bool false Verify visual loop closure hypothesis by computing a fundamental matrix. This is done prior to transformation computation when RGBD/Enabled is enabled.
    VhEp/MatchCountMin int 8 Minimum of matching visual words pairs to accept the loop hypothesis.
    VhEp/RansacParam1 float 3 Fundamental matrix (see cvFindFundamentalMat()): Max distance (in pixels) from the epipolar line for a point to be inlier.
    VhEp/RansacParam2 float 0.99 Fundamental matrix (see cvFindFundamentalMat()): Performance of RANSAC.
    +

    +

    +RGBD

    +

    Metric SLAM: graph, proximity detection and localization.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    RGBD/Enabled bool true Activate metric SLAM. If set to false, classic RTAB-Map loop closure detection is done using only images and without any metric information.
    RGBD/LinearUpdate float 0.1 Minimum linear displacement (m) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both RGBD/LinearUpdate and RGBD/AngularUpdate should be set to 0.
    RGBD/AngularUpdate float 0.1 Minimum angular displacement (rad) to update the map. Rehearsal is done prior to this, so weights are still updated. To update the map when not moving, both RGBD/LinearUpdate and RGBD/AngularUpdate should be set to 0.
    RGBD/LinearSpeedUpdate float 0.0 Maximum linear speed (m/s) to update the map (0 means not limit).
    RGBD/AngularSpeedUpdate float 0.0 Maximum angular speed (rad/s) to update the map (0 means not limit).
    RGBD/AggressiveLoopThr float 0.05 Loop closure threshold used (overriding Rtabmap/LoopThr) when a new mapping session is not yet linked to a map of the highest loop closure hypothesis. In localization mode, this threshold is used when there are no loop closure constraints with any map in the cache (RGBD/MaxOdomCacheSize). In all cases, the goal is to aggressively loop on a previous map in the database. Only used when RGBD/Enabled is enabled. Set 1 to disable.
    RGBD/NewMapOdomChangeDistance float 0 A new map is created if a change of odometry translation greater than X m is detected (0 m = disabled).
    RGBD/OptimizeFromGraphEnd bool false Optimize graph from the newest node. If false, the graph is optimized from the oldest node of the current graph (this adds an overhead computation to detect to oldest node of the current graph, but it can be useful to preserve the map referential from the oldest node). Warning when set to false: when some nodes are transferred, the first referential of the local map may change, resulting in momentary changes in robot/map position (which are annoying in teleoperation).
    RGBD/OptimizeMaxError float 3.0 Reject loop closures if optimization error ratio is greater than this value (0=disabled). Ratio is computed as absolute error over standard deviation of each link. This will help to detect when a wrong loop closure is added to the graph. If used with Optimizer/Robust, the disabled loop closure links will be removed.
    RGBD/OptimizeMaxErrorRepairRadius float 0.0 If two consecutive loop closures are rejected by RGBD/OptimizeMaxError on the same old loop closure link, we will remove that old link, and other old links under that radius if necessary, until optimization is accepted. When optimization is accepted, the old loop closure links are removed from the graph. This feature is useful to reject bad loop closures that were accepted previously. Set to 0 to disable this feature.
    RGBD/MaxLoopClosureDistance float 0.0 Reject loop closures/localizations if the distance from the map is over this distance (0=disabled).
    RGBD/ForceOdom3DoF bool true Force odometry pose to be 3DoF if Reg/Force3DoF=true.
    RGBD/StartAtOrigin bool false If true, rtabmap will assume the robot is starting from origin of the map. If false, rtabmap will assume the robot is restarting from the last saved localization pose from previous session (the place where it shut down previously). Used only in localization mode (Mem/IncrementalMemory=false).
    RGBD/GoalReachedRadius float 0.5 Goal reached radius (m).
    RGBD/PlanStuckIterations int 0 Mark the current goal node on the path as unreachable if it is not updated after X iterations (0=disabled). If all upcoming nodes on the path are unreachabled, the plan fails.
    RGBD/PlanLinearVelocity float 0 Linear velocity (m/sec) used to compute path weights.
    RGBD/PlanAngularVelocity float 0 Angular velocity (rad/sec) used to compute path weights.
    RGBD/GoalsSavedInUserData bool false When a goal is received and processed with success, it is saved in user data of the location with this format: "GOAL:#".
    RGBD/MaxLocalRetrieved unsigned int 2 Maximum local locations retrieved (0=disabled) near the current pose in the local map or on the current planned path (those on the planned path have priority).
    RGBD/LocalRadius float 10 Local radius (m) for nodes selection in the local map. This parameter is used in some approaches about the local map management.
    RGBD/LocalImmunizationRatio float 0.25 Ratio of working memory for which local nodes are immunized from transfer.
    RGBD/ScanMatchingIdsSavedInLinks bool true Save scan matching IDs from one-to-many proximity detection in link's user data.
    RGBD/NeighborLinkRefining bool false When a new node is added to the graph, the transformation of its neighbor link to the previous node is refined using registration approach selected (Reg/Strategy).
    RGBD/LoopClosureIdentityGuess bool false Use Identity matrix as guess when computing loop closure transform, otherwise no guess is used, thus assuming that registration strategy selected (Reg/Strategy) can deal with transformation estimation without guess.
    RGBD/LoopClosureReextractFeatures bool false Extract features even if there are some already in the nodes. Raw features are not saved in database.
    RGBD/LocalBundleOnLoopClosure bool false Do local bundle adjustment with neighborhood of the loop closure.
    RGBD/InvertedReg bool false On loop closure, do registration from the target to reference instead of reference to target.
    RGBD/CreateOccupancyGrid bool false Create local occupancy grid maps. See "Grid" group for parameters.
    RGBD/MarkerDetection bool false Detect static markers to be added as landmarks for graph optimization. If input data have already landmarks, this will be ignored. See "Marker" group for parameters.
    RGBD/LoopCovLimited bool false Limit covariance of non-neighbor links to minimum covariance of neighbor links. In other words, if covariance of a loop closure link is smaller than the minimum covariance of odometry links, its covariance is set to minimum covariance of odometry links.
    RGBD/MaxOdomCacheSize int 10 Maximum odometry cache size. Used only in localization mode (when Mem/IncrementalMemory=false). This is used to get smoother localizations and to verify localization transforms (when RGBD/OptimizeMaxError!=0) to make sure we don't teleport to a location very similar to one we previously localized on. Set 0 to disable caching.
    RGBD/LocalizationSmoothing bool true Adjust localization constraints based on optimized odometry cache poses (when RGBD/MaxOdomCacheSize>0).
    RGBD/LocalizationPriorError double 0.001 The corresponding variance (error x error) set to priors of the map's poses during localization (when RGBD/MaxOdomCacheSize>0).
    RGBD/LocalizationSecondTryWithoutProximityLinks bool true When localization is rejected by graph optimization validation, try a second time without proximity links if landmark or loop closure links are also present in odometry cache (see RGBD/MaxOdomCacheSize). If it succeeds, the proximity links are removed. This assumes that global loop closure and landmark links are more accurate than proximity links.
    RGBD/ProximityByTime bool false Detection over all locations in STM.
    RGBD/ProximityBySpace bool true Detection over locations (in Working Memory) near in space.
    RGBD/ProximityMaxGraphDepth int 50 Maximum depth from the current/last loop closure location and the local loop closure hypotheses. Set 0 to ignore.
    RGBD/ProximityMaxPaths int 3 Maximum paths compared (from the most recent) for proximity detection. 0 means no limit.
    RGBD/ProximityPathFilteringRadius float 1 Path filtering radius to reduce the number of nodes to compare in a path in one-to-many proximity detection. The nearest node in a path should be inside that radius to be considered for one-to-one proximity detection.
    RGBD/ProximityPathMaxNeighbors int 0 Maximum neighbor nodes compared on each path for one-to-many proximity detection. Set to 0 to disable one-to-many proximity detection (by merging the laser scans).
    RGBD/ProximityPathRawPosesUsed bool true When comparing to a local path for one-to-many proximity detection, merge the scans using the odometry poses (with neighbor link optimizations) instead of the ones in the optimized local graph.
    RGBD/ProximityAngle float 45 Maximum angle (degrees) for one-to-one proximity detection.
    RGBD/ProximityOdomGuess bool false Use odometry as motion guess for one-to-one proximity detection.
    RGBD/ProximityGlobalScanMap bool false Create a global assembled map from laser scans for one-to-many proximity detection, replacing the original one-to-many proximity detection (i.e., detection against local paths). Only used in localization mode (Mem/IncrementalMemory=false), otherwise original one-to-many proximity detection is done. Note also that if graph is modified (i.e., memory management is enabled or robot jumps from one disjoint session to another in same database), the global scan map is cleared and one-to-many proximity detection is reverted to original approach.
    RGBD/ProximityMergedScanCovFactor double 100.0 Covariance factor for one-to-many proximity detection (when RGBD/ProximityPathMaxNeighbors>0 and scans are used).
    +

    +

    +Optimizer

    +

    Graph optimization back-end.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Optimizer/Strategy int 2 with defined(RTABMAP_GTSAM)
    +1 with defined(RTABMAP_G2O)
    +3 with defined(RTABMAP_CERES)
    +0 otherwise
    Graph optimization strategy: 0=TORO, 1=g2o, 2=GTSAM and 3=Ceres.
    Optimizer/Iterations int 20 with defined(RTABMAP_GTSAM) or defined(RTABMAP_G2O) or defined(RTABMAP_CERES)
    +100 otherwise
    Optimization iterations.
    Optimizer/Epsilon double 0.00001 with defined(RTABMAP_GTSAM)
    +0.0 with defined(RTABMAP_G2O)
    +0.000001 with defined(RTABMAP_CERES)
    +0.00001 otherwise
    Stop optimizing when the error improvement is less than this value.
    Optimizer/VarianceIgnored bool false Ignore constraints' variance. If checked, identity information matrix is used for each constraint. Otherwise, an information matrix is generated from the variance saved in the links.
    Optimizer/Robust bool false Robust graph optimization using Vertigo (only work for g2o and GTSAM optimization strategies).
    Optimizer/PriorsIgnored bool true Ignore prior constraints (global pose or GPS) while optimizing. Currently only g2o and gtsam optimization supports this.
    Optimizer/LandmarksIgnored bool false Ignore landmark constraints while optimizing. Currently only g2o and gtsam optimization supports this.
    Optimizer/GravitySigma float 0.3 with defined(RTABMAP_G2O) \|\| defined(RTABMAP_GTSAM)
    +0.0 otherwise
    Gravity sigma value (>=0, typically between 0.1 and 0.3). Optimization is done while preserving gravity orientation of the poses. This should be used only with visual/lidar inertial odometry approaches, for which we assume that all odometry poses are aligned with gravity. Set to 0 to disable gravity constraints. Currently supported only with g2o and GTSAM optimization strategies (see Optimizer/Strategy).
    Optimizer/Baseline double 0.075 When doing bundle adjustment with RGB-D data (mono camera + depth), set a fake baseline (m) so the BA backend treats depth as stereo disparity. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Set to 0 to keep the problem mono (depth observations are ignored). For real stereo data the baseline in the calibration (Tx) is used directly.
    Optimizer/PixelVariance double 1.0 Pixel variance used on the u/v axes of every bundle adjustment reprojection edge. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Should approximate the squared 1-sigma keypoint localization error in pixels. Set higher (e.g. 4-9) if features are noisy (low texture, motion blur, low light, or large detector scale). Set lower (e.g. 0.01-0.1) if features are sub-pixel refined (Lucas-Kanade tracking, parabolic peak interpolation). Intuition: the lower the pixel variance, the more the optimizer trusts the keypoint positions.
    Optimizer/DisparityVariance double 1.0 Disparity variance used on the disparity axis (u - u_right) of stereo / RGB-D bundle adjustment edges. Applies to all BA-capable backends (g2o, GTSAM, Ceres). Defaults to the same value as PixelVariance for backward compatibility. Set higher (e.g. 2-4) if your depth source is noisier than your feature detector's u/v precision (typical for stereo block matchers / SGM at long range). Set lower (e.g. 0.01-0.1) if your depth source is more accurate than the u/v detector (typical for ToF / LiDAR-fused depth where range is measured directly rather than triangulated). Intuition: the lower the disparity variance, the more the optimizer trusts the depth measurements. Geometric note: wider baseline and/or higher image resolution improve a block matcher's effective disparity precision (larger disparity magnitudes and finer sub-pixel refinement), so wide-baseline high-resolution stereo pairs can usually afford a lower disparity variance (e.g. 0.1-0.5); narrow-baseline low-resolution pairs should keep it higher (e.g. 1-4).
    Optimizer/RobustKernelDelta double 8 Robust kernel delta used for bundle adjustment (0 means don't use robust kernel). Applies to all BA-capable backends (g2o, GTSAM, Ceres). Observations with chi2 over this threshold will be ignored in the second optimization pass.
    +

    +

    +g2o

    + + + + + + + +
    Key Type Default Description
    g2o/Solver int 3 with defined(RTABMAP_ORB_SLAM)
    +0 otherwise
    0=csparse 1=pcg 2=cholmod 3=Eigen
    g2o/Optimizer int 0 0=Levenberg 1=GaussNewton
    +

    +

    +GTSAM

    + + + + + + + + + + + +
    Key Type Default Description
    GTSAM/Optimizer int 1 0=Levenberg 1=GaussNewton 2=Dogleg
    GTSAM/Incremental bool false Do graph optimization incrementally (iSAM2) to increase optimization speed on loop closures. Note that only GaussNewton and Dogleg optimization algorithms are supported (GTSAM/Optimizer) in this mode.
    GTSAM/IncRelinearizeThreshold double 0.01 Only relinearize variables whose linear delta magnitude is greater than this threshold. See GTSAM::ISAM2 doc for more info.
    GTSAM/IncRelinearizeSkip int 1 Only relinearize any variables every X calls to ISAM2::update(). See GTSAM::ISAM2 doc for more info.
    +

    +

    +Odom

    +

    Odometry front-end shared settings.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Odom/Strategy int 0 0=Frame-to-Map (F2M) 1=Frame-to-Frame (F2F) 2=Fovis 3=viso2 4=DVO-SLAM 5=ORB_SLAM 6=OKVIS 7=LOAM 8=MSCKF_VIO 9=VINS-Fusion 10=OpenVINS 11=FLOAM 12=Open3D 13=cuVSLAM 14=LIO-SAM
    Odom/ResetCountdown int 0 Automatically reset odometry after X consecutive images where odometry cannot be computed (a value of 0 disables auto-reset). When a reset occurs, odometry resumes from the last successfully computed pose with large covariance to trigger a new map. If external odometry is used, it will also be reset based on the motion estimated relative to the last computed pose but no large covariance will be received, so that a new map won't be triggered.
    Odom/Holonomic bool true If the robot is holonomic (strafing commands can be issued). If not, y value will be estimated from x and yaw values (y=x*tan(yaw)).
    Odom/FillInfoData bool true Fill info with data (inliers/outliers features).
    Odom/ImageBufferSize unsigned int 1 Data buffer size (0 min inf).
    Odom/FilteringStrategy int 0 0=No filtering 1=Kalman filtering 2=Particle filtering. This filter is used to smooth the odometry output.
    Odom/ParticleSize unsigned int 400 Number of particles of the filter.
    Odom/ParticleNoiseT float 0.002 Noise (m) of translation components (x,y,z).
    Odom/ParticleLambdaT float 100 Lambda of translation components (x,y,z).
    Odom/ParticleNoiseR float 0.002 Noise (rad) of rotational components (roll,pitch,yaw).
    Odom/ParticleLambdaR float 100 Lambda of rotational components (roll,pitch,yaw).
    Odom/KalmanProcessNoise float 0.001 Process noise covariance value.
    Odom/KalmanMeasurementNoise float 0.01 Process measurement covariance value.
    Odom/GuessMotion bool true Guess next transformation from the last motion computed.
    Odom/GuessSmoothingDelay float 0 Guess smoothing delay (s). Estimated velocity is averaged based on last transforms up to this maximum delay. This can help to get smoother velocity prediction. Last velocity computed is used directly if Odom/FilteringStrategy is set or the delay is below the odometry rate.
    Odom/KeyFrameThr float 0.3 [Visual] Create a new keyframe when the number of inliers drops under this ratio of features in last frame. Setting the value to 0 means that a keyframe is created for each processed frame.
    Odom/VisKeyFrameThr int 150 [Visual] Create a new keyframe when the number of inliers drops under this threshold. Setting the value to 0 means that a keyframe is created for each processed frame.
    Odom/ScanKeyFrameThr float 0.9 [Geometry] Create a new keyframe when the number of ICP inliers drops under this ratio of points in last frame's scan. Setting the value to 0 means that a keyframe is created for each processed frame.
    Odom/ImageDecimation unsigned int 1 Decimation of the RGB image before registration. If depth size is larger than decimated RGB size, depth is decimated to be always at most equal to RGB size. If Vis/DepthAsMask is true and if depth is smaller than decimated RGB, depth may be interpolated to match RGB size for feature detection.
    Odom/AlignWithGround bool false Align odometry with the ground on initialization.
    Odom/Deskewing bool true Lidar deskewing. If input lidar has time channel, it will be deskewed with a constant motion model (with IMU orientation and/or guess if provided).
    +

    +

    +OdomF2M

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomF2M/MaxSize int 2000 [Visual] Local map size: If > 0 (example 5000), the odometry will maintain a local map of X maximum words.
    OdomF2M/MaxNewFeatures int 0 [Visual] Maximum features (sorted by keypoint response) added to local map from a new key-frame. 0 means no limit.
    OdomF2M/InitDepthFactor float 0.05 [Visual] Depth factor used to initialize depth of features without depth. Depth = Factor * fx.
    OdomF2M/FloorThreshold float 0.0 [Visual] Only track features in 3D feature map that are over this threshold (height in base frame). Can be useful to ignore reflections on the floor. 0 means disabled.
    OdomF2M/ScanMaxSize int 2000 [Geometry] Maximum local scan map size.
    OdomF2M/ScanSubtractRadius float 0.05 [Geometry] Radius used to filter points of a new added scan to local map. This could match the voxel size of the scans.
    OdomF2M/ScanSubtractAngle float 45 [Geometry] Max angle (degrees) used to filter points of a new added scan to local map (when OdomF2M/ScanSubtractRadius>0). 0 means any angle.
    OdomF2M/ScanRange float 0 [Geometry] Distance Range used to filter points of local map (when > 0). 0 means local map is updated using time and not range.
    OdomF2M/ValidDepthRatio float 0.75 If a new frame has points without valid depth, they are added to local feature map only if points with valid depth on total points is over this ratio. Setting to 1 means no points without valid depth are added to local feature map.
    OdomF2M/BundleAdjustment int 1 with defined(RTABMAP_G2O) \|\| defined(RTABMAP_ORB_SLAM)
    +0 otherwise
    Local bundle adjustment. Value matches the Optimizer/Strategy parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.
    OdomF2M/BundleAdjustmentMaxFrames int 10 Maximum frames used for bundle adjustment (0=inf or all current frames in the local map).
    OdomF2M/BundleAdjustmentMinMotion float 0.0 To create a new keyframe with bundle adjustment, a minimum motion (in pixels) can be required. The motion is computed by the average distance between inliers of the previous keyframe and new frame.
    OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature int 0 Maximum keyframes per feature for bundle adjustment. 0 means not limit.
    OdomF2M/BundleUpdateFeatureMapOnAllFrames bool false Update 3D local feature map on every frame with bundle adjustment. Recommended if Vis/DepthAsMask=false and Mem/UseOdomFeatures=true so that features without depth are better triangulated on every frame (not only on keyframes). If disabled, the feature map is updated only when a new keyframe is added (legacy approach).
    +

    +

    +OdomMono

    + + + + + + + + + + + +
    Key Type Default Description
    OdomMono/InitMinFlow float 100 Minimum optical flow required for the initialization step.
    OdomMono/InitMinTranslation float 0.1 Minimum translation required for the initialization step.
    OdomMono/MinTranslation float 0.02 Minimum translation to add new points to local map. On initialization, translation x 5 is used as the minimum.
    OdomMono/MaxVariance float 0.01 Maximum variance to add new points to local map.
    +

    +

    +OdomFovis

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomFovis/FeatureWindowSize int 9 The size of the n x n image patch surrounding each feature, used for keypoint matching.
    OdomFovis/MaxPyramidLevel int 3 The maximum Gaussian pyramid level to process the image at. Pyramid level 1 corresponds to the original image.
    OdomFovis/MinPyramidLevel int 0 The minimum pyramid level.
    OdomFovis/TargetPixelsPerFeature int 250 Specifies the desired feature density as a ratio of input image pixels per feature detected. This number is used to control the adaptive feature thresholding.
    OdomFovis/FastThreshold int 20 FAST threshold.
    OdomFovis/UseAdaptiveThreshold bool true Use FAST adaptive threshold.
    OdomFovis/FastThresholdAdaptiveGain double 0.005 FAST threshold adaptive gain.
    OdomFovis/UseHomographyInitialization bool true Use homography initialization.
    OdomFovis/UseBucketing bool true
    OdomFovis/BucketWidth int 80
    OdomFovis/BucketHeight int 80
    OdomFovis/MaxKeypointsPerBucket int 25
    OdomFovis/UseImageNormalization bool false
    OdomFovis/InlierMaxReprojectionError double 1.5 The maximum image-space reprojection error (in pixels) a feature match is allowed to have and still be considered an inlier in the set of features used for motion estimation.
    OdomFovis/CliqueInlierThreshold double 0.1 See Howard's greedy max-clique algorithm for determining the maximum set of mutually consisten feature matches. This specifies the compatibility threshold, in meters.
    OdomFovis/MinFeaturesForEstimate int 20 Minimum number of features in the inlier set for the motion estimate to be considered valid.
    OdomFovis/MaxMeanReprojectionError double 10.0 Maximum mean reprojection error over the inlier feature matches for the motion estimate to be considered valid.
    OdomFovis/UseSubpixelRefinement bool true Specifies whether or not to refine feature matches to subpixel resolution.
    OdomFovis/FeatureSearchWindow int 25 Specifies the size of the search window to apply when searching for feature matches across time frames. The search is conducted around the feature location predicted by the initial rotation estimate.
    OdomFovis/UpdateTargetFeaturesWithRefined bool false When subpixel refinement is enabled, the refined feature locations can be saved over the original feature locations. This has a slightly negative impact on frame-to-frame visual odometry, but is likely better when using this library as part of a visual SLAM algorithm.
    OdomFovis/StereoRequireMutualMatch bool true
    OdomFovis/StereoMaxDistEpipolarLine double 1.5
    OdomFovis/StereoMaxRefinementDisplacement double 1.0
    OdomFovis/StereoMaxDisparity int 128
    +

    +

    +OdomViso2

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomViso2/RansacIters int 200 Number of RANSAC iterations.
    OdomViso2/InlierThreshold double 2.0 Fundamental matrix inlier threshold.
    OdomViso2/Reweighting bool true Lower border weights (more robust to calibration errors).
    OdomViso2/MatchNmsN int 3 Non-max-suppression: min. distance between maxima (in pixels).
    OdomViso2/MatchNmsTau int 50 Non-max-suppression: interest point peakiness threshold.
    OdomViso2/MatchBinsize int 50 Matching bin width/height (affects efficiency only).
    OdomViso2/MatchRadius int 200 Matching radius (du/dv in pixels).
    OdomViso2/MatchDispTolerance int 2 Disparity tolerance for stereo matches (in pixels).
    OdomViso2/MatchOutlierDispTolerance int 5 Outlier removal: disparity tolerance (in pixels).
    OdomViso2/MatchOutlierFlowTolerance int 5 Outlier removal: flow tolerance (in pixels).
    OdomViso2/MatchMultiStage bool true Multistage matching (denser and faster).
    OdomViso2/MatchHalfResolution bool true Match at half resolution, refine at full resolution.
    OdomViso2/MatchRefinement int 1 Refinement (0=none,1=pixel,2=subpixel).
    OdomViso2/BucketMaxFeatures int 2 Maximal number of features per bucket.
    OdomViso2/BucketWidth double 50 Width of bucket.
    OdomViso2/BucketHeight double 50 Height of bucket.
    +

    +

    +OdomORBSLAM

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomORBSLAM/VocPath string "" Path to ORB vocabulary (*.txt).
    OdomORBSLAM/Bf double 0.076 Fake IR projector baseline (m) used only when stereo is not used.
    OdomORBSLAM/ThDepth double 40.0 Close/Far threshold. Baseline times.
    OdomORBSLAM/Fps float 0.0 Camera FPS (0 to estimate from input data).
    OdomORBSLAM/MaxFeatures int 1000 Maximum ORB features extracted per frame.
    OdomORBSLAM/MapSize int 3000 Maximum size of the feature map (0 means infinite). Only supported with ORB_SLAM2.
    OdomORBSLAM/Inertial bool false Enable IMU. Only supported with ORB_SLAM3.
    OdomORBSLAM/GyroNoise double 0.01 IMU gyroscope "white noise".
    OdomORBSLAM/AccNoise double 0.1 IMU accelerometer "white noise".
    OdomORBSLAM/GyroWalk double 0.000001 IMU gyroscope "random walk".
    OdomORBSLAM/AccWalk double 0.0001 IMU accelerometer "random walk".
    OdomORBSLAM/SamplingRate double 0 IMU sampling rate (0 to estimate from input data).
    +

    +

    +OdomOKVIS

    + + + + + +
    Key Type Default Description
    OdomOKVIS/ConfigPath string "" Path of OKVIS config file.
    +

    +

    +OdomLOAM

    + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomLOAM/Sensor int 2 Velodyne sensor: 0=VLP-16, 1=HDL-32, 2=HDL-64E
    OdomLOAM/ScanPeriod float 0.1 Scan period (s)
    OdomLOAM/Resolution float 0.2 Map resolution
    OdomLOAM/LinVar float 0.01 Linear output variance.
    OdomLOAM/AngVar float 0.01 Angular output variance.
    OdomLOAM/LocalMapping bool true Local mapping. It adds more time to compute odometry, but accuracy is significantly improved.
    +

    +

    +OdomMSCKF

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomMSCKF/GridRow int 4
    OdomMSCKF/GridCol int 5
    OdomMSCKF/GridMinFeatureNum int 3
    OdomMSCKF/GridMaxFeatureNum int 4
    OdomMSCKF/PyramidLevels int 3
    OdomMSCKF/PatchSize int 15
    OdomMSCKF/FastThreshold int 10
    OdomMSCKF/MaxIteration int 30
    OdomMSCKF/TrackPrecision double 0.01
    OdomMSCKF/RansacThreshold double 3
    OdomMSCKF/StereoThreshold double 5
    OdomMSCKF/PositionStdThreshold double 8.0
    OdomMSCKF/RotationThreshold double 0.2618
    OdomMSCKF/TranslationThreshold double 0.4
    OdomMSCKF/TrackingRateThreshold double 0.5
    OdomMSCKF/OptTranslationThreshold double 0
    OdomMSCKF/NoiseGyro double 0.005
    OdomMSCKF/NoiseAcc double 0.05
    OdomMSCKF/NoiseGyroBias double 0.001
    OdomMSCKF/NoiseAccBias double 0.01
    OdomMSCKF/NoiseFeature double 0.035
    OdomMSCKF/InitCovVel double 0.25
    OdomMSCKF/InitCovGyroBias double 0.01
    OdomMSCKF/InitCovAccBias double 0.01
    OdomMSCKF/InitCovExRot double 0.00030462
    OdomMSCKF/InitCovExTrans double 0.000025
    OdomMSCKF/MaxCamStateSize int 20
    +

    +

    +OdomVINSFusion

    + + + + + +
    Key Type Default Description
    OdomVINSFusion/ConfigPath string "" Path of VINS-Fusion config file.
    +

    +

    +OdomOpenVINS

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomOpenVINS/ConfigPath string "" Path of OpenVINS config file (*.yaml). Same format used than OpenVINS library. Note that any parameter from that config file will overwrite the same parameter in OdomOpenVINS group.
    OdomOpenVINS/UseStereo bool true If we have more than 1 camera, if we should try to track stereo constraints between pairs.
    OdomOpenVINS/UseKLT bool true If true we will use KLT, otherwise use a ORB descriptor + robust matching.
    OdomOpenVINS/NumPts int 200 Number of points (per camera) we will extract and try to track.
    OdomOpenVINS/MinPxDist int 15 Eistance between features (features near each other provide less information).
    OdomOpenVINS/FiTriangulate1d bool false If we should perform 1d triangulation instead of 3d.
    OdomOpenVINS/FiRefineFeatures bool true If we should perform Levenberg-Marquardt refinement.
    OdomOpenVINS/FiMaxRuns int 5 Max runs for Levenberg-Marquardt.
    OdomOpenVINS/FiMaxBaseline double 40 Max baseline ratio to accept triangulated features.
    OdomOpenVINS/FiMaxCondNumber double 10000 Max condition number of linear triangulation matrix accept triangulated features.
    OdomOpenVINS/UseFEJ bool true If first-estimate Jacobians should be used (enable for good consistency).
    OdomOpenVINS/Integration int 1 0=discrete, 1=rk4, 2=analytical (if rk4 or analytical used then analytical covariance propagation is used).
    OdomOpenVINS/CalibCamExtrinsics bool false Bool to determine whether or not to calibrate imu-to-camera pose.
    OdomOpenVINS/CalibCamIntrinsics bool false Bool to determine whether or not to calibrate camera intrinsics.
    OdomOpenVINS/CalibCamTimeoffset bool false Bool to determine whether or not to calibrate camera to IMU time offset.
    OdomOpenVINS/CalibIMUIntrinsics bool false Bool to determine whether or not to calibrate the IMU intrinsics.
    OdomOpenVINS/CalibIMUGSensitivity bool false Bool to determine whether or not to calibrate the Gravity sensitivity.
    OdomOpenVINS/MaxClones int 11 Max clone size of sliding window.
    OdomOpenVINS/MaxSLAM int 50 Max number of estimated SLAM features.
    OdomOpenVINS/MaxSLAMInUpdate int 25 Max number of SLAM features we allow to be included in a single EKF update..
    OdomOpenVINS/MaxMSCKFInUpdate int 50 Max number of MSCKF features we will use at a given image timestep..
    OdomOpenVINS/FeatRepMSCKF int 0 What representation our features are in (msckf features).
    OdomOpenVINS/FeatRepSLAM int 4 What representation our features are in (slam features).
    OdomOpenVINS/DtSLAMDelay double 0.0 Delay, in seconds, that we should wait from init before we start estimating SLAM features.
    OdomOpenVINS/GravityMag double 9.81 Gravity magnitude in the global frame (i.e. should be 9.81 typically).
    OdomOpenVINS/LeftMaskPath string "" Mask for left image.
    OdomOpenVINS/RightMaskPath string "" Mask for right image.
    OdomOpenVINS/InitWindowTime double 2.0 Amount of time we will initialize over (seconds).
    OdomOpenVINS/InitIMUThresh double 1.0 Variance threshold on our acceleration to be classified as moving.
    OdomOpenVINS/InitMaxDisparity double 10.0 Max disparity to consider the platform stationary (dependent on resolution).
    OdomOpenVINS/InitMaxFeatures int 50 How many features to track during initialization (saves on computation).
    OdomOpenVINS/InitDynUse bool false If dynamic initialization should be used.
    OdomOpenVINS/InitDynMLEOptCalib bool false If we should optimize calibration during intialization (not recommended).
    OdomOpenVINS/InitDynMLEMaxIter int 50 How many iterations the MLE refinement should use (zero to skip the MLE).
    OdomOpenVINS/InitDynMLEMaxTime double 0.05 How many seconds the MLE should be completed in.
    OdomOpenVINS/InitDynMLEMaxThreads int 6 How many threads the MLE should use.
    OdomOpenVINS/InitDynNumPose int 6 Number of poses to use within our window time (evenly spaced).
    OdomOpenVINS/InitDynMinDeg double 10.0 Orientation change needed to try to init.
    OdomOpenVINS/InitDynInflationOri double 10.0 What to inflate the recovered q_GtoI covariance by.
    OdomOpenVINS/InitDynInflationVel double 100.0 What to inflate the recovered v_IinG covariance by.
    OdomOpenVINS/InitDynInflationBg double 10.0 What to inflate the recovered bias_g covariance by.
    OdomOpenVINS/InitDynInflationBa double 100.0 What to inflate the recovered bias_a covariance by.
    OdomOpenVINS/InitDynMinRecCond double 1e-15 Reciprocal condition number thresh for info inversion.
    OdomOpenVINS/TryZUPT bool true If we should try to use zero velocity update.
    OdomOpenVINS/ZUPTChi2Multiplier double 0.0 Chi2 multiplier for zero velocity.
    OdomOpenVINS/ZUPTMaxVelodicy double 0.1 Max velocity we will consider to try to do a zupt (i.e. if above this, don't do zupt).
    OdomOpenVINS/ZUPTNoiseMultiplier double 10.0 Multiplier of our zupt measurement IMU noise matrix (default should be 1.0).
    OdomOpenVINS/ZUPTMaxDisparity double 0.5 Max disparity we will consider to try to do a zupt (i.e. if above this, don't do zupt).
    OdomOpenVINS/ZUPTOnlyAtBeginning bool false If we should only use the zupt at the very beginning static initialization phase.
    OdomOpenVINS/AccelerometerNoiseDensity double 0.01 [m/s^2/sqrt(Hz)] (accel "white noise").
    OdomOpenVINS/AccelerometerRandomWalk double 0.001 [m/s^3/sqrt(Hz)] (accel bias diffusion).
    OdomOpenVINS/GyroscopeNoiseDensity double 0.001 [rad/s/sqrt(Hz)] (gyro "white noise").
    OdomOpenVINS/GyroscopeRandomWalk double 0.0001 [rad/s^2/sqrt(Hz)] (gyro bias diffusion).
    OdomOpenVINS/UpMSCKFSigmaPx double 1.0 Pixel noise for MSCKF features.
    OdomOpenVINS/UpMSCKFChi2Multiplier double 1.0 Chi2 multiplier for MSCKF features.
    OdomOpenVINS/UpSLAMSigmaPx double 1.0 Pixel noise for SLAM features.
    OdomOpenVINS/UpSLAMChi2Multiplier double 1.0 Chi2 multiplier for SLAM features.
    +

    +

    +OdomOpen3D

    + + + + + + + +
    Key Type Default Description
    OdomOpen3D/MaxDepth float 3.0 Maximum depth.
    OdomOpen3D/Method int 0 Registration method: 0=PointToPlane, 1=Intensity, 2=Hybrid.
    +

    +

    +OdomCuVSLAM

    + + + + + +
    Key Type Default Description
    OdomCuVSLAM/MulticamMode int 0 cuVSLAM multicam_mode setting: 0=moderate, 1=performance, 2=precision.
    +

    +

    +OdomLIOSAM

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    OdomLIOSAM/ConfigPath string "" Path to LIO-SAM params.yaml config file. When set, sensor/IMU/feature parameters are loaded from the file and the individual parameters below are ignored.
    OdomLIOSAM/Sensor int 0 LiDAR sensor: 0=Velodyne, 1=Ouster, 2=Livox
    OdomLIOSAM/NScan int 16 Number of LiDAR channels (16, 32, 64, 128).
    OdomLIOSAM/HorizonScan int 1800 Horizontal resolution (Velodyne:1800, Ouster:512/1024/2048).
    OdomLIOSAM/ImuAccNoise float 0.01 IMU accelerometer white noise.
    OdomLIOSAM/ImuGyrNoise float 0.001 IMU gyroscope white noise.
    OdomLIOSAM/ImuAccBiasN float 0.0002 IMU accelerometer bias noise.
    OdomLIOSAM/ImuGyrBiasN float 0.00003 IMU gyroscope bias noise.
    OdomLIOSAM/ImuGravity float 9.80511 Gravity magnitude.
    OdomLIOSAM/EdgeThreshold float 1.0 Edge feature curvature threshold.
    OdomLIOSAM/SurfThreshold float 0.1 Surface feature curvature threshold.
    OdomLIOSAM/LinVar float 0.01 Linear output variance.
    OdomLIOSAM/AngVar float 0.01 Angular output variance.
    +

    +

    +Reg

    +

    Registration strategy shared by loop closures and proximity detection.

    + + + + + + + + + +
    Key Type Default Description
    Reg/RepeatOnce bool true Do a second registration with the output of the first registration as guess. Only done if no guess was provided for the first registration (like on loop closure). It can be useful if the registration approach used can use a guess to get better matches.
    Reg/Strategy int 0 0=Vis, 1=Icp, 2=VisIcp
    Reg/Force3DoF bool false Force 3 degrees-of-freedom transform (3Dof: x,y and yaw). Parameters z, roll and pitch will be set to 0.
    +

    +

    +Vis

    +

    Visual registration (feature extraction, matching and PnP).

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Vis/EstimationType int 1 Motion estimation approach: 0:3D->3D, 1:3D->2D (PnP), 2:2D->2D (Epipolar Geometry)
    Vis/InlierDistance float 0.1 [Vis/EstimationType = 0] Maximum distance for feature correspondences. Used by 3D->3D estimation approach.
    Vis/RefineIterations int 5 [Vis/EstimationType = 0] Number of iterations used to refine the transformation found by RANSAC. 0 means that the transformation is not refined.
    Vis/PnPReprojError float 2 [Vis/EstimationType = 1] PnP reprojection error.
    Vis/PnPFlags int 0 [Vis/EstimationType = 1] PnP flags: 0=Iterative, 1=EPNP, 2=P3P
    Vis/PnPRefineIterations int 0 with defined(RTABMAP_G2O) \|\| defined(RTABMAP_ORB_SLAM)
    +1 otherwise
    [Vis/BundleAdjustment = 1] Refine iterations. Set to 0 if Vis/EstimationType is also used.
    Vis/PnPVarianceMedianRatio int 4 [Vis/EstimationType = 1] Ratio used to compute variance of the estimated transformation if 3D correspondences are provided (should be > 1). The higher it is, the smaller the covariance will be. With accurate depth estimation, this could be set to 2. For depth estimated by stereo, 4 or more maybe used to ignore large errors of very far points.
    Vis/PnPMaxVariance float 0.0 [Vis/EstimationType = 1] Max linear variance between 3D point correspondences after PnP. 0 means disabled.
    Vis/PnPSamplingPolicy unsigned int 1 [Vis/EstimationType = 1] Multi-camera random sampling policy: 0=AUTO, 1=ANY, 2=HOMOGENEOUS. With HOMOGENEOUS policy, RANSAC will be done uniformly against all cameras, so at least 2 matches per camera are required. With ANY policy, RANSAC is not constraint to sample on all cameras at the same time. AUTO policy will use HOMOGENEOUS if there are at least 2 matches per camera, otherwise it will fallback to ANY policy.
    Vis/PnPSplitLinearCovComponents bool false [Vis/EstimationType = 1] Compute variance for each linear component instead of using the combined XYZ variance for all linear components.
    Vis/EpipolarGeometryVar float 0.1 [Vis/EstimationType = 2] Epipolar geometry maximum variance to accept the transformation.
    Vis/MinInliers int 20 Minimum feature correspondences to compute/accept the transformation.
    Vis/MeanInliersDistance float 0.0 Maximum distance (m) of the mean distance of inliers from the camera to accept the transformation. 0 means disabled.
    Vis/MinInliersDistribution float 0.0 Minimum distribution value of the inliers in the image to accept the transformation. The distribution is the second eigen value of the PCA (Principal Component Analysis) on the keypoints of the normalized image [-0.5, 0.5]. The value would be between 0 and 0.5. 0 means disabled.
    Vis/Iterations int 300 Maximum iterations to compute the transform.
    Vis/FeatureType int 8 with CV_MAJOR_VERSION &gt; 2 && !defined(HAVE_OPENCV_XFEATURES2D)
    +6 otherwise
    0=SURF 1=SIFT 2=ORB 3=FAST/FREAK 4=FAST/BRIEF 5=GFTT/FREAK 6=GFTT/BRIEF 7=BRISK 8=GFTT/ORB 9=KAZE 10=ORB-OCTREE 11=SuperPoint 12=SURF/FREAK 13=GFTT/DAISY 14=SURF/DAISY 15=PyDetector 16=SuperPoint-Rpautrat
    Vis/MaxFeatures int 1000 0 no limits.
    Vis/SSC bool false If true, SSC (Suppression via Square Covering) is applied to limit keypoints.
    Vis/MaxDepth float 0 Max depth of the features (0 means no limit).
    Vis/MinDepth float 0 Min depth of the features (0 means no limit).
    Vis/DepthAsMask bool true Use depth image as mask when extracting features.
    Vis/DepthMaskFloorThr float 0.0 Filter floor from depth mask below specified threshold (m) before extracting features. 0 means disabled. Ignored if Vis/DepthAsMask is false.
    Vis/RoiRatios string 0.0 0.0 0.0 0.0 Region of interest ratios [left, right, top, bottom].
    Vis/SubPixWinSize int 3 See cv::cornerSubPix().
    Vis/SubPixIterations int 0 See cv::cornerSubPix(). 0 disables sub pixel refining.
    Vis/SubPixEps float 0.02 See cv::cornerSubPix().
    Vis/GridRows int 1 Number of rows of the grid used to extract uniformly "@ref param_VisMaxFeatures "Vis/MaxFeatures" / grid cells" features from each cell.
    Vis/GridCols int 1 Number of columns of the grid used to extract uniformly "@ref param_VisMaxFeatures "Vis/MaxFeatures" / grid cells" features from each cell.
    Vis/CorType int 0 Correspondences computation approach: 0=Features Matching, 1=Optical Flow
    Vis/CorNNType int 1 [Vis/CorType=0] FLANN Linear=0, FLANN KdTree=1, FLANN LSH=2, Brute Force=3, Brute Force GPU=4, Brute Force Cross Check=5, SuperGlue=6, GMS=7, FLANN KdTree Single=8, NanoFLANN KdTree=9. Used for features matching approach.
    Vis/CorNNDR float 0.8 [Vis/CorType=0] NNDR: nearest neighbor distance ratio. Used for knn features matching approach.
    Vis/CorGuessWinSize int 40 [Vis/CorType=0] Matching window size (pixels) around projected points when a guess transform is provided to find correspondences. 0 means disabled.
    Vis/CorGuessMatchToProjection bool false [Vis/CorType=0] Match frame's corners to source's projected points (when guess transform is provided) instead of projected points to frame's corners.
    Vis/CorFlowWinSize int 16 [Vis/CorType=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.
    Vis/CorFlowIterations int 30 [Vis/CorType=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.
    Vis/CorFlowEps float 0.01 [Vis/CorType=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.
    Vis/CorFlowMaxLevel int 3 [Vis/CorType=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach.
    Vis/CorFlowUseMinEigenVals bool true [Vis/CorType=1] See cv::calcOpticalFlowPyrLK(). Used for optical flow approach. Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.
    Vis/CorFlowMinEigThreshold float 1e-4 [Vis/CorFlowUseMinEigenVals=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.
    Vis/CorFlowErrorThreshold float 20 [Vis/CorFlowUseMinEigenVals=false] Filter out features with error greater than this threshold.
    Vis/CorFlowGpu bool false [Vis/CorType=1] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that Vis/CorFlowUseMinEigenVals is not used in the GPU implementation.
    Vis/BundleAdjustment int 1 with defined(RTABMAP_G2O) \|\| defined(RTABMAP_ORB_SLAM)
    +0 otherwise
    Optimization with bundle adjustment. Value matches the Optimizer/Strategy parameter: 0=disabled (TORO is not BA-capable), 1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba.
    +

    +

    +PyMatcher

    + + + + + + + + + + + + + +
    Key Type Default Description
    PyMatcher/Path string "" Path to python script file (see available ones in rtabmap/corelib/src/python/*). See the header to see where the script should be copied.
    PyMatcher/Iterations int 20 Sinkhorn iterations. Used by SuperGlue.
    PyMatcher/Threshold float 0.2 Used by SuperGlue.
    PyMatcher/Cuda bool true Used by SuperGlue.
    PyMatcher/Model string indoor For SuperGlue, set only "indoor" or "outdoor". For OANet, set path to one of the pth file (e.g., "OANet/model/gl3d/sift-4000/model_best.pth").
    +

    +

    +GMS

    + + + + + + + + + +
    Key Type Default Description
    GMS/WithRotation bool false Take rotation transformation into account.
    GMS/WithScale bool false Take scale transformation into account.
    GMS/ThresholdFactor double 6.0 The higher, the less matches.
    +

    +

    +PyDescriptor

    + + + + + + + +
    Key Type Default Description
    PyDescriptor/Path string "" Path to python script file (see available ones in rtabmap/corelib/src/pydescriptor/*). See the header to see where the script should be used.
    PyDescriptor/Dim int 4096 Descriptor dimension.
    +

    +

    +Icp

    +

    Geometric registration by iterative closest point.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Icp/Strategy int 1 with defined(RTABMAP_POINTMATCHER)
    +0 otherwise
    ICP implementation: 0=Point Cloud Library, 1=libpointmatcher, 2=CCCoreLib (CloudCompare).
    Icp/MaxTranslation float 0.2 Maximum ICP translation correction accepted (m).
    Icp/MaxRotation float 0.78 Maximum ICP rotation correction accepted (rad).
    Icp/VoxelSize float 0.05 Uniform sampling voxel size (0=disabled).
    Icp/DownsamplingStep int 1 Downsampling step size (1=no sampling). This is done before uniform sampling.
    Icp/RangeMin float 0 Minimum range filtering (0=disabled).
    Icp/RangeMax float 0 Maximum range filtering (0=disabled).
    Icp/MaxCorrespondenceDistance float 0.1 with defined(RTABMAP_POINTMATCHER)
    +0.05 otherwise
    Max distance for point correspondences.
    Icp/ReciprocalCorrespondences bool true To be a valid correspondence, the corresponding point in target cloud to point in source cloud should be both their closest closest correspondence.
    Icp/Iterations int 30 Max iterations.
    Icp/Epsilon float 0 Set the transformation epsilon (maximum allowable difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution.
    Icp/CorrespondenceRatio float 0.1 Ratio of matching correspondences to accept the transform.
    Icp/Force4DoF bool false Limit ICP to x, y, z and yaw DoF. Available if Icp/Strategy > 0.
    Icp/FiltersEnabled int 3 Flag to enable filters: 1="from" cloud only, 2="to" cloud only, 3=both.
    Icp/PointToPlane bool true with defined(RTABMAP_POINTMATCHER)
    +false otherwise
    Use point to plane ICP.
    Icp/PointToPlaneK int 5 Number of neighbors to compute normals for point to plane if the cloud doesn't have already normals.
    Icp/PointToPlaneRadius float 0.0 Search radius to compute normals for point to plane if the cloud doesn't have already normals.
    Icp/PointToPlaneGroundNormalsUp float 0.0 Invert normals on ground if they are pointing down (useful for ring-like 3D LiDARs). 0 means disabled, 1 means only normals perfectly aligned with -z axis. This is only done with 3D scans.
    Icp/PointToPlaneMinComplexity float 0.02 Minimum structural complexity (0.0=low, 1.0=high) of the scan to do PointToPlane registration, otherwise PointToPoint registration is done instead and strategy from Icp/PointToPlaneLowComplexityStrategy is used. This check is done only when Icp/PointToPlane=true.
    Icp/PointToPlaneComplexityCentered bool false If false (default), the complexity metric uses the uncentered second-moment matrix (1/N) * sum(n_i * n_i^T), whose smallest eigenvalue directly measures how well the surface normals span R^N. If true, uses centered PCA (cv::PCA covariance) for backwards compatibility – but the centered metric is known to mis-classify perpendicular-surface scenes as degenerate when normals are consistently viewpoint-flipped (only N distinct directions in N-D collapse to rank N-1 after centering). For true degeneracies (parallel surfaces, e.g. corridors) the two metrics agree because the normal mean is zero. The Icp/PointToPlaneMinComplexity threshold of 0.02 works under either setting.
    Icp/PointToPlaneLowComplexityStrategy int 1 If structural complexity is below Icp/PointToPlaneMinComplexity: set to 0 so that the transform is automatically rejected, set to 1 (default, legacy) to recompute the transform with PointToPoint and limit its correction in axes with most constraints (e.g., for a corridor-like environment, the resulting transform will be limited in y and yaw, x will taken from the guess), set to 2 to recompute the transform with PointToPoint and accept it "as is", set to 3 to keep the PointToPlane transform and apply the same axis-constrained projection as strategy 1.
    Icp/OutlierRatio float 0.85 Outlier ratio. For libpointmatcher (Icp/Strategy=1), sets TrimmedDistOutlierFilter/ratio for convenience when configuration file is not set. For CCCoreLib (Icp/Strategy=2), sets "finalOverlapRatio". For PCL (Icp/Strategy=0), if 0<value<1, installs a RANSAC correspondence rejector with inlier threshold = value * Icp/MaxCorrespondenceDistance. The value should be between 0 and 1.
    Icp/DebugExportFormat string "" Export scans used for ICP in the specified format (a warning on terminal will be shown with the file paths used). Supported formats are "pcd", "ply" or "vtk". If logger level is debug, from and to scans will stamped, so previous files won't be overwritten.
    Icp/PMConfig string "" Configuration file (*.yaml) used by libpointmatcher. Note that data filters set for libpointmatcher are done after filtering done by rtabmap (i.e., Icp/VoxelSize, Icp/DownsamplingStep), so make sure to disable those in rtabmap if you want to use only those from libpointmatcher. Parameters Icp/Iterations, Icp/Epsilon and Icp/MaxCorrespondenceDistance are also ignored if configuration file is set.
    Icp/PMMatcherKnn int 1 KDTreeMatcher/knn: number of nearest neighbors to consider it the reference. For convenience when configuration file is not set.
    Icp/PMMatcherEpsilon float 0.0 KDTreeMatcher/epsilon: approximation to use for the nearest-neighbor search. For convenience when configuration file is not set.
    Icp/PMMatcherIntensity bool false KDTreeMatcher: among nearest neighbors, keep only the one with the most similar intensity. This only work with Icp/PMMatcherKnn>1.
    Icp/CCSamplingLimit unsigned int 50000 Maximum number of points per cloud (they are randomly resampled below this limit otherwise).
    Icp/CCFilterOutFarthestPoints bool false If true, the algorithm will automatically ignore farthest points from the reference, for better convergence.
    Icp/CCMaxFinalRMS float 0.2 Maximum final RMS error.
    +

    +

    +Stereo

    +

    Stereo correspondence.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Stereo/WinWidth int 15 Window width.
    Stereo/WinHeight int 3 Window height.
    Stereo/Iterations int 30 Maximum iterations.
    Stereo/MaxLevel int 5 Maximum pyramid level.
    Stereo/MinDisparity float 0.5 Minimum disparity.
    Stereo/MaxDisparity float 128.0 Maximum disparity.
    Stereo/OpticalFlow bool true Use optical flow to find stereo correspondences, otherwise a simple block matching approach is used.
    Stereo/SSD bool true [Stereo/OpticalFlow=false] Use Sum of Squared Differences (SSD) window, otherwise Sum of Absolute Differences (SAD) window is used.
    Stereo/Eps double 0.01 [Stereo/OpticalFlow=true] Epsilon stop criterion.
    Stereo/UseMinEigenVals bool true [Stereo/OpticalFlow=true] Use minimum eigen values as an error measure, otherwise L1 distance between patches is used as an error measure.
    Stereo/MinEigThreshold double 1e-4 [Stereo/UseMinEigenVals=true] If the minimum eigenvalue of a feature's spatial gradient matrix is less than this threshold, then the feature is filtered out.
    Stereo/ErrorThreshold double 50 [Stereo/UseMinEigenVals=false] Filter out features with error greater than this threshold.
    Stereo/Gpu bool false [Stereo/OpticalFlow=true] Enable GPU version of the optical flow approach (only available if OpenCV is built with CUDA). Note that Stereo/UseMinEigenVals is not used in the GPU implementation.
    Stereo/DenseStrategy int 0 0=cv::StereoBM, 1=cv::StereoSGBM
    +

    +

    +StereoBM

    + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    StereoBM/BlockSize int 15 See cv::StereoBM
    StereoBM/MinDisparity int 0 See cv::StereoBM
    StereoBM/NumDisparities int 128 See cv::StereoBM
    StereoBM/PreFilterSize int 9 See cv::StereoBM
    StereoBM/PreFilterCap int 31 See cv::StereoBM
    StereoBM/UniquenessRatio int 15 See cv::StereoBM
    StereoBM/TextureThreshold int 10 See cv::StereoBM
    StereoBM/SpeckleWindowSize int 100 See cv::StereoBM
    StereoBM/SpeckleRange int 4 See cv::StereoBM
    StereoBM/Disp12MaxDiff int -1 See cv::StereoBM
    +

    +

    +StereoSGBM

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    StereoSGBM/BlockSize int 15 See cv::StereoSGBM
    StereoSGBM/MinDisparity int 0 See cv::StereoSGBM
    StereoSGBM/NumDisparities int 128 See cv::StereoSGBM
    StereoSGBM/PreFilterCap int 31 See cv::StereoSGBM
    StereoSGBM/UniquenessRatio int 20 See cv::StereoSGBM
    StereoSGBM/SpeckleWindowSize int 100 See cv::StereoSGBM
    StereoSGBM/SpeckleRange int 4 See cv::StereoSGBM
    StereoSGBM/Disp12MaxDiff int 1 See cv::StereoSGBM
    StereoSGBM/P1 int 2 See cv::StereoSGBM
    StereoSGBM/P2 int 5 See cv::StereoSGBM
    StereoSGBM/Mode int 0 with CV_MAJOR_VERSION &lt; 3
    +2 otherwise
    See cv::StereoSGBM
    +

    +

    +Grid

    +

    Local occupancy grid generation from each node.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Grid/Sensor int 1 Create occupancy grid from selected sensor: 0=laser scan, 1=depth image(s) or 2=both laser scan and depth image(s).
    Grid/DepthDecimation unsigned int 4 [Grid/DepthDecimation=true] Decimation of the depth image before creating cloud.
    Grid/RangeMin float 0.0 Minimum range from sensor.
    Grid/RangeMax float 5.0 Maximum range from sensor. 0=inf.
    Grid/DepthRoiRatios string 0.0 0.0 0.0 0.0 [Grid/Sensor>=1] Region of interest ratios [left, right, top, bottom].
    Grid/FootprintLength float 0.0 Footprint length used to filter points over the footprint of the robot.
    Grid/FootprintWidth float 0.0 Footprint width used to filter points over the footprint of the robot. Footprint length should be set.
    Grid/FootprintHeight float 0.0 Footprint height used to filter points over the footprint of the robot. Footprint length and width should be set.
    Grid/ScanDecimation int 1 [Grid/Sensor=0 or 2] Decimation of the laser scan before creating cloud.
    Grid/CellSize float 0.05 Resolution of the occupancy grid.
    Grid/PreVoxelFiltering bool true Input cloud is downsampled by voxel filter (voxel size is Grid/CellSize) before doing segmentation of obstacles and ground.
    Grid/MapFrameProjection bool false Projection in map frame. On a 3D terrain and a fixed local camera transform (the cloud is created relative to ground), you may want to disable this to do the projection in robot frame instead.
    Grid/NormalsSegmentation bool true Segment ground from obstacles using point normals, otherwise a fast passthrough is used.
    Grid/MaxObstacleHeight float 0.0 Maximum obstacles height (0=disabled).
    Grid/MinGroundHeight float 0.0 Minimum ground height (0=disabled).
    Grid/MaxGroundHeight float 0.0 Maximum ground height (0=disabled). Should be set if Grid/NormalsSegmentation is false.
    Grid/MaxGroundAngle float 45 [Grid/NormalsSegmentation=true] Maximum angle (degrees) between point's normal to ground's normal to label it as ground. Points with higher angle difference are considered as obstacles.
    Grid/NormalK int 20 [Grid/NormalsSegmentation=true] K neighbors to compute normals.
    Grid/ClusterRadius float 0.1 [Grid/NormalsSegmentation=true] Cluster maximum radius.
    Grid/MinClusterSize int 10 [Grid/NormalsSegmentation=true] Minimum cluster size to project the points.
    Grid/FlatObstacleDetected bool true [Grid/NormalsSegmentation=true] Flat obstacles detected.
    Grid/3D bool true with defined(RTABMAP_OCTOMAP)
    +false otherwise
    A 3D occupancy grid is required if you want an OctoMap (3D ray tracing). Set to false if you want only a 2D map, the cloud will be projected on xy plane. A 2D map can be still generated if checked, but it requires more memory and time to generate it. Ignored if laser scan is 2D and Grid/Sensor is 0.
    Grid/GroundIsObstacle bool false [Grid/3D=true] Ground segmentation (Grid/NormalsSegmentation) is ignored, all points are obstacles. Use this only if you want an OctoMap with ground identified as an obstacle (e.g., with an UAV).
    Grid/NoiseFilteringRadius float 0.0 Noise filtering radius (0=disabled). Done after segmentation.
    Grid/NoiseFilteringMinNeighbors int 5 Noise filtering minimum neighbors.
    Grid/Scan2dUnknownSpaceFilled bool false Unknown space filled. Only used with 2D laser scans. Use Grid/RangeMax to set maximum range if laser scan max range is to set.
    Grid/RayTracing bool false Ray tracing is done for each occupied cell, filling unknown space between the sensor and occupied cells. If Grid/3D=true, RTAB-Map should be built with OctoMap support, otherwise 3D ray tracing is ignored.
    +

    +

    +GridGlobal

    +

    Assembly of the local grids into the global map.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    GridGlobal/UpdateError float 0.01 Graph changed detection error (m). Update map only if poses in new optimized graph have moved more than this value.
    GridGlobal/FootprintRadius float 0.0 Footprint radius (m) used to clear all obstacles under the graph.
    GridGlobal/MinSize float 0.0 Minimum map size (m).
    GridGlobal/Eroded bool false Erode obstacle cells.
    GridGlobal/MaxNodes int 0 Maximum nodes assembled in the map starting from the last node (0=unlimited).
    GridGlobal/AltitudeDelta float 0 Assemble only nodes that have the same altitude of +-delta meters of the current pose (0=disabled). This is used to generate 2D occupancy grid based on the current altitude (e.g., multi-floor building).
    GridGlobal/OccupancyThr float 0.5 Occupancy threshold (value between 0 and 1).
    GridGlobal/ProbHit float 0.7 Probability of a hit (value between 0.5 and 1).
    GridGlobal/ProbMiss float 0.4 Probability of a miss (value between 0 and 0.5).
    GridGlobal/ProbClampingMin float 0.1192 Probability clamping minimum (value between 0 and 1).
    GridGlobal/ProbClampingMax float 0.971 Probability clamping maximum (value between 0 and 1).
    GridGlobal/FloodFillDepth unsigned int 0 Flood fill filter (0=disabled), used to remove empty cells outside the map. The flood fill is done at the specified depth (between 1 and 16) of the OctoMap.
    +

    +

    +Marker

    +

    Fiducial marker (ArUco/AprilTag) detection and landmarks.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Key Type Default Description
    Marker/Strategy int 0 Marker detection implementation: 0=OpenCV, 1=AprilTag
    Marker/Dictionary int 0 Dictionary to use: DICT_ARUCO_4X4_50=0, DICT_ARUCO_4X4_100=1, DICT_ARUCO_4X4_250=2, DICT_ARUCO_4X4_1000=3, DICT_ARUCO_5X5_50=4, DICT_ARUCO_5X5_100=5, DICT_ARUCO_5X5_250=6, DICT_ARUCO_5X5_1000=7, DICT_ARUCO_6X6_50=8, DICT_ARUCO_6X6_100=9, DICT_ARUCO_6X6_250=10, DICT_ARUCO_6X6_1000=11, DICT_ARUCO_7X7_50=12, DICT_ARUCO_7X7_100=13, DICT_ARUCO_7X7_250=14, DICT_ARUCO_7X7_1000=15, DICT_ARUCO_ORIGINAL = 16, DICT_APRILTAG_16h5=17, DICT_APRILTAG_25h9=18, DICT_APRILTAG_36h10=19, DICT_APRILTAG_36h11=20, DICT_ARUCO_MIP_36H12=21
    Marker/Length float 0 The length (m) of the markers' side. Value <=0 means automatic marker length estimation using the depth image (the camera should look at the marker perpendicularly for initialization). If 0, the length is estimated only on the first marker detected, then re-used for all next detections (i.e., this assumes that markers have all the same length). With <0, the length is estimated once for each unique marker, then re-used for next detections with the same marker ID.
    Marker/Lengths string "" List of markers to detect. Format is the marker's ID followed by its length (in meters), multiple markers are separated by a vertical line ("id1 length\|id2 length"). We can also define a range of markers with "id1:id2 length" (id2 included). If empty, all markers of the chosen dictionary can be detected and their length is set/estimated based on Marker/Length. For example, to detect markers 12 and 14 with lengths of 8 and 15 cm respectively, and all markers between 30 and 40 with a length of 10 cm, set "12 0.08\|14 0.15\|30:40 0.1".
    Marker/MaxDepthError float 0.01 Maximum depth error between all corners of a marker when estimating the marker length (when Marker/Length is 0). The smaller it is, the more perpendicular the camera should be toward the marker to initialize the length.
    Marker/VarianceLinear float 0.001 Linear variance to set on marker detections. If Marker/VarianceOrientationIgnored is enabled and Optimizer/Strategy=2 (GTSAM): it is the variance of the range factor, with 9999 to disable range factor and to do only bearing.
    Marker/VarianceAngular float 0.01 Angular variance to set on marker detections. If Marker/VarianceOrientationIgnored is enabled, it is ignored with Optimizer/Strategy=1 (g2o) and it corresponds to bearing variance with Optimizer/Strategy=2 (GTSAM).
    Marker/VarianceOrientationIgnored bool false When this setting is false, the landmark's orientation is optimized during graph optimization. When this setting is true, only the position of the landmark is optimized. This can be useful when the landmark's orientation estimation is not reliable. Note that for Optimizer/Strategy=1 (g2o), only Marker/VarianceLinear needs be set if we ignore orientation. For Optimizer/Strategy=2 (GTSAM), instead of optimizing the landmark's position directly, a bearing/range factor is used, with Marker/VarianceLinear as the variance of the range factor (with 9999 to optimize the position with only a bearing factor) and Marker/VarianceAngular as the variance of the bearing factor (pitch/yaw).
    Marker/MaxRange float 0.0 Maximum range in which markers will be detected. <=0 for unlimited range.
    Marker/MinRange float 0.0 Miniminum range in which markers will be detected. <=0 for unlimited range.
    Marker/Priors string "" World prior locations of the markers. The map will be transformed in marker's world frame when a tag is detected. Format is the marker's ID followed by its position (angles in rad), multiple markers are separated by vertical line ("id1 x y z roll pitch yaw\|id2 x y z roll pitch yaw"). Example: "1 0 0 1 0 0 0\|2 1 0 1 0 0 1.57" (marker 2 is 1 meter forward than marker 1 with 90 deg yaw rotation).
    Marker/PriorsVarianceLinear float 0.001 Linear variance to set on marker priors.
    Marker/PriorsVarianceAngular float 0.001 Angular variance to set on marker priors.
    +

    +

    +MarkerAprilTag

    + + + + + + + + + + + + + + + +
    Key Type Default Description
    MarkerAprilTag/NThreads int 1 How many threads should be used?
    MarkerAprilTag/QuadDecimate float 1.0 Detection of quads can be done on a lower-resolution image, improving speed at a cost of pose accuracy and a slight decrease in detection rate. Decoding the binary payload is still done at full resolution.
    MarkerAprilTag/QuadSigma float 0.0 What Gaussian blur should be applied to the segmented image (used for quad detection?) Parameter is the standard deviation in pixels. Very noisy images benefit from non-zero values (e.g. 0.8).
    MarkerAprilTag/RefineEdges bool true When true, the edges of the each quad are adjusted to "snap to" strong gradients nearby. This is useful when decimation is employed, as it can increase the quality of the initial quad estimate substantially. Generally recommended to be on (true). Very computationally inexpensive. Option is ignored if MarkerAprilTag/QuadDecimate = 1.
    MarkerAprilTag/DecodeSharpening double 0.25 How much sharpening should be done to decoded images? This can help decode small tags but may or may not help in odd lighting conditions or low light conditions.
    MarkerAprilTag/Debug bool false When true, write a variety of debugging images to the working directory where the app started (not Rtabmap/WorkingDirectory) at various stages through the detection process. (Somewhat slow).
    +

    +

    +MarkerOpenCV

    + + + + + +
    Key Type Default Description
    MarkerOpenCV/CornerRefinementMethod int 0 Corner refinement method for OpenCV strategy (0: None, 1: Subpixel, 2:contour, 3: AprilTag2). For OpenCV <3.3.0, this is "doCornerRefinement" parameter: set 0 for false and 1 for true.
    +

    +

    +ImuFilter

    + + + + + + + + + + + + + + + +
    Key Type Default Description
    ImuFilter/MadgwickGain double 0.1 Gain of the filter. Higher values lead to faster convergence but more noise. Lower values lead to slower convergence but smoother signal, belongs in [0, 1].
    ImuFilter/MadgwickZeta double 0.0 Gyro drift gain (approx. rad/s), belongs in [-1, 1].
    ImuFilter/ComplementaryGainAcc double 0.01 Gain parameter for the complementary filter, belongs in [0, 1].
    ImuFilter/ComplementaryBiasAlpha double 0.01 Bias estimation gain parameter, belongs in [0, 1].
    ImuFilter/ComplementaryDoBiasEstimation bool true Parameter whether to do bias estimation or not.
    ImuFilter/ComplementaryDoAdpativeGain bool true Parameter whether to do adaptive gain or not.
    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/plus.svg b/preview/pr-1773/api/latest/plus.svg new file mode 100644 index 00000000..07520165 --- /dev/null +++ b/preview/pr-1773/api/latest/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/plusd.svg b/preview/pr-1773/api/latest/plusd.svg new file mode 100644 index 00000000..0c65bfe9 --- /dev/null +++ b/preview/pr-1773/api/latest/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/resize.js b/preview/pr-1773/api/latest/resize.js new file mode 100644 index 00000000..aaeb6fc0 --- /dev/null +++ b/preview/pr-1773/api/latest/resize.js @@ -0,0 +1,155 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var once=1; +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; + + function readSetting(cookie) + { + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + } + return 250; + } + + function writeSetting(cookie, val) + { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() + { + var newWidth; + if (sidenav.width()>0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/preview/pr-1773/api/latest/rtabmap__core__export_8h_source.html b/preview/pr-1773/api/latest/rtabmap__core__export_8h_source.html new file mode 100644 index 00000000..09daf9ac --- /dev/null +++ b/preview/pr-1773/api/latest/rtabmap__core__export_8h_source.html @@ -0,0 +1,162 @@ + + + + + + + + +RTAB-Map: build-docs/corelib/src/include/rtabmap/core/rtabmap_core_export.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    rtabmap_core_export.h
    +
    +
    +
    1
    +
    2#ifndef RTABMAP_CORE_EXPORT_H
    +
    3#define RTABMAP_CORE_EXPORT_H
    +
    4
    +
    5#ifdef RTABMAP_CORE_STATIC_DEFINE
    +
    6# define RTABMAP_CORE_EXPORT
    +
    7# define RTABMAP_CORE_NO_EXPORT
    +
    8#else
    +
    9# ifndef RTABMAP_CORE_EXPORT
    +
    10# ifdef rtabmap_core_EXPORTS
    +
    11 /* We are building this library */
    +
    12# define RTABMAP_CORE_EXPORT __attribute__((visibility("default")))
    +
    13# else
    +
    14 /* We are using this library */
    +
    15# define RTABMAP_CORE_EXPORT __attribute__((visibility("default")))
    +
    16# endif
    +
    17# endif
    +
    18
    +
    19# ifndef RTABMAP_CORE_NO_EXPORT
    +
    20# define RTABMAP_CORE_NO_EXPORT __attribute__((visibility("hidden")))
    +
    21# endif
    +
    22#endif
    +
    23
    +
    24#ifndef RTABMAP_DEPRECATED
    +
    25# define RTABMAP_DEPRECATED __attribute__ ((__deprecated__))
    +
    26#endif
    +
    27
    +
    28#ifndef RTABMAP_DEPRECATED_EXPORT
    +
    29# define RTABMAP_DEPRECATED_EXPORT RTABMAP_CORE_EXPORT RTABMAP_DEPRECATED
    +
    30#endif
    +
    31
    +
    32#ifndef RTABMAP_DEPRECATED_NO_EXPORT
    +
    33# define RTABMAP_DEPRECATED_NO_EXPORT RTABMAP_CORE_NO_EXPORT RTABMAP_DEPRECATED
    +
    34#endif
    +
    35
    +
    36/* NOLINTNEXTLINE(readability-avoid-unconditional-preprocessor-if) */
    +
    37#if 0 /* DEFINE_NO_DEPRECATED */
    +
    38# ifndef RTABMAP_CORE_NO_DEPRECATED
    +
    39# define RTABMAP_CORE_NO_DEPRECATED
    +
    40# endif
    +
    41#endif
    +
    42
    +
    43#endif /* RTABMAP_CORE_EXPORT_H */
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/rvl__codec_8h_source.html b/preview/pr-1773/api/latest/rvl__codec_8h_source.html new file mode 100644 index 00000000..95686fce --- /dev/null +++ b/preview/pr-1773/api/latest/rvl__codec_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/rvl_codec.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    rvl_codec.h
    +
    +
    +
    1// The following code is a C++ wrapper of the code presented by
    +
    2// Andrew D. Wilson in "Fast Lossless Depth Image Compression" at SIGCHI'17.
    +
    3// The original code is licensed under the MIT License.
    +
    4
    +
    5#ifndef RVL_CODEC_H_
    +
    6#define RVL_CODEC_H_
    +
    7
    +
    8#include <cstdint>
    +
    9#include "rtabmap/core/rtabmap_core_export.h"
    +
    10
    +
    11namespace rtabmap
    +
    12{
    +
    13
    +
    +
    14class RTABMAP_CORE_EXPORT RvlCodec {
    +
    15public:
    +
    16 RvlCodec();
    +
    17 // Compress input data into output. The size of output can be equal to (1.5 * numPixels + 4) in the worst case.
    +
    18 int CompressRVL(const uint16_t * input, unsigned char * output, int numPixels);
    +
    19 // Decompress input data into output. The size of output must be equal to numPixels.
    +
    20 void DecompressRVL(const unsigned char * input, uint16_t * output, int numPixels);
    +
    21
    +
    22private:
    +
    23 RvlCodec(const RvlCodec &);
    +
    24 RvlCodec & operator=(const RvlCodec &);
    +
    25
    +
    26 void EncodeVLE(int value);
    +
    27 int DecodeVLE();
    +
    28
    +
    29 int *buffer_;
    +
    30 int *pBuffer_;
    +
    31 int word_;
    +
    32 int nibblesWritten_;
    +
    33};
    +
    +
    34
    +
    35} // namespace rtabmap
    +
    36
    +
    37#endif // RVL_CODEC_H_
    + + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/search/all_0.js b/preview/pr-1773/api/latest/search/all_0.js new file mode 100644 index 00000000..052e8a6c --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['2d_20laserscan_0',['PCL to 2D LaserScan',['../group__LaserScan2dFromPointCloud.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_1.js b/preview/pr-1773/api/latest/search/all_1.js new file mode 100644 index 00000000..06713a9c --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['3d_20laserscan_0',['PCL to 3D LaserScan',['../group__LaserScanFromPointCloud.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_10.js b/preview/pr-1773/api/latest/search/all_10.js new file mode 100644 index 00000000..71cc6075 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_10.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['name_0',['name',['../classrtabmap_1_1StereoCameraModel.html#ae759fe4ff0862f5305cf85257e0367a1',1,'rtabmap::StereoCameraModel::name()'],['../classrtabmap_1_1CameraModel.html#aa152828f20e1cf0ffab7bb25178191b5',1,'rtabmap::CameraModel::name()']]], + ['nan_20points_20from_20a_20point_20cloud_1',['nan points from a point cloud',['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['nanoflann_5findex_5fkdtree_5fsingle_2',['NANOFLANN_INDEX_KDTREE_SINGLE',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a4132d1ad7d7b3717b83f71aa60fa39e3',1,'rtabmap::FlannIndex']]], + ['newcorners_3',['newCorners',['../classrtabmap_1_1OdometryInfo.html#a028f791a3005377516d217608a696556',1,'rtabmap::OdometryInfo']]], + ['nms_4',['NMS',['../namespacertabmap_1_1util2d.html#aafa9a426c8e7dd0359adf40e1b45ee1c',1,'rtabmap::util2d']]], + ['nnstrategy_5',['NNStrategy',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655',1,'rtabmap::VWDictionary']]], + ['nnstrategyname_6',['nnStrategyName',['../classrtabmap_1_1VWDictionary.html#a7092a6a6af93772ce89793c5e54a17cc',1,'rtabmap::VWDictionary']]], + ['normal_20filtering_7',['Point Normal Filtering',['../group__PointNormalFiltering.html',1,'']]], + ['normalfiltering_8',['normalfiltering',['../group__PointNormalFiltering.html#gad37b605f0f26190c95450c878ca51ece',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#gae3831a32e21738a381ea789e9e3e3996',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#ga91fd9701dea9ebc4b7265b12b357aba1',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#ga96711db9864b121ab9e2bcbf2cf44658',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#gad821858315d7e1e1868d6314d65a9f89',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#ga5c15577ccd70487c3ccd53c16b00648b',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#gabfeacf2f8a261abd98a9c6728f02324b',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#ga7c7e3de2ff24fc3aadfb3eb0ae05314d',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)']]], + ['normalizerotation_9',['normalizeRotation',['../classrtabmap_1_1Transform.html#acbdd19971643c7400cb59055ec64d3cf',1,'rtabmap::Transform']]], + ['normals_10',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['now_11',['now',['../classUTimer.html#ad10fce2a4901bf5d6a460ca7b158cb3a',1,'UTimer']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_11.js b/preview/pr-1773/api/latest/search/all_11.js new file mode 100644 index 00000000..8ef2ee40 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_11.js @@ -0,0 +1,82 @@ +var searchData= +[ + ['o14_0',['o14',['../classrtabmap_1_1Transform.html#adbdb9063808e63830cbcbd99e1e84d3d',1,'rtabmap::Transform']]], + ['o24_1',['o24',['../classrtabmap_1_1Transform.html#aa68c9c3b75ad7b66ca8bbf66742b0cc5',1,'rtabmap::Transform']]], + ['o34_2',['o34',['../classrtabmap_1_1Transform.html#a39184351ff5625030b6d1019c0e3d93f',1,'rtabmap::Transform']]], + ['obstaclecells_3',['obstacleCells',['../classrtabmap_1_1LocalGrid.html#abe290c60168557fb899914f53e4ad1a1',1,'rtabmap::LocalGrid']]], + ['occupancy_20grid_4',['Occupancy grid',['../index.html#autotoc_md1',1,'']]], + ['occupancy2dfromcloud3d_5',['occupancy2dfromcloud3d',['../namespacertabmap_1_1util3d.html#a7d90f3a00301f9f7c79cd6fc6cd663c2',1,'rtabmap::util3d::occupancy2DFromCloud3D(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)'],['../namespacertabmap_1_1util3d.html#a969e2d135e91a6e2ace68850086ae0e9',1,'rtabmap::util3d::occupancy2DFromCloud3D(const typename pcl::PointCloud< PointT >::Ptr &cloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)']]], + ['occupancy2dfromgroundobstacles_6',['occupancy2dfromgroundobstacles',['../namespacertabmap_1_1util3d.html#ab156e4308c21e118ea0aa164a5ae9812',1,'rtabmap::util3d::occupancy2DFromGroundObstacles(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &groundIndices, const pcl::IndicesPtr &obstaclesIndices, cv::Mat &ground, cv::Mat &obstacles, float cellSize)'],['../namespacertabmap_1_1util3d.html#a9b93d07997a94a78b6be6bd573e39148',1,'rtabmap::util3d::occupancy2DFromGroundObstacles(const typename pcl::PointCloud< PointT >::Ptr &groundCloud, const typename pcl::PointCloud< PointT >::Ptr &obstaclesCloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize)']]], + ['occupancy2dfromlaserscan_7',['occupancy2dfromlaserscan',['../namespacertabmap_1_1util3d.html#a4f1002c1825baf4b7606a94b4ea9b15d',1,'rtabmap::util3d::occupancy2DFromLaserScan(const cv::Mat &scan, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#aa1c9dfd681662ff1c164956a83e30b57',1,'rtabmap::util3d::occupancy2DFromLaserScan(const cv::Mat &scan, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#a2d2f6d5adead09c6f87ef3f7cdebc65e',1,'rtabmap::util3d::occupancy2DFromLaserScan(const cv::Mat &scanHit, const cv::Mat &scanNoHit, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)']]], + ['occupancygrid_8',['OccupancyGrid',['../classrtabmap_1_1OccupancyGrid.html',1,'rtabmap']]], + ['octomap_9',['OctoMap',['../classrtabmap_1_1OctoMap.html',1,'rtabmap']]], + ['odom_10',['Odom',['../parameters.html#autotoc_md32',1,'']]], + ['odomcacheconstraints_11',['odomCacheConstraints',['../classrtabmap_1_1Statistics.html#a44b7a6c4d5b8bd58efcce2fdf3f2a9fd',1,'rtabmap::Statistics']]], + ['odomcacheposes_12',['odomCachePoses',['../classrtabmap_1_1Statistics.html#a8d88d70935ef4e110cd2c92b07ed74b2',1,'rtabmap::Statistics']]], + ['odomcovariance_13',['odomCovariance',['../classrtabmap_1_1SensorCaptureInfo.html#a8f5b899e1120bc8e68cdfd1b46327107',1,'rtabmap::SensorCaptureInfo']]], + ['odomcuvslam_14',['OdomCuVSLAM',['../parameters.html#autotoc_md44',1,'']]], + ['odometry_15',['odometry',['../classrtabmap_1_1Odometry.html',1,'rtabmap::Odometry'],['../classrtabmap_1_1Odometry.html#af2d9cf4c207d6628b0890064a385856b',1,'rtabmap::Odometry::Odometry()']]], + ['odometrycuvslam_16',['OdometryCuVSLAM',['../classrtabmap_1_1OdometryCuVSLAM.html',1,'rtabmap']]], + ['odometrydvo_17',['OdometryDVO',['../classrtabmap_1_1OdometryDVO.html',1,'rtabmap']]], + ['odometryevent_18',['odometryevent',['../classrtabmap_1_1OdometryEvent.html',1,'rtabmap::OdometryEvent'],['../classrtabmap_1_1OdometryEvent.html#a0667339a1f0135ac2b67180b663a028f',1,'rtabmap::OdometryEvent::OdometryEvent(const SensorData &data, const Transform &pose, const OdometryInfo &info=OdometryInfo())'],['../classrtabmap_1_1OdometryEvent.html#aaf1fc834b6016a79b28883d20f336020',1,'rtabmap::OdometryEvent::OdometryEvent()']]], + ['odometryf2f_19',['OdometryF2F',['../classrtabmap_1_1OdometryF2F.html',1,'rtabmap']]], + ['odometryf2m_20',['OdometryF2M',['../classrtabmap_1_1OdometryF2M.html',1,'rtabmap']]], + ['odometryfloam_21',['OdometryFLOAM',['../classrtabmap_1_1OdometryFLOAM.html',1,'rtabmap']]], + ['odometryfovis_22',['OdometryFovis',['../classrtabmap_1_1OdometryFovis.html',1,'rtabmap']]], + ['odometryinfo_23',['OdometryInfo',['../classrtabmap_1_1OdometryInfo.html',1,'rtabmap']]], + ['odometryliosam_24',['OdometryLIOSAM',['../classrtabmap_1_1OdometryLIOSAM.html',1,'rtabmap']]], + ['odometryloam_25',['OdometryLOAM',['../classrtabmap_1_1OdometryLOAM.html',1,'rtabmap']]], + ['odometrymono_26',['OdometryMono',['../classrtabmap_1_1OdometryMono.html',1,'rtabmap']]], + ['odometrymsckf_27',['OdometryMSCKF',['../classrtabmap_1_1OdometryMSCKF.html',1,'rtabmap']]], + ['odometryokvis_28',['OdometryOkvis',['../classrtabmap_1_1OdometryOkvis.html',1,'rtabmap']]], + ['odometryopen3d_29',['OdometryOpen3D',['../classrtabmap_1_1OdometryOpen3D.html',1,'rtabmap']]], + ['odometryopenvins_30',['OdometryOpenVINS',['../classrtabmap_1_1OdometryOpenVINS.html',1,'rtabmap']]], + ['odometryorbslam2_31',['OdometryORBSLAM2',['../classrtabmap_1_1OdometryORBSLAM2.html',1,'rtabmap']]], + ['odometryorbslam3_32',['OdometryORBSLAM3',['../classrtabmap_1_1OdometryORBSLAM3.html',1,'rtabmap']]], + ['odometryresetevent_33',['odometryresetevent',['../classrtabmap_1_1OdometryResetEvent.html#a035eee412d9bda7da321523baff799f3',1,'rtabmap::OdometryResetEvent::OdometryResetEvent()'],['../classrtabmap_1_1OdometryResetEvent.html',1,'rtabmap::OdometryResetEvent']]], + ['odometrythread_34',['odometrythread',['../classrtabmap_1_1OdometryThread.html#a66435ffb547d7d59faa9224fe030934b',1,'rtabmap::OdometryThread::OdometryThread()'],['../classrtabmap_1_1OdometryThread.html',1,'rtabmap::OdometryThread']]], + ['odometryvinsfusion_35',['OdometryVINSFusion',['../classrtabmap_1_1OdometryVINSFusion.html',1,'rtabmap']]], + ['odometryviso2_36',['OdometryViso2',['../classrtabmap_1_1OdometryViso2.html',1,'rtabmap']]], + ['odomf2m_37',['OdomF2M',['../parameters.html#autotoc_md33',1,'']]], + ['odomfovis_38',['OdomFovis',['../parameters.html#autotoc_md35',1,'']]], + ['odomliosam_39',['OdomLIOSAM',['../parameters.html#autotoc_md45',1,'']]], + ['odomloam_40',['OdomLOAM',['../parameters.html#autotoc_md39',1,'']]], + ['odommono_41',['OdomMono',['../parameters.html#autotoc_md34',1,'']]], + ['odommsckf_42',['OdomMSCKF',['../parameters.html#autotoc_md40',1,'']]], + ['odomokvis_43',['OdomOKVIS',['../parameters.html#autotoc_md38',1,'']]], + ['odomopen3d_44',['OdomOpen3D',['../parameters.html#autotoc_md43',1,'']]], + ['odomopenvins_45',['OdomOpenVINS',['../parameters.html#autotoc_md42',1,'']]], + ['odomorbslam_46',['OdomORBSLAM',['../parameters.html#autotoc_md37',1,'']]], + ['odompose_47',['odomPose',['../classrtabmap_1_1SensorCaptureInfo.html#a5c086f941e4fa816ec608779ac03f640',1,'rtabmap::SensorCaptureInfo']]], + ['odomprovided_48',['odomprovided',['../classrtabmap_1_1CameraImages.html#aea0811d6305eec32fda10f46344c825f',1,'rtabmap::CameraImages::odomProvided()'],['../classrtabmap_1_1SensorCaptureThread.html#a88269150d6fd6fd39685fe9e926d98e6',1,'rtabmap::SensorCaptureThread::odomProvided()'],['../classrtabmap_1_1SensorCapture.html#aee217767808a9df9c63a27b284461c89',1,'rtabmap::SensorCapture::odomProvided()'],['../classrtabmap_1_1DBReader.html#a24351b1eb5776a83548a1d972e489dba',1,'rtabmap::DBReader::odomProvided()'],['../classrtabmap_1_1CameraStereoZed.html#ac57ca4d52b5a0a3c3911ffa4a139564c',1,'rtabmap::CameraStereoZed::odomProvided()'],['../classrtabmap_1_1CameraSeerSense.html#aa3bfa6e619c5845d4994809281c9a4b5',1,'rtabmap::CameraSeerSense::odomProvided()'],['../classrtabmap_1_1CameraRealSense2.html#a3b5aa7434457e09cbc6f01b985440183',1,'rtabmap::CameraRealSense2::odomProvided()'],['../classrtabmap_1_1CameraRealSense.html#a1ce069a366db4c98fe757acca7bf5b79',1,'rtabmap::CameraRealSense::odomProvided()'],['../classrtabmap_1_1CameraMyntEye.html#abc869cbd8b1106374a1f8734715d965d',1,'rtabmap::CameraMyntEye::odomProvided()']]], + ['odomsensor_49',['odomSensor',['../classrtabmap_1_1SensorCaptureThread.html#a0f4e3814d203ded5735ebb7abba1451e',1,'rtabmap::SensorCaptureThread']]], + ['odomvelocity_50',['odomVelocity',['../classrtabmap_1_1SensorCaptureInfo.html#a5f544019df408896fed21c48fb3c0197',1,'rtabmap::SensorCaptureInfo']]], + ['odomvinsfusion_51',['OdomVINSFusion',['../parameters.html#autotoc_md41',1,'']]], + ['odomviso2_52',['OdomViso2',['../parameters.html#autotoc_md36',1,'']]], + ['of_20a_20point_20cloud_20with_20normals_53',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['of_20interest_20roi_20computation_54',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['of_20pcl_20point_20clouds_55',['of pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds']]], + ['of_20stl_56',['Convenient use of STL',['../group__UtiLite.html#stl',1,'']]], + ['of_20two_20point_20clouds_57',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['openconnection_58',['openConnection',['../classrtabmap_1_1DBDriver.html#ac6c0a2260ba2c3cc030136c9609142f5',1,'rtabmap::DBDriver']]], + ['opengl_5ft_5frtabmap_59',['opengl_T_rtabmap',['../classrtabmap_1_1Transform.html#abd5f003e72ad31ebc9124385030fce59',1,'rtabmap::Transform']]], + ['operations_60',['Basic mathematic operations',['../group__UtiLite.html#math',1,'']]], + ['operator_2a_61',['operator*',['../classrtabmap_1_1Transform.html#a4d70ff21bbb61cd65c2d00130d8f84a7',1,'rtabmap::Transform']]], + ['operator_2b_62',['operator+',['../classrtabmap_1_1LaserScan.html#ab952e27e94b2fa942efe98ea651f4475',1,'rtabmap::LaserScan']]], + ['operator_2b_3d_63',['operator+=',['../classrtabmap_1_1LaserScan.html#af9f9a32f97cfbac321fc2509f0d1bd04',1,'rtabmap::LaserScan']]], + ['operator_3c_3c_64',['operator<<',['../namespacertabmap.html#a087b7a1b89acb679edee23883653f1a7',1,'rtabmap::operator<<(std::ostream &os, const CameraModel &model)'],['../namespacertabmap.html#a6138748ef83b742105e47c9275885e4a',1,'rtabmap::operator<<(std::ostream &os, const StereoCameraModel &model)'],['../namespacertabmap.html#aef0e1f1b121a9199e7511becbc8f1e32',1,'rtabmap::operator<<(std::ostream &os, const Transform &s)']]], + ['opticalrotation_65',['opticalRotation',['../classrtabmap_1_1CameraModel.html#a0853af9d0117565311da4ffc3965f8d2',1,'rtabmap::CameraModel']]], + ['optimize_66',['optimize',['../classrtabmap_1_1OptimizerG2O.html#a9400bdf57331af310cf6b02e661d0a03',1,'rtabmap::OptimizerG2O::optimize()'],['../classrtabmap_1_1Optimizer.html#a7e3aff943e77603493a358ff522fa2dc',1,'rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)'],['../classrtabmap_1_1Optimizer.html#af59c8340394268f9a1eb76fd5709f2c3',1,'rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)'],['../classrtabmap_1_1OptimizerCeres.html#ab988decf55da4a8821931855ddaa1c1a',1,'rtabmap::OptimizerCeres::optimize()'],['../classrtabmap_1_1OptimizerGTSAM.html#a4905d84cfc59516eef21ea89064c31ba',1,'rtabmap::OptimizerGTSAM::optimize()'],['../classrtabmap_1_1OptimizerTORO.html#a025b40902f0ea048bdbfee9ed4ebc0f3',1,'rtabmap::OptimizerTORO::optimize()']]], + ['optimizeba_67',['optimizeba',['../classrtabmap_1_1Optimizer.html#a1122f017f10105f7e6c14039d41709e5',1,'rtabmap::Optimizer::optimizeBA()'],['../classrtabmap_1_1OptimizerGTSAM.html#a8009ace7ad9f50214bc359421546a54b',1,'rtabmap::OptimizerGTSAM::optimizeBA()'],['../classrtabmap_1_1OptimizerG2O.html#af808c77c716d30691670c18955f08f61',1,'rtabmap::OptimizerG2O::optimizeBA()'],['../classrtabmap_1_1OptimizerCVSBA.html#a48fce33707a004a0d89db99c1c39d999',1,'rtabmap::OptimizerCVSBA::optimizeBA()'],['../classrtabmap_1_1OptimizerCeres.html#af5c6d465dc4fa7c9045cd241dae5d077',1,'rtabmap::OptimizerCeres::optimizeBA()'],['../classrtabmap_1_1Optimizer.html#aedaeb7cc371f3685f8595d9a151f6605',1,'rtabmap::Optimizer::optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)'],['../classrtabmap_1_1Optimizer.html#aab99f045516162944ad68fdabacb53dc',1,'rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())'],['../classrtabmap_1_1Optimizer.html#a2f7cbdebed9787ffa6b0b30536dfa1a0',1,'rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())']]], + ['optimizeincremental_68',['optimizeIncremental',['../classrtabmap_1_1Optimizer.html#a278f42e0d250085ac6fe9ed425627acf',1,'rtabmap::Optimizer']]], + ['optimizer_69',['optimizer',['../parameters.html#autotoc_md29',1,'Optimizer'],['../classrtabmap_1_1Optimizer.html',1,'rtabmap::Optimizer']]], + ['optimizerceres_70',['OptimizerCeres',['../classrtabmap_1_1OptimizerCeres.html',1,'rtabmap']]], + ['optimizercvsba_71',['OptimizerCVSBA',['../classrtabmap_1_1OptimizerCVSBA.html',1,'rtabmap']]], + ['optimizerg2o_72',['OptimizerG2O',['../classrtabmap_1_1OptimizerG2O.html',1,'rtabmap']]], + ['optimizergtsam_73',['OptimizerGTSAM',['../classrtabmap_1_1OptimizerGTSAM.html',1,'rtabmap']]], + ['optimizertoro_74',['OptimizerTORO',['../classrtabmap_1_1OptimizerTORO.html',1,'rtabmap']]], + ['orb_75',['orb',['../parameters.html#autotoc_md19',1,'ORB'],['../classrtabmap_1_1ORB.html',1,'rtabmap::ORB']]], + ['orboctree_76',['ORBOctree',['../classrtabmap_1_1ORBOctree.html',1,'rtabmap']]], + ['orientation_77',['orientation',['../classrtabmap_1_1IMU.html#a2160e6d59e4f9e3ffc84a2b7d62bdabd',1,'rtabmap::IMU']]], + ['orientationcovariance_78',['orientationCovariance',['../classrtabmap_1_1IMU.html#ab7668040b92bfa5532c5e1c19ddbf429',1,'rtabmap::IMU']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_12.js b/preview/pr-1773/api/latest/search/all_12.js new file mode 100644 index 00000000..7918eae6 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_12.js @@ -0,0 +1,59 @@ +var searchData= +[ + ['p_0',['P',['../classrtabmap_1_1CameraModel.html#acda5d9c4eeeaaad69e950f5ea630430a',1,'rtabmap::CameraModel']]], + ['parameter_20reference_1',['Parameter reference',['../parameters.html',1,'']]], + ['parameters_2',['Parameters',['../classrtabmap_1_1Parameters.html',1,'rtabmap']]], + ['parametersmap_3',['ParametersMap',['../namespacertabmap.html#ad08b6f1796a27dd7316c99c385e2cc55',1,'rtabmap']]], + ['parameterspair_4',['ParametersPair',['../namespacertabmap.html#a4d38c2e87cb7a46dc4299f7bd4d95a01',1,'rtabmap']]], + ['paramevent_5',['ParamEvent',['../classrtabmap_1_1ParamEvent.html',1,'rtabmap']]], + ['parseparameters_6',['parseparameters',['../classrtabmap_1_1OptimizerG2O.html#a07b598444b99584b6f2bed6baca5e8bb',1,'rtabmap::OptimizerG2O::parseParameters()'],['../classrtabmap_1_1StereoDense.html#ac2f693ca52897501450f2bda985c5cf5',1,'rtabmap::StereoDense::parseParameters()'],['../classrtabmap_1_1StereoSGBM.html#a73934f5953650089ac337316f3d3137c',1,'rtabmap::StereoSGBM::parseParameters()'],['../classrtabmap_1_1StereoBM.html#ab3960fcf495a6dcacfab58ed144b4cc7',1,'rtabmap::StereoBM::parseParameters()'],['../classrtabmap_1_1StereoOpticalFlow.html#aac2df770eba89ed2607c024c91d82c78',1,'rtabmap::StereoOpticalFlow::parseParameters()'],['../classrtabmap_1_1Stereo.html#a405d17f179327670251fca395728584b',1,'rtabmap::Stereo::parseParameters()'],['../classrtabmap_1_1Rtabmap.html#a5a461ed88e83d2dbebee819ab6690e7a',1,'rtabmap::Rtabmap::parseParameters()'],['../classrtabmap_1_1RegistrationVis.html#a6560046940995044d7a51cb0066d420e',1,'rtabmap::RegistrationVis::parseParameters()'],['../classrtabmap_1_1RegistrationIcp.html#abd60fffd946201723c35beebc7bfea6a',1,'rtabmap::RegistrationIcp::parseParameters()'],['../classrtabmap_1_1Registration.html#a0f409a8f0973667ef1687fe102bbf930',1,'rtabmap::Registration::parseParameters()'],['../classrtabmap_1_1OptimizerGTSAM.html#a9ac24a2315e15b16270151c3aae9d8f0',1,'rtabmap::OptimizerGTSAM::parseParameters()'],['../classrtabmap_1_1OptimizerCeres.html#aaa1128eeb38451086c7abd58ae6142ac',1,'rtabmap::OptimizerCeres::parseParameters()'],['../classrtabmap_1_1Optimizer.html#a0a942bd7902c8d2f9444b8eba6a648a3',1,'rtabmap::Optimizer::parseParameters()'],['../classrtabmap_1_1Memory.html#abbf54d2a34838cc13ce98d41a9991918',1,'rtabmap::Memory::parseParameters()'],['../classrtabmap_1_1LocalGridMaker.html#a6395948673108c87dd371cb7b4a29026',1,'rtabmap::LocalGridMaker::parseParameters()'],['../classrtabmap_1_1IMUFilter.html#a26022384205491695e5fbea349e6363a',1,'rtabmap::IMUFilter::parseParameters()'],['../classrtabmap_1_1DBDriverSqlite3.html#ab1933c0cad6c69c3ae788854731cdeec',1,'rtabmap::DBDriverSqlite3::parseParameters()'],['../classrtabmap_1_1DBDriver.html#a3c73e045d9bdf8cad1c58efc9d930427',1,'rtabmap::DBDriver::parseParameters()'],['../classrtabmap_1_1BayesFilter.html#a6d7d48b32c853f46eee9290d5c82cd28',1,'rtabmap::BayesFilter::parseParameters()'],['../classrtabmap_1_1VWDictionary.html#a89893faef6c96e3b19bfeab86094af81',1,'rtabmap::VWDictionary::parseParameters()']]], + ['particlefilter_7',['ParticleFilter',['../classrtabmap_1_1ParticleFilter.html',1,'rtabmap']]], + ['pass_20through_20filtering_8',['Pass-through Filtering',['../group__PassThrough.html',1,'']]], + ['passthrough_9',['passthrough',['../group__PassThrough.html#gaa6907857c69443b1bd879fcf6beef8a9',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga7bfc95ed4f7fca124b00707708223473',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gad674cecbb2b80e50ad8680265dd50905',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gadb551e7530b9fa63b588e11704827b7b',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga9c4f395f1105d3c36861e922108bfbf0',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga2d23fe7a7205247ae3152525d19a18ec',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga18c88abdd186757533cd7c9e825f540f',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gad8ced1799837b05e34ec4bd871a129ba',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gafe76c7bd4f68d8fe1518509564bf1f3d',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga551c7a9b75aaf6f087f81e52f326e182',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gab942c5914142128bce518c869f49f94d',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga4cef6e6f7cb447719417f118ff4e367d',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)']]], + ['pcl_10',['LaserScan to PCL',['../group__LaserScanToPointCloud.html',1,'']]], + ['pcl_20point_20clouds_11',['pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds'],['../group__TransformPointcloud.html',1,'Transform PCL Point Clouds']]], + ['pcl_20to_202d_20laserscan_12',['PCL to 2D LaserScan',['../group__LaserScan2dFromPointCloud.html',1,'']]], + ['pcl_20to_203d_20laserscan_13',['PCL to 3D LaserScan',['../group__LaserScanFromPointCloud.html',1,'']]], + ['point_14',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['point_20cloud_15',['point cloud',['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['point_20cloud_20cluster_20extraction_16',['Point Cloud Cluster Extraction',['../group__ExtractClusters.html',1,'']]], + ['point_20cloud_20downsampling_17',['Point Cloud Downsampling',['../group__PointCloudDownSampling.html',1,'']]], + ['point_20cloud_20indices_20extraction_18',['Point Cloud Indices Extraction',['../group__ExtractIndices.html',1,'']]], + ['point_20cloud_20with_20normals_19',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['point_20clouds_20',['point clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'Compute Variance and Correspondences of Two Point Clouds'],['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds'],['../group__TransformPointcloud.html',1,'Transform PCL Point Clouds']]], + ['point_20normal_20filtering_21',['Point Normal Filtering',['../group__PointNormalFiltering.html',1,'']]], + ['points_20from_20a_20point_20cloud_22',['points from a point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['pointxyzirt_23',['PointXYZIRT',['../structrtabmap_1_1PointXYZIRT.html',1,'rtabmap']]], + ['pointxyzit_24',['PointXYZIT',['../structrtabmap_1_1PointXYZIT.html',1,'rtabmap']]], + ['pose_25',['pose',['../classrtabmap_1_1OdometryEvent.html#ac7aaf59c0f005b6ac1497c870179fd25',1,'rtabmap::OdometryEvent::pose()'],['../classrtabmap_1_1Landmark.html#ac6bfc77e153b0877c4c1cc3d97327a88',1,'rtabmap::Landmark::pose()']]], + ['poses_26',['poses',['../classrtabmap_1_1Statistics.html#acb80fff8690d88228ebda369e0e06289',1,'rtabmap::Statistics']]], + ['post_27',['post',['../classUEventsSender.html#ab03886c42164f2f9bf89fd3da641526f',1,'UEventsSender::post()'],['../classUEventsManager.html#a956353a8006abe2edb0be2e1fc1846cb',1,'UEventsManager::post()']]], + ['posterior_28',['posterior',['../classrtabmap_1_1Statistics.html#ac50fb91120fdc16266460678088ac12f',1,'rtabmap::Statistics']]], + ['postupdate_29',['postUpdate',['../classrtabmap_1_1SensorCaptureThread.html#a43cb04de41b589b3f6069fff553a4dd7',1,'rtabmap::SensorCaptureThread']]], + ['prettyprint_30',['prettyPrint',['../classrtabmap_1_1Transform.html#a61ff0bf933e0e7f220f20745df3d0818',1,'rtabmap::Transform']]], + ['previousstamp_31',['previousStamp',['../classrtabmap_1_1Odometry.html#a36aa5447b7791c88a2799c99923be393',1,'rtabmap::Odometry']]], + ['previousvelocitytransform_32',['previousVelocityTransform',['../classrtabmap_1_1Odometry.html#a35d69a27271b798da6640295a98b9785',1,'rtabmap::Odometry']]], + ['priority_33',['Priority',['../classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153',1,'UThread']]], + ['priorsignored_34',['priorsIgnored',['../classrtabmap_1_1Optimizer.html#aeebd0d5575ab7e9f492b095c05ddb237',1,'rtabmap::Optimizer']]], + ['probability_35',['probability',['../classrtabmap_1_1GlobalMap.html#a54fd556aa295938077539e85b2be829a',1,'rtabmap::GlobalMap']]], + ['process_36',['process',['../classrtabmap_1_1Odometry.html#a0c2d39ed9b76c2c411a9e62e16e3bce1',1,'rtabmap::Odometry::process(SensorData &data, OdometryInfo *info=0)'],['../classrtabmap_1_1Odometry.html#a4fcbe67de2ec6f23829e3962ee586315',1,'rtabmap::Odometry::process(SensorData &data, const Transform &guess, OdometryInfo *info=0)'],['../classrtabmap_1_1Rtabmap.html#ad7f085b6ae0fd3c7077c500c028fd5c3',1,'rtabmap::Rtabmap::process(const SensorData &data, Transform odomPose, const cv::Mat &odomCovariance=cv::Mat::eye(6, 6, CV_64FC1), const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())'],['../classrtabmap_1_1Rtabmap.html#a91cedf4574a557cadf6daded489e4dbe',1,'rtabmap::Rtabmap::process(const SensorData &data, Transform odomPose, float odomLinearVariance, float odomAngularVariance, const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())'],['../classrtabmap_1_1Rtabmap.html#a35cf8fd93f77d1c148ae6d3107725750',1,'rtabmap::Rtabmap::process(const cv::Mat &image, int id=0, const std::map< std::string, float > &externalStats=std::map< std::string, float >())']]], + ['progressstate_37',['ProgressState',['../classrtabmap_1_1ProgressState.html',1,'rtabmap']]], + ['project_38',['project',['../classrtabmap_1_1CameraModel.html#a01de9a3cdc993275b2fbcf21d6e29833',1,'rtabmap::CameraModel']]], + ['projectcloudonxyplane_39',['projectCloudOnXYPlane',['../namespacertabmap_1_1util3d.html#a3bdae076cc5054f35393b744f478b980',1,'rtabmap::util3d']]], + ['projectcloudtocamera_40',['projectcloudtocamera',['../namespacertabmap_1_1util3d.html#a285e01226d60613ffd77d929780069ba',1,'rtabmap::util3d::projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PCLPointCloud2::Ptr laserScan, const rtabmap::Transform &cameraTransform)'],['../namespacertabmap_1_1util3d.html#a7dea084f1dbb77c8f5bc2a7241c3b566',1,'rtabmap::util3d::projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PointCloud< pcl::PointXYZ >::Ptr laserScan, const rtabmap::Transform &cameraTransform)'],['../namespacertabmap_1_1util3d.html#a826310ce938a13b9fff64f71e7ecc057',1,'rtabmap::util3d::projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const cv::Mat &laserScan, const rtabmap::Transform &cameraTransform)']]], + ['projectcloudtocameras_41',['projectcloudtocameras',['../namespacertabmap_1_1util3d.html#ae29c5a7ba359682e2430f55318226b39',1,'rtabmap::util3d::projectCloudToCameras(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const std::map< int, Transform > &cameraPoses, const std::map< int, std::vector< CameraModel > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const ProgressState *state=0)'],['../namespacertabmap_1_1util3d.html#aa5a81a30a05507cb5d222f2f23c111ea',1,'rtabmap::util3d::projectCloudToCameras(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::map< int, Transform > &cameraPoses, const std::map< int, std::vector< CameraModel > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const ProgressState *state=0)']]], + ['projectdepthto3d_42',['projectDepthTo3D',['../namespacertabmap_1_1util3d.html#a4a95aa3704280ecff8ae50db2fdb03b5',1,'rtabmap::util3d']]], + ['projectdepthto3dray_43',['projectDepthTo3DRay',['../namespacertabmap_1_1util3d.html#a791904051b63ab0da4d972166a25ae5f',1,'rtabmap::util3d']]], + ['projectdisparityto3d_44',['projectdisparityto3d',['../namespacertabmap_1_1util3d.html#a42fb0c483553db3b06e78d85106b8ee5',1,'rtabmap::util3d::projectDisparityTo3D(const cv::Point2f &pt, float disparity, const StereoCameraModel &model)'],['../namespacertabmap_1_1util3d.html#a05a022ff5229033fc248bc497edd5449',1,'rtabmap::util3d::projectDisparityTo3D(const cv::Point2f &pt, const cv::Mat &disparity, const StereoCameraModel &model)']]], + ['projectedids_45',['projectedIDs',['../classrtabmap_1_1RegistrationInfo.html#aa81f7ffab8e77dfc5240fd7e9a587498',1,'rtabmap::RegistrationInfo']]], + ['projectivepoint_46',['ProjectivePoint',['../classclams_1_1ProjectivePoint.html',1,'clams']]], + ['proportional_20radius_20filtering_47',['Proportional Radius Filtering',['../group__ProportionalRadiusFiltering.html',1,'']]], + ['proportionalradiusfiltering_48',['proportionalradiusfiltering',['../group__ProportionalRadiusFiltering.html#ga76e80e9da74feba84271c52b06065b7f',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gad54efb4e02c820af7d480c157a7c5ae8',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga3ce176a96606fd506d3ff28a0a4cdc2a',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga5382e5aa1b2db5ee59cda070d02030f7',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gac755f189d29b0ed14e48e7f241103176',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gaa3e3f8d0bdc8bfa7e070b7ef73541ddb',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gacdc66ecd05ab55d9c3eba62846f1cc5d',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga0b1bda3085510fd29162d6f511f14903',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga532ecb60ddd5c72d6c2930648da37621',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga9def3599aeff33e3d2a733020f713310',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga5e6659182a671665d293afb05461bdbd',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gac355ea4ecf36de86425b3dcd7794b4e1',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)']]], + ['proximitydetectionid_49',['proximityDetectionId',['../classrtabmap_1_1Statistics.html#a0aeff90b40410ef769e63ef6b000328b',1,'rtabmap::Statistics']]], + ['proximitydetectionmapid_50',['proximityDetectionMapId',['../classrtabmap_1_1Statistics.html#ae973bc5dc35b89888a67d5e416536c53',1,'rtabmap::Statistics']]], + ['prunenode_51',['pruneNode',['../classrtabmap_1_1RtabmapColorOcTree.html#aea61a0ef99b3c56ecf5178c6d6eeb847',1,'rtabmap::RtabmapColorOcTree']]], + ['pydescriptor_52',['PyDescriptor',['../parameters.html#autotoc_md50',1,'']]], + ['pydetector_53',['PyDetector',['../parameters.html#autotoc_md25',1,'']]], + ['pymatcher_54',['PyMatcher',['../parameters.html#autotoc_md48',1,'']]], + ['pythoninterface_55',['PythonInterface',['../classrtabmap_1_1PythonInterface.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_13.js b/preview/pr-1773/api/latest/search/all_13.js new file mode 100644 index 00000000..d9996fcc --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_13.js @@ -0,0 +1,95 @@ +var searchData= +[ + ['r_0',['r',['../classrtabmap_1_1CameraModel.html#ad763246258ddf02c27873c2536901781',1,'rtabmap::CameraModel::R()'],['../classrtabmap_1_1StereoCameraModel.html#a7afd347afb3909a2039f154b3a048035',1,'rtabmap::StereoCameraModel::R()']]], + ['r11_1',['r11',['../classrtabmap_1_1Transform.html#a1ea4c945ccf717677606fc7fe0331ccf',1,'rtabmap::Transform']]], + ['radius_20filtering_2',['radius filtering',['../group__ProportionalRadiusFiltering.html',1,'Proportional Radius Filtering'],['../group__RadiusFiltering.html',1,'Radius Filtering']]], + ['radiusfiltering_3',['radiusfiltering',['../group__RadiusFiltering.html#gadc01992dd4ebc7fe77f40e423ba83f95',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga9e4ddb084f4c00934f65f30d8b466047',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gae6562a12f695af7fc210043c85afeebc',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gaa6e6e945a27057824168aa287670d641',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga4a5c1b3dd17782eed6ff342a27ab9dde',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga3b3ef1e4b2893810542c6c2be871fa16',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gafba9a36653f1314aa968966f5e8f8df6',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gada185029395a374e08162d2b357406a8',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gaa1328e1ba793b44a450fe90e4e99fa35',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga8fde7163c8ede34584e464909f8410cd',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga4f7bd9bc6922f17815109375fc11367b',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga21f5957a6c6b8dd2ca7e559ed8a82d08',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)']]], + ['radiusposesclustering_4',['radiusPosesClustering',['../namespacertabmap_1_1graph.html#acaf3e4ffcfc830747c3c3cb02a8ea155',1,'rtabmap::graph']]], + ['radiusposesfiltering_5',['radiusPosesFiltering',['../namespacertabmap_1_1graph.html#a1906b8b4ad4b7ffc955d22c4996b1506',1,'rtabmap::graph']]], + ['radiussearch_6',['radiusSearch',['../classrtabmap_1_1FlannIndex.html#a28052e827934cfbc6a9ce14f8b5714df',1,'rtabmap::FlannIndex']]], + ['random_20sampling_7',['Random Sampling',['../group__RandomSampling.html',1,'']]], + ['randomsampling_8',['randomsampling',['../group__RandomSampling.html#ga8dadcd7fb9beedc839b54079c6e84701',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#gaf323d2f6db341f7dd83893297b1f9693',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#gac4f1ee370a918987a847d5d604601837',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#ga7738134d7dec8f178a927dfe69fcb15a',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#gad6269088b589b735fd87e07d11bf2547',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#ga5e31a5d57029fddd20e5d57ecdfb1184',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int samples)']]], + ['range_20filtering_20of_20pcl_20point_20clouds_9',['range filtering of pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds']]], + ['rangefiltering_10',['rangefiltering',['../group__PointCloudRangeFiltering.html#ga954c38903497ffa168e9d58afc47078e',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)'],['../namespacertabmap_1_1util3d.html#ae33bcf90896fbedc448097bed3bde0ae',1,'rtabmap::util3d::rangeFiltering(const LaserScan &scan, float rangeMin, float rangeMax)'],['../group__PointCloudRangeFiltering.html#gaf1867021c847f77f561a96e4823a16bd',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)'],['../group__PointCloudRangeFiltering.html#gaeff3b4153a78703ce5be9c64f8243596',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)'],['../group__PointCloudRangeFiltering.html#ga2a2226e27b4203d04293f84bf8032e3f',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)']]], + ['rangesplitfiltering_11',['rangesplitfiltering',['../group__PointCloudSplitRangeFiltering.html#gac9564b3cf8c8be2f80a20655f70af4f0',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)'],['../group__PointCloudSplitRangeFiltering.html#ga843adb51ad7882fc8c6b8d00f4663c3b',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)'],['../group__PointCloudSplitRangeFiltering.html#ga99d6429ac043d37bdef871158739557e',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)'],['../group__PointCloudSplitRangeFiltering.html#ga2dfe5eefc31a50912297f6341eae4446',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)']]], + ['ransacdeterministicseedenabled_12',['ransacDeterministicSeedEnabled',['../namespacertabmap_1_1util3d.html#ad918f390fa8b4d331561d5a00d61ea7b',1,'rtabmap::util3d']]], + ['rawlikelihood_13',['rawLikelihood',['../classrtabmap_1_1Statistics.html#a472f50deace411e1fbbef95f4fb698de',1,'rtabmap::Statistics']]], + ['raytrace_14',['rayTrace',['../namespacertabmap_1_1util3d.html#a281695150f5c02e6222d050f488a9d6b',1,'rtabmap::util3d']]], + ['reactivatesignatures_15',['reactivateSignatures',['../classrtabmap_1_1Memory.html#aa244b8581684b85e35d2056cf972e377',1,'rtabmap::Memory']]], + ['recording_20and_20datasets_16',['Recording and datasets',['../tools.html#autotoc_md6',1,'']]], + ['rectifydepth_17',['rectifyDepth',['../classrtabmap_1_1CameraModel.html#a22cf7f5b49ef0cd8be08755010f6acb5',1,'rtabmap::CameraModel']]], + ['rectifyimage_18',['rectifyImage',['../classrtabmap_1_1CameraModel.html#a17219cf5cf82d224f2a7ed5af01fa236',1,'rtabmap::CameraModel']]], + ['reducedids_19',['reducedIds',['../classrtabmap_1_1Statistics.html#a8c1e9a5c04232909f62447656d6bcbce',1,'rtabmap::Statistics']]], + ['reducegraph_20',['reduceGraph',['../namespacertabmap_1_1graph.html#aabda884597e6b8df053d04ee56cfaf6f',1,'rtabmap::graph']]], + ['reducenode_21',['reduceNode',['../classrtabmap_1_1Memory.html#ac9e6bfaf161d4bd1a9f99d2352492a1d',1,'rtabmap::Memory']]], + ['refcorners_22',['refCorners',['../classrtabmap_1_1OdometryInfo.html#a191435796512e2d1b6fd06c36bbc7516',1,'rtabmap::OdometryInfo']]], + ['reference_23',['Parameter reference',['../parameters.html',1,'']]], + ['refimageid_24',['refImageId',['../classrtabmap_1_1Statistics.html#a4ba41e262e2af21bfb2c9d1b6e493d6d',1,'rtabmap::Statistics']]], + ['refimagemapid_25',['refImageMapId',['../classrtabmap_1_1Statistics.html#a45abfdd8f164e0c457d64b80919d5052',1,'rtabmap::Statistics']]], + ['refinelinks_26',['refineLinks',['../classrtabmap_1_1Rtabmap.html#a6650c241bd6a89f66718ce7a227dfe10',1,'rtabmap::Rtabmap']]], + ['reg_27',['reg',['../classrtabmap_1_1OdometryInfo.html#a15a03ce5044cf0c6af77085777c4df7a',1,'rtabmap::OdometryInfo::reg'],['../parameters.html#autotoc_md46',1,'Reg']]], + ['region_20of_20interest_20roi_20computation_28',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['registercurrentthread_29',['registerCurrentThread',['../classULogger.html#a9e0fa0a0e32b03f89d08668e7c0b4664',1,'ULogger']]], + ['registerdepth_30',['registerDepth',['../namespacertabmap_1_1util2d.html#a48a7e15282f392e77561dd96ed3320f9',1,'rtabmap::util2d']]], + ['registration_31',['registration',['../classrtabmap_1_1Registration.html#a7d0ff4149da7f5839308ff543932b067',1,'rtabmap::Registration::Registration()'],['../classrtabmap_1_1Registration.html',1,'rtabmap::Registration']]], + ['registrationicp_32',['RegistrationIcp',['../classrtabmap_1_1RegistrationIcp.html',1,'rtabmap']]], + ['registrationinfo_33',['RegistrationInfo',['../classrtabmap_1_1RegistrationInfo.html',1,'rtabmap']]], + ['registrationvis_34',['registrationvis',['../classrtabmap_1_1RegistrationVis.html',1,'rtabmap::RegistrationVis'],['../classrtabmap_1_1RegistrationVis.html#aa845f7fbbfc8fc340dba96a2a6550d03',1,'rtabmap::RegistrationVis::RegistrationVis()']]], + ['rejectedmsg_35',['rejectedMsg',['../classrtabmap_1_1RegistrationInfo.html#af47520f216ad7259cfcc07254c4daa96',1,'rtabmap::RegistrationInfo']]], + ['rejectlastloopclosure_36',['rejectLastLoopClosure',['../classrtabmap_1_1Rtabmap.html#ab04bd616db9107a705faf5b3395a73d3',1,'rtabmap::Rtabmap']]], + ['release_37',['release',['../classrtabmap_1_1FlannIndex.html#a6eb4692afb561932aa6a20f7ebdee6c4',1,'rtabmap::FlannIndex::release()'],['../classUSemaphore.html#a693b35a08fd5363b14f3a220081814b5',1,'USemaphore::release()']]], + ['remove_20nan_20points_20from_20a_20point_20cloud_38',['remove nan points from a point cloud',['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['removeallref_39',['removeAllRef',['../classrtabmap_1_1VisualWord.html#a63364292bdd9921668187b16c2e0457e',1,'rtabmap::VisualWord']]], + ['removeallvirtuallinks_40',['removeAllVirtualLinks',['../classrtabmap_1_1Memory.html#a838b48bb9c2e6ccfe4f916ea2b2d00fd',1,'rtabmap::Memory']]], + ['removeallwordref_41',['removeAllWordRef',['../classrtabmap_1_1VWDictionary.html#ac4a70358ca2db8e63c67a30383a1d34b',1,'rtabmap::VWDictionary']]], + ['removeallwords_42',['removeAllWords',['../classrtabmap_1_1Signature.html#aac24301e6aff593fdcd679485b2c0e0e',1,'rtabmap::Signature']]], + ['removedir_43',['removeDir',['../classUDirectory.html#a78d8896627c8675a19b0c6fe6d9e274a',1,'UDirectory']]], + ['removehandler_44',['removeHandler',['../classUEventsManager.html#a10d4b359f630aa9387e77f8baefcc07c',1,'UEventsManager']]], + ['removelandmark_45',['removeLandmark',['../classrtabmap_1_1Signature.html#a6fe5edded7922a34c3f52e71e8be458d',1,'rtabmap::Signature']]], + ['removelandmarks_46',['removeLandmarks',['../classrtabmap_1_1Signature.html#aa482e98fb247d40368a9aaa838fe3a5a',1,'rtabmap::Signature']]], + ['removelink_47',['removelink',['../classrtabmap_1_1Signature.html#abbd9806c2b20182217d2269c7398541e',1,'rtabmap::Signature::removeLink()'],['../classrtabmap_1_1DBDriver.html#a7c3c7536423a956e74d3f609ee814717',1,'rtabmap::DBDriver::removeLink()'],['../classrtabmap_1_1Memory.html#a3fcaa79a33d63f7e383d05868b1316e3',1,'rtabmap::Memory::removeLink()']]], + ['removelinks_48',['removeLinks',['../classrtabmap_1_1Signature.html#a8d3e01853af1365fce62dd460dea816f',1,'rtabmap::Signature']]], + ['removenanfrompointcloud_49',['removenanfrompointcloud',['../group__RemoveNaNFromPointCloud.html#gab8b441e9acbafb0f36a0f4567e9535d6',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PCLPointCloud2::Ptr &cloud)'],['../group__RemoveNaNFromPointCloud.html#ga307cddc4476370cc25e5f67fd13af865',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud)'],['../group__RemoveNaNFromPointCloud.html#ga2c98d8e54fff76606352c87edc378c31',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud)'],['../group__RemoveNaNFromPointCloud.html#ga30ecdbed3fd26b750dcb0e63ea8c68b1',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud)']]], + ['removenannormalsfrompointcloud_50',['removenannormalsfrompointcloud',['../group__RemoveNaNNormalsFromPointCloud.html#ga42b9cf0558f56e1b00bd9ab1e2f1d0e6',1,'rtabmap::util3d::removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud)'],['../group__RemoveNaNNormalsFromPointCloud.html#gafeeebb45de9c3cb8ac353f3cf867bc41',1,'rtabmap::util3d::removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud)'],['../group__RemoveNaNNormalsFromPointCloud.html#ga3813dba7a0841937f37d9ecdaf526748',1,'rtabmap::util3d::removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud)']]], + ['removepoint_51',['removePoint',['../classrtabmap_1_1FlannIndex.html#a7d78d049ac4afb9f90fc0705506a6ce0',1,'rtabmap::FlannIndex']]], + ['removerawdata_52',['removeRawData',['../classrtabmap_1_1Memory.html#acab72b1076370287ac28a1d464d480f0',1,'rtabmap::Memory']]], + ['removevirtuallinks_53',['removevirtuallinks',['../classrtabmap_1_1Signature.html#a328419f90f9dd8113dee4e38c9e30367',1,'rtabmap::Signature::removeVirtualLinks()'],['../classrtabmap_1_1Memory.html#aa77fb0f90185a274b3e9d0c609ce14ed',1,'rtabmap::Memory::removeVirtualLinks()']]], + ['removewords_54',['removeWords',['../classrtabmap_1_1VWDictionary.html#a7a506e15bf83d16cc98aaa34057216f4',1,'rtabmap::VWDictionary']]], + ['rename_55',['rename',['../classUFile.html#a4918a111f92f2fdb7406fbd1661a1587',1,'UFile::rename(const std::string &newName)'],['../classUFile.html#a725e2edf4b5f603bfc688e96c76858d4',1,'UFile::rename(const std::string &oldFilePath, const std::string &newFilePath)']]], + ['repeatonce_56',['repeatOnce',['../classrtabmap_1_1Registration.html#a7a9163259eaebff421953e194a623864',1,'rtabmap::Registration']]], + ['reproject_57',['reproject',['../classrtabmap_1_1CameraModel.html#a637a730717e42939449cd9f09e20db26',1,'rtabmap::CameraModel::reproject()'],['../classrtabmap_1_1StereoCameraModel.html#a626b8f54940ebc77ec504921004dda3a',1,'rtabmap::StereoCameraModel::reproject(float x, float y, float z, int &uLeft, int &vLeft, int &uRight, int &vRight) const'],['../classrtabmap_1_1StereoCameraModel.html#a084e3e40c8b0caf66269d508a8fcffbc',1,'rtabmap::StereoCameraModel::reproject(float x, float y, float z, float &uLeft, float &vLeft, float &uRight, float &vRight) const'],['../classrtabmap_1_1CameraModel.html#a99204ef1a884478cf45b1503432b235b',1,'rtabmap::CameraModel::reproject()']]], + ['reset_58',['reset',['../classrtabmap_1_1OdometryLIOSAM.html#a7f72dbc28081ae774303dbf2d8cb5535',1,'rtabmap::OdometryLIOSAM::reset()'],['../classrtabmap_1_1OdometryLOAM.html#a6acc7b4f164a8915ada550ba7c23ac0e',1,'rtabmap::OdometryLOAM::reset()'],['../classrtabmap_1_1OdometryF2F.html#a7fb0eb46ed5b40e15299bc40b5cd4eb5',1,'rtabmap::OdometryF2F::reset()'],['../classrtabmap_1_1OdometryMono.html#a9574ccc748b5c4f664c059d460742457',1,'rtabmap::OdometryMono::reset()'],['../classrtabmap_1_1OdometryFovis.html#a0175e1e923673028f1d647aaa185447c',1,'rtabmap::OdometryFovis::reset()'],['../classrtabmap_1_1OdometryFLOAM.html#a85105e691f68317b2816566cb7440e46',1,'rtabmap::OdometryFLOAM::reset()'],['../classrtabmap_1_1OdometryF2M.html#a7a4b7219e339bbea7761601027f192d2',1,'rtabmap::OdometryF2M::reset()'],['../classrtabmap_1_1OdometryOpenVINS.html#abbf8f6be20990f3e39ad23325d72b41b',1,'rtabmap::OdometryOpenVINS::reset()'],['../classrtabmap_1_1OdometryDVO.html#aa20fb31a7bf255caa1f13b0b69b2ee65',1,'rtabmap::OdometryDVO::reset()'],['../classrtabmap_1_1OdometryCuVSLAM.html#a4cb0a09fc8eb184b2e0d915980b02742',1,'rtabmap::OdometryCuVSLAM::reset()'],['../classrtabmap_1_1Odometry.html#a0ea20c39ae597a21e896b706662bb31c',1,'rtabmap::Odometry::reset()'],['../classrtabmap_1_1IMUFilter.html#a45b68e2127fc5a687ef6b7920bf9b39b',1,'rtabmap::IMUFilter::reset()'],['../classrtabmap_1_1BayesFilter.html#ad415ee334d31eebc3685e61862f32573',1,'rtabmap::BayesFilter::reset()'],['../classrtabmap_1_1OdometryOkvis.html#a81f51ca0b6f3b48f9e6a6e0e2d7b7118',1,'rtabmap::OdometryOkvis::reset()'],['../classrtabmap_1_1OdometryORBSLAM2.html#ab127fac7aae296a68a9bf68ab02ffbbc',1,'rtabmap::OdometryORBSLAM2::reset()'],['../classrtabmap_1_1OdometryORBSLAM3.html#a57626265fa4c23fab95140ca9c1f8f93',1,'rtabmap::OdometryORBSLAM3::reset()'],['../classrtabmap_1_1OdometryVINSFusion.html#aa2fdb97067ad27d76c6315125a513ed3',1,'rtabmap::OdometryVINSFusion::reset()'],['../classrtabmap_1_1OdometryViso2.html#ad442b8186b72e220feace5fb0b0fec5c',1,'rtabmap::OdometryViso2::reset()'],['../classULogger.html#a007b617547d616325e58003eb4352a19',1,'ULogger::reset()'],['../classrtabmap_1_1OdometryMSCKF.html#a3be4ada7eebf234c87a3127a85988d97',1,'rtabmap::OdometryMSCKF::reset()'],['../classrtabmap_1_1OdometryOpen3D.html#a21fecb34185676d02d92c7ad18f13970',1,'rtabmap::OdometryOpen3D::reset()']]], + ['resetmemory_59',['resetMemory',['../classrtabmap_1_1Rtabmap.html#af12ae46226f33adf8c4cafbe1bcf544c',1,'rtabmap::Rtabmap']]], + ['resettimer_60',['resetTimer',['../classrtabmap_1_1SensorCapture.html#afa9923bb4a3b88e6dbf4c8ae7f060437',1,'rtabmap::SensorCapture']]], + ['restart_61',['restart',['../classUTimer.html#aa4db57cf682a403fba8ddf95d268d2a6',1,'UTimer']]], + ['rewind_62',['rewind',['../classUDirectory.html#aba596118c893215cf1a2981196864dca',1,'UDirectory']]], + ['rgbd_63',['RGBD',['../parameters.html#autotoc_md28',1,'']]], + ['rgbdfromcloud_64',['rgbdFromCloud',['../namespacertabmap_1_1util3d.html#a5ec62aa90ceb52a032e7e49c22e0fd76',1,'rtabmap::util3d']]], + ['rgbfromcloud_65',['rgbFromCloud',['../namespacertabmap_1_1util3d.html#a3366d0a9c24960ee3f5b720945e12b1b',1,'rtabmap::util3d']]], + ['right_66',['right',['../classrtabmap_1_1StereoCameraModel.html#ab8061141407d8cc55d7f83211708af85',1,'rtabmap::StereoCameraModel']]], + ['rightraw_67',['rightRaw',['../classrtabmap_1_1SensorData.html#aaa7408cb13ea2cbe33438e007b80de30',1,'rtabmap::SensorData']]], + ['roi_68',['roi',['../classrtabmap_1_1StereoCameraModel.html#ac2fb1c489ae60bd7e4c104515db3c3a9',1,'rtabmap::StereoCameraModel::roi()'],['../classrtabmap_1_1CameraModel.html#a2ff3290299c36b64ee880db2386f898f',1,'rtabmap::CameraModel::roi()']]], + ['roi_20computation_69',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['rotateimagesupsideupifnecessary_70',['rotateImagesUpsideUpIfNecessary',['../namespacertabmap_1_1util2d.html#a1577494ad9730181d5b768ca8237d5dd',1,'rtabmap::util2d']]], + ['rotation_71',['rotation',['../classrtabmap_1_1Transform.html#aeed78122de7f78a13641802b964d9631',1,'rtabmap::Transform']]], + ['rotationmatrix_72',['rotationMatrix',['../classrtabmap_1_1Transform.html#a23dfabecb7b2ad9c6a7fdcde08d900ab',1,'rtabmap::Transform']]], + ['rotvariance_73',['rotVariance',['../classrtabmap_1_1Link.html#a00cecebc9adf3ee5afb66d6ad63871e4',1,'rtabmap::Link']]], + ['rtab_20map_20c_20api_74',['RTAB-Map C++ API',['../index.html',1,'']]], + ['rtabmap_75',['rtabmap',['../parameters.html#autotoc_md9',1,'Rtabmap'],['../namespacertabmap.html',1,'rtabmap'],['../classrtabmap_1_1Rtabmap.html',1,'rtabmap::Rtabmap']]], + ['rtabmap_3a_3agraph_76',['graph',['../namespacertabmap_1_1graph.html',1,'rtabmap']]], + ['rtabmap_3a_3autil2d_77',['util2d',['../namespacertabmap_1_1util2d.html',1,'rtabmap']]], + ['rtabmap_3a_3autil3d_78',['util3d',['../namespacertabmap_1_1util3d.html',1,'rtabmap']]], + ['rtabmap_5ft_5fopengl_79',['rtabmap_T_opengl',['../classrtabmap_1_1Transform.html#aa58ff702a149c05c930195d1ce42012e',1,'rtabmap::Transform']]], + ['rtabmapcoloroctree_80',['rtabmapcoloroctree',['../classrtabmap_1_1RtabmapColorOcTree.html#a357d9dd5513df9a4185d84f97c1d5a3f',1,'rtabmap::RtabmapColorOcTree::RtabmapColorOcTree()'],['../classrtabmap_1_1RtabmapColorOcTree.html',1,'rtabmap::RtabmapColorOcTree']]], + ['rtabmapcoloroctreememberinit_81',['RtabmapColorOcTreeMemberInit',['../classrtabmap_1_1RtabmapColorOcTree.html#aa365df57ec5726f1d9ccff0c50a1cfbd',1,'rtabmap::RtabmapColorOcTree']]], + ['rtabmapcoloroctreenode_82',['RtabmapColorOcTreeNode',['../classrtabmap_1_1RtabmapColorOcTreeNode.html',1,'rtabmap']]], + ['rtabmapevent_83',['RtabmapEvent',['../classrtabmap_1_1RtabmapEvent.html',1,'rtabmap']]], + ['rtabmapevent3dmap_84',['RtabmapEvent3DMap',['../classrtabmap_1_1RtabmapEvent3DMap.html',1,'rtabmap']]], + ['rtabmapeventcmd_85',['RtabmapEventCmd',['../classrtabmap_1_1RtabmapEventCmd.html',1,'rtabmap']]], + ['rtabmapeventinit_86',['RtabmapEventInit',['../classrtabmap_1_1RtabmapEventInit.html',1,'rtabmap']]], + ['rtabmapglobalpathevent_87',['RtabmapGlobalPathEvent',['../classrtabmap_1_1RtabmapGlobalPathEvent.html',1,'rtabmap']]], + ['rtabmapgoalstatusevent_88',['RtabmapGoalStatusEvent',['../classrtabmap_1_1RtabmapGoalStatusEvent.html',1,'rtabmap']]], + ['rtabmaplabelerrorevent_89',['RtabmapLabelErrorEvent',['../classrtabmap_1_1RtabmapLabelErrorEvent.html',1,'rtabmap']]], + ['rtabmapthread_90',['rtabmapthread',['../classrtabmap_1_1RtabmapThread.html#a5c5752b0b0a0e05e8e97308c74f9b955',1,'rtabmap::RtabmapThread::RtabmapThread()'],['../classrtabmap_1_1RtabmapThread.html',1,'rtabmap::RtabmapThread']]], + ['rvlcodec_91',['RvlCodec',['../classrtabmap_1_1RvlCodec.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_14.js b/preview/pr-1773/api/latest/search/all_14.js new file mode 100644 index 00000000..3a3bba7f --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_14.js @@ -0,0 +1,180 @@ +var searchData= +[ + ['sad_0',['sad',['../namespacertabmap_1_1util2d.html#a4cd865b8edc489f950b0c1b5e1a0c992',1,'rtabmap::util2d']]], + ['sampling_1',['Random Sampling',['../group__RandomSampling.html',1,'']]], + ['save_2',['save',['../classrtabmap_1_1StereoCameraModel.html#abfafd0a24795186f3bf623082663b4cd',1,'rtabmap::StereoCameraModel::save()'],['../classrtabmap_1_1CameraModel.html#ab5ec6010459c4e642e162dc8914bccb9',1,'rtabmap::CameraModel::save()']]], + ['save2dmap_3',['save2dmap',['../classrtabmap_1_1Memory.html#ac96fffe9fde99f7c74a06bbc5727be6b',1,'rtabmap::Memory::save2DMap()'],['../classrtabmap_1_1DBDriver.html#a5bed0d1f92c1cc864dedf99b99a44037',1,'rtabmap::DBDriver::save2DMap(const cv::Mat &map, float xMin, float yMin, float cellSize) const']]], + ['saveflannindex_4',['saveFlannIndex',['../classrtabmap_1_1DBDriver.html#a33c2abff50e61f35efbbdbe530963fea',1,'rtabmap::DBDriver']]], + ['savelasfile_5',['savelasfile',['../namespacertabmap.html#a264208396318e0ecfe2af8f3aafe0374',1,'rtabmap::saveLASFile(const std::string &filePath, const pcl::PointCloud< pcl::PointXYZ > &cloud, const std::vector< int > &cameraIds=std::vector< int >())'],['../namespacertabmap.html#ad59cb4c65fba713c1a622904c5229198',1,'rtabmap::saveLASFile(const std::string &filePath, const pcl::PointCloud< pcl::PointXYZI > &cloud, const std::vector< int > &cameraIds=std::vector< int >())'],['../namespacertabmap.html#af174f507bee7dde4f9d45044d7bee8ea',1,'rtabmap::saveLASFile(const std::string &filePath, const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), const std::vector< float > &intensities=std::vector< float >())']]], + ['savelocationdata_6',['saveLocationData',['../classrtabmap_1_1Memory.html#a93119d10342db4a55c77b180cb249453',1,'rtabmap::Memory']]], + ['saveoptimizedmesh_7',['saveoptimizedmesh',['../classrtabmap_1_1DBDriver.html#a22d5643353b8d49bcc94c5a4abbc9a39',1,'rtabmap::DBDriver::saveOptimizedMesh()'],['../classrtabmap_1_1Memory.html#a7e16d27512d0daf17b9dbb17aab3b201',1,'rtabmap::Memory::saveOptimizedMesh()']]], + ['saveoptimizedposes_8',['saveoptimizedposes',['../classrtabmap_1_1DBDriver.html#ab91ad40e4273485e5f0951fac32c22e4',1,'rtabmap::DBDriver::saveOptimizedPoses()'],['../classrtabmap_1_1Memory.html#ab7a2da56bb12845f0370a20a9497dfe0',1,'rtabmap::Memory::saveOptimizedPoses()']]], + ['savepcdwords_9',['savepcdwords',['../namespacertabmap_1_1util3d.html#a4e297ff4baacb0c658d7481eef5201a6',1,'rtabmap::util3d::savePCDWords(const std::string &fileName, const std::multimap< int, pcl::PointXYZ > &words, const Transform &transform=Transform::getIdentity())'],['../namespacertabmap_1_1util3d.html#abf6955904a45f28187e73aa1f4c409e0',1,'rtabmap::util3d::savePCDWords(const std::string &fileName, const std::multimap< int, cv::Point3f > &words, const Transform &transform=Transform::getIdentity())']]], + ['savepreviewimage_10',['savepreviewimage',['../classrtabmap_1_1Memory.html#affdd654e385b61306a2ac2ea91d13b85',1,'rtabmap::Memory::savePreviewImage()'],['../classrtabmap_1_1DBDriver.html#a8323a53d20e4ade6b1c7b268c473a170',1,'rtabmap::DBDriver::savePreviewImage()']]], + ['savestatistics_11',['saveStatistics',['../classrtabmap_1_1Memory.html#afbcfc92dc9bbc344ab106d2f21d93aaf',1,'rtabmap::Memory']]], + ['savestereotransform_12',['saveStereoTransform',['../classrtabmap_1_1StereoCameraModel.html#a1d016f499dbcce889ce7b7062c83b660',1,'rtabmap::StereoCameraModel']]], + ['scale_13',['scale',['../classrtabmap_1_1StereoCameraModel.html#a264d57ca1e0f6b41d03ffe1d89afc382',1,'rtabmap::StereoCameraModel']]], + ['scaled_14',['scaled',['../classrtabmap_1_1CameraModel.html#aecf2e87f260558dbf631e4803e1ed986',1,'rtabmap::CameraModel']]], + ['segmentcloud_15',['segmentCloud',['../classrtabmap_1_1LocalGridMaker.html#ad54b92f6d04b76a550483a7a68f45bda',1,'rtabmap::LocalGridMaker']]], + ['segmentobstaclesfromground_16',['segmentobstaclesfromground',['../namespacertabmap_1_1util3d.html#a72b271fa98352180241614517ef3b21e',1,'rtabmap::util3d::segmentObstaclesFromGround(const typename pcl::PointCloud< PointT >::Ptr &cloud, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)'],['../namespacertabmap_1_1util3d.html#a58ee399b0bca3a8af41e74d0eced5f84',1,'rtabmap::util3d::segmentObstaclesFromGround(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)']]], + ['sensorcapture_17',['sensorcapture',['../classrtabmap_1_1SensorCapture.html',1,'rtabmap::SensorCapture'],['../classrtabmap_1_1SensorCapture.html#adf4b1dfd8e5b45b8eecf938a92dbae94',1,'rtabmap::SensorCapture::SensorCapture()']]], + ['sensorcaptureinfo_18',['sensorcaptureinfo',['../classrtabmap_1_1SensorCaptureInfo.html',1,'rtabmap::SensorCaptureInfo'],['../classrtabmap_1_1SensorCaptureInfo.html#a8f315fb6fe3a16b77e3252d66088db09',1,'rtabmap::SensorCaptureInfo::SensorCaptureInfo()']]], + ['sensorcapturethread_19',['sensorcapturethread',['../classrtabmap_1_1SensorCaptureThread.html#a2a64df180f19d0a2ea9a8d66ea58fc42',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#a590aee9497d8a3b6e14b68e1e17f9c6a',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, SensorCapture *odomSensor, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html',1,'rtabmap::SensorCaptureThread'],['../classrtabmap_1_1SensorCaptureThread.html#a9cf0e883ace51a2a656395327beb74e5',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, Camera *camera, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#acae15b44b2fb05da9421dc88ff0be75c',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Camera *camera, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#a76ad33a55009b7a7f7ec51acccbe0492',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#a834d1e5c389e7ef8eb23bf1361916ae2',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, const ParametersMap &parameters=ParametersMap())']]], + ['sensordata_20',['sensordata',['../classrtabmap_1_1SensorData.html#aead598774e0cb15375828a2965b3ab80',1,'rtabmap::SensorData::SensorData()'],['../classrtabmap_1_1Signature.html#a24c257c2ff3fe156910ac82c41de8738',1,'rtabmap::Signature::sensorData()'],['../classrtabmap_1_1SensorData.html#a87424cc9915dababe9aa3bc418e85197',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ac06b8207850c5412cc52f5f0e0e4ba7b',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a52b215e8d320bbcbd464e3b7181a077b',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ae4498a6d017e83202dfe86618e91fa57',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a72a0250435fc194b1189241d4a47254d',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ada69a11125b0b3072add73a3a2f1b5f2',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ae0370b88671bb41812c2d39fd0cfc3ce',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a1534d36fee45c3df70679438ec9d00a3',1,'rtabmap::SensorData::SensorData(const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#abdd07b6e248e165959468bb31897bc20',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a6ccaccf892f950b0caa03c07de3eab98',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a14f7a5c64b5d27842cb654e247d1fd20',1,'rtabmap::SensorData::SensorData(const cv::Mat &image, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ab6201ea27482207308f000bd4cc90081',1,'rtabmap::SensorData::SensorData(const cv::Mat &image, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a941f907890fe9e0e9becec0a665581cd',1,'rtabmap::SensorData::SensorData()'],['../classrtabmap_1_1Signature.html#a0e7b1874613a7438ec1b2d9aa2634da8',1,'rtabmap::Signature::sensorData()'],['../classrtabmap_1_1SensorData.html#ad34a0a4ca3eac4a1c91fb7fb5068fb04',1,'rtabmap::SensorData::SensorData()'],['../classrtabmap_1_1SensorData.html',1,'rtabmap::SensorData'],['../classrtabmap_1_1SensorData.html#a25efb0e7904a3daa7f4ee7cd814a24ff',1,'rtabmap::SensorData::SensorData()']]], + ['sensorevent_21',['sensorevent',['../classrtabmap_1_1SensorEvent.html#a6e120cf7c4aea9201462c9cbb224b787',1,'rtabmap::SensorEvent::SensorEvent(const SensorData &data)'],['../classrtabmap_1_1SensorEvent.html#a1e35f9e5433d00628dd51876bc74fec5',1,'rtabmap::SensorEvent::SensorEvent(const SensorData &data, const SensorCaptureInfo &sensorCaptureInfo)'],['../classrtabmap_1_1SensorEvent.html#a1a47910aed70809eabfc195ca2515f85',1,'rtabmap::SensorEvent::SensorEvent(const SensorData &data, const std::string &cameraName)'],['../classrtabmap_1_1SensorEvent.html#aef6624e43c3f7f29684072782a377e20',1,'rtabmap::SensorEvent::SensorEvent()'],['../classrtabmap_1_1SensorEvent.html#aa6c0584b85a70fe240f745c759948591',1,'rtabmap::SensorEvent::SensorEvent(const cv::Mat &image, int seq=0, double stamp=0.0, const std::string &cameraName=std::string())'],['../classrtabmap_1_1SensorEvent.html',1,'rtabmap::SensorEvent']]], + ['sensors_20and_20calibration_22',['Sensors and calibration',['../tools.html#autotoc_md7',1,'']]], + ['separator_23',['separator',['../classUDirectory.html#a66750846a899e436808d4eadbcafced0',1,'UDirectory']]], + ['serialize_24',['serialize',['../classrtabmap_1_1CameraModel.html#a5724619c7ac8c796fd8c63660e398082',1,'rtabmap::CameraModel::serialize()'],['../classrtabmap_1_1StereoCameraModel.html#a4eab6254ef808719ca2d0543c89e0722',1,'rtabmap::StereoCameraModel::serialize()']]], + ['serializedata_25',['serializeData',['../classrtabmap_1_1Statistics.html#ab34cfba17216b060f57e106d7c169685',1,'rtabmap::Statistics']]], + ['serializeindex_26',['serializeindex',['../classrtabmap_1_1FlannIndex.html#a1f2bf8718a75aa0b5dded8c287293c23',1,'rtabmap::FlannIndex::serializeIndex()'],['../classrtabmap_1_1VWDictionary.html#a2864c406b3792dbfb7c8c334b6e44d41',1,'rtabmap::VWDictionary::serializeIndex()']]], + ['setaffinity_27',['setAffinity',['../classUThread.html#aabcf31acae6ca5b8503ec320acbc11f8',1,'UThread']]], + ['setaltitude_28',['setAltitude',['../classrtabmap_1_1GeodeticCoords.html#afe3c631b5f01246840f8591fc8dc834e',1,'rtabmap::GeodeticCoords']]], + ['setbuffered_29',['setBuffered',['../classULogger.html#ab981daf077b8afbf49c7bd185aa3b273',1,'ULogger']]], + ['setcachesize_30',['setCacheSize',['../classrtabmap_1_1DBDriverSqlite3.html#afc148e17cf8cc6ed4565c5519b06fc5c',1,'rtabmap::DBDriverSqlite3']]], + ['setcameramodel_31',['setCameraModel',['../classrtabmap_1_1SensorData.html#ad8ae172220b7bfffeb09bb1eac60f28f',1,'rtabmap::SensorData']]], + ['setcameramodels_32',['setCameraModels',['../classrtabmap_1_1SensorData.html#af841bbc9ea6de17124f8c871fa5d0719',1,'rtabmap::SensorData']]], + ['setchildregistration_33',['setChildRegistration',['../classrtabmap_1_1Registration.html#ac105402feeb2ec6551235296604145aa',1,'rtabmap::Registration']]], + ['setcoloronly_34',['setColorOnly',['../classrtabmap_1_1SensorCaptureThread.html#a6308c79599bd90b77d243febff024a15',1,'rtabmap::SensorCaptureThread']]], + ['setconstraints_35',['setConstraints',['../classrtabmap_1_1Statistics.html#ac4761222db6faee6c34c53c1d4d00ec2',1,'rtabmap::Statistics']]], + ['setcurrentgoalid_36',['setCurrentGoalId',['../classrtabmap_1_1Statistics.html#a845a35143a149c9670fb46938594fcb9',1,'rtabmap::Statistics']]], + ['setdatabuffersize_37',['setDataBufferSize',['../classrtabmap_1_1RtabmapThread.html#ab9b4e64c65264f12bfeb1814aff59cbe',1,'rtabmap::RtabmapThread']]], + ['setdbinmemory_38',['setDbInMemory',['../classrtabmap_1_1DBDriverSqlite3.html#a0722fcddc772af1cc03a7fe8b410d137',1,'rtabmap::DBDriverSqlite3']]], + ['setdetectorrate_39',['setDetectorRate',['../classrtabmap_1_1RtabmapThread.html#a8ff95633544be0d87c1dc977cb52a064',1,'rtabmap::RtabmapThread']]], + ['setdistortionmodel_40',['setDistortionModel',['../classrtabmap_1_1SensorCaptureThread.html#aa7f6dcffcd6646994c2a87d8b888edcc',1,'rtabmap::SensorCaptureThread']]], + ['setdoomed_41',['setDoomed',['../classUDestroyer.html#aa3f030225d28ac7ad7059b9b64bde837',1,'UDestroyer']]], + ['setdualmode_42',['setDualMode',['../classrtabmap_1_1CameraRealSense2.html#ad9a5218ed20bad24c020a18e2ed0b12c',1,'rtabmap::CameraRealSense2']]], + ['setdummydictionary_43',['setdummydictionary',['../classrtabmap_1_1Memory.html#a655f123daec9e4e50e322db9f3bbd6db',1,'rtabmap::Memory::setDummyDictionary()'],['../classrtabmap_1_1Rtabmap.html#a4d351e3f5ef809460afbb5a7702a500d',1,'rtabmap::Rtabmap::setDummyDictionary()']]], + ['setenabled_44',['setEnabled',['../classrtabmap_1_1Signature.html#a51a08cbabd87eb0fd5045ffdb4cb3c00',1,'rtabmap::Signature']]], + ['setenvsensors_45',['setEnvSensors',['../classrtabmap_1_1SensorData.html#ab3a5ebf180d5f2f106877b78aee6d1d1',1,'rtabmap::SensorData']]], + ['seteventlevel_46',['setEventLevel',['../classULogger.html#ac0705dc7bc5da07ce27351eb6519e942',1,'ULogger']]], + ['setextended_47',['setExtended',['../classrtabmap_1_1Statistics.html#a938202c5836ba75d8eb06b0317712d06',1,'rtabmap::Statistics']]], + ['setfeatures_48',['setFeatures',['../classrtabmap_1_1SensorData.html#ad083f0a1e7769ff62183a0fa47279ae3',1,'rtabmap::SensorData']]], + ['setfixeddictionary_49',['setFixedDictionary',['../classrtabmap_1_1VWDictionary.html#a5f3712744b9f7beb5da186a842f7d74a',1,'rtabmap::VWDictionary']]], + ['setframerate_50',['setframerate',['../classrtabmap_1_1SensorCapture.html#a1e195970f52334094174783c5fd06456',1,'rtabmap::SensorCapture::setFrameRate()'],['../classrtabmap_1_1SensorCaptureThread.html#a416f1596701d6b9dbd8512cd1c617788',1,'rtabmap::SensorCaptureThread::setFrameRate()']]], + ['setglobaldescriptors_51',['setGlobalDescriptors',['../classrtabmap_1_1SensorData.html#ab6f18f2eb0340c8f6e800a695424bbbe',1,'rtabmap::SensorData']]], + ['setglobalpose_52',['setGlobalPose',['../classrtabmap_1_1SensorData.html#a72f0ce5a2989f478149f5cf2d5a36556',1,'rtabmap::SensorData']]], + ['setgps_53',['setGPS',['../classrtabmap_1_1SensorData.html#ad09e3e0fc1f60d233d81288a4cf8f56a',1,'rtabmap::SensorData']]], + ['setgroundtruth_54',['setGroundTruth',['../classrtabmap_1_1SensorData.html#a7051ea8c13bafd7eaffb5f5a93064808',1,'rtabmap::SensorData']]], + ['setgroundtruthpose_55',['setGroundTruthPose',['../classrtabmap_1_1Signature.html#aa8be86850b1277ce7c5eb4a5998e35e9',1,'rtabmap::Signature']]], + ['sethistogrammethod_56',['setHistogramMethod',['../classrtabmap_1_1SensorCaptureThread.html#a3e55c70032141f75802b2339c102c063',1,'rtabmap::SensorCaptureThread']]], + ['setid_57',['setId',['../classrtabmap_1_1SensorData.html#a4d0f4615a747eaef142b51a1ab1e5527',1,'rtabmap::SensorData']]], + ['setidentity_58',['setIdentity',['../classrtabmap_1_1Transform.html#afe833cfcd56f2f147091e7d309dadb36',1,'rtabmap::Transform']]], + ['setimagedecimation_59',['setImageDecimation',['../classrtabmap_1_1SensorCaptureThread.html#a74383f4e31ed642520511eb822ed1d89',1,'rtabmap::SensorCaptureThread']]], + ['setimagerate_60',['setImageRate',['../classrtabmap_1_1SensorCaptureThread.html#a2a40e01eb8e61aae54feeb1458efb88e',1,'rtabmap::SensorCaptureThread']]], + ['setimagesize_61',['setimagesize',['../classrtabmap_1_1CameraModel.html#a43fd48b917ca145876024859f8565931',1,'rtabmap::CameraModel::setImageSize()'],['../classrtabmap_1_1StereoCameraModel.html#a898c2eff7bfc4977703f8edb86ca1187',1,'rtabmap::StereoCameraModel::setImageSize()']]], + ['setimu_62',['setIMU',['../classrtabmap_1_1SensorData.html#a2297bfc9d81c077852d8f832231ba139',1,'rtabmap::SensorData']]], + ['setincrementaldictionary_63',['setIncrementalDictionary',['../classrtabmap_1_1VWDictionary.html#ab14ef6e8fb979dce23f9a40a1faf8dff',1,'rtabmap::VWDictionary']]], + ['setinfmatrix_64',['setInfMatrix',['../classrtabmap_1_1Link.html#a3a82104ae4195beff134811a3a19d939',1,'rtabmap::Link']]], + ['setinitialpose_65',['setInitialPose',['../classrtabmap_1_1Rtabmap.html#a9a9321531773f37cd5d7740495ede47f',1,'rtabmap::Rtabmap']]], + ['setjournalmode_66',['setJournalMode',['../classrtabmap_1_1DBDriverSqlite3.html#ae3c445bedd62088bb20e76eda6cfe64d',1,'rtabmap::DBDriverSqlite3']]], + ['setlabel_67',['setLabel',['../classrtabmap_1_1Signature.html#aa6dc3ad065ae2fd29afbbe69429f3a7b',1,'rtabmap::Signature']]], + ['setlabels_68',['setLabels',['../classrtabmap_1_1Statistics.html#aaa519c598aa7a56eda73653ab34d6b48',1,'rtabmap::Statistics']]], + ['setlandmarks_69',['setLandmarks',['../classrtabmap_1_1SensorData.html#af0873bbd79209dca371792e94e020e14',1,'rtabmap::SensorData']]], + ['setlaserscan_70',['setLaserScan',['../classrtabmap_1_1SensorData.html#a8fc1c848518793a1fe65c47a3ff729b0',1,'rtabmap::SensorData']]], + ['setlastsignaturedata_71',['setLastSignatureData',['../classrtabmap_1_1Statistics.html#ae5de0aae15a10ed18cc30c2656bd4d6a',1,'rtabmap::Statistics']]], + ['setlastwordid_72',['setLastWordId',['../classrtabmap_1_1VWDictionary.html#af0b676e13c7dba437147520335289e97',1,'rtabmap::VWDictionary']]], + ['setlatitude_73',['setLatitude',['../classrtabmap_1_1GeodeticCoords.html#a9113dd2d169f83e68b1dd0b12f8f24da',1,'rtabmap::GeodeticCoords']]], + ['setlevel_74',['setLevel',['../classULogger.html#ad8589bdaabddc1e9a260b890b1cf312e',1,'ULogger']]], + ['setlikelihood_75',['setLikelihood',['../classrtabmap_1_1Statistics.html#a8988eb66288df6a4d676b3cbd7b3a7ff',1,'rtabmap::Statistics']]], + ['setlocalizationcovariance_76',['setLocalizationCovariance',['../classrtabmap_1_1Statistics.html#a747aee7cd90f8318de6d0b82bedcd971',1,'rtabmap::Statistics']]], + ['setlocalpath_77',['setLocalPath',['../classrtabmap_1_1Statistics.html#a3c80bf518d943d9b86e5088a9269b455',1,'rtabmap::Statistics']]], + ['setlocaltransform_78',['setlocaltransform',['../classrtabmap_1_1CameraModel.html#aa1325c971f17d371553c3f75be7aeece',1,'rtabmap::CameraModel::setLocalTransform()'],['../classrtabmap_1_1SensorCapture.html#a0ea4e217047c234bcfcb9866e36ea7c0',1,'rtabmap::SensorCapture::setLocalTransform()'],['../classrtabmap_1_1StereoCameraModel.html#aee77882ceca428a560f5fd3713a330fb',1,'rtabmap::StereoCameraModel::setLocalTransform()']]], + ['setlongitude_79',['setLongitude',['../classrtabmap_1_1GeodeticCoords.html#aac1f8d7bcf0aff48aa8c7aefa91c72d3',1,'rtabmap::GeodeticCoords']]], + ['setloopclosureid_80',['setLoopClosureId',['../classrtabmap_1_1Statistics.html#a19272faba1c28279bb565464afa84645',1,'rtabmap::Statistics']]], + ['setloopclosuremapid_81',['setLoopClosureMapId',['../classrtabmap_1_1Statistics.html#a3b92ac9f165c77b2cc92f3fc6d7242cd',1,'rtabmap::Statistics']]], + ['setloopclosuretransform_82',['setLoopClosureTransform',['../classrtabmap_1_1Statistics.html#ac323334656165fd230cbe396836c6939',1,'rtabmap::Statistics']]], + ['setmapcorrection_83',['setMapCorrection',['../classrtabmap_1_1Statistics.html#a6a70e49f42639395a89edbde4659bf88',1,'rtabmap::Statistics']]], + ['setmemorythreshold_84',['setMemoryThreshold',['../classrtabmap_1_1Rtabmap.html#a6915ee0137b949837addcb5d3ac1646c',1,'rtabmap::Rtabmap']]], + ['setmirroringenabled_85',['setMirroringEnabled',['../classrtabmap_1_1SensorCaptureThread.html#a1cfabc2a5451ffe913f5691b80de514d',1,'rtabmap::SensorCaptureThread']]], + ['setmodified_86',['setModified',['../classrtabmap_1_1Signature.html#a245c8af68f7adec3813e3b062395769f',1,'rtabmap::Signature']]], + ['setname_87',['setname',['../classrtabmap_1_1CameraModel.html#a402a407fa2bca721087a6deda24cc10d',1,'rtabmap::CameraModel::setName()'],['../classrtabmap_1_1StereoCameraModel.html#adc404f0be63eedd0e0a9d6d5b5b36a94',1,'rtabmap::StereoCameraModel::setName()']]], + ['setnnstrategy_88',['setNNStrategy',['../classrtabmap_1_1VWDictionary.html#af60e271facb40ff668c4bc24cff1b9cc',1,'rtabmap::VWDictionary']]], + ['setnull_89',['setNull',['../classrtabmap_1_1Transform.html#af0020cf4093b8b1a3d1f68ee657b3662',1,'rtabmap::Transform']]], + ['setobj_90',['setObj',['../classUObjDeletionThread.html#a3a54e762b9f21750fe724bf78b48c653',1,'UObjDeletionThread']]], + ['setoccupancygrid_91',['setOccupancyGrid',['../classrtabmap_1_1SensorData.html#a5c12949c62c65281bade9ffcc681462b',1,'rtabmap::SensorData']]], + ['setodomasgroundtruth_92',['setOdomAsGroundTruth',['../classrtabmap_1_1SensorCaptureThread.html#a5a6a9ad20c75150f86ef479fe74ae6f7',1,'rtabmap::SensorCaptureThread']]], + ['setodomcacheconstraints_93',['setOdomCacheConstraints',['../classrtabmap_1_1Statistics.html#ae3d58759c1cc237b2e297c2c5f608725',1,'rtabmap::Statistics']]], + ['setodomcacheposes_94',['setOdomCachePoses',['../classrtabmap_1_1Statistics.html#a6032903dc163f7bc5d36c0520ccdfcef',1,'rtabmap::Statistics']]], + ['setoptimizedposes_95',['setOptimizedPoses',['../classrtabmap_1_1Rtabmap.html#a7a841702b925777620714fce7b41fd69',1,'rtabmap::Rtabmap']]], + ['setpath_96',['setPath',['../classUDirectory.html#aadfc0f6dfedc74bb6ef67dc87d6441f4',1,'UDirectory']]], + ['setpose_97',['setPose',['../classrtabmap_1_1Signature.html#aca4bf5db794637f0780f6eb2139a16f0',1,'rtabmap::Signature']]], + ['setposes_98',['setPoses',['../classrtabmap_1_1Statistics.html#acf7df1c7a8958a24988239fc40ece1ea',1,'rtabmap::Statistics']]], + ['setposterior_99',['setPosterior',['../classrtabmap_1_1Statistics.html#a915bb9bd90193a92f565f56024d61586',1,'rtabmap::Statistics']]], + ['setpredictionlc_100',['setPredictionLC',['../classrtabmap_1_1BayesFilter.html#a3255a54c1d2fc5b9a6db91fb38d591ae',1,'rtabmap::BayesFilter']]], + ['setprintcolored_101',['setPrintColored',['../classULogger.html#a773d95354adfe1fd1296f3b2f09668d3',1,'ULogger']]], + ['setprintendline_102',['setPrintEndline',['../classULogger.html#aa7cd59599601cdb214c6cb4df103dca0',1,'ULogger']]], + ['setprintlevel_103',['setPrintLevel',['../classULogger.html#a4a97457a98a02f60580e6f3c93f83d7a',1,'ULogger']]], + ['setprintthreadid_104',['setPrintThreadId',['../classULogger.html#a071b4484d0020a87760bbe282175724a',1,'ULogger']]], + ['setprinttime_105',['setPrintTime',['../classULogger.html#a2142b47257ecf1f2561afa8353eae411',1,'ULogger']]], + ['setprintwhere_106',['setPrintWhere',['../classULogger.html#af5a2e0f11770fcb457c1859c9f8b5ec3',1,'ULogger']]], + ['setprintwherefullpath_107',['setPrintWhereFullPath',['../classULogger.html#a2784b7a88339964e2a1c2b3436245bfc',1,'ULogger']]], + ['setpriority_108',['setPriority',['../classUThread.html#a80418be3a80a01ddd05a863b58787b43',1,'UThread']]], + ['setproximitydetectionid_109',['setProximityDetectionId',['../classrtabmap_1_1Statistics.html#a25b8a9b50054a80dc09423b6fe9f68ff',1,'rtabmap::Statistics']]], + ['setproximitydetectionmapid_110',['setProximityDetectionMapId',['../classrtabmap_1_1Statistics.html#a5e6df533a3c7a70d0391f7fe129e5eef',1,'rtabmap::Statistics']]], + ['setransacdeterministicseed_111',['setRansacDeterministicSeed',['../namespacertabmap_1_1util3d.html#a5f95aa913b08b0d0f12e9fc02b087692',1,'rtabmap::util3d']]], + ['setrate_112',['setRate',['../classrtabmap_1_1IMUThread.html#a3b646ffce1964e2ab6bc314dc4b27deb',1,'rtabmap::IMUThread']]], + ['setrawlikelihood_113',['setRawLikelihood',['../classrtabmap_1_1Statistics.html#a20a3634b3fbd36d86b1803f7427b105f',1,'rtabmap::Statistics']]], + ['setreducedids_114',['setReducedIds',['../classrtabmap_1_1Statistics.html#abf88d8f411f811549d91d29a5b78d308',1,'rtabmap::Statistics']]], + ['setrefimageid_115',['setRefImageId',['../classrtabmap_1_1Statistics.html#a4fa0c5aafea26effea2ed63d5bf3a31f',1,'rtabmap::Statistics']]], + ['setrefimagemapid_116',['setRefImageMapId',['../classrtabmap_1_1Statistics.html#a39895f500676995e2cc830169b80c7ca',1,'rtabmap::Statistics']]], + ['setresolution_117',['setResolution',['../classrtabmap_1_1CameraVideo.html#a7c8c8e9d343f78fdd17aad2db34dbecb',1,'rtabmap::CameraVideo']]], + ['setrgbdimage_118',['setRGBDImage',['../classrtabmap_1_1SensorData.html#a203770ef217dfdc67b98ca593b2cab24',1,'rtabmap::SensorData']]], + ['setsaved_119',['setsaved',['../classrtabmap_1_1Signature.html#a02c5d305492e3534e3799b8b7c78d912',1,'rtabmap::Signature::setSaved()'],['../classrtabmap_1_1VisualWord.html#a58f7ff50ca24f1586bf3fdf5999d6184',1,'rtabmap::VisualWord::setSaved()']]], + ['setscanparameters_120',['setscanparameters',['../classrtabmap_1_1SensorCaptureThread.html#a40f1016ea142c6117ffb080f64b4a854',1,'rtabmap::SensorCaptureThread::setScanParameters(bool fromDepth, int downsampleStep, float rangeMin, float rangeMax, float voxelSize, int normalsK, float normalsRadius, bool forceGroundNormalsUp, bool deskewing)'],['../classrtabmap_1_1SensorCaptureThread.html#a00a7a0e4f5277f6c6ed53bf832624c00',1,'rtabmap::SensorCaptureThread::setScanParameters(bool fromDepth, int downsampleStep=1, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalsK=0, float normalsRadius=0.0f, float groundNormalsUp=0.0f, bool deskewing=false)']]], + ['setsignaturesdata_121',['setSignaturesData',['../classrtabmap_1_1Statistics.html#ad23568ea07d4ad167fcbd83a9083a2ef',1,'rtabmap::Statistics']]], + ['setstamp_122',['setstamp',['../classrtabmap_1_1Statistics.html#a12bfc3ce8eb232a6ac3942af504bedef',1,'rtabmap::Statistics::setStamp()'],['../classrtabmap_1_1SensorData.html#a5c0844e94d3fff50a8bfec2decf2f94c',1,'rtabmap::SensorData::setStamp(double stamp)']]], + ['setstereocameramodel_123',['setStereoCameraModel',['../classrtabmap_1_1SensorData.html#ab2f74509af5e3f56d1c4d5e31c0c6003',1,'rtabmap::SensorData']]], + ['setstereocameramodels_124',['setStereoCameraModels',['../classrtabmap_1_1SensorData.html#ab4e6b5d917155b94d8b4b6242fe56c6e',1,'rtabmap::SensorData']]], + ['setstereoexposurecompensation_125',['setStereoExposureCompensation',['../classrtabmap_1_1SensorCaptureThread.html#a2c43f41518d914f2a3ae6959abcde989',1,'rtabmap::SensorCaptureThread']]], + ['setstereotodepth_126',['setStereoToDepth',['../classrtabmap_1_1SensorCaptureThread.html#ae0658121bc03f0eafd469ee114bc61f8',1,'rtabmap::SensorCaptureThread']]], + ['setsynchronous_127',['setSynchronous',['../classrtabmap_1_1DBDriverSqlite3.html#a187e2bbb52ae7f32a0fc79540f0f104b',1,'rtabmap::DBDriverSqlite3']]], + ['settempstore_128',['setTempStore',['../classrtabmap_1_1DBDriverSqlite3.html#a8f4adea749a2d30340715002056f9062',1,'rtabmap::DBDriverSqlite3']]], + ['settimethreshold_129',['setTimeThreshold',['../classrtabmap_1_1Rtabmap.html#a80add8fadd488d0c7781c249abea0d5d',1,'rtabmap::Rtabmap']]], + ['settreadidfilter_130',['setTreadIdFilter',['../classULogger.html#ada44d4afa869f1f9eab174a28c8a1acd',1,'ULogger']]], + ['settype_131',['setType',['../classULogger.html#a0fe73ce7c193ff399bca16b8d4d4cabb',1,'ULogger']]], + ['setuserdata_132',['setuserdata',['../classrtabmap_1_1Memory.html#aff18f08be0a7951f508276e341759f5c',1,'rtabmap::Memory::setUserData()'],['../classrtabmap_1_1Rtabmap.html#a037ddb5d737e0466d7610b88d8429bd6',1,'rtabmap::Rtabmap::setUserData()'],['../classrtabmap_1_1SensorData.html#accb5f254667af3074993a073a4e1f072',1,'rtabmap::SensorData::setUserData()']]], + ['setvelocity_133',['setVelocity',['../classrtabmap_1_1Signature.html#a1e48a2cde44ad1ecc2daaf5e8245e86a',1,'rtabmap::Signature']]], + ['setweight_134',['setWeight',['../classrtabmap_1_1Signature.html#a28cc9f0c8d553a24ef9e5227be1c99fe',1,'rtabmap::Signature']]], + ['setweights_135',['setWeights',['../classrtabmap_1_1Statistics.html#a918d447083cfcea3ab040e985461ae45',1,'rtabmap::Statistics']]], + ['setwmstate_136',['setWmState',['../classrtabmap_1_1Statistics.html#aa43870ba13369f23c122bff62f6654c8',1,'rtabmap::Statistics']]], + ['setwords_137',['setWords',['../classrtabmap_1_1Signature.html#a6fb8d04c4c2c8ee6f82d1eb65fd750a4',1,'rtabmap::Signature']]], + ['setwordsdescriptors_138',['setWordsDescriptors',['../classrtabmap_1_1Signature.html#a80565e1439be473d9c783d5c624b1a02',1,'rtabmap::Signature']]], + ['setworkingdirectory_139',['setWorkingDirectory',['../classrtabmap_1_1Rtabmap.html#a25028c3e8d8018c03f47f06150d76eab',1,'rtabmap::Rtabmap']]], + ['shareto_140',['shareTo',['../classrtabmap_1_1LocalGridCache.html#a6350523acd5ce71be45cd653071837fc',1,'rtabmap::LocalGridCache']]], + ['sift_141',['sift',['../classrtabmap_1_1SIFT.html',1,'rtabmap::SIFT'],['../parameters.html#autotoc_md15',1,'SIFT']]], + ['signature_142',['signature',['../classrtabmap_1_1Signature.html#a8e079b11910a45639a792158c40693ad',1,'rtabmap::Signature::Signature()'],['../classrtabmap_1_1Signature.html#aa3367bba5b890341238d93e642f847a7',1,'rtabmap::Signature::Signature(int id, int mapId=-1, int weight=0, double stamp=0.0, const std::string &label=std::string(), const Transform &pose=Transform(), const Transform &groundTruthPose=Transform(), const SensorData &sensorData=SensorData())'],['../classrtabmap_1_1Signature.html#af106b6a37909c236e22f5cac6150ce62',1,'rtabmap::Signature::Signature(const SensorData &data)'],['../classrtabmap_1_1Signature.html',1,'rtabmap::Signature']]], + ['single_20point_143',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['size_144',['size',['../classrtabmap_1_1Landmark.html#acba351c01c619a0d78e52e7bfca94111',1,'rtabmap::Landmark::size()'],['../classrtabmap_1_1Transform.html#a2cdd55b67e206a287e7bf4d248fb5256',1,'rtabmap::Transform::size()']]], + ['solvepnpransac_145',['solvePnPRansac',['../namespacertabmap_1_1util3d.html#ad426e396a196d6f69a004bb55982f9f7',1,'rtabmap::util3d']]], + ['split_20range_20filtering_20of_20pcl_20point_20clouds_146',['Split Range Filtering of PCL Point Clouds',['../group__PointCloudSplitRangeFiltering.html',1,'']]], + ['ssc_147',['SSC',['../namespacertabmap_1_1util2d.html#aa6957971e17f27bb066efe036d80fd46',1,'rtabmap::util2d']]], + ['ssd_148',['ssd',['../namespacertabmap_1_1util2d.html#a179e07ca5bc9581ff4782ae8f9d33521',1,'rtabmap::util2d']]], + ['stamp_149',['stamp',['../classrtabmap_1_1GPS.html#a8620d60c593c641eb3be44ae41bec799',1,'rtabmap::GPS::stamp()'],['../classrtabmap_1_1SensorData.html#a566e5600bc0369f2f88ff0c597cefcfb',1,'rtabmap::SensorData::stamp()'],['../classrtabmap_1_1Statistics.html#a24a86b496c06f7d027ebb803b0ce70dd',1,'rtabmap::Statistics::stamp()'],['../classrtabmap_1_1OdometryInfo.html#a7b005bbc7922cf3c6c352451f65b199d',1,'rtabmap::OdometryInfo::stamp'],['../classrtabmap_1_1SensorCaptureInfo.html#ab9f52d419f810e3044f56583ed230902',1,'rtabmap::SensorCaptureInfo::stamp'],['../classrtabmap_1_1EnvSensor.html#a1bbcf9a834523dd2e91ef1ab8d31d5e4',1,'rtabmap::EnvSensor::stamp()']]], + ['start_150',['start',['../classUThread.html#a051e9adcf24f92b9c8e31acd06bad88c',1,'UThread::start()'],['../classUTimer.html#a10f628d8be04474d13c04b07c0426200',1,'UTimer::start()']]], + ['start_20here_151',['Start here',['../index.html#autotoc_md0',1,'']]], + ['startdeletion_152',['startDeletion',['../classUObjDeletionThread.html#a2b4e12d9f11684b1378bb77a1a3c54b3',1,'UObjDeletionThread']]], + ['state_153',['State',['../classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5fae',1,'rtabmap::RtabmapThread']]], + ['staticmemberinitializer_154',['StaticMemberInitializer',['../classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html',1,'rtabmap::RtabmapColorOcTree']]], + ['statistics_155',['statistics',['../classrtabmap_1_1Statistics.html',1,'rtabmap::Statistics'],['../classrtabmap_1_1Statistics.html#a5f5bf8e57410944ec46be25a5bf8ab46',1,'rtabmap::Statistics::Statistics()'],['../classrtabmap_1_1OdometryInfo.html#a3353258f68ec539287dcc60cc08f3da7',1,'rtabmap::OdometryInfo::statistics()']]], + ['stereo_156',['stereo',['../classrtabmap_1_1Stereo.html',1,'rtabmap::Stereo'],['../parameters.html#autotoc_md52',1,'Stereo'],['../classrtabmap_1_1Stereo.html#a1031c68f4e66690da216718382af0ab3',1,'rtabmap::Stereo::Stereo()']]], + ['stereobm_157',['stereobm',['../classrtabmap_1_1StereoBM.html',1,'rtabmap::StereoBM'],['../parameters.html#autotoc_md53',1,'StereoBM'],['../classrtabmap_1_1StereoBM.html#a74970c7517eec90828dd03510c3e3db0',1,'rtabmap::StereoBM::StereoBM(const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1StereoBM.html#a33ff25f4afacce93201f509b78e5ca6f',1,'rtabmap::StereoBM::StereoBM(int blockSize, int numDisparities)']]], + ['stereocameramodel_158',['stereocameramodel',['../classrtabmap_1_1StereoCameraModel.html#a76bab07a51033de989fc522064ede024',1,'rtabmap::StereoCameraModel::StereoCameraModel()'],['../classrtabmap_1_1StereoCameraModel.html',1,'rtabmap::StereoCameraModel'],['../classrtabmap_1_1StereoCameraModel.html#a179ffcbc49ff3a281ef33cb4381e061c',1,'rtabmap::StereoCameraModel::StereoCameraModel()'],['../classrtabmap_1_1StereoCameraModel.html#a1887639053ef5c09c3f650b5a7f280d8',1,'rtabmap::StereoCameraModel::StereoCameraModel(const std::string &name, const cv::Size &imageSize1, const cv::Mat &K1, const cv::Mat &D1, const cv::Mat &R1, const cv::Mat &P1, const cv::Size &imageSize2, const cv::Mat &K2, const cv::Mat &D2, const cv::Mat &R2, const cv::Mat &P2, const cv::Mat &R, const cv::Mat &T, const cv::Mat &E, const cv::Mat &F, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0))'],['../classrtabmap_1_1StereoCameraModel.html#a8e3a5c32e13727545f2d22dda05c96b0',1,'rtabmap::StereoCameraModel::StereoCameraModel(const std::string &name, double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))'],['../classrtabmap_1_1StereoCameraModel.html#a0bdbbaa6e3ab315b0c5fce03247cea6c',1,'rtabmap::StereoCameraModel::StereoCameraModel(double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))'],['../classrtabmap_1_1StereoCameraModel.html#ae91c2717319f3cd7b6f40768e5adbb9f',1,'rtabmap::StereoCameraModel::StereoCameraModel(const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const cv::Mat &R=cv::Mat(), const cv::Mat &T=cv::Mat(), const cv::Mat &E=cv::Mat(), const cv::Mat &F=cv::Mat())']]], + ['stereocameramodels_159',['stereoCameraModels',['../classrtabmap_1_1SensorData.html#ab02d686ac7ef8b389655e913768b4d87',1,'rtabmap::SensorData']]], + ['stereodense_160',['stereodense',['../classrtabmap_1_1StereoDense.html#a57f0c431678a2c9db1b5f7dd46cbf49f',1,'rtabmap::StereoDense::StereoDense()'],['../classrtabmap_1_1StereoDense.html',1,'rtabmap::StereoDense']]], + ['stereoopticalflow_161',['stereoopticalflow',['../classrtabmap_1_1StereoOpticalFlow.html',1,'rtabmap::StereoOpticalFlow'],['../classrtabmap_1_1StereoOpticalFlow.html#a85173879ab911862112710fa1c94d8c5',1,'rtabmap::StereoOpticalFlow::StereoOpticalFlow()']]], + ['stereosgbm_162',['stereosgbm',['../classrtabmap_1_1StereoSGBM.html',1,'rtabmap::StereoSGBM'],['../classrtabmap_1_1StereoSGBM.html#ab7f04d815235b6ab8178e8572602dcd1',1,'rtabmap::StereoSGBM::StereoSGBM()'],['../parameters.html#autotoc_md54',1,'StereoSGBM']]], + ['stereotransform_163',['stereoTransform',['../classrtabmap_1_1StereoCameraModel.html#a506f83654d7f772a3743d24869c05742',1,'rtabmap::StereoCameraModel']]], + ['stl_164',['Convenient use of STL',['../group__UtiLite.html#stl',1,'']]], + ['stop_165',['stop',['../classUTimer.html#a6a517d6f5f6e6c28b9392d04be22a320',1,'UTimer']]], + ['strategyname_166',['strategyName',['../classrtabmap_1_1RegistrationIcp.html#aef9238a37e0b70c9368b2e20cfe7df12',1,'rtabmap::RegistrationIcp']]], + ['structural_20complexity_20of_20a_20point_20cloud_20with_20normals_167',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['subtract_20filtering_168',['Subtract Filtering',['../group__SubtractFiltering.html',1,'']]], + ['subtractadaptivefiltering_169',['subtractadaptivefiltering',['../namespacertabmap_1_1util3d.html#a2d730d57c10b9ef235388c8e6bd49132',1,'rtabmap::util3d::subtractAdaptiveFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))'],['../namespacertabmap_1_1util3d.html#aa82dd73da48128b88a6aaf20c625814d',1,'rtabmap::util3d::subtractAdaptiveFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))']]], + ['subtractfiltering_170',['subtractfiltering',['../group__SubtractFiltering.html#gad92c79e9320d8eae62053d01bb8ba9df',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga69fb3ae457d192fd2c12631b0b5adf60',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gaf2bca73b4dc564bb6b2b7b779c718373',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gaafd6fae4cac4f182d79e4507226165ef',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga68cd453fcda96d2dba733650879f5d54',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gad2840d4057963b7cb29c02ee15fca895',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gae14131d7ab09a650fb1411a8252e5526',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga1879c56f82037789aed799c484fb883a',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga49d4f22e20984d271bb4c3240018eeed',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga74d28899131bcb449b4d243a556c53aa',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)']]], + ['superpoint_171',['SuperPoint',['../parameters.html#autotoc_md23',1,'']]], + ['superpointrpautrat_172',['superpointrpautrat',['../classrtabmap_1_1SuperPointRpautrat.html',1,'rtabmap::SuperPointRpautrat'],['../parameters.html#autotoc_md24',1,'SuperPointRpautrat']]], + ['superpointtorch_173',['SuperPointTorch',['../classrtabmap_1_1SuperPointTorch.html',1,'rtabmap']]], + ['surf_174',['surf',['../parameters.html#autotoc_md14',1,'SURF'],['../classrtabmap_1_1SURF.html',1,'rtabmap::SURF']]], + ['surf_5fdaisy_175',['SURF_DAISY',['../classrtabmap_1_1SURF__DAISY.html',1,'rtabmap']]], + ['surf_5ffreak_176',['SURF_FREAK',['../classrtabmap_1_1SURF__FREAK.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_15.js b/preview/pr-1773/api/latest/search/all_15.js new file mode 100644 index 00000000..7c696814 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_15.js @@ -0,0 +1,686 @@ +var searchData= +[ + ['t_0',['T',['../classrtabmap_1_1StereoCameraModel.html#a82d60ddca8d0cdbe939b043ed02334b6',1,'rtabmap::StereoCameraModel']]], + ['takedata_1',['takeData',['../classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf',1,'rtabmap::SensorCapture']]], + ['the_20main_20classes_2',['The main classes',['../index.html#autotoc_md4',1,'']]], + ['theta_3',['theta',['../classrtabmap_1_1Transform.html#acc7f19107da9b048a43497f93dd39582',1,'rtabmap::Transform']]], + ['through_20filtering_4',['Pass-through Filtering',['../group__PassThrough.html',1,'']]], + ['timebilateralfiltering_5',['timeBilateralFiltering',['../classrtabmap_1_1SensorCaptureInfo.html#a0052a472c18e314445e2af75f11e3fe2',1,'rtabmap::SensorCaptureInfo']]], + ['timecapture_6',['timeCapture',['../classrtabmap_1_1SensorCaptureInfo.html#a14653b32350b0e5437d0effd8af03ddd',1,'rtabmap::SensorCaptureInfo']]], + ['timedeskewing_7',['timedeskewing',['../classrtabmap_1_1OdometryInfo.html#a929c2dc356766dc0f498aa1068ad7ef4',1,'rtabmap::OdometryInfo::timeDeskewing'],['../classrtabmap_1_1SensorCaptureInfo.html#a94779ab38ab44408fd81df43338a03dd',1,'rtabmap::SensorCaptureInfo::timeDeskewing']]], + ['timedisparity_8',['timeDisparity',['../classrtabmap_1_1SensorCaptureInfo.html#ae7178e4a406254614a227904c08035a7',1,'rtabmap::SensorCaptureInfo']]], + ['timeestimation_9',['timeEstimation',['../classrtabmap_1_1OdometryInfo.html#a91407f56fef27c619e27fdd91003dadf',1,'rtabmap::OdometryInfo']]], + ['timehistogramequalization_10',['timeHistogramEqualization',['../classrtabmap_1_1SensorCaptureInfo.html#aa5b8ab859cae2ef8b71b2768c9119204',1,'rtabmap::SensorCaptureInfo']]], + ['timeimagedecimation_11',['timeImageDecimation',['../classrtabmap_1_1SensorCaptureInfo.html#ad270963d02944fa0e93751304d7a14ae',1,'rtabmap::SensorCaptureInfo']]], + ['timemirroring_12',['timeMirroring',['../classrtabmap_1_1SensorCaptureInfo.html#a2e95b64dd13e9960460965f7121dc948',1,'rtabmap::SensorCaptureInfo']]], + ['timeparticlefiltering_13',['timeParticleFiltering',['../classrtabmap_1_1OdometryInfo.html#aae03a73e704e23ea5142de821b618e6e',1,'rtabmap::OdometryInfo']]], + ['timescanfromdepth_14',['timeScanFromDepth',['../classrtabmap_1_1SensorCaptureInfo.html#a0903975d22d60fe339a18c7f3f114934',1,'rtabmap::SensorCaptureInfo']]], + ['timestereoexposurecompensation_15',['timeStereoExposureCompensation',['../classrtabmap_1_1SensorCaptureInfo.html#a319070f2296632120e1101bf8ea18cda',1,'rtabmap::SensorCaptureInfo']]], + ['timetotal_16',['timeTotal',['../classrtabmap_1_1SensorCaptureInfo.html#a974419b0d05f9c56db0ec40258b56535',1,'rtabmap::SensorCaptureInfo']]], + ['timeundistortdepth_17',['timeUndistortDepth',['../classrtabmap_1_1SensorCaptureInfo.html#afddf554ad1f8a400d3c96c3ec1be61bf',1,'rtabmap::SensorCaptureInfo']]], + ['to_18',['to',['../classrtabmap_1_1Link.html#a8d534b311c37d789276dd58bd7dc89e4',1,'rtabmap::Link']]], + ['to_202d_20laserscan_19',['PCL to 2D LaserScan',['../group__LaserScan2dFromPointCloud.html',1,'']]], + ['to_203d_20laserscan_20',['PCL to 3D LaserScan',['../group__LaserScanFromPointCloud.html',1,'']]], + ['to_20pcl_21',['LaserScan to PCL',['../group__LaserScanToPointCloud.html',1,'']]], + ['to3dof_22',['to3DoF',['../classrtabmap_1_1Transform.html#a3a1b7b3d9f2db760b8eff9f3f90cd405',1,'rtabmap::Transform']]], + ['to4dof_23',['to4DoF',['../classrtabmap_1_1Transform.html#a9b0c23cbc2d0938b8da638930cb109de',1,'rtabmap::Transform']]], + ['tobool_24',['toBool',['../classUVariant.html#aef09280be48b33bcc066de2a636be31f',1,'UVariant']]], + ['tochar_25',['toChar',['../classUVariant.html#aa2efe71a7dbf953c26134281c815c489',1,'UVariant']]], + ['tochararray_26',['toCharArray',['../classUVariant.html#ae51189767aa02abd8a538b183f95f993',1,'UVariant']]], + ['todouble_27',['toDouble',['../classUVariant.html#a4c4ce1241a89ab635c0cdb04b3f3b0e9',1,'UVariant']]], + ['todoublearray_28',['toDoubleArray',['../classUVariant.html#a2b36afe6bf8f22f4e46d31596a2bbf74',1,'UVariant']]], + ['toenu_5fwgs84_29',['toENU_WGS84',['../classrtabmap_1_1GeodeticCoords.html#aedf48d8bfb2c8c181b1382919bf7b44c',1,'rtabmap::GeodeticCoords']]], + ['tofloat_30',['toFloat',['../classUVariant.html#a193ad2132d39551e780f813f38b174f1',1,'UVariant']]], + ['tofloatarray_31',['toFloatArray',['../classUVariant.html#acf89922efcc2fc0bea692623c8de4f8c',1,'UVariant']]], + ['togeocentric_5fwgs84_32',['toGeocentric_WGS84',['../classrtabmap_1_1GeodeticCoords.html#ae92c7ff2c0b5c5a41902bdfd589d5c10',1,'rtabmap::GeodeticCoords']]], + ['togeodeticcoords_33',['toGeodeticCoords',['../classrtabmap_1_1GPS.html#a2eeb2607721870789914f12688cbc375',1,'rtabmap::GPS']]], + ['toint_34',['toInt',['../classUVariant.html#aad652810c6faa5e0497049157b5b2a10',1,'UVariant']]], + ['tointarray_35',['toIntArray',['../classUVariant.html#a8ee57d98adc4f8c2798c3ba1b86f54b1',1,'UVariant']]], + ['tools_36',['Command-line tools',['../tools.html',1,'']]], + ['toshort_37',['toShort',['../classUVariant.html#acd84cd8b255640810073c10331cf13b6',1,'UVariant']]], + ['toshortarray_38',['toShortArray',['../classUVariant.html#abae96c1d3abc90aea321a460d63250cb',1,'UVariant']]], + ['tostr_39',['toStr',['../classUVariant.html#a67cc47b07b28108ae018790073541438',1,'UVariant']]], + ['totaltime_40',['totalTime',['../classrtabmap_1_1RegistrationInfo.html#a52c83dd2b8f59c4ed360dc0eadc5de57',1,'rtabmap::RegistrationInfo']]], + ['touchar_41',['toUChar',['../classUVariant.html#a1791fbefb946a8803f87f5049135eea7',1,'UVariant']]], + ['touchararray_42',['toUCharArray',['../classUVariant.html#ab7346a22ad30fb42e3b0e1750f6ba8e6',1,'UVariant']]], + ['touint_43',['toUInt',['../classUVariant.html#aa129ebd6447838c1584145e843e6c4e8',1,'UVariant']]], + ['touintarray_44',['toUIntArray',['../classUVariant.html#ad0aa83f26922b59194e69312ee771173',1,'UVariant']]], + ['toushort_45',['toUShort',['../classUVariant.html#a5e6282c19acb4de5a29f55143d451f60',1,'UVariant']]], + ['toushortarray_46',['toUShortArray',['../classUVariant.html#a40b1bccc560ab55190d3608ea0115bb2',1,'UVariant']]], + ['transform_47',['transform',['../classrtabmap_1_1Transform.html',1,'rtabmap::Transform'],['../classrtabmap_1_1Transform.html#af434ccbc426920a1b35ecbf4eec226e7',1,'rtabmap::Transform::Transform(float x, float y, float theta)'],['../classrtabmap_1_1Transform.html#a1023adcd1e5d65647e6eda50160c3474',1,'rtabmap::Transform::Transform(float x, float y, float z, float roll, float pitch, float yaw)'],['../classrtabmap_1_1Transform.html#af471c17a5e411db55813b766727830f4',1,'rtabmap::Transform::Transform(float x, float y, float z, float qx, float qy, float qz, float qw)'],['../classrtabmap_1_1Transform.html#a82b851897ce2ca729d62fb92dcc48b9f',1,'rtabmap::Transform::Transform(const cv::Mat &transformationMatrix)'],['../classrtabmap_1_1Transform.html#a9b89b8bbe9cd75986bcb1ba6ceb5b9cd',1,'rtabmap::Transform::Transform(float r11, float r12, float r13, float o14, float r21, float r22, float r23, float o24, float r31, float r32, float r33, float o34)'],['../classrtabmap_1_1Transform.html#ac3654d3f6802d4b0c17b6110d1eda71a',1,'rtabmap::Transform::Transform()'],['../classrtabmap_1_1Link.html#a49186880bde84ca3dd43c2d95449fbfb',1,'rtabmap::Link::transform()'],['../classrtabmap_1_1OdometryInfo.html#ad4f09afa610091012c2edd7708d722c5',1,'rtabmap::OdometryInfo::transform']]], + ['transform_20a_20single_20point_48',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['transform_20pcl_20point_20clouds_49',['Transform PCL Point Clouds',['../group__TransformPointcloud.html',1,'']]], + ['transformfiltered_50',['transformFiltered',['../classrtabmap_1_1OdometryInfo.html#ac786b5953b124a80524a051cfbcb7460',1,'rtabmap::OdometryInfo']]], + ['transformfromxyzcorrespondences_51',['transformFromXYZCorrespondences',['../namespacertabmap_1_1util3d.html#aab3ff771d2b43075bb8e7ca6e730c37c',1,'rtabmap::util3d']]], + ['transformfromxyzcorrespondencessvd_52',['transformFromXYZCorrespondencesSVD',['../namespacertabmap_1_1util3d.html#a56797352c7d47f815c694bc4ccb1faea',1,'rtabmap::util3d']]], + ['transformgroundtruth_53',['transformGroundTruth',['../classrtabmap_1_1OdometryInfo.html#aba971e389867f752f04ecd7b17471f6e',1,'rtabmap::OdometryInfo']]], + ['transformlaserscan_54',['transformLaserScan',['../namespacertabmap_1_1util3d.html#abf12a46cc48ee93e6575ea624377fb42',1,'rtabmap::util3d']]], + ['transformpoint_55',['transformpoint',['../group__TransformPoint.html#ga88b4f827a105254bf08bdae73cebdbe9',1,'rtabmap::util3d::transformPoint(const cv::Point3f &pt, const Transform &transform)'],['../group__TransformPoint.html#ga4910f2b937d405bd529772c33d477ca4',1,'rtabmap::util3d::transformPoint(const cv::Point3d &pt, const Transform &transform)'],['../group__TransformPoint.html#ga2ad96e68847f315e6d5df18d3219f308',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZ &pt, const Transform &transform)'],['../group__TransformPoint.html#ga7bfb9d7e10b81cd3b5e3f164081388be',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZI &pt, const Transform &transform)'],['../group__TransformPoint.html#ga90e6ffecb159bdff5afc75e16ab1fe19',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZRGB &pt, const Transform &transform)'],['../group__TransformPoint.html#gad98c1e7ba04edb9a57c5557d88360afd',1,'rtabmap::util3d::transformPoint(const pcl::PointNormal &point, const Transform &transform)'],['../group__TransformPoint.html#ga8cf51597b74c589365d2e0e2272bea70',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZRGBNormal &point, const Transform &transform)'],['../group__TransformPoint.html#gae272348c0353fe96683680b981a6b0fa',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZINormal &point, const Transform &transform)']]], + ['transformpointcloud_56',['transformpointcloud',['../group__TransformPointcloud.html#ga46b86abad0f4aa2ba7f191da0e07ba69',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga7a573f91887b29ec4ff2ef6355df4473',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga18eb2c9ec062b5453bf7c97128d89018',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga310e525344813377f2d470d47b7c4d51',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga1387b7a1d5280ed3596331f93fc56484',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#gac60701fa37d61f3cbe6f462da7576e73',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga59e54f906ba844eb8780946e57b0e271',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga2a621fc8ab625cd4003b4f26e0ce3b52',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga797f466a165622e08dda14cdaccb5df6',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga00514f671b8dbcc343ff481aa7c36367',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#gac7c95eba604afe62ab897df62d862220',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga47713c64205eb83460cfeec9a7bb6659',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)']]], + ['transformstamped_57',['TransformStamped',['../classrtabmap_1_1TransformStamped.html',1,'rtabmap']]], + ['translation_58',['translation',['../classrtabmap_1_1Transform.html#aeeb0bbe0e84a9e46f63086c3ff4d4e0e',1,'rtabmap::Transform']]], + ['translationmatrix_59',['translationMatrix',['../classrtabmap_1_1Transform.html#a6a7bb81847554509d1128238860c047e',1,'rtabmap::Transform']]], + ['transvariance_60',['transVariance',['../classrtabmap_1_1Link.html#a3c4344c01b4f32a8b4a957b979fea84e',1,'rtabmap::Link']]], + ['triggernewmap_61',['triggerNewMap',['../classrtabmap_1_1Rtabmap.html#a4ab6de2be120bbda75577911d52346d4',1,'rtabmap::Rtabmap']]], + ['two_20point_20clouds_62',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['tx_63',['Tx',['../classrtabmap_1_1CameraModel.html#a6f6dc18af13a777e89a75725ef3e8ab4',1,'rtabmap::CameraModel']]], + ['type_64',['type',['../classrtabmap_1_1OptimizerGTSAM.html#a422fe2960e4b71832e2108d5ab2aee46',1,'rtabmap::OptimizerGTSAM::type()'],['../classrtabmap_1_1OdometryInfo.html#ad2fa24b41e053e6a2f90dcb0189a901d',1,'rtabmap::OdometryInfo::type'],['../classrtabmap_1_1EnvSensor.html#abae79475fe7e568269a4b4ef4c5a7d24',1,'rtabmap::EnvSensor::type()'],['../classrtabmap_1_1IMUFilter.html#ab6dc95a6f031745a33599646e75ff9f6',1,'rtabmap::IMUFilter::type()'],['../classrtabmap_1_1Link.html#a17ea666cb54c4f7cce1c80bc2e1950c3',1,'rtabmap::Link::type()'],['../classrtabmap_1_1Optimizer.html#aa2be82e1f986b1beae103148be7cd520',1,'rtabmap::Optimizer::type()'],['../classrtabmap_1_1OptimizerCeres.html#ad6d6c0a0cdbea0ee5082d3aaa94d8e7a',1,'rtabmap::OptimizerCeres::type()'],['../classrtabmap_1_1OptimizerCVSBA.html#afbf58e60900671630e0974a13e49b2b0',1,'rtabmap::OptimizerCVSBA::type()'],['../classrtabmap_1_1OptimizerG2O.html#af69edaad65a7f7f936fa99f8c617e10b',1,'rtabmap::OptimizerG2O::type()'],['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849',1,'rtabmap::Registration::Type'],['../classrtabmap_1_1OptimizerTORO.html#a965efb877ac5edd3b6cda43983096a64',1,'rtabmap::OptimizerTORO::type()'],['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bd',1,'UVariant::Type'],['../classULogger.html#aab74fc95f6494a3a2137d9094fe100d8',1,'ULogger::Type'],['../classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803',1,'rtabmap::StereoDense::Type'],['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16',1,'rtabmap::Optimizer::Type'],['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849',1,'rtabmap::Odometry::Type'],['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e',1,'rtabmap::Link::Type'],['../classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83',1,'rtabmap::IMUFilter::Type'],['../classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde',1,'rtabmap::Feature2D::Type'],['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30f',1,'rtabmap::EnvSensor::Type'],['../classUVariant.html#a4fa9e6607b2d99ba03d09bd39f42da4f',1,'UVariant::type()']]], + ['typebayesfullpredictionupdate_65',['typeBayesFullPredictionUpdate',['../classrtabmap_1_1Parameters.html#a1b03bdfcb282bf6fa5e8a0e31e9a8525',1,'rtabmap::Parameters']]], + ['typebayespredictionlc_66',['typeBayesPredictionLC',['../classrtabmap_1_1Parameters.html#acea3564948945be8a1d5d3627b33bcb0',1,'rtabmap::Parameters']]], + ['typebayessparseprediction_67',['typeBayesSparsePrediction',['../classrtabmap_1_1Parameters.html#a9b2a59f274fd02f76ef97f52b98abf2b',1,'rtabmap::Parameters']]], + ['typebayesvirtualplacepriorthr_68',['typeBayesVirtualPlacePriorThr',['../classrtabmap_1_1Parameters.html#adf0155fc5e015ad6504d3772243f325b',1,'rtabmap::Parameters']]], + ['typebriefbytes_69',['typeBRIEFBytes',['../classrtabmap_1_1Parameters.html#aaf12f1bf5dac3d8471b215c296cc8861',1,'rtabmap::Parameters']]], + ['typebriskoctaves_70',['typeBRISKOctaves',['../classrtabmap_1_1Parameters.html#a32090c806b45a54559ef748c2b6efa7f',1,'rtabmap::Parameters']]], + ['typebriskpatternscale_71',['typeBRISKPatternScale',['../classrtabmap_1_1Parameters.html#a6b92c13841b0414e22b4548f9256ec18',1,'rtabmap::Parameters']]], + ['typebriskthresh_72',['typeBRISKThresh',['../classrtabmap_1_1Parameters.html#a2cbca0a14867ca55a8a69cbaedc6dc34',1,'rtabmap::Parameters']]], + ['typedbsqlite3cachesize_73',['typeDbSqlite3CacheSize',['../classrtabmap_1_1Parameters.html#adc6b1d1e169b30b7f19cd21c36024560',1,'rtabmap::Parameters']]], + ['typedbsqlite3inmemory_74',['typeDbSqlite3InMemory',['../classrtabmap_1_1Parameters.html#aa6e22f8aff3859fe1bf721003f119d12',1,'rtabmap::Parameters']]], + ['typedbsqlite3journalmode_75',['typeDbSqlite3JournalMode',['../classrtabmap_1_1Parameters.html#a66461d34ae9403d1894fd2ebab9a0362',1,'rtabmap::Parameters']]], + ['typedbsqlite3synchronous_76',['typeDbSqlite3Synchronous',['../classrtabmap_1_1Parameters.html#a5efc8cba8299a871fe1bfcc84813235b',1,'rtabmap::Parameters']]], + ['typedbsqlite3tempstore_77',['typeDbSqlite3TempStore',['../classrtabmap_1_1Parameters.html#a034464f74ed924e4fdd01bdc831a1351',1,'rtabmap::Parameters']]], + ['typedbtargetversion_78',['typeDbTargetVersion',['../classrtabmap_1_1Parameters.html#aa820cbcc77ed4110aaf31ca3c28dc825',1,'rtabmap::Parameters']]], + ['typefastcv_79',['typeFASTCV',['../classrtabmap_1_1Parameters.html#a5901a44519f83ee0c3dac11708c5000b',1,'rtabmap::Parameters']]], + ['typefastgpu_80',['typeFASTGpu',['../classrtabmap_1_1Parameters.html#aaa19b88f37d0b22742b30d56693db136',1,'rtabmap::Parameters']]], + ['typefastgpukeypointsratio_81',['typeFASTGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#a160d80af5cb01967f4273c73bd5f0941',1,'rtabmap::Parameters']]], + ['typefastgridcols_82',['typeFASTGridCols',['../classrtabmap_1_1Parameters.html#af56f2be335a5b506a6ea0cf372a12f05',1,'rtabmap::Parameters']]], + ['typefastgridrows_83',['typeFASTGridRows',['../classrtabmap_1_1Parameters.html#a2cfe8ce563fab9a6ca1ba068e0198eb3',1,'rtabmap::Parameters']]], + ['typefastmaxthreshold_84',['typeFASTMaxThreshold',['../classrtabmap_1_1Parameters.html#a05d39093fbede5866a0206b6e1f9740f',1,'rtabmap::Parameters']]], + ['typefastminthreshold_85',['typeFASTMinThreshold',['../classrtabmap_1_1Parameters.html#ab411fa51c0d1f98219fca770c9437aeb',1,'rtabmap::Parameters']]], + ['typefastnonmaxsuppression_86',['typeFASTNonmaxSuppression',['../classrtabmap_1_1Parameters.html#ae0ad8d42c727252b27f28cbba18c2dd8',1,'rtabmap::Parameters']]], + ['typefastthreshold_87',['typeFASTThreshold',['../classrtabmap_1_1Parameters.html#a34974bddc4ad79368deec6750bdf3a96',1,'rtabmap::Parameters']]], + ['typefreaknoctaves_88',['typeFREAKNOctaves',['../classrtabmap_1_1Parameters.html#a0020d3d78993cc9cc0c95431b40b5a59',1,'rtabmap::Parameters']]], + ['typefreakorientationnormalized_89',['typeFREAKOrientationNormalized',['../classrtabmap_1_1Parameters.html#a3fbceb8a9cc7ff9cf6c6c527ed869fcb',1,'rtabmap::Parameters']]], + ['typefreakpatternscale_90',['typeFREAKPatternScale',['../classrtabmap_1_1Parameters.html#a189a8a5f4a9c38e9447264317cd3eb84',1,'rtabmap::Parameters']]], + ['typefreakscalenormalized_91',['typeFREAKScaleNormalized',['../classrtabmap_1_1Parameters.html#a91777f019f78d25534a66d6175d4f72e',1,'rtabmap::Parameters']]], + ['typeg2ooptimizer_92',['typeg2oOptimizer',['../classrtabmap_1_1Parameters.html#a64492762bbb365c5b47c0129e810a05d',1,'rtabmap::Parameters']]], + ['typeg2osolver_93',['typeg2oSolver',['../classrtabmap_1_1Parameters.html#a9e22737f0f42ad706c6f596eb091123e',1,'rtabmap::Parameters']]], + ['typegfttblocksize_94',['typeGFTTBlockSize',['../classrtabmap_1_1Parameters.html#a8719a4e4a489e75827afb2d608c32d1a',1,'rtabmap::Parameters']]], + ['typegfttgpu_95',['typeGFTTGpu',['../classrtabmap_1_1Parameters.html#ac6d6728368b853ac0d99392df65886ba',1,'rtabmap::Parameters']]], + ['typegfttk_96',['typeGFTTK',['../classrtabmap_1_1Parameters.html#ab2eb6a1b538b7436acf902cf9adff619',1,'rtabmap::Parameters']]], + ['typegfttmindistance_97',['typeGFTTMinDistance',['../classrtabmap_1_1Parameters.html#ab07df1d353e8790f93c6061b7ef94950',1,'rtabmap::Parameters']]], + ['typegfttqualitylevel_98',['typeGFTTQualityLevel',['../classrtabmap_1_1Parameters.html#ad53c1300170a847bbf7be05a2e74b1bd',1,'rtabmap::Parameters']]], + ['typegfttuseharrisdetector_99',['typeGFTTUseHarrisDetector',['../classrtabmap_1_1Parameters.html#a0f940f605245ae18431809f675306fad',1,'rtabmap::Parameters']]], + ['typegmsthresholdfactor_100',['typeGMSThresholdFactor',['../classrtabmap_1_1Parameters.html#a2458c36b8bbaad6f63d6117e5d170d9f',1,'rtabmap::Parameters']]], + ['typegmswithrotation_101',['typeGMSWithRotation',['../classrtabmap_1_1Parameters.html#a3acf4701ca3d526ded2e529a2a9552b9',1,'rtabmap::Parameters']]], + ['typegmswithscale_102',['typeGMSWithScale',['../classrtabmap_1_1Parameters.html#a67eff6bc0809423e87206a24a4a2cbc3',1,'rtabmap::Parameters']]], + ['typegrid3d_103',['typeGrid3D',['../classrtabmap_1_1Parameters.html#acfef8bef24a69b28e98a6ea4a444ac94',1,'rtabmap::Parameters']]], + ['typegridcellsize_104',['typeGridCellSize',['../classrtabmap_1_1Parameters.html#aed3ded9d914622851725fb1dfea5ba27',1,'rtabmap::Parameters']]], + ['typegridclusterradius_105',['typeGridClusterRadius',['../classrtabmap_1_1Parameters.html#aae34ac78547641bccc3e99b45573c1ad',1,'rtabmap::Parameters']]], + ['typegriddepthdecimation_106',['typeGridDepthDecimation',['../classrtabmap_1_1Parameters.html#a173b5c0470421b57a77fa8a4fcfef71e',1,'rtabmap::Parameters']]], + ['typegriddepthroiratios_107',['typeGridDepthRoiRatios',['../classrtabmap_1_1Parameters.html#a58176c67d4275b5d8351aae9c6171cea',1,'rtabmap::Parameters']]], + ['typegridflatobstacledetected_108',['typeGridFlatObstacleDetected',['../classrtabmap_1_1Parameters.html#aecd539a71b6553272f0f292a820696b0',1,'rtabmap::Parameters']]], + ['typegridfootprintheight_109',['typeGridFootprintHeight',['../classrtabmap_1_1Parameters.html#aabe4b27b1768583dddda328bc70cde2d',1,'rtabmap::Parameters']]], + ['typegridfootprintlength_110',['typeGridFootprintLength',['../classrtabmap_1_1Parameters.html#a432c6050b500b67ad43290d0b57ec54a',1,'rtabmap::Parameters']]], + ['typegridfootprintwidth_111',['typeGridFootprintWidth',['../classrtabmap_1_1Parameters.html#a9744022c80e913e2e98bcd0028c3ec0a',1,'rtabmap::Parameters']]], + ['typegridglobalaltitudedelta_112',['typeGridGlobalAltitudeDelta',['../classrtabmap_1_1Parameters.html#a1b40a55f3d52e26edb2158a9724f742e',1,'rtabmap::Parameters']]], + ['typegridglobaleroded_113',['typeGridGlobalEroded',['../classrtabmap_1_1Parameters.html#a8148b8e333ac42319222327ce64be8d3',1,'rtabmap::Parameters']]], + ['typegridglobalfloodfilldepth_114',['typeGridGlobalFloodFillDepth',['../classrtabmap_1_1Parameters.html#a3043a76b3ab8d56808303acf5af91565',1,'rtabmap::Parameters']]], + ['typegridglobalfootprintradius_115',['typeGridGlobalFootprintRadius',['../classrtabmap_1_1Parameters.html#ac04e58ce51c7aef4dd2d1360ab89e98b',1,'rtabmap::Parameters']]], + ['typegridglobalmaxnodes_116',['typeGridGlobalMaxNodes',['../classrtabmap_1_1Parameters.html#a629f404911e9fea1e286a201247971b5',1,'rtabmap::Parameters']]], + ['typegridglobalminsize_117',['typeGridGlobalMinSize',['../classrtabmap_1_1Parameters.html#af86df131ee1ae31f34f21d0df17420c9',1,'rtabmap::Parameters']]], + ['typegridglobaloccupancythr_118',['typeGridGlobalOccupancyThr',['../classrtabmap_1_1Parameters.html#a0596b35d810c49b112b991e9a95976e6',1,'rtabmap::Parameters']]], + ['typegridglobalprobclampingmax_119',['typeGridGlobalProbClampingMax',['../classrtabmap_1_1Parameters.html#a71ccc2786718467fb8e316cef1ff5cfb',1,'rtabmap::Parameters']]], + ['typegridglobalprobclampingmin_120',['typeGridGlobalProbClampingMin',['../classrtabmap_1_1Parameters.html#a9343f83510ea7d71f74b8afa89801e80',1,'rtabmap::Parameters']]], + ['typegridglobalprobhit_121',['typeGridGlobalProbHit',['../classrtabmap_1_1Parameters.html#af49bb1ad7d692af846ffdea81fee7112',1,'rtabmap::Parameters']]], + ['typegridglobalprobmiss_122',['typeGridGlobalProbMiss',['../classrtabmap_1_1Parameters.html#ad411cd53072e045e4c16769fe9911db8',1,'rtabmap::Parameters']]], + ['typegridglobalupdateerror_123',['typeGridGlobalUpdateError',['../classrtabmap_1_1Parameters.html#a8b11452582f9a589f3f3f7b6f95e4b3f',1,'rtabmap::Parameters']]], + ['typegridgroundisobstacle_124',['typeGridGroundIsObstacle',['../classrtabmap_1_1Parameters.html#ab09d3e03e8446019a7ee6519b89ac5d3',1,'rtabmap::Parameters']]], + ['typegridmapframeprojection_125',['typeGridMapFrameProjection',['../classrtabmap_1_1Parameters.html#a422516d13bbd63c4a3a4af5d26809111',1,'rtabmap::Parameters']]], + ['typegridmaxgroundangle_126',['typeGridMaxGroundAngle',['../classrtabmap_1_1Parameters.html#a3ef2ad89200198b6df481d8e48488d52',1,'rtabmap::Parameters']]], + ['typegridmaxgroundheight_127',['typeGridMaxGroundHeight',['../classrtabmap_1_1Parameters.html#a7a8caafd0dece0ff8292b697f523b3b6',1,'rtabmap::Parameters']]], + ['typegridmaxobstacleheight_128',['typeGridMaxObstacleHeight',['../classrtabmap_1_1Parameters.html#a3e7b08928550a7e14de4988b80397c4a',1,'rtabmap::Parameters']]], + ['typegridminclustersize_129',['typeGridMinClusterSize',['../classrtabmap_1_1Parameters.html#afe2590b76da5d7cc6b8c61900cc35cd4',1,'rtabmap::Parameters']]], + ['typegridmingroundheight_130',['typeGridMinGroundHeight',['../classrtabmap_1_1Parameters.html#a1afa99d4494551529582c14da661c8a4',1,'rtabmap::Parameters']]], + ['typegridnoisefilteringminneighbors_131',['typeGridNoiseFilteringMinNeighbors',['../classrtabmap_1_1Parameters.html#a93e701588a77aaf96e43405aa77a4b35',1,'rtabmap::Parameters']]], + ['typegridnoisefilteringradius_132',['typeGridNoiseFilteringRadius',['../classrtabmap_1_1Parameters.html#acfdf775db0077e0675513cce701f37d8',1,'rtabmap::Parameters']]], + ['typegridnormalk_133',['typeGridNormalK',['../classrtabmap_1_1Parameters.html#a6ee8a3e2e174cfc93bd8a7840f967db0',1,'rtabmap::Parameters']]], + ['typegridnormalssegmentation_134',['typeGridNormalsSegmentation',['../classrtabmap_1_1Parameters.html#a8067e61eb92760f0a90076c8113c5401',1,'rtabmap::Parameters']]], + ['typegridprevoxelfiltering_135',['typeGridPreVoxelFiltering',['../classrtabmap_1_1Parameters.html#ae21fcb1b367f5972bf2cbdeea2d537e8',1,'rtabmap::Parameters']]], + ['typegridrangemax_136',['typeGridRangeMax',['../classrtabmap_1_1Parameters.html#a4e0a732f231b882e3729b425c80670f2',1,'rtabmap::Parameters']]], + ['typegridrangemin_137',['typeGridRangeMin',['../classrtabmap_1_1Parameters.html#a177a966ab594edce9e22683958442583',1,'rtabmap::Parameters']]], + ['typegridraytracing_138',['typeGridRayTracing',['../classrtabmap_1_1Parameters.html#ad644778787dff1183e046b90cb46f69e',1,'rtabmap::Parameters']]], + ['typegridscan2dunknownspacefilled_139',['typeGridScan2dUnknownSpaceFilled',['../classrtabmap_1_1Parameters.html#ae325c33fdb5800678de79a2f49765ee8',1,'rtabmap::Parameters']]], + ['typegridscandecimation_140',['typeGridScanDecimation',['../classrtabmap_1_1Parameters.html#a73945d56176f18ee077889804ec5c537',1,'rtabmap::Parameters']]], + ['typegridsensor_141',['typeGridSensor',['../classrtabmap_1_1Parameters.html#afcf2594351dbf47ea3f9d9a7da3e89dc',1,'rtabmap::Parameters']]], + ['typegtsamincrelinearizeskip_142',['typeGTSAMIncRelinearizeSkip',['../classrtabmap_1_1Parameters.html#a8ee2863fd434e312a1490f0f5b4049f6',1,'rtabmap::Parameters']]], + ['typegtsamincrelinearizethreshold_143',['typeGTSAMIncRelinearizeThreshold',['../classrtabmap_1_1Parameters.html#aef415399883e6b05fada7c8716d34724',1,'rtabmap::Parameters']]], + ['typegtsamincremental_144',['typeGTSAMIncremental',['../classrtabmap_1_1Parameters.html#a9feb54c6952c1fb2c1b844525ef3aa4d',1,'rtabmap::Parameters']]], + ['typegtsamoptimizer_145',['typeGTSAMOptimizer',['../classrtabmap_1_1Parameters.html#a375341fa0df47305ec99aab58cbb73b6',1,'rtabmap::Parameters']]], + ['typeicpccfilteroutfarthestpoints_146',['typeIcpCCFilterOutFarthestPoints',['../classrtabmap_1_1Parameters.html#aeed536dfe2d99ea6420fff28d81f3af2',1,'rtabmap::Parameters']]], + ['typeicpccmaxfinalrms_147',['typeIcpCCMaxFinalRMS',['../classrtabmap_1_1Parameters.html#a4c8c571e459a5062ac4633ee0d571ab9',1,'rtabmap::Parameters']]], + ['typeicpccsamplinglimit_148',['typeIcpCCSamplingLimit',['../classrtabmap_1_1Parameters.html#a07e11e9c55bc51fbf74258f4e0cabefd',1,'rtabmap::Parameters']]], + ['typeicpcorrespondenceratio_149',['typeIcpCorrespondenceRatio',['../classrtabmap_1_1Parameters.html#a972fbf2c1c68be6533aa90c98dc0da92',1,'rtabmap::Parameters']]], + ['typeicpdebugexportformat_150',['typeIcpDebugExportFormat',['../classrtabmap_1_1Parameters.html#a9bd9d8ce401e5386c1b8228095bf12ca',1,'rtabmap::Parameters']]], + ['typeicpdownsamplingstep_151',['typeIcpDownsamplingStep',['../classrtabmap_1_1Parameters.html#a43c7d3d01b20d25c17309efb3f894823',1,'rtabmap::Parameters']]], + ['typeicpepsilon_152',['typeIcpEpsilon',['../classrtabmap_1_1Parameters.html#ae4c440b8248b29713b2e889116c03999',1,'rtabmap::Parameters']]], + ['typeicpfiltersenabled_153',['typeIcpFiltersEnabled',['../classrtabmap_1_1Parameters.html#ae03e8c92b7b13de46d6a1587b81926ea',1,'rtabmap::Parameters']]], + ['typeicpforce4dof_154',['typeIcpForce4DoF',['../classrtabmap_1_1Parameters.html#ae22720ec9cd3da1cca383cef56660abc',1,'rtabmap::Parameters']]], + ['typeicpiterations_155',['typeIcpIterations',['../classrtabmap_1_1Parameters.html#a875403342c4693485af540ea07e461ea',1,'rtabmap::Parameters']]], + ['typeicpmaxcorrespondencedistance_156',['typeIcpMaxCorrespondenceDistance',['../classrtabmap_1_1Parameters.html#a19f0966d72fa8ef0b74df5b8aa8a08ce',1,'rtabmap::Parameters']]], + ['typeicpmaxrotation_157',['typeIcpMaxRotation',['../classrtabmap_1_1Parameters.html#a9b7a83861545b6a98c2ade14e8a42995',1,'rtabmap::Parameters']]], + ['typeicpmaxtranslation_158',['typeIcpMaxTranslation',['../classrtabmap_1_1Parameters.html#a2709ee512ccb6ea971d43cee84e2d8da',1,'rtabmap::Parameters']]], + ['typeicpoutlierratio_159',['typeIcpOutlierRatio',['../classrtabmap_1_1Parameters.html#ae4cf03fa5e431ece1faffe1dae240b17',1,'rtabmap::Parameters']]], + ['typeicppmconfig_160',['typeIcpPMConfig',['../classrtabmap_1_1Parameters.html#a17b85f7e68c7f326a1e7a4c9c515c2f1',1,'rtabmap::Parameters']]], + ['typeicppmmatcherepsilon_161',['typeIcpPMMatcherEpsilon',['../classrtabmap_1_1Parameters.html#ae9f87556071d4c6f9988c971e6e1ba67',1,'rtabmap::Parameters']]], + ['typeicppmmatcherintensity_162',['typeIcpPMMatcherIntensity',['../classrtabmap_1_1Parameters.html#a1099ed6d01a602500a35d6faa83c894d',1,'rtabmap::Parameters']]], + ['typeicppmmatcherknn_163',['typeIcpPMMatcherKnn',['../classrtabmap_1_1Parameters.html#a814e53a741c673e2fac9021fcee2cd9c',1,'rtabmap::Parameters']]], + ['typeicppointtoplane_164',['typeIcpPointToPlane',['../classrtabmap_1_1Parameters.html#ae533b7daed89ca3eb045eb9ddc30fe5c',1,'rtabmap::Parameters']]], + ['typeicppointtoplanecomplexitycentered_165',['typeIcpPointToPlaneComplexityCentered',['../classrtabmap_1_1Parameters.html#a3602f6786a3f6c2650248498b8b9f764',1,'rtabmap::Parameters']]], + ['typeicppointtoplanegroundnormalsup_166',['typeIcpPointToPlaneGroundNormalsUp',['../classrtabmap_1_1Parameters.html#a8066cf29da04bcd22a2885e43056742e',1,'rtabmap::Parameters']]], + ['typeicppointtoplanek_167',['typeIcpPointToPlaneK',['../classrtabmap_1_1Parameters.html#aa7c2516af27a3d655a9ffc6da1059408',1,'rtabmap::Parameters']]], + ['typeicppointtoplanelowcomplexitystrategy_168',['typeIcpPointToPlaneLowComplexityStrategy',['../classrtabmap_1_1Parameters.html#a0cc2c9a2b84389e1400e0c09b47a208e',1,'rtabmap::Parameters']]], + ['typeicppointtoplanemincomplexity_169',['typeIcpPointToPlaneMinComplexity',['../classrtabmap_1_1Parameters.html#aebb803402d88681b9cf29056a2bf8d6f',1,'rtabmap::Parameters']]], + ['typeicppointtoplaneradius_170',['typeIcpPointToPlaneRadius',['../classrtabmap_1_1Parameters.html#a9ec283805e806797300d74fc26511efe',1,'rtabmap::Parameters']]], + ['typeicprangemax_171',['typeIcpRangeMax',['../classrtabmap_1_1Parameters.html#a73a2646d5dc5e1cbb3733fd1f2abdf01',1,'rtabmap::Parameters']]], + ['typeicprangemin_172',['typeIcpRangeMin',['../classrtabmap_1_1Parameters.html#ae30c8014b29760b42849e362134dba95',1,'rtabmap::Parameters']]], + ['typeicpreciprocalcorrespondences_173',['typeIcpReciprocalCorrespondences',['../classrtabmap_1_1Parameters.html#a89b84c65a4e3dcbe4c53611630c1f68f',1,'rtabmap::Parameters']]], + ['typeicpstrategy_174',['typeIcpStrategy',['../classrtabmap_1_1Parameters.html#a85fcdb80537a890e52e4929d312cda88',1,'rtabmap::Parameters']]], + ['typeicpvoxelsize_175',['typeIcpVoxelSize',['../classrtabmap_1_1Parameters.html#a272fb297de54c23a97845ce41a54b898',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarybiasalpha_176',['typeImuFilterComplementaryBiasAlpha',['../classrtabmap_1_1Parameters.html#a8ccdcf04fb56a30f197f85099236309d',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarydoadpativegain_177',['typeImuFilterComplementaryDoAdpativeGain',['../classrtabmap_1_1Parameters.html#ac08606dfc64fc264574b8287d75f61f0',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarydobiasestimation_178',['typeImuFilterComplementaryDoBiasEstimation',['../classrtabmap_1_1Parameters.html#a83f0f617c8dd29bde8226d0ffc0523bb',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarygainacc_179',['typeImuFilterComplementaryGainAcc',['../classrtabmap_1_1Parameters.html#a75c23c0b11993d00da895572ab0a0f0b',1,'rtabmap::Parameters']]], + ['typeimufiltermadgwickgain_180',['typeImuFilterMadgwickGain',['../classrtabmap_1_1Parameters.html#a1ccedb25705469d51abcedc600c3c2d4',1,'rtabmap::Parameters']]], + ['typeimufiltermadgwickzeta_181',['typeImuFilterMadgwickZeta',['../classrtabmap_1_1Parameters.html#a09768fb0ae3a2562e47b4f5c656026d8',1,'rtabmap::Parameters']]], + ['typekazediffusivity_182',['typeKAZEDiffusivity',['../classrtabmap_1_1Parameters.html#adfc74dd952cb5ce98545c357c8a534ea',1,'rtabmap::Parameters']]], + ['typekazeextended_183',['typeKAZEExtended',['../classrtabmap_1_1Parameters.html#aaca1ec79fee5805d341b0ef8532f25ee',1,'rtabmap::Parameters']]], + ['typekazenoctavelayers_184',['typeKAZENOctaveLayers',['../classrtabmap_1_1Parameters.html#a0d66a519c701ef199a0ef48cbab1637d',1,'rtabmap::Parameters']]], + ['typekazenoctaves_185',['typeKAZENOctaves',['../classrtabmap_1_1Parameters.html#a56abe76b8fbe7790929afca3f68a3b74',1,'rtabmap::Parameters']]], + ['typekazethreshold_186',['typeKAZEThreshold',['../classrtabmap_1_1Parameters.html#acb4d10a8891db56c9d59cc6039076295',1,'rtabmap::Parameters']]], + ['typekazeupright_187',['typeKAZEUpright',['../classrtabmap_1_1Parameters.html#a73426ed644b8553972574eeee5602bd0',1,'rtabmap::Parameters']]], + ['typekpbadsignratio_188',['typeKpBadSignRatio',['../classrtabmap_1_1Parameters.html#a33d4a3980258fe746b91dc7867466eb4',1,'rtabmap::Parameters']]], + ['typekpbytetofloat_189',['typeKpByteToFloat',['../classrtabmap_1_1Parameters.html#a69324c9cc65ef0784b904c9cebf6cd85',1,'rtabmap::Parameters']]], + ['typekpdetectorstrategy_190',['typeKpDetectorStrategy',['../classrtabmap_1_1Parameters.html#a04b44cacb290e222a42848c0819fd35b',1,'rtabmap::Parameters']]], + ['typekpdictionarypath_191',['typeKpDictionaryPath',['../classrtabmap_1_1Parameters.html#aeb4e199cdffe91b56414543331897db8',1,'rtabmap::Parameters']]], + ['typekpflannindexsaved_192',['typeKpFlannIndexSaved',['../classrtabmap_1_1Parameters.html#a86fb17ee43b69729689cfe23ffabb9a2',1,'rtabmap::Parameters']]], + ['typekpflannrebalancingfactor_193',['typeKpFlannRebalancingFactor',['../classrtabmap_1_1Parameters.html#a31c98171e623d2d00ced8d5ee75aed20',1,'rtabmap::Parameters']]], + ['typekpflannthreads_194',['typeKpFlannThreads',['../classrtabmap_1_1Parameters.html#a417815f8d26c4ea32d3288c682679d2e',1,'rtabmap::Parameters']]], + ['typekpgridcols_195',['typeKpGridCols',['../classrtabmap_1_1Parameters.html#ab15d8e2de8d86b8b3d8597108533c677',1,'rtabmap::Parameters']]], + ['typekpgridrows_196',['typeKpGridRows',['../classrtabmap_1_1Parameters.html#ac11323ce2c03736482599f25126046fc',1,'rtabmap::Parameters']]], + ['typekpincrementaldictionary_197',['typeKpIncrementalDictionary',['../classrtabmap_1_1Parameters.html#a9aa02c3425918b1b506575caa9346c90',1,'rtabmap::Parameters']]], + ['typekpincrementalflann_198',['typeKpIncrementalFlann',['../classrtabmap_1_1Parameters.html#ab209736974cc9fcf74a1159e25f103a6',1,'rtabmap::Parameters']]], + ['typekpmaxdepth_199',['typeKpMaxDepth',['../classrtabmap_1_1Parameters.html#a78a9785220d4e1490ef49f1ca87f62d5',1,'rtabmap::Parameters']]], + ['typekpmaxfeatures_200',['typeKpMaxFeatures',['../classrtabmap_1_1Parameters.html#a637ab8a330eeb3c82afd9b22b53f1a57',1,'rtabmap::Parameters']]], + ['typekpmindepth_201',['typeKpMinDepth',['../classrtabmap_1_1Parameters.html#a5f3e8453ecbccb91d2102f85ea91226c',1,'rtabmap::Parameters']]], + ['typekpnewwordscomparedtogether_202',['typeKpNewWordsComparedTogether',['../classrtabmap_1_1Parameters.html#a2809f2e9b38bcae2c716e4cdf490c677',1,'rtabmap::Parameters']]], + ['typekpnndrratio_203',['typeKpNndrRatio',['../classrtabmap_1_1Parameters.html#a37b973218eaa4146f3c00b6b695b8bce',1,'rtabmap::Parameters']]], + ['typekpnnstrategy_204',['typeKpNNStrategy',['../classrtabmap_1_1Parameters.html#a63fc215ad56533c7aee24c79743643d3',1,'rtabmap::Parameters']]], + ['typekpparallelized_205',['typeKpParallelized',['../classrtabmap_1_1Parameters.html#ac0ae0d6d43877d470c634ee3cfe49393',1,'rtabmap::Parameters']]], + ['typekproiratios_206',['typeKpRoiRatios',['../classrtabmap_1_1Parameters.html#a6c84e9d5e13494c706f74e5532762b1d',1,'rtabmap::Parameters']]], + ['typekpserializewithchecksum_207',['typeKpSerializeWithChecksum',['../classrtabmap_1_1Parameters.html#ad23b7f54a9a91e3a3f79962e882b33e9',1,'rtabmap::Parameters']]], + ['typekpssc_208',['typeKpSSC',['../classrtabmap_1_1Parameters.html#aace0cd716e66db35854acda53104f48e',1,'rtabmap::Parameters']]], + ['typekpsubpixeps_209',['typeKpSubPixEps',['../classrtabmap_1_1Parameters.html#a9d1c3a16523e1f65b972e73a712b6532',1,'rtabmap::Parameters']]], + ['typekpsubpixiterations_210',['typeKpSubPixIterations',['../classrtabmap_1_1Parameters.html#a43ed8c3dbfd978a26d3cbc2b9f77db4a',1,'rtabmap::Parameters']]], + ['typekpsubpixwinsize_211',['typeKpSubPixWinSize',['../classrtabmap_1_1Parameters.html#a41645652ca7ba161d4d7f722e24d898d',1,'rtabmap::Parameters']]], + ['typekptfidflikelihoodused_212',['typeKpTfIdfLikelihoodUsed',['../classrtabmap_1_1Parameters.html#ac26fd2fc7a63eccf665d4d59a9c63509',1,'rtabmap::Parameters']]], + ['typemarkerapriltagdebug_213',['typeMarkerAprilTagDebug',['../classrtabmap_1_1Parameters.html#ada95dc82c517b99a9db54f982d73437c',1,'rtabmap::Parameters']]], + ['typemarkerapriltagdecodesharpening_214',['typeMarkerAprilTagDecodeSharpening',['../classrtabmap_1_1Parameters.html#a1affe5e560ccd8319c57460aaa584204',1,'rtabmap::Parameters']]], + ['typemarkerapriltagnthreads_215',['typeMarkerAprilTagNThreads',['../classrtabmap_1_1Parameters.html#a0f0ea057f6177784f48d7a56dadbba9b',1,'rtabmap::Parameters']]], + ['typemarkerapriltagquaddecimate_216',['typeMarkerAprilTagQuadDecimate',['../classrtabmap_1_1Parameters.html#aead4f644d78f977214b2fc93b6eb7284',1,'rtabmap::Parameters']]], + ['typemarkerapriltagquadsigma_217',['typeMarkerAprilTagQuadSigma',['../classrtabmap_1_1Parameters.html#a6f7e3b447891a7677191722361ca0a4d',1,'rtabmap::Parameters']]], + ['typemarkerapriltagrefineedges_218',['typeMarkerAprilTagRefineEdges',['../classrtabmap_1_1Parameters.html#a3d913545a02c1bf4a03d8f12b5e0e4bf',1,'rtabmap::Parameters']]], + ['typemarkerdictionary_219',['typeMarkerDictionary',['../classrtabmap_1_1Parameters.html#a04b3e76549b11a781162514557b78efd',1,'rtabmap::Parameters']]], + ['typemarkerlength_220',['typeMarkerLength',['../classrtabmap_1_1Parameters.html#a557b5579523a69f3b231140eb9c3421d',1,'rtabmap::Parameters']]], + ['typemarkerlengths_221',['typeMarkerLengths',['../classrtabmap_1_1Parameters.html#aff6eeea4dda39751c25d0521893f440e',1,'rtabmap::Parameters']]], + ['typemarkermaxdeptherror_222',['typeMarkerMaxDepthError',['../classrtabmap_1_1Parameters.html#a8581fb55c3c7eddf144b47a5c481ae08',1,'rtabmap::Parameters']]], + ['typemarkermaxrange_223',['typeMarkerMaxRange',['../classrtabmap_1_1Parameters.html#ae444c8c794c7f0b795cb7e8c15740277',1,'rtabmap::Parameters']]], + ['typemarkerminrange_224',['typeMarkerMinRange',['../classrtabmap_1_1Parameters.html#a02c66100cc1422be456c558be385fa6f',1,'rtabmap::Parameters']]], + ['typemarkeropencvcornerrefinementmethod_225',['typeMarkerOpenCVCornerRefinementMethod',['../classrtabmap_1_1Parameters.html#a3955def5fabc65b1eccb4c7feb58d140',1,'rtabmap::Parameters']]], + ['typemarkerpriors_226',['typeMarkerPriors',['../classrtabmap_1_1Parameters.html#af4d2ba6bb907c46c8f44185839e0ae15',1,'rtabmap::Parameters']]], + ['typemarkerpriorsvarianceangular_227',['typeMarkerPriorsVarianceAngular',['../classrtabmap_1_1Parameters.html#a7cb599a3478d0ef2e603361f71f6d535',1,'rtabmap::Parameters']]], + ['typemarkerpriorsvariancelinear_228',['typeMarkerPriorsVarianceLinear',['../classrtabmap_1_1Parameters.html#ad6032ec3358894c2a37df8d353f4f9e8',1,'rtabmap::Parameters']]], + ['typemarkerstrategy_229',['typeMarkerStrategy',['../classrtabmap_1_1Parameters.html#a70135230602d38b445c27856f98d01fc',1,'rtabmap::Parameters']]], + ['typemarkervarianceangular_230',['typeMarkerVarianceAngular',['../classrtabmap_1_1Parameters.html#ac64a26887e9a6a3bceb35478be31914a',1,'rtabmap::Parameters']]], + ['typemarkervariancelinear_231',['typeMarkerVarianceLinear',['../classrtabmap_1_1Parameters.html#a4b33a202551204376719fbe3c62b7cab',1,'rtabmap::Parameters']]], + ['typemarkervarianceorientationignored_232',['typeMarkerVarianceOrientationIgnored',['../classrtabmap_1_1Parameters.html#a80d840ef3648cdf88536cab67d60dc04',1,'rtabmap::Parameters']]], + ['typemembadsignaturesignored_233',['typeMemBadSignaturesIgnored',['../classrtabmap_1_1Parameters.html#a11d97c5d18e8f4345c8c15498ec9e5cb',1,'rtabmap::Parameters']]], + ['typemembindatakept_234',['typeMemBinDataKept',['../classrtabmap_1_1Parameters.html#ae86a7db1b3bb1e0692e1d3fcab606f4d',1,'rtabmap::Parameters']]], + ['typememcompressionparallelized_235',['typeMemCompressionParallelized',['../classrtabmap_1_1Parameters.html#aa8ade5f80f8b60b6f5e0dce47e782770',1,'rtabmap::Parameters']]], + ['typememcovoffdiagignored_236',['typeMemCovOffDiagIgnored',['../classrtabmap_1_1Parameters.html#aad8e1f69392fecdfdc9922ce2f3a2ba2',1,'rtabmap::Parameters']]], + ['typememdepthasmask_237',['typeMemDepthAsMask',['../classrtabmap_1_1Parameters.html#a8c0a8963f09a26c7f034a535340b6ec8',1,'rtabmap::Parameters']]], + ['typememdepthcompressionformat_238',['typeMemDepthCompressionFormat',['../classrtabmap_1_1Parameters.html#a826ca84929b4349800eaa822d38b9c5b',1,'rtabmap::Parameters']]], + ['typememdepthmaskfloorthr_239',['typeMemDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a7de2ff260c9aaec15166f85bf069f1d7',1,'rtabmap::Parameters']]], + ['typememgenerateids_240',['typeMemGenerateIds',['../classrtabmap_1_1Parameters.html#a5d49affbac2a2aed04cd0fa3fc77df2b',1,'rtabmap::Parameters']]], + ['typememglobaldescriptorstrategy_241',['typeMemGlobalDescriptorStrategy',['../classrtabmap_1_1Parameters.html#a16778220211bb4aa548cfd3cbcdb11bb',1,'rtabmap::Parameters']]], + ['typememimagecompressionformat_242',['typeMemImageCompressionFormat',['../classrtabmap_1_1Parameters.html#a87345250b6e908110f2196ae032ed0aa',1,'rtabmap::Parameters']]], + ['typememimagekept_243',['typeMemImageKept',['../classrtabmap_1_1Parameters.html#accaf0b981aa6999017757e1876ff1bc3',1,'rtabmap::Parameters']]], + ['typememimagepostdecimation_244',['typeMemImagePostDecimation',['../classrtabmap_1_1Parameters.html#aae5dccdbe4e0a6195040e168969b4ab3',1,'rtabmap::Parameters']]], + ['typememimagepredecimation_245',['typeMemImagePreDecimation',['../classrtabmap_1_1Parameters.html#a11950117b36523d8d38841173fc794e6',1,'rtabmap::Parameters']]], + ['typememincrementalmemory_246',['typeMemIncrementalMemory',['../classrtabmap_1_1Parameters.html#a21800896fff4f05946e81c2857d1e5fe',1,'rtabmap::Parameters']]], + ['typememinitwmwithallnodes_247',['typeMemInitWMWithAllNodes',['../classrtabmap_1_1Parameters.html#ae4638e9d59896ddb2b30cb82c385c13a',1,'rtabmap::Parameters']]], + ['typememintermediatenodedatakept_248',['typeMemIntermediateNodeDataKept',['../classrtabmap_1_1Parameters.html#a0fc867ad79f1ab92977213243339033d',1,'rtabmap::Parameters']]], + ['typememlaserscandownsamplestepsize_249',['typeMemLaserScanDownsampleStepSize',['../classrtabmap_1_1Parameters.html#a48eb5e534148f63ec1cd801b2b3c9738',1,'rtabmap::Parameters']]], + ['typememlaserscannormalk_250',['typeMemLaserScanNormalK',['../classrtabmap_1_1Parameters.html#ae08d01baf78070ee3752d6e1bf1593f7',1,'rtabmap::Parameters']]], + ['typememlaserscannormalradius_251',['typeMemLaserScanNormalRadius',['../classrtabmap_1_1Parameters.html#a3339347a6eef9e513b533729fe95cf27',1,'rtabmap::Parameters']]], + ['typememlaserscanvoxelsize_252',['typeMemLaserScanVoxelSize',['../classrtabmap_1_1Parameters.html#aebbac8aae4396068cd1a1c52071f7fb6',1,'rtabmap::Parameters']]], + ['typememloadvisuallocalfeaturesoninit_253',['typeMemLoadVisualLocalFeaturesOnInit',['../classrtabmap_1_1Parameters.html#abb2fb99f6fc573f773b69c9b85a78bd0',1,'rtabmap::Parameters']]], + ['typememlocalizationdatasaved_254',['typeMemLocalizationDataSaved',['../classrtabmap_1_1Parameters.html#a53c153d36ead57eb9420a14404b5e8f7',1,'rtabmap::Parameters']]], + ['typememlocalizationreadonly_255',['typeMemLocalizationReadOnly',['../classrtabmap_1_1Parameters.html#ab725e8cc7a5c0062ef1bdb9b1c540a53',1,'rtabmap::Parameters']]], + ['typememmaplabelsadded_256',['typeMemMapLabelsAdded',['../classrtabmap_1_1Parameters.html#a5665751154e4222b4b6922016ce1af0a',1,'rtabmap::Parameters']]], + ['typememnotlinkednodeskept_257',['typeMemNotLinkedNodesKept',['../classrtabmap_1_1Parameters.html#ac4c67bce0990201987d1b1c5170ac961',1,'rtabmap::Parameters']]], + ['typememrawdescriptorskept_258',['typeMemRawDescriptorsKept',['../classrtabmap_1_1Parameters.html#a3f2298ad837e39a486510a39a7ab578d',1,'rtabmap::Parameters']]], + ['typememrecentwmratio_259',['typeMemRecentWmRatio',['../classrtabmap_1_1Parameters.html#a3be8ceb8f478841307da018e7be8ff25',1,'rtabmap::Parameters']]], + ['typememreducegraph_260',['typeMemReduceGraph',['../classrtabmap_1_1Parameters.html#a54efd448718011d844d4a77438a4e11f',1,'rtabmap::Parameters']]], + ['typememrehearsalidupdatedtonewone_261',['typeMemRehearsalIdUpdatedToNewOne',['../classrtabmap_1_1Parameters.html#ab0e2ed39b1476db12c1baa9cd005c758',1,'rtabmap::Parameters']]], + ['typememrehearsalsimilarity_262',['typeMemRehearsalSimilarity',['../classrtabmap_1_1Parameters.html#a69cf38f0e449f3bc385db4ab00579f43',1,'rtabmap::Parameters']]], + ['typememrehearsalweightignoredwhilemoving_263',['typeMemRehearsalWeightIgnoredWhileMoving',['../classrtabmap_1_1Parameters.html#a08d842bdb32c10c88f7c3a5fc5c6b0fd',1,'rtabmap::Parameters']]], + ['typememrotateimagesupsideup_264',['typeMemRotateImagesUpsideUp',['../classrtabmap_1_1Parameters.html#aa01d5fdd8fd13161fffbccd2418d4985',1,'rtabmap::Parameters']]], + ['typememsavedepth16format_265',['typeMemSaveDepth16Format',['../classrtabmap_1_1Parameters.html#af3e0b3f68a3af714d1dbc56198a66c3c',1,'rtabmap::Parameters']]], + ['typememstereofrommotion_266',['typeMemStereoFromMotion',['../classrtabmap_1_1Parameters.html#aeb6d9c6dbabd4907cc2c166aa54d93f0',1,'rtabmap::Parameters']]], + ['typememstmsize_267',['typeMemSTMSize',['../classrtabmap_1_1Parameters.html#a0a0f9f34f0d51197248915892b5cd53d',1,'rtabmap::Parameters']]], + ['typememtransfersortingbyweightid_268',['typeMemTransferSortingByWeightId',['../classrtabmap_1_1Parameters.html#a0ec4baac4ca53ed008c1c47080bd6c46',1,'rtabmap::Parameters']]], + ['typememuseodomfeatures_269',['typeMemUseOdomFeatures',['../classrtabmap_1_1Parameters.html#a2de0eba9aff21b9eb0279492e1bcad51',1,'rtabmap::Parameters']]], + ['typememuseodomgravity_270',['typeMemUseOdomGravity',['../classrtabmap_1_1Parameters.html#a8f160b278891d9e345f95ca03a6189c2',1,'rtabmap::Parameters']]], + ['typename_271',['typename',['../classrtabmap_1_1Feature2D.html#a98050ef4da598e5b35bc32317bc58b84',1,'rtabmap::Feature2D::typeName()'],['../classrtabmap_1_1Link.html#a1fb9569f6435b5a1c800a935b08f0159',1,'rtabmap::Link::typeName()']]], + ['typeodomalignwithground_272',['typeOdomAlignWithGround',['../classrtabmap_1_1Parameters.html#aa4fae465d9dbe30d6dc967021db3ea5a',1,'rtabmap::Parameters']]], + ['typeodomcuvslammulticammode_273',['typeOdomCuVSLAMMulticamMode',['../classrtabmap_1_1Parameters.html#ab1cce5c7e04a20d4f4988a0c6bb6c7c7',1,'rtabmap::Parameters']]], + ['typeodomdeskewing_274',['typeOdomDeskewing',['../classrtabmap_1_1Parameters.html#a24a61030f642d9296c9aaaec41470f57',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustment_275',['typeOdomF2MBundleAdjustment',['../classrtabmap_1_1Parameters.html#a7940226a66f10a230be868d63cc0e306',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustmentmaxframes_276',['typeOdomF2MBundleAdjustmentMaxFrames',['../classrtabmap_1_1Parameters.html#a513adb9014624d6f4c49f5eefc420db7',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustmentmaxkeyframesperfeature_277',['typeOdomF2MBundleAdjustmentMaxKeyFramesPerFeature',['../classrtabmap_1_1Parameters.html#a8326a4fad1bc31d42ecd767e6692c975',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustmentminmotion_278',['typeOdomF2MBundleAdjustmentMinMotion',['../classrtabmap_1_1Parameters.html#aab4730eef02b5915576edcf918ec1b1e',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleupdatefeaturemaponallframes_279',['typeOdomF2MBundleUpdateFeatureMapOnAllFrames',['../classrtabmap_1_1Parameters.html#ae41684697f301c0fa79bf340cd0ab7fe',1,'rtabmap::Parameters']]], + ['typeodomf2mfloorthreshold_280',['typeOdomF2MFloorThreshold',['../classrtabmap_1_1Parameters.html#a5823019915a254581754302a8aefb319',1,'rtabmap::Parameters']]], + ['typeodomf2minitdepthfactor_281',['typeOdomF2MInitDepthFactor',['../classrtabmap_1_1Parameters.html#a124c81a90992da95bed189ecf65a8f7d',1,'rtabmap::Parameters']]], + ['typeodomf2mmaxnewfeatures_282',['typeOdomF2MMaxNewFeatures',['../classrtabmap_1_1Parameters.html#a76cbf9173df5e30155309657fa547309',1,'rtabmap::Parameters']]], + ['typeodomf2mmaxsize_283',['typeOdomF2MMaxSize',['../classrtabmap_1_1Parameters.html#aa7bef931c378cb662a5d321d61cf8628',1,'rtabmap::Parameters']]], + ['typeodomf2mscanmaxsize_284',['typeOdomF2MScanMaxSize',['../classrtabmap_1_1Parameters.html#af826e13666acc3f07eefda7d05afed80',1,'rtabmap::Parameters']]], + ['typeodomf2mscanrange_285',['typeOdomF2MScanRange',['../classrtabmap_1_1Parameters.html#a9fc3d80380823eb7d710172a665dd29a',1,'rtabmap::Parameters']]], + ['typeodomf2mscansubtractangle_286',['typeOdomF2MScanSubtractAngle',['../classrtabmap_1_1Parameters.html#a0d95c40fafccf72cffcdc4467a8156dd',1,'rtabmap::Parameters']]], + ['typeodomf2mscansubtractradius_287',['typeOdomF2MScanSubtractRadius',['../classrtabmap_1_1Parameters.html#a29c20a1dc4ab963a8c25ad8dcfdde5ca',1,'rtabmap::Parameters']]], + ['typeodomf2mvaliddepthratio_288',['typeOdomF2MValidDepthRatio',['../classrtabmap_1_1Parameters.html#a02883812982806e6b52e782608b6132d',1,'rtabmap::Parameters']]], + ['typeodomfillinfodata_289',['typeOdomFillInfoData',['../classrtabmap_1_1Parameters.html#ac23e41b4917d587e6cad518a887886ed',1,'rtabmap::Parameters']]], + ['typeodomfilteringstrategy_290',['typeOdomFilteringStrategy',['../classrtabmap_1_1Parameters.html#ad148fb299385c0a6ce9333628ce333aa',1,'rtabmap::Parameters']]], + ['typeodomfovisbucketheight_291',['typeOdomFovisBucketHeight',['../classrtabmap_1_1Parameters.html#ad87da710366f779d776285a6e309a139',1,'rtabmap::Parameters']]], + ['typeodomfovisbucketwidth_292',['typeOdomFovisBucketWidth',['../classrtabmap_1_1Parameters.html#a8eaa218d3bde0fb13fa74c37a0e9b2c2',1,'rtabmap::Parameters']]], + ['typeodomfoviscliqueinlierthreshold_293',['typeOdomFovisCliqueInlierThreshold',['../classrtabmap_1_1Parameters.html#af36e3ccf2b97c1202fc418d63db8187e',1,'rtabmap::Parameters']]], + ['typeodomfovisfastthreshold_294',['typeOdomFovisFastThreshold',['../classrtabmap_1_1Parameters.html#a7ff45cb8fe09a92a59ee43901a85b8ec',1,'rtabmap::Parameters']]], + ['typeodomfovisfastthresholdadaptivegain_295',['typeOdomFovisFastThresholdAdaptiveGain',['../classrtabmap_1_1Parameters.html#a00d0958f390dcf59d4743f70dec6c1f8',1,'rtabmap::Parameters']]], + ['typeodomfovisfeaturesearchwindow_296',['typeOdomFovisFeatureSearchWindow',['../classrtabmap_1_1Parameters.html#ae24495e10a7506a3a9f6ef163d61cbfa',1,'rtabmap::Parameters']]], + ['typeodomfovisfeaturewindowsize_297',['typeOdomFovisFeatureWindowSize',['../classrtabmap_1_1Parameters.html#a86eb0b72f6783c5d49951d5d5817d38c',1,'rtabmap::Parameters']]], + ['typeodomfovisinliermaxreprojectionerror_298',['typeOdomFovisInlierMaxReprojectionError',['../classrtabmap_1_1Parameters.html#ae8684ea68dd41488be1e763978604acc',1,'rtabmap::Parameters']]], + ['typeodomfovismaxkeypointsperbucket_299',['typeOdomFovisMaxKeypointsPerBucket',['../classrtabmap_1_1Parameters.html#a5c30f82d944f6da59b0cab15bb1351d0',1,'rtabmap::Parameters']]], + ['typeodomfovismaxmeanreprojectionerror_300',['typeOdomFovisMaxMeanReprojectionError',['../classrtabmap_1_1Parameters.html#a6bef1a3db95a9af8ab74b1cf62a81912',1,'rtabmap::Parameters']]], + ['typeodomfovismaxpyramidlevel_301',['typeOdomFovisMaxPyramidLevel',['../classrtabmap_1_1Parameters.html#a100cddcd80954c8f8e714d8a66d2c82a',1,'rtabmap::Parameters']]], + ['typeodomfovisminfeaturesforestimate_302',['typeOdomFovisMinFeaturesForEstimate',['../classrtabmap_1_1Parameters.html#ac9a8dddb3f706198317639c9e03a2ac1',1,'rtabmap::Parameters']]], + ['typeodomfovisminpyramidlevel_303',['typeOdomFovisMinPyramidLevel',['../classrtabmap_1_1Parameters.html#a3dd41b995d6c5ca5935c59d66de010bc',1,'rtabmap::Parameters']]], + ['typeodomfovisstereomaxdisparity_304',['typeOdomFovisStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a03383035535f2bb8036e93cc8eee5d8e',1,'rtabmap::Parameters']]], + ['typeodomfovisstereomaxdistepipolarline_305',['typeOdomFovisStereoMaxDistEpipolarLine',['../classrtabmap_1_1Parameters.html#a6a06d1dc9b26a3f257ef6e67e4b900a1',1,'rtabmap::Parameters']]], + ['typeodomfovisstereomaxrefinementdisplacement_306',['typeOdomFovisStereoMaxRefinementDisplacement',['../classrtabmap_1_1Parameters.html#a3c7478a1cbb19b6f543695810293d669',1,'rtabmap::Parameters']]], + ['typeodomfovisstereorequiremutualmatch_307',['typeOdomFovisStereoRequireMutualMatch',['../classrtabmap_1_1Parameters.html#a56253ab98d2ee917598582e868c01352',1,'rtabmap::Parameters']]], + ['typeodomfovistargetpixelsperfeature_308',['typeOdomFovisTargetPixelsPerFeature',['../classrtabmap_1_1Parameters.html#ae953b550d350af0a99323dc261d1e132',1,'rtabmap::Parameters']]], + ['typeodomfovisupdatetargetfeatureswithrefined_309',['typeOdomFovisUpdateTargetFeaturesWithRefined',['../classrtabmap_1_1Parameters.html#a20832aeb498fcdd2f2a6353c55d981e1',1,'rtabmap::Parameters']]], + ['typeodomfovisuseadaptivethreshold_310',['typeOdomFovisUseAdaptiveThreshold',['../classrtabmap_1_1Parameters.html#a7a7e58f941f6b3f501b061a2cf556e57',1,'rtabmap::Parameters']]], + ['typeodomfovisusebucketing_311',['typeOdomFovisUseBucketing',['../classrtabmap_1_1Parameters.html#ad2c40984ca2add5d8ba17963ca017b57',1,'rtabmap::Parameters']]], + ['typeodomfovisusehomographyinitialization_312',['typeOdomFovisUseHomographyInitialization',['../classrtabmap_1_1Parameters.html#a2cf1743eb1bb0170609131d1ef4ee689',1,'rtabmap::Parameters']]], + ['typeodomfovisuseimagenormalization_313',['typeOdomFovisUseImageNormalization',['../classrtabmap_1_1Parameters.html#abe94da7d58b326c9303d2c655c6e4baf',1,'rtabmap::Parameters']]], + ['typeodomfovisusesubpixelrefinement_314',['typeOdomFovisUseSubpixelRefinement',['../classrtabmap_1_1Parameters.html#a08e1889164d38cd5cb2fb40e5d18378e',1,'rtabmap::Parameters']]], + ['typeodomguessmotion_315',['typeOdomGuessMotion',['../classrtabmap_1_1Parameters.html#a25f8b0caf74b406a8ee38c4bfa6fc83f',1,'rtabmap::Parameters']]], + ['typeodomguesssmoothingdelay_316',['typeOdomGuessSmoothingDelay',['../classrtabmap_1_1Parameters.html#a1bebe2f829f9dd38f4f5f58ef3d10848',1,'rtabmap::Parameters']]], + ['typeodomholonomic_317',['typeOdomHolonomic',['../classrtabmap_1_1Parameters.html#a13747994edaae12d2cddc3413a14594a',1,'rtabmap::Parameters']]], + ['typeodomimagebuffersize_318',['typeOdomImageBufferSize',['../classrtabmap_1_1Parameters.html#adbcc200b4e893be1c5bcb69be2b05db3',1,'rtabmap::Parameters']]], + ['typeodomimagedecimation_319',['typeOdomImageDecimation',['../classrtabmap_1_1Parameters.html#a49edae0887c2ea2b54950040bc064d5d',1,'rtabmap::Parameters']]], + ['typeodomkalmanmeasurementnoise_320',['typeOdomKalmanMeasurementNoise',['../classrtabmap_1_1Parameters.html#a103f1d8f4d49ad50390f4e712ef4e4db',1,'rtabmap::Parameters']]], + ['typeodomkalmanprocessnoise_321',['typeOdomKalmanProcessNoise',['../classrtabmap_1_1Parameters.html#a887ec5442e03003807acf20292402664',1,'rtabmap::Parameters']]], + ['typeodomkeyframethr_322',['typeOdomKeyFrameThr',['../classrtabmap_1_1Parameters.html#acd625c0a7cd9759310de5bd8cd19698d',1,'rtabmap::Parameters']]], + ['typeodomliosamangvar_323',['typeOdomLIOSAMAngVar',['../classrtabmap_1_1Parameters.html#a3fbf9e93d158a5889504826fdccce7f5',1,'rtabmap::Parameters']]], + ['typeodomliosamconfigpath_324',['typeOdomLIOSAMConfigPath',['../classrtabmap_1_1Parameters.html#abdfd1208f2c4fe97b0aeda82509cfa0e',1,'rtabmap::Parameters']]], + ['typeodomliosamedgethreshold_325',['typeOdomLIOSAMEdgeThreshold',['../classrtabmap_1_1Parameters.html#a8e8bef1b13b87ee5604890e956bf209e',1,'rtabmap::Parameters']]], + ['typeodomliosamhorizonscan_326',['typeOdomLIOSAMHorizonScan',['../classrtabmap_1_1Parameters.html#af110b729255631d7631107fc2e58660a',1,'rtabmap::Parameters']]], + ['typeodomliosamimuaccbiasn_327',['typeOdomLIOSAMImuAccBiasN',['../classrtabmap_1_1Parameters.html#adcd79d54c9a906a2f499b2e4c0e2e1ba',1,'rtabmap::Parameters']]], + ['typeodomliosamimuaccnoise_328',['typeOdomLIOSAMImuAccNoise',['../classrtabmap_1_1Parameters.html#acdc5f652218c6f8aad88c1dca1f8985c',1,'rtabmap::Parameters']]], + ['typeodomliosamimugravity_329',['typeOdomLIOSAMImuGravity',['../classrtabmap_1_1Parameters.html#a1ad5d8d38104c30b1af77afe80de0fb7',1,'rtabmap::Parameters']]], + ['typeodomliosamimugyrbiasn_330',['typeOdomLIOSAMImuGyrBiasN',['../classrtabmap_1_1Parameters.html#a1c787aecbc49182c35a6e2c1261f0e90',1,'rtabmap::Parameters']]], + ['typeodomliosamimugyrnoise_331',['typeOdomLIOSAMImuGyrNoise',['../classrtabmap_1_1Parameters.html#afd7af5ac4d33ee71c160572b2c851bf7',1,'rtabmap::Parameters']]], + ['typeodomliosamlinvar_332',['typeOdomLIOSAMLinVar',['../classrtabmap_1_1Parameters.html#a8d2a8426c248982d8ecafdb6cd657658',1,'rtabmap::Parameters']]], + ['typeodomliosamnscan_333',['typeOdomLIOSAMNScan',['../classrtabmap_1_1Parameters.html#ac68c06fbc0201e61373bcae649ae72a7',1,'rtabmap::Parameters']]], + ['typeodomliosamsensor_334',['typeOdomLIOSAMSensor',['../classrtabmap_1_1Parameters.html#aae38e57d0aeffac295c4889683373934',1,'rtabmap::Parameters']]], + ['typeodomliosamsurfthreshold_335',['typeOdomLIOSAMSurfThreshold',['../classrtabmap_1_1Parameters.html#a5ae21075bebd080c0d6b9d8bf48ecd2c',1,'rtabmap::Parameters']]], + ['typeodomloamangvar_336',['typeOdomLOAMAngVar',['../classrtabmap_1_1Parameters.html#a1539403cce7fd260693987dd88a6e105',1,'rtabmap::Parameters']]], + ['typeodomloamlinvar_337',['typeOdomLOAMLinVar',['../classrtabmap_1_1Parameters.html#a66cea8a537cdeb0c4a7e98aac23bf8de',1,'rtabmap::Parameters']]], + ['typeodomloamlocalmapping_338',['typeOdomLOAMLocalMapping',['../classrtabmap_1_1Parameters.html#a56474e36950608ea97c9adebdf62a2e5',1,'rtabmap::Parameters']]], + ['typeodomloamresolution_339',['typeOdomLOAMResolution',['../classrtabmap_1_1Parameters.html#a33dbaf2d70ea68db0267db8fe4b73779',1,'rtabmap::Parameters']]], + ['typeodomloamscanperiod_340',['typeOdomLOAMScanPeriod',['../classrtabmap_1_1Parameters.html#aff60eab1c95885f90c7c28d5a0ad3f18',1,'rtabmap::Parameters']]], + ['typeodomloamsensor_341',['typeOdomLOAMSensor',['../classrtabmap_1_1Parameters.html#acedafb9d83acd2112a3bb482ba084fc2',1,'rtabmap::Parameters']]], + ['typeodommonoinitminflow_342',['typeOdomMonoInitMinFlow',['../classrtabmap_1_1Parameters.html#a46e27d1c93ba406bf564d2cf59849790',1,'rtabmap::Parameters']]], + ['typeodommonoinitmintranslation_343',['typeOdomMonoInitMinTranslation',['../classrtabmap_1_1Parameters.html#a12ea6b887781afba0c6ce767f56476db',1,'rtabmap::Parameters']]], + ['typeodommonomaxvariance_344',['typeOdomMonoMaxVariance',['../classrtabmap_1_1Parameters.html#a3d5f9bceaa2de4089156042d5c139341',1,'rtabmap::Parameters']]], + ['typeodommonomintranslation_345',['typeOdomMonoMinTranslation',['../classrtabmap_1_1Parameters.html#a9f84413a4461686310b674bf96ffb076',1,'rtabmap::Parameters']]], + ['typeodommsckffastthreshold_346',['typeOdomMSCKFFastThreshold',['../classrtabmap_1_1Parameters.html#ac0a064072a4edbf18d2cd6665ccba9f8',1,'rtabmap::Parameters']]], + ['typeodommsckfgridcol_347',['typeOdomMSCKFGridCol',['../classrtabmap_1_1Parameters.html#adb9427831843f86e9e3a50e146133af2',1,'rtabmap::Parameters']]], + ['typeodommsckfgridmaxfeaturenum_348',['typeOdomMSCKFGridMaxFeatureNum',['../classrtabmap_1_1Parameters.html#abd6305d4b6053d2e3e388e17162e0f8c',1,'rtabmap::Parameters']]], + ['typeodommsckfgridminfeaturenum_349',['typeOdomMSCKFGridMinFeatureNum',['../classrtabmap_1_1Parameters.html#a0ea5916c9a62528ac9a2ae73bf77a5f9',1,'rtabmap::Parameters']]], + ['typeodommsckfgridrow_350',['typeOdomMSCKFGridRow',['../classrtabmap_1_1Parameters.html#a8c996df43e9f9b06c3bb4479a9c9e1f1',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovaccbias_351',['typeOdomMSCKFInitCovAccBias',['../classrtabmap_1_1Parameters.html#a20284ede406bfbd27af0c5ae7030a3c5',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovexrot_352',['typeOdomMSCKFInitCovExRot',['../classrtabmap_1_1Parameters.html#a7c8b25c8c1c44a3012616802e1f39014',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovextrans_353',['typeOdomMSCKFInitCovExTrans',['../classrtabmap_1_1Parameters.html#a9edd2e8c4a752bb622f679201cf0d094',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovgyrobias_354',['typeOdomMSCKFInitCovGyroBias',['../classrtabmap_1_1Parameters.html#ace3efd614609c0b43f073f2f345839b5',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovvel_355',['typeOdomMSCKFInitCovVel',['../classrtabmap_1_1Parameters.html#ac26d5dbb4e7ac5d91a40e195106de483',1,'rtabmap::Parameters']]], + ['typeodommsckfmaxcamstatesize_356',['typeOdomMSCKFMaxCamStateSize',['../classrtabmap_1_1Parameters.html#a3d1200c3c2803df3e654c680dbba5a1e',1,'rtabmap::Parameters']]], + ['typeodommsckfmaxiteration_357',['typeOdomMSCKFMaxIteration',['../classrtabmap_1_1Parameters.html#aae780f7f5b7d1c3cc1f0163afa2f5664',1,'rtabmap::Parameters']]], + ['typeodommsckfnoiseacc_358',['typeOdomMSCKFNoiseAcc',['../classrtabmap_1_1Parameters.html#a8fb3b56ba7c229fad422ceb3ddd4ba96',1,'rtabmap::Parameters']]], + ['typeodommsckfnoiseaccbias_359',['typeOdomMSCKFNoiseAccBias',['../classrtabmap_1_1Parameters.html#a042be2834ef1757137b2fec01f781665',1,'rtabmap::Parameters']]], + ['typeodommsckfnoisefeature_360',['typeOdomMSCKFNoiseFeature',['../classrtabmap_1_1Parameters.html#a812493fe5c1d261322daba2db8c3fa3e',1,'rtabmap::Parameters']]], + ['typeodommsckfnoisegyro_361',['typeOdomMSCKFNoiseGyro',['../classrtabmap_1_1Parameters.html#a4ac7431ac364a5b712f1bcd8b8ddee5f',1,'rtabmap::Parameters']]], + ['typeodommsckfnoisegyrobias_362',['typeOdomMSCKFNoiseGyroBias',['../classrtabmap_1_1Parameters.html#a57c51e8e7863637ccb25920a2e5bc7b8',1,'rtabmap::Parameters']]], + ['typeodommsckfopttranslationthreshold_363',['typeOdomMSCKFOptTranslationThreshold',['../classrtabmap_1_1Parameters.html#a14103693c5a9a6f814a6d742e4b74c94',1,'rtabmap::Parameters']]], + ['typeodommsckfpatchsize_364',['typeOdomMSCKFPatchSize',['../classrtabmap_1_1Parameters.html#ae87506064b60b13540981c3879932be1',1,'rtabmap::Parameters']]], + ['typeodommsckfpositionstdthreshold_365',['typeOdomMSCKFPositionStdThreshold',['../classrtabmap_1_1Parameters.html#aadd62751748155ef15f4946acda4a398',1,'rtabmap::Parameters']]], + ['typeodommsckfpyramidlevels_366',['typeOdomMSCKFPyramidLevels',['../classrtabmap_1_1Parameters.html#ad49ab83fa9f7a7c0882fbdde3c04d335',1,'rtabmap::Parameters']]], + ['typeodommsckfransacthreshold_367',['typeOdomMSCKFRansacThreshold',['../classrtabmap_1_1Parameters.html#ab85cb336373c0403c18763da5af7260d',1,'rtabmap::Parameters']]], + ['typeodommsckfrotationthreshold_368',['typeOdomMSCKFRotationThreshold',['../classrtabmap_1_1Parameters.html#abc211a696417833bd7b8ed7fb48b47aa',1,'rtabmap::Parameters']]], + ['typeodommsckfstereothreshold_369',['typeOdomMSCKFStereoThreshold',['../classrtabmap_1_1Parameters.html#ac2f90c0b1f7130f1118b83265be3145d',1,'rtabmap::Parameters']]], + ['typeodommsckftrackingratethreshold_370',['typeOdomMSCKFTrackingRateThreshold',['../classrtabmap_1_1Parameters.html#ae7787e86c6ad3c4877eeb0a884c30644',1,'rtabmap::Parameters']]], + ['typeodommsckftrackprecision_371',['typeOdomMSCKFTrackPrecision',['../classrtabmap_1_1Parameters.html#a617125034739c9330abce25b06d93c4f',1,'rtabmap::Parameters']]], + ['typeodommsckftranslationthreshold_372',['typeOdomMSCKFTranslationThreshold',['../classrtabmap_1_1Parameters.html#a94df87203b9f3b5ff62c5ba29c5822ab',1,'rtabmap::Parameters']]], + ['typeodomokvisconfigpath_373',['typeOdomOKVISConfigPath',['../classrtabmap_1_1Parameters.html#a78ac298b3ababa6115fcf7fed8c09288',1,'rtabmap::Parameters']]], + ['typeodomopen3dmaxdepth_374',['typeOdomOpen3DMaxDepth',['../classrtabmap_1_1Parameters.html#a990bddd4b65f2eaf6a6d536f73168af0',1,'rtabmap::Parameters']]], + ['typeodomopen3dmethod_375',['typeOdomOpen3DMethod',['../classrtabmap_1_1Parameters.html#a53f319032810dccf546bc716b27bbde9',1,'rtabmap::Parameters']]], + ['typeodomopenvinsaccelerometernoisedensity_376',['typeOdomOpenVINSAccelerometerNoiseDensity',['../classrtabmap_1_1Parameters.html#a8b3a2bbf6e902dd371c27a3027073d52',1,'rtabmap::Parameters']]], + ['typeodomopenvinsaccelerometerrandomwalk_377',['typeOdomOpenVINSAccelerometerRandomWalk',['../classrtabmap_1_1Parameters.html#a3b280d249420c8a080d59a59776cd991',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibcamextrinsics_378',['typeOdomOpenVINSCalibCamExtrinsics',['../classrtabmap_1_1Parameters.html#a08d487f62bba202923e711f7c2bc5767',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibcamintrinsics_379',['typeOdomOpenVINSCalibCamIntrinsics',['../classrtabmap_1_1Parameters.html#af9fa267c7acf319c084444091734045b',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibcamtimeoffset_380',['typeOdomOpenVINSCalibCamTimeoffset',['../classrtabmap_1_1Parameters.html#a40947e5eba109b23d5e058456a085267',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibimugsensitivity_381',['typeOdomOpenVINSCalibIMUGSensitivity',['../classrtabmap_1_1Parameters.html#a0eaa7a87fbeeac68687edd7c2599a020',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibimuintrinsics_382',['typeOdomOpenVINSCalibIMUIntrinsics',['../classrtabmap_1_1Parameters.html#a8897c528049baa925ad5ec611c78b428',1,'rtabmap::Parameters']]], + ['typeodomopenvinsconfigpath_383',['typeOdomOpenVINSConfigPath',['../classrtabmap_1_1Parameters.html#ad77710cf460c6b55b0914ffed739dacd',1,'rtabmap::Parameters']]], + ['typeodomopenvinsdtslamdelay_384',['typeOdomOpenVINSDtSLAMDelay',['../classrtabmap_1_1Parameters.html#abfebab9eec3ff20d5dbecb0dac2e340f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfeatrepmsckf_385',['typeOdomOpenVINSFeatRepMSCKF',['../classrtabmap_1_1Parameters.html#a012d1437fb55743c5f7d1c29cd66fe84',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfeatrepslam_386',['typeOdomOpenVINSFeatRepSLAM',['../classrtabmap_1_1Parameters.html#ab6a4a67b483c541b9d4fd7241ab4b4f1',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfimaxbaseline_387',['typeOdomOpenVINSFiMaxBaseline',['../classrtabmap_1_1Parameters.html#a1131889d1b1a6ea127e27dc3f034206e',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfimaxcondnumber_388',['typeOdomOpenVINSFiMaxCondNumber',['../classrtabmap_1_1Parameters.html#a8f34d1861fc2cc6d537934667a04f80d',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfimaxruns_389',['typeOdomOpenVINSFiMaxRuns',['../classrtabmap_1_1Parameters.html#a4f9e7478b39453eec54f9bedf6337dab',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfirefinefeatures_390',['typeOdomOpenVINSFiRefineFeatures',['../classrtabmap_1_1Parameters.html#aed1840a5caa27539b13469e241dd991a',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfitriangulate1d_391',['typeOdomOpenVINSFiTriangulate1d',['../classrtabmap_1_1Parameters.html#a1fa4befb095a3afddad9c93b2746b7fc',1,'rtabmap::Parameters']]], + ['typeodomopenvinsgravitymag_392',['typeOdomOpenVINSGravityMag',['../classrtabmap_1_1Parameters.html#aca75e8fd07fb5048aad4ed6c649c363f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsgyroscopenoisedensity_393',['typeOdomOpenVINSGyroscopeNoiseDensity',['../classrtabmap_1_1Parameters.html#af12aca81c1f84af90a9978a79514f2ef',1,'rtabmap::Parameters']]], + ['typeodomopenvinsgyroscoperandomwalk_394',['typeOdomOpenVINSGyroscopeRandomWalk',['../classrtabmap_1_1Parameters.html#a1ecfcc933390e003a6eec73b3182bab0',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationba_395',['typeOdomOpenVINSInitDynInflationBa',['../classrtabmap_1_1Parameters.html#a10d312194811f83a08d9846197c47f58',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationbg_396',['typeOdomOpenVINSInitDynInflationBg',['../classrtabmap_1_1Parameters.html#a25faee80fdd2e9fed884404eef3797b9',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationori_397',['typeOdomOpenVINSInitDynInflationOri',['../classrtabmap_1_1Parameters.html#ac5f1c743b50b34683234103ffc7378c9',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationvel_398',['typeOdomOpenVINSInitDynInflationVel',['../classrtabmap_1_1Parameters.html#a2dfbf7ba2fb2e69c58c7867494cfe47f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmindeg_399',['typeOdomOpenVINSInitDynMinDeg',['../classrtabmap_1_1Parameters.html#ad04048c8d08c0f27b04b143b1db13e11',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynminreccond_400',['typeOdomOpenVINSInitDynMinRecCond',['../classrtabmap_1_1Parameters.html#aa53359d70bb49dae236c6a461b7e004f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmlemaxiter_401',['typeOdomOpenVINSInitDynMLEMaxIter',['../classrtabmap_1_1Parameters.html#a15ee149130f2f749e93371f0be75465e',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmlemaxthreads_402',['typeOdomOpenVINSInitDynMLEMaxThreads',['../classrtabmap_1_1Parameters.html#a87f3ff011f642964fab3a60d21e0f032',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmlemaxtime_403',['typeOdomOpenVINSInitDynMLEMaxTime',['../classrtabmap_1_1Parameters.html#ab0fd3c8a82769905328cafae39a03ed0',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmleoptcalib_404',['typeOdomOpenVINSInitDynMLEOptCalib',['../classrtabmap_1_1Parameters.html#a40ef74942faa53ac4c85c0017c45b0d5',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynnumpose_405',['typeOdomOpenVINSInitDynNumPose',['../classrtabmap_1_1Parameters.html#a5e6d172f58db1e7d703915ba44b32ea2',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynuse_406',['typeOdomOpenVINSInitDynUse',['../classrtabmap_1_1Parameters.html#ad61520368c7cf6373e3a4d8f3d907cbf',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitimuthresh_407',['typeOdomOpenVINSInitIMUThresh',['../classrtabmap_1_1Parameters.html#a94935b46d384dfda94694516159e3531',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitmaxdisparity_408',['typeOdomOpenVINSInitMaxDisparity',['../classrtabmap_1_1Parameters.html#a026cb65c6e014ca8d85fcacf31b99bbc',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitmaxfeatures_409',['typeOdomOpenVINSInitMaxFeatures',['../classrtabmap_1_1Parameters.html#a30b830ac6908544fc9b2e6445ab6b217',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitwindowtime_410',['typeOdomOpenVINSInitWindowTime',['../classrtabmap_1_1Parameters.html#acec7b60d059e3d90a48ccdcaf3bfe309',1,'rtabmap::Parameters']]], + ['typeodomopenvinsintegration_411',['typeOdomOpenVINSIntegration',['../classrtabmap_1_1Parameters.html#a9dc6ad5575ceea690928a051ab399fdc',1,'rtabmap::Parameters']]], + ['typeodomopenvinsleftmaskpath_412',['typeOdomOpenVINSLeftMaskPath',['../classrtabmap_1_1Parameters.html#a2c5e1d6b1033f729c854087db81dad68',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxclones_413',['typeOdomOpenVINSMaxClones',['../classrtabmap_1_1Parameters.html#aa057072a59f3bb16562772e1f0e26bd7',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxmsckfinupdate_414',['typeOdomOpenVINSMaxMSCKFInUpdate',['../classrtabmap_1_1Parameters.html#acb3fffb0c879d07b57f18ab93b058203',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxslam_415',['typeOdomOpenVINSMaxSLAM',['../classrtabmap_1_1Parameters.html#a3811f46c4ce22069f48630bceff8f654',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxslaminupdate_416',['typeOdomOpenVINSMaxSLAMInUpdate',['../classrtabmap_1_1Parameters.html#a3e14ede354edef5f26dcd89c6eaf098d',1,'rtabmap::Parameters']]], + ['typeodomopenvinsminpxdist_417',['typeOdomOpenVINSMinPxDist',['../classrtabmap_1_1Parameters.html#af05bdd52bb01fe2434ec612bd7de4f17',1,'rtabmap::Parameters']]], + ['typeodomopenvinsnumpts_418',['typeOdomOpenVINSNumPts',['../classrtabmap_1_1Parameters.html#a713e1f17179b8bb541a5bd27b738911d',1,'rtabmap::Parameters']]], + ['typeodomopenvinsrightmaskpath_419',['typeOdomOpenVINSRightMaskPath',['../classrtabmap_1_1Parameters.html#a40800e0b5e2ae0892d2b6535f315fc1a',1,'rtabmap::Parameters']]], + ['typeodomopenvinstryzupt_420',['typeOdomOpenVINSTryZUPT',['../classrtabmap_1_1Parameters.html#aaabdcb6c03b9fcfd3fbd88b4d4a385e7',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupmsckfchi2multiplier_421',['typeOdomOpenVINSUpMSCKFChi2Multiplier',['../classrtabmap_1_1Parameters.html#af1256a1f21717214b6f383315a153d10',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupmsckfsigmapx_422',['typeOdomOpenVINSUpMSCKFSigmaPx',['../classrtabmap_1_1Parameters.html#ad130383a0ca21e36358467b30c28d984',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupslamchi2multiplier_423',['typeOdomOpenVINSUpSLAMChi2Multiplier',['../classrtabmap_1_1Parameters.html#a52b219cb4e733647378a6d2c2515074e',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupslamsigmapx_424',['typeOdomOpenVINSUpSLAMSigmaPx',['../classrtabmap_1_1Parameters.html#a389a02393de33cf952c8deaf8e19b878',1,'rtabmap::Parameters']]], + ['typeodomopenvinsusefej_425',['typeOdomOpenVINSUseFEJ',['../classrtabmap_1_1Parameters.html#a0f364aa2c16132c36263e24d85e13db3',1,'rtabmap::Parameters']]], + ['typeodomopenvinsuseklt_426',['typeOdomOpenVINSUseKLT',['../classrtabmap_1_1Parameters.html#a7ea160bd2748b464e796cc61557e3f6b',1,'rtabmap::Parameters']]], + ['typeodomopenvinsusestereo_427',['typeOdomOpenVINSUseStereo',['../classrtabmap_1_1Parameters.html#a698cf0129e39a2e97cccc67e941f037a',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptchi2multiplier_428',['typeOdomOpenVINSZUPTChi2Multiplier',['../classrtabmap_1_1Parameters.html#ae4d768e375a4be72d15a65a8a4ae0edb',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptmaxdisparity_429',['typeOdomOpenVINSZUPTMaxDisparity',['../classrtabmap_1_1Parameters.html#ac9291484582bf15778951fb6d3cd10b5',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptmaxvelodicy_430',['typeOdomOpenVINSZUPTMaxVelodicy',['../classrtabmap_1_1Parameters.html#a5f9028593fed78f816a7c3ffdfae2dd3',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptnoisemultiplier_431',['typeOdomOpenVINSZUPTNoiseMultiplier',['../classrtabmap_1_1Parameters.html#a56ef2e866ef6a218b4a96a9c581816f3',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptonlyatbeginning_432',['typeOdomOpenVINSZUPTOnlyAtBeginning',['../classrtabmap_1_1Parameters.html#a299978ac5b7f5b14a157a9bc6077966e',1,'rtabmap::Parameters']]], + ['typeodomorbslamaccnoise_433',['typeOdomORBSLAMAccNoise',['../classrtabmap_1_1Parameters.html#a6a8dd7520b22e07956ba9e617e868ad6',1,'rtabmap::Parameters']]], + ['typeodomorbslamaccwalk_434',['typeOdomORBSLAMAccWalk',['../classrtabmap_1_1Parameters.html#a79def634a3f8c7e4955b605047808217',1,'rtabmap::Parameters']]], + ['typeodomorbslambf_435',['typeOdomORBSLAMBf',['../classrtabmap_1_1Parameters.html#a84c6337148c74cb998335066be2791c1',1,'rtabmap::Parameters']]], + ['typeodomorbslamfps_436',['typeOdomORBSLAMFps',['../classrtabmap_1_1Parameters.html#ad7b537335ffc8849773bc3e82965528c',1,'rtabmap::Parameters']]], + ['typeodomorbslamgyronoise_437',['typeOdomORBSLAMGyroNoise',['../classrtabmap_1_1Parameters.html#a260d54c9e71e9d97ffd8e305bc1b2fe8',1,'rtabmap::Parameters']]], + ['typeodomorbslamgyrowalk_438',['typeOdomORBSLAMGyroWalk',['../classrtabmap_1_1Parameters.html#ae368f4a863d467a0e6ab105bf96aad0a',1,'rtabmap::Parameters']]], + ['typeodomorbslaminertial_439',['typeOdomORBSLAMInertial',['../classrtabmap_1_1Parameters.html#ad2b70e4ff4020f62f822492718563b20',1,'rtabmap::Parameters']]], + ['typeodomorbslammapsize_440',['typeOdomORBSLAMMapSize',['../classrtabmap_1_1Parameters.html#addfc8fa35369b7dae617a41c47218684',1,'rtabmap::Parameters']]], + ['typeodomorbslammaxfeatures_441',['typeOdomORBSLAMMaxFeatures',['../classrtabmap_1_1Parameters.html#a565a2a76e76eb35b1520069fe82f305c',1,'rtabmap::Parameters']]], + ['typeodomorbslamsamplingrate_442',['typeOdomORBSLAMSamplingRate',['../classrtabmap_1_1Parameters.html#ae6ae9297334dd88396fba172df077579',1,'rtabmap::Parameters']]], + ['typeodomorbslamthdepth_443',['typeOdomORBSLAMThDepth',['../classrtabmap_1_1Parameters.html#aede6ea5d6e9c6629227675c865cbf3cf',1,'rtabmap::Parameters']]], + ['typeodomorbslamvocpath_444',['typeOdomORBSLAMVocPath',['../classrtabmap_1_1Parameters.html#aaa10f768a39a3d9afc9bec47d81c0633',1,'rtabmap::Parameters']]], + ['typeodomparticlelambdar_445',['typeOdomParticleLambdaR',['../classrtabmap_1_1Parameters.html#ad44d4bc1d8df92a3e0fd16e0a42fa84f',1,'rtabmap::Parameters']]], + ['typeodomparticlelambdat_446',['typeOdomParticleLambdaT',['../classrtabmap_1_1Parameters.html#a1197e83786586b8dcf2bf720b6df3138',1,'rtabmap::Parameters']]], + ['typeodomparticlenoiser_447',['typeOdomParticleNoiseR',['../classrtabmap_1_1Parameters.html#a65070c0a369125748f19f17b900c010e',1,'rtabmap::Parameters']]], + ['typeodomparticlenoiset_448',['typeOdomParticleNoiseT',['../classrtabmap_1_1Parameters.html#a92f4d4bfd4a26cf6786f971fe85807d9',1,'rtabmap::Parameters']]], + ['typeodomparticlesize_449',['typeOdomParticleSize',['../classrtabmap_1_1Parameters.html#ad4ed7bcac9990eb0b27fb07aada3b1ea',1,'rtabmap::Parameters']]], + ['typeodomresetcountdown_450',['typeOdomResetCountdown',['../classrtabmap_1_1Parameters.html#a64f378d65d780fee0dc96353af05bd0b',1,'rtabmap::Parameters']]], + ['typeodomscankeyframethr_451',['typeOdomScanKeyFrameThr',['../classrtabmap_1_1Parameters.html#a869c94e833b568ec909e7de92c0bc2f3',1,'rtabmap::Parameters']]], + ['typeodomstrategy_452',['typeOdomStrategy',['../classrtabmap_1_1Parameters.html#ad84515268c8c54fa4be9a4e870e422d7',1,'rtabmap::Parameters']]], + ['typeodomvinsfusionconfigpath_453',['typeOdomVINSFusionConfigPath',['../classrtabmap_1_1Parameters.html#ae4943907302ab3eab412ca7adcc16ee2',1,'rtabmap::Parameters']]], + ['typeodomviskeyframethr_454',['typeOdomVisKeyFrameThr',['../classrtabmap_1_1Parameters.html#aef7912215e1d5f0f868a71bfa9228f99',1,'rtabmap::Parameters']]], + ['typeodomviso2bucketheight_455',['typeOdomViso2BucketHeight',['../classrtabmap_1_1Parameters.html#a766723cbdec25cc02a8691507316af9b',1,'rtabmap::Parameters']]], + ['typeodomviso2bucketmaxfeatures_456',['typeOdomViso2BucketMaxFeatures',['../classrtabmap_1_1Parameters.html#ae74077c67894128372c35608eb5f4002',1,'rtabmap::Parameters']]], + ['typeodomviso2bucketwidth_457',['typeOdomViso2BucketWidth',['../classrtabmap_1_1Parameters.html#ad37fbb01b3e1d9e4cc3bd542f7b2a14c',1,'rtabmap::Parameters']]], + ['typeodomviso2inlierthreshold_458',['typeOdomViso2InlierThreshold',['../classrtabmap_1_1Parameters.html#ac9743257a6036a37caa744d253ecaff1',1,'rtabmap::Parameters']]], + ['typeodomviso2matchbinsize_459',['typeOdomViso2MatchBinsize',['../classrtabmap_1_1Parameters.html#a9ed5dc5c6c0557ac31e1f414388fbb11',1,'rtabmap::Parameters']]], + ['typeodomviso2matchdisptolerance_460',['typeOdomViso2MatchDispTolerance',['../classrtabmap_1_1Parameters.html#a51280d63a737dbaa723a7f45c6b510a9',1,'rtabmap::Parameters']]], + ['typeodomviso2matchhalfresolution_461',['typeOdomViso2MatchHalfResolution',['../classrtabmap_1_1Parameters.html#abd28d31e1005fdcac73e0fdbebed179a',1,'rtabmap::Parameters']]], + ['typeodomviso2matchmultistage_462',['typeOdomViso2MatchMultiStage',['../classrtabmap_1_1Parameters.html#a27cb88fbbd3f3b2581b24af3fa7a7c50',1,'rtabmap::Parameters']]], + ['typeodomviso2matchnmsn_463',['typeOdomViso2MatchNmsN',['../classrtabmap_1_1Parameters.html#aef0c888af0ce614aac6ea73ce0afc5b8',1,'rtabmap::Parameters']]], + ['typeodomviso2matchnmstau_464',['typeOdomViso2MatchNmsTau',['../classrtabmap_1_1Parameters.html#af24a67da4f8768f856212185ae6c0327',1,'rtabmap::Parameters']]], + ['typeodomviso2matchoutlierdisptolerance_465',['typeOdomViso2MatchOutlierDispTolerance',['../classrtabmap_1_1Parameters.html#af5bd33f6ad26de33dab7e9aade35c7b2',1,'rtabmap::Parameters']]], + ['typeodomviso2matchoutlierflowtolerance_466',['typeOdomViso2MatchOutlierFlowTolerance',['../classrtabmap_1_1Parameters.html#a621b75cd213a8aabf2699846f5da5722',1,'rtabmap::Parameters']]], + ['typeodomviso2matchradius_467',['typeOdomViso2MatchRadius',['../classrtabmap_1_1Parameters.html#a8653a6ba7fe830506dfa154bb2e7e3c7',1,'rtabmap::Parameters']]], + ['typeodomviso2matchrefinement_468',['typeOdomViso2MatchRefinement',['../classrtabmap_1_1Parameters.html#af190c6a5f3f441f37a69a0dbc9cf47e1',1,'rtabmap::Parameters']]], + ['typeodomviso2ransaciters_469',['typeOdomViso2RansacIters',['../classrtabmap_1_1Parameters.html#ad1d5a80a8eeae0cda5777d4f1f6b8009',1,'rtabmap::Parameters']]], + ['typeodomviso2reweighting_470',['typeOdomViso2Reweighting',['../classrtabmap_1_1Parameters.html#ab1d0b7fcf84396b427bbeda915e77285',1,'rtabmap::Parameters']]], + ['typeoptimizerbaseline_471',['typeOptimizerBaseline',['../classrtabmap_1_1Parameters.html#a45b4940de5211ac0c9cc154d457d6005',1,'rtabmap::Parameters']]], + ['typeoptimizerdisparityvariance_472',['typeOptimizerDisparityVariance',['../classrtabmap_1_1Parameters.html#ab47216abbd6f583a59d4cbf29b195be5',1,'rtabmap::Parameters']]], + ['typeoptimizerepsilon_473',['typeOptimizerEpsilon',['../classrtabmap_1_1Parameters.html#ad5c694598c06f93beba5cd9402eb75d0',1,'rtabmap::Parameters']]], + ['typeoptimizergravitysigma_474',['typeOptimizerGravitySigma',['../classrtabmap_1_1Parameters.html#a6590f0a398ae69723972d6c4cb23c9a6',1,'rtabmap::Parameters']]], + ['typeoptimizeriterations_475',['typeOptimizerIterations',['../classrtabmap_1_1Parameters.html#a718c4ad1d42e091077455bd2af984bcb',1,'rtabmap::Parameters']]], + ['typeoptimizerlandmarksignored_476',['typeOptimizerLandmarksIgnored',['../classrtabmap_1_1Parameters.html#a062aec7622e2bd79bf05b54a1e9c33d0',1,'rtabmap::Parameters']]], + ['typeoptimizerpixelvariance_477',['typeOptimizerPixelVariance',['../classrtabmap_1_1Parameters.html#acf07e9b146003000fd39ea09472e0418',1,'rtabmap::Parameters']]], + ['typeoptimizerpriorsignored_478',['typeOptimizerPriorsIgnored',['../classrtabmap_1_1Parameters.html#afaefce4e43b514d53d654bf2217cd70f',1,'rtabmap::Parameters']]], + ['typeoptimizerrobust_479',['typeOptimizerRobust',['../classrtabmap_1_1Parameters.html#ae6a01c8d00cccfda50db7594e5eec644',1,'rtabmap::Parameters']]], + ['typeoptimizerrobustkerneldelta_480',['typeOptimizerRobustKernelDelta',['../classrtabmap_1_1Parameters.html#a736fb01f8844d0445668b3c0ed30b716',1,'rtabmap::Parameters']]], + ['typeoptimizerstrategy_481',['typeOptimizerStrategy',['../classrtabmap_1_1Parameters.html#af463e8084ab89180e19ceafdc8d30251',1,'rtabmap::Parameters']]], + ['typeoptimizervarianceignored_482',['typeOptimizerVarianceIgnored',['../classrtabmap_1_1Parameters.html#a426416d3efa0da4fd647526918e3b92f',1,'rtabmap::Parameters']]], + ['typeorbedgethreshold_483',['typeORBEdgeThreshold',['../classrtabmap_1_1Parameters.html#a51faba893deec24a516e47c4028b4400',1,'rtabmap::Parameters']]], + ['typeorbfirstlevel_484',['typeORBFirstLevel',['../classrtabmap_1_1Parameters.html#a31feaef58fa0ec481166236af57dbd7e',1,'rtabmap::Parameters']]], + ['typeorbgpu_485',['typeORBGpu',['../classrtabmap_1_1Parameters.html#a6b8db5bf9a719d5a410c7a2ed6d05782',1,'rtabmap::Parameters']]], + ['typeorbnlevels_486',['typeORBNLevels',['../classrtabmap_1_1Parameters.html#a74e75b2722cfc0e157568f7271d239c0',1,'rtabmap::Parameters']]], + ['typeorbpatchsize_487',['typeORBPatchSize',['../classrtabmap_1_1Parameters.html#a22a509b8e8411d3580dac0d30967c4c4',1,'rtabmap::Parameters']]], + ['typeorbscalefactor_488',['typeORBScaleFactor',['../classrtabmap_1_1Parameters.html#a9717a76d3bf69125553a364e6338ed58',1,'rtabmap::Parameters']]], + ['typeorbscoretype_489',['typeORBScoreType',['../classrtabmap_1_1Parameters.html#abbebfe361da6ce5c5fa5974567b03ab1',1,'rtabmap::Parameters']]], + ['typeorbwta_5fk_490',['typeORBWTA_K',['../classrtabmap_1_1Parameters.html#a0c84839b5c32e2d86535c2b186be434f',1,'rtabmap::Parameters']]], + ['typepydescriptordim_491',['typePyDescriptorDim',['../classrtabmap_1_1Parameters.html#ab65a9191b084d81d6f6bd0459fd46895',1,'rtabmap::Parameters']]], + ['typepydescriptorpath_492',['typePyDescriptorPath',['../classrtabmap_1_1Parameters.html#a97a035608c1dbf76a82e425ec1207c46',1,'rtabmap::Parameters']]], + ['typepydetectorcuda_493',['typePyDetectorCuda',['../classrtabmap_1_1Parameters.html#a58467f64e3f813ffda07c35edcfd63b7',1,'rtabmap::Parameters']]], + ['typepydetectorpath_494',['typePyDetectorPath',['../classrtabmap_1_1Parameters.html#acc3e73731912f5a4fe861b29a7a51c57',1,'rtabmap::Parameters']]], + ['typepymatchercuda_495',['typePyMatcherCuda',['../classrtabmap_1_1Parameters.html#a81862a75eba735f5a4d3d0d7fbd7aa40',1,'rtabmap::Parameters']]], + ['typepymatcheriterations_496',['typePyMatcherIterations',['../classrtabmap_1_1Parameters.html#addcced88955989bb7fbdbd4371df0247',1,'rtabmap::Parameters']]], + ['typepymatchermodel_497',['typePyMatcherModel',['../classrtabmap_1_1Parameters.html#a5c8541a98beaf561646f3c7f6d721b95',1,'rtabmap::Parameters']]], + ['typepymatcherpath_498',['typePyMatcherPath',['../classrtabmap_1_1Parameters.html#a59a39aa018841ffd740e9cea42197914',1,'rtabmap::Parameters']]], + ['typepymatcherthreshold_499',['typePyMatcherThreshold',['../classrtabmap_1_1Parameters.html#a1b5ae6ade24092ab7ac58afcf4e56784',1,'rtabmap::Parameters']]], + ['typeregforce3dof_500',['typeRegForce3DoF',['../classrtabmap_1_1Parameters.html#a74f330050b68b3f032b580d568fcbda8',1,'rtabmap::Parameters']]], + ['typeregrepeatonce_501',['typeRegRepeatOnce',['../classrtabmap_1_1Parameters.html#a96a29fa93e1b37af4a693fe51dc0eb7c',1,'rtabmap::Parameters']]], + ['typeregstrategy_502',['typeRegStrategy',['../classrtabmap_1_1Parameters.html#ac65bbfb17e091fd60279dc71c00832c8',1,'rtabmap::Parameters']]], + ['typergbdaggressiveloopthr_503',['typeRGBDAggressiveLoopThr',['../classrtabmap_1_1Parameters.html#a8d5fe24ab51accb9b16a0eedc6eee95d',1,'rtabmap::Parameters']]], + ['typergbdangularspeedupdate_504',['typeRGBDAngularSpeedUpdate',['../classrtabmap_1_1Parameters.html#ac1e1ea827894561af807fb49486e9e75',1,'rtabmap::Parameters']]], + ['typergbdangularupdate_505',['typeRGBDAngularUpdate',['../classrtabmap_1_1Parameters.html#aec44c938840f9be3f79250edebeda119',1,'rtabmap::Parameters']]], + ['typergbdcreateoccupancygrid_506',['typeRGBDCreateOccupancyGrid',['../classrtabmap_1_1Parameters.html#a35a0be2772343e731bc78465318094b2',1,'rtabmap::Parameters']]], + ['typergbdenabled_507',['typeRGBDEnabled',['../classrtabmap_1_1Parameters.html#a174420b0c91cd62219a72d6cd6806923',1,'rtabmap::Parameters']]], + ['typergbdforceodom3dof_508',['typeRGBDForceOdom3DoF',['../classrtabmap_1_1Parameters.html#a9af9d941a0a6e21e4515177fb2c50be9',1,'rtabmap::Parameters']]], + ['typergbdgoalreachedradius_509',['typeRGBDGoalReachedRadius',['../classrtabmap_1_1Parameters.html#ad488c349038427ae5bdb4c9e6b4c9bfe',1,'rtabmap::Parameters']]], + ['typergbdgoalssavedinuserdata_510',['typeRGBDGoalsSavedInUserData',['../classrtabmap_1_1Parameters.html#a1cc40697e3bcdd7c870ef123bffe95f4',1,'rtabmap::Parameters']]], + ['typergbdinvertedreg_511',['typeRGBDInvertedReg',['../classrtabmap_1_1Parameters.html#a6fab3821409953c1aeffbb6de3cdd560',1,'rtabmap::Parameters']]], + ['typergbdlinearspeedupdate_512',['typeRGBDLinearSpeedUpdate',['../classrtabmap_1_1Parameters.html#aa55b548988b0b3ad148984a6f8b26ba3',1,'rtabmap::Parameters']]], + ['typergbdlinearupdate_513',['typeRGBDLinearUpdate',['../classrtabmap_1_1Parameters.html#a66dc8bb30e1aeceb7042d526c6580a8c',1,'rtabmap::Parameters']]], + ['typergbdlocalbundleonloopclosure_514',['typeRGBDLocalBundleOnLoopClosure',['../classrtabmap_1_1Parameters.html#aab1c01d2ce455a48c9525a7e45d23725',1,'rtabmap::Parameters']]], + ['typergbdlocalimmunizationratio_515',['typeRGBDLocalImmunizationRatio',['../classrtabmap_1_1Parameters.html#a8c00fd0ac865e26c69a73253d5c05c34',1,'rtabmap::Parameters']]], + ['typergbdlocalizationpriorerror_516',['typeRGBDLocalizationPriorError',['../classrtabmap_1_1Parameters.html#ab1e16e1a98ea8f6f4ed4f732f3788671',1,'rtabmap::Parameters']]], + ['typergbdlocalizationsecondtrywithoutproximitylinks_517',['typeRGBDLocalizationSecondTryWithoutProximityLinks',['../classrtabmap_1_1Parameters.html#a6e1cdb5ccd7002ad196da4678cc20e31',1,'rtabmap::Parameters']]], + ['typergbdlocalizationsmoothing_518',['typeRGBDLocalizationSmoothing',['../classrtabmap_1_1Parameters.html#aff12043a8470bd6bf04ff12038c1b20a',1,'rtabmap::Parameters']]], + ['typergbdlocalradius_519',['typeRGBDLocalRadius',['../classrtabmap_1_1Parameters.html#a22f26e525e4293ccc6817a70c7253504',1,'rtabmap::Parameters']]], + ['typergbdloopclosureidentityguess_520',['typeRGBDLoopClosureIdentityGuess',['../classrtabmap_1_1Parameters.html#a4ed6752e394a1f30c58a17a885eb2b36',1,'rtabmap::Parameters']]], + ['typergbdloopclosurereextractfeatures_521',['typeRGBDLoopClosureReextractFeatures',['../classrtabmap_1_1Parameters.html#a04bc91d8e01453fc9c0438a3477a276d',1,'rtabmap::Parameters']]], + ['typergbdloopcovlimited_522',['typeRGBDLoopCovLimited',['../classrtabmap_1_1Parameters.html#a3ce014ca32a4ee19b789b648bca253ab',1,'rtabmap::Parameters']]], + ['typergbdmarkerdetection_523',['typeRGBDMarkerDetection',['../classrtabmap_1_1Parameters.html#a0df374326b9d9e6a332283a26aafb2ab',1,'rtabmap::Parameters']]], + ['typergbdmaxlocalretrieved_524',['typeRGBDMaxLocalRetrieved',['../classrtabmap_1_1Parameters.html#a722c95d51c7e6c5530d46e838df56c5d',1,'rtabmap::Parameters']]], + ['typergbdmaxloopclosuredistance_525',['typeRGBDMaxLoopClosureDistance',['../classrtabmap_1_1Parameters.html#a5ea740cd8c1e119a4c25d1f2acf46e88',1,'rtabmap::Parameters']]], + ['typergbdmaxodomcachesize_526',['typeRGBDMaxOdomCacheSize',['../classrtabmap_1_1Parameters.html#ac5b534f0bd67a933ef0edf82c65e6114',1,'rtabmap::Parameters']]], + ['typergbdneighborlinkrefining_527',['typeRGBDNeighborLinkRefining',['../classrtabmap_1_1Parameters.html#a830a2c344ef3d97a33240c8f52cd37df',1,'rtabmap::Parameters']]], + ['typergbdnewmapodomchangedistance_528',['typeRGBDNewMapOdomChangeDistance',['../classrtabmap_1_1Parameters.html#a0f43c2f7e280b684a86d19d5a912d684',1,'rtabmap::Parameters']]], + ['typergbdoptimizefromgraphend_529',['typeRGBDOptimizeFromGraphEnd',['../classrtabmap_1_1Parameters.html#aee4db229dcebb45d7f6b818514b8bf38',1,'rtabmap::Parameters']]], + ['typergbdoptimizemaxerror_530',['typeRGBDOptimizeMaxError',['../classrtabmap_1_1Parameters.html#a509911145eeaf65eaa8b019fb726d758',1,'rtabmap::Parameters']]], + ['typergbdoptimizemaxerrorrepairradius_531',['typeRGBDOptimizeMaxErrorRepairRadius',['../classrtabmap_1_1Parameters.html#aaeea6cc17147bb5041637fd9baaf8f1b',1,'rtabmap::Parameters']]], + ['typergbdplanangularvelocity_532',['typeRGBDPlanAngularVelocity',['../classrtabmap_1_1Parameters.html#a9df1cbc7766c4b249019008f10c8f9b9',1,'rtabmap::Parameters']]], + ['typergbdplanlinearvelocity_533',['typeRGBDPlanLinearVelocity',['../classrtabmap_1_1Parameters.html#a813ec4e9f690783cae232e95bf17653b',1,'rtabmap::Parameters']]], + ['typergbdplanstuckiterations_534',['typeRGBDPlanStuckIterations',['../classrtabmap_1_1Parameters.html#a9c2b5d2195db689267f0855d029e3ada',1,'rtabmap::Parameters']]], + ['typergbdproximityangle_535',['typeRGBDProximityAngle',['../classrtabmap_1_1Parameters.html#ade244bd8fa9faeeae7bd7cd7c89e64d3',1,'rtabmap::Parameters']]], + ['typergbdproximitybyspace_536',['typeRGBDProximityBySpace',['../classrtabmap_1_1Parameters.html#a0ba618638e3c570a9c6e1894ec19b482',1,'rtabmap::Parameters']]], + ['typergbdproximitybytime_537',['typeRGBDProximityByTime',['../classrtabmap_1_1Parameters.html#a09d397775a4663983c108215778fa448',1,'rtabmap::Parameters']]], + ['typergbdproximityglobalscanmap_538',['typeRGBDProximityGlobalScanMap',['../classrtabmap_1_1Parameters.html#aea72e57f053552d64f255b2417d43fa7',1,'rtabmap::Parameters']]], + ['typergbdproximitymaxgraphdepth_539',['typeRGBDProximityMaxGraphDepth',['../classrtabmap_1_1Parameters.html#a42ba6b5ab39fbd1579dc2ee7f74386aa',1,'rtabmap::Parameters']]], + ['typergbdproximitymaxpaths_540',['typeRGBDProximityMaxPaths',['../classrtabmap_1_1Parameters.html#a5564167482d44d43c719b668777364c7',1,'rtabmap::Parameters']]], + ['typergbdproximitymergedscancovfactor_541',['typeRGBDProximityMergedScanCovFactor',['../classrtabmap_1_1Parameters.html#a2cb39857e877736211c84016d083d37f',1,'rtabmap::Parameters']]], + ['typergbdproximityodomguess_542',['typeRGBDProximityOdomGuess',['../classrtabmap_1_1Parameters.html#a2e36fe57df0992214632e821fc40cd17',1,'rtabmap::Parameters']]], + ['typergbdproximitypathfilteringradius_543',['typeRGBDProximityPathFilteringRadius',['../classrtabmap_1_1Parameters.html#aa1813e291696e90fffecb09c4c135819',1,'rtabmap::Parameters']]], + ['typergbdproximitypathmaxneighbors_544',['typeRGBDProximityPathMaxNeighbors',['../classrtabmap_1_1Parameters.html#ab628642d14eee51afdf7fa52d361b754',1,'rtabmap::Parameters']]], + ['typergbdproximitypathrawposesused_545',['typeRGBDProximityPathRawPosesUsed',['../classrtabmap_1_1Parameters.html#aba7dd29595da46d299399ea0c35189fe',1,'rtabmap::Parameters']]], + ['typergbdscanmatchingidssavedinlinks_546',['typeRGBDScanMatchingIdsSavedInLinks',['../classrtabmap_1_1Parameters.html#ad07f636ab373c24b88a3cc0ec20a5a55',1,'rtabmap::Parameters']]], + ['typergbdstartatorigin_547',['typeRGBDStartAtOrigin',['../classrtabmap_1_1Parameters.html#a00c3b516a7e20ddcfccdb9512f531687',1,'rtabmap::Parameters']]], + ['typertabmapcomputermse_548',['typeRtabmapComputeRMSE',['../classrtabmap_1_1Parameters.html#a0f11bba22df4688163c7c8815e202dbf',1,'rtabmap::Parameters']]], + ['typertabmapcreateintermediatenodes_549',['typeRtabmapCreateIntermediateNodes',['../classrtabmap_1_1Parameters.html#a4803c63cf7b4e0721d064c66196b8388',1,'rtabmap::Parameters']]], + ['typertabmapdetectionrate_550',['typeRtabmapDetectionRate',['../classrtabmap_1_1Parameters.html#af9e94ad7631bc97c9f47852cda3e1fe0',1,'rtabmap::Parameters']]], + ['typertabmapimagebuffersize_551',['typeRtabmapImageBufferSize',['../classrtabmap_1_1Parameters.html#a74b01ea391ec5da9319f720e76afc263',1,'rtabmap::Parameters']]], + ['typertabmapimagesalreadyrectified_552',['typeRtabmapImagesAlreadyRectified',['../classrtabmap_1_1Parameters.html#a72550d6640954c831920ef090eaec0bc',1,'rtabmap::Parameters']]], + ['typertabmaploopgps_553',['typeRtabmapLoopGPS',['../classrtabmap_1_1Parameters.html#a591a2a3d69c05e9d8629b4e044257c30',1,'rtabmap::Parameters']]], + ['typertabmaploopratio_554',['typeRtabmapLoopRatio',['../classrtabmap_1_1Parameters.html#a41b48fb69d2ebdbdb29d8861af0b904e',1,'rtabmap::Parameters']]], + ['typertabmaploopthr_555',['typeRtabmapLoopThr',['../classrtabmap_1_1Parameters.html#a9534b7cd0eaddb9ea84b4714775eee9a',1,'rtabmap::Parameters']]], + ['typertabmapmaxrepublished_556',['typeRtabmapMaxRepublished',['../classrtabmap_1_1Parameters.html#a16460b246833fd819d8e3383a164cc22',1,'rtabmap::Parameters']]], + ['typertabmapmaxretrieved_557',['typeRtabmapMaxRetrieved',['../classrtabmap_1_1Parameters.html#a862e70372bf7110c1f0d48624b70d316',1,'rtabmap::Parameters']]], + ['typertabmapmemorythr_558',['typeRtabmapMemoryThr',['../classrtabmap_1_1Parameters.html#a4b0f3e8dc9fbc3cffed8a33eb8b6adcc',1,'rtabmap::Parameters']]], + ['typertabmappublishlastsignature_559',['typeRtabmapPublishLastSignature',['../classrtabmap_1_1Parameters.html#a6a3bc4925be596849aa8041505917753',1,'rtabmap::Parameters']]], + ['typertabmappublishlikelihood_560',['typeRtabmapPublishLikelihood',['../classrtabmap_1_1Parameters.html#a42269e621eae1242f9b387f639148b38',1,'rtabmap::Parameters']]], + ['typertabmappublishpdf_561',['typeRtabmapPublishPdf',['../classrtabmap_1_1Parameters.html#ada48624ba0e31f9f4cd7d94f311ab550',1,'rtabmap::Parameters']]], + ['typertabmappublishramusage_562',['typeRtabmapPublishRAMUsage',['../classrtabmap_1_1Parameters.html#aa3a0bcf2c55a80dbac6c05670a040412',1,'rtabmap::Parameters']]], + ['typertabmappublishstats_563',['typeRtabmapPublishStats',['../classrtabmap_1_1Parameters.html#ac0cc4c5d2d642ef41929f88d1ccd6e0f',1,'rtabmap::Parameters']]], + ['typertabmaprectifyonlyfeatures_564',['typeRtabmapRectifyOnlyFeatures',['../classrtabmap_1_1Parameters.html#a2a351dbfbbc05d7a2cd6af901af8807e',1,'rtabmap::Parameters']]], + ['typertabmapsavewmstate_565',['typeRtabmapSaveWMState',['../classrtabmap_1_1Parameters.html#a228491df07cf89fb19ce222fee74a1f8',1,'rtabmap::Parameters']]], + ['typertabmapstartnewmapongoodsignature_566',['typeRtabmapStartNewMapOnGoodSignature',['../classrtabmap_1_1Parameters.html#ace5f344b49a5eb0fa276aa37436ba3d6',1,'rtabmap::Parameters']]], + ['typertabmapstartnewmaponloopclosure_567',['typeRtabmapStartNewMapOnLoopClosure',['../classrtabmap_1_1Parameters.html#a982f83cda4e3c602d1ccc105dc8ee3b1',1,'rtabmap::Parameters']]], + ['typertabmapstatisticlogged_568',['typeRtabmapStatisticLogged',['../classrtabmap_1_1Parameters.html#a86a6d5a1495d23415257b2caf7c402c5',1,'rtabmap::Parameters']]], + ['typertabmapstatisticloggedheaders_569',['typeRtabmapStatisticLoggedHeaders',['../classrtabmap_1_1Parameters.html#aa523f4400e6262c74e1a4a69c48d6eeb',1,'rtabmap::Parameters']]], + ['typertabmapstatisticlogsbufferedinram_570',['typeRtabmapStatisticLogsBufferedInRAM',['../classrtabmap_1_1Parameters.html#a4f8e2035304f0300a086a6430e8a78e4',1,'rtabmap::Parameters']]], + ['typertabmaptimethr_571',['typeRtabmapTimeThr',['../classrtabmap_1_1Parameters.html#ada7ff11630e4707236015fb0df7634b4',1,'rtabmap::Parameters']]], + ['typertabmapvirtualplacelikelihoodratio_572',['typeRtabmapVirtualPlaceLikelihoodRatio',['../classrtabmap_1_1Parameters.html#ac9189a4a40b800aef4a2ca79f5bacddd',1,'rtabmap::Parameters']]], + ['typertabmapworkingdirectory_573',['typeRtabmapWorkingDirectory',['../classrtabmap_1_1Parameters.html#a9bbaf23b9eaaff14661eb6810605fcdd',1,'rtabmap::Parameters']]], + ['typesiftcontrastthreshold_574',['typeSIFTContrastThreshold',['../classrtabmap_1_1Parameters.html#aa7a98dbdd25030ba8b3c3d6d25812275',1,'rtabmap::Parameters']]], + ['typesiftedgethreshold_575',['typeSIFTEdgeThreshold',['../classrtabmap_1_1Parameters.html#a9636e4360feb3900a60cb1cd1fc37e2f',1,'rtabmap::Parameters']]], + ['typesiftgaussianthreshold_576',['typeSIFTGaussianThreshold',['../classrtabmap_1_1Parameters.html#a07a5c3bce8f4e6eed3a1b9e9f2bcbd9d',1,'rtabmap::Parameters']]], + ['typesiftgpu_577',['typeSIFTGpu',['../classrtabmap_1_1Parameters.html#a198ea2c15832ae881070e3b16bd8e13b',1,'rtabmap::Parameters']]], + ['typesiftmaxgaussianthreshold_578',['typeSIFTMaxGaussianThreshold',['../classrtabmap_1_1Parameters.html#a4db8aa7ce1e0751580d013b0d1602eb6',1,'rtabmap::Parameters']]], + ['typesiftnoctavelayers_579',['typeSIFTNOctaveLayers',['../classrtabmap_1_1Parameters.html#adfdf8e6c82c818f1cf49b3b11db4e347',1,'rtabmap::Parameters']]], + ['typesiftpreciseupscale_580',['typeSIFTPreciseUpscale',['../classrtabmap_1_1Parameters.html#a9d0234486de6b8c799f94c7fce0cd37a',1,'rtabmap::Parameters']]], + ['typesiftrootsift_581',['typeSIFTRootSIFT',['../classrtabmap_1_1Parameters.html#a58a95cc5556485f1cc682096a02c5588',1,'rtabmap::Parameters']]], + ['typesiftsigma_582',['typeSIFTSigma',['../classrtabmap_1_1Parameters.html#a13c6f2775f440c0aea8e634e26fb2448',1,'rtabmap::Parameters']]], + ['typesiftupscale_583',['typeSIFTUpscale',['../classrtabmap_1_1Parameters.html#a7db2dedbb67a45cc343ba3475b1dcbab',1,'rtabmap::Parameters']]], + ['typestereobmblocksize_584',['typeStereoBMBlockSize',['../classrtabmap_1_1Parameters.html#a48bc5c292436183fa862de176c1df5f8',1,'rtabmap::Parameters']]], + ['typestereobmdisp12maxdiff_585',['typeStereoBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#aba3fc42fdcbae919a36f6c7255ab93a3',1,'rtabmap::Parameters']]], + ['typestereobmmindisparity_586',['typeStereoBMMinDisparity',['../classrtabmap_1_1Parameters.html#ae90fb4bf0b7ffbae4520c0c89881d1b1',1,'rtabmap::Parameters']]], + ['typestereobmnumdisparities_587',['typeStereoBMNumDisparities',['../classrtabmap_1_1Parameters.html#a2cf8294df88ade9e82a5e963e7dc3210',1,'rtabmap::Parameters']]], + ['typestereobmprefiltercap_588',['typeStereoBMPreFilterCap',['../classrtabmap_1_1Parameters.html#a10f581ffcf29e5d3dcb6b30b6743b8eb',1,'rtabmap::Parameters']]], + ['typestereobmprefiltersize_589',['typeStereoBMPreFilterSize',['../classrtabmap_1_1Parameters.html#aba6a719fbcd506b8e9ab98b3cdfc8c3e',1,'rtabmap::Parameters']]], + ['typestereobmspecklerange_590',['typeStereoBMSpeckleRange',['../classrtabmap_1_1Parameters.html#ad5d00152782f38c4cd1e80486d628b77',1,'rtabmap::Parameters']]], + ['typestereobmspecklewindowsize_591',['typeStereoBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a302ee45f964d646291a17b993597d014',1,'rtabmap::Parameters']]], + ['typestereobmtexturethreshold_592',['typeStereoBMTextureThreshold',['../classrtabmap_1_1Parameters.html#a9f78ec14109ebc332b425f8ad5044269',1,'rtabmap::Parameters']]], + ['typestereobmuniquenessratio_593',['typeStereoBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a27985f2275ebd0b5a50b173053f3b138',1,'rtabmap::Parameters']]], + ['typestereodensestrategy_594',['typeStereoDenseStrategy',['../classrtabmap_1_1Parameters.html#a2b54866595dc7af49acac908636da5df',1,'rtabmap::Parameters']]], + ['typestereoeps_595',['typeStereoEps',['../classrtabmap_1_1Parameters.html#aeaf7733b3f3724ddd4e2538241a56561',1,'rtabmap::Parameters']]], + ['typestereoerrorthreshold_596',['typeStereoErrorThreshold',['../classrtabmap_1_1Parameters.html#a95a26d753c59bf313d4021d357bdcf93',1,'rtabmap::Parameters']]], + ['typestereogpu_597',['typeStereoGpu',['../classrtabmap_1_1Parameters.html#a0292888838d2a512d75de42d6c7c184a',1,'rtabmap::Parameters']]], + ['typestereoiterations_598',['typeStereoIterations',['../classrtabmap_1_1Parameters.html#a399c381fc8caba6232b6ee29e73706ad',1,'rtabmap::Parameters']]], + ['typestereomaxdisparity_599',['typeStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a8c30835c1015e5f78ce99623259ed3ee',1,'rtabmap::Parameters']]], + ['typestereomaxlevel_600',['typeStereoMaxLevel',['../classrtabmap_1_1Parameters.html#aa80559bdb41b7a0697627ad04285243b',1,'rtabmap::Parameters']]], + ['typestereomindisparity_601',['typeStereoMinDisparity',['../classrtabmap_1_1Parameters.html#a468fef745d0a2a958fbe36122e111b05',1,'rtabmap::Parameters']]], + ['typestereomineigthreshold_602',['typeStereoMinEigThreshold',['../classrtabmap_1_1Parameters.html#a503aabffc06a0e3b3fae522980632024',1,'rtabmap::Parameters']]], + ['typestereoopticalflow_603',['typeStereoOpticalFlow',['../classrtabmap_1_1Parameters.html#ae3c1fcbb8b2d445398ed53e267c813ce',1,'rtabmap::Parameters']]], + ['typestereosgbmblocksize_604',['typeStereoSGBMBlockSize',['../classrtabmap_1_1Parameters.html#a6af2a87327bce4ac38c01502583a6255',1,'rtabmap::Parameters']]], + ['typestereosgbmdisp12maxdiff_605',['typeStereoSGBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#a9d571e4e20d4ff0bafd5102a3bf7a5f6',1,'rtabmap::Parameters']]], + ['typestereosgbmmindisparity_606',['typeStereoSGBMMinDisparity',['../classrtabmap_1_1Parameters.html#a88740b2ef2608641016accbbf9a28159',1,'rtabmap::Parameters']]], + ['typestereosgbmmode_607',['typeStereoSGBMMode',['../classrtabmap_1_1Parameters.html#ac542ea37dd0d7f5b148dedd864503999',1,'rtabmap::Parameters']]], + ['typestereosgbmnumdisparities_608',['typeStereoSGBMNumDisparities',['../classrtabmap_1_1Parameters.html#a5164dbdc9bbb69eae2b20a357930b762',1,'rtabmap::Parameters']]], + ['typestereosgbmp1_609',['typeStereoSGBMP1',['../classrtabmap_1_1Parameters.html#a80eed0b14092dcf3b93ef978bfb050f4',1,'rtabmap::Parameters']]], + ['typestereosgbmp2_610',['typeStereoSGBMP2',['../classrtabmap_1_1Parameters.html#aea5ba05b7433995e199fe487098e78f2',1,'rtabmap::Parameters']]], + ['typestereosgbmprefiltercap_611',['typeStereoSGBMPreFilterCap',['../classrtabmap_1_1Parameters.html#ae673e7f1692020ca91feac58e82e0545',1,'rtabmap::Parameters']]], + ['typestereosgbmspecklerange_612',['typeStereoSGBMSpeckleRange',['../classrtabmap_1_1Parameters.html#a7fa907e0b73a2056ac4f1c29e5c21b2f',1,'rtabmap::Parameters']]], + ['typestereosgbmspecklewindowsize_613',['typeStereoSGBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a3254410281c8568e9fd3909c81055d06',1,'rtabmap::Parameters']]], + ['typestereosgbmuniquenessratio_614',['typeStereoSGBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a973df6e74c11676196d42eb3f7d2f0bd',1,'rtabmap::Parameters']]], + ['typestereossd_615',['typeStereoSSD',['../classrtabmap_1_1Parameters.html#a2bb5e1fe4e6553af4c2f128819731dc4',1,'rtabmap::Parameters']]], + ['typestereousemineigenvals_616',['typeStereoUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a1132cf5f32ab646211ce97be627e5e05',1,'rtabmap::Parameters']]], + ['typestereowinheight_617',['typeStereoWinHeight',['../classrtabmap_1_1Parameters.html#a109dfe2ec4ce4f6fd9e5e604132f9384',1,'rtabmap::Parameters']]], + ['typestereowinwidth_618',['typeStereoWinWidth',['../classrtabmap_1_1Parameters.html#a14dff1c389952c00b46f5eb3db7fbd10',1,'rtabmap::Parameters']]], + ['typesuperpointcuda_619',['typeSuperPointCuda',['../classrtabmap_1_1Parameters.html#adee8f6cf02eb2847634cc80731b19bd4',1,'rtabmap::Parameters']]], + ['typesuperpointmodelpath_620',['typeSuperPointModelPath',['../classrtabmap_1_1Parameters.html#a62cc5be943135dba6be488e90e6f4f7c',1,'rtabmap::Parameters']]], + ['typesuperpointnms_621',['typeSuperPointNMS',['../classrtabmap_1_1Parameters.html#a01bf5616115fec7b0b058737a643747a',1,'rtabmap::Parameters']]], + ['typesuperpointnmsradius_622',['typeSuperPointNMSRadius',['../classrtabmap_1_1Parameters.html#aea7a193bc8442a9201baa156687c628c',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratcuda_623',['typeSuperPointRpautratCuda',['../classrtabmap_1_1Parameters.html#af605a840b6d28e32d9d11c68397b4ea5',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratmodelpath_624',['typeSuperPointRpautratModelPath',['../classrtabmap_1_1Parameters.html#ab3994d044cca0dd7c14a3aa24828fc02',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratnms_625',['typeSuperPointRpautratNMS',['../classrtabmap_1_1Parameters.html#a8ada63659a253f1041d00525925e5d73',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratnmsradius_626',['typeSuperPointRpautratNMSRadius',['../classrtabmap_1_1Parameters.html#aa87d4180ddff240390cb986d0565c2fd',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratthreshold_627',['typeSuperPointRpautratThreshold',['../classrtabmap_1_1Parameters.html#a91ce80b7e7bbbc6f23b5a2650dc1a22e',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratweightspath_628',['typeSuperPointRpautratWeightsPath',['../classrtabmap_1_1Parameters.html#aa0ef3314136920784e7145cfa929cde3',1,'rtabmap::Parameters']]], + ['typesuperpointthreshold_629',['typeSuperPointThreshold',['../classrtabmap_1_1Parameters.html#aa1343a9eab40844ef0d01fac2ba3a184',1,'rtabmap::Parameters']]], + ['typesurfextended_630',['typeSURFExtended',['../classrtabmap_1_1Parameters.html#a5e3e46065fa2c315c3ae3b82cb09f35b',1,'rtabmap::Parameters']]], + ['typesurfgpukeypointsratio_631',['typeSURFGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#a7bb24603080bfae840ebae4bff33c9f3',1,'rtabmap::Parameters']]], + ['typesurfgpuversion_632',['typeSURFGpuVersion',['../classrtabmap_1_1Parameters.html#a4b1f389822634478dcc845abec572f35',1,'rtabmap::Parameters']]], + ['typesurfhessianthreshold_633',['typeSURFHessianThreshold',['../classrtabmap_1_1Parameters.html#a7c585786b350c728906049f2c5f7c6ca',1,'rtabmap::Parameters']]], + ['typesurfoctavelayers_634',['typeSURFOctaveLayers',['../classrtabmap_1_1Parameters.html#ad9fdaa794833059d1faf0fa69912df15',1,'rtabmap::Parameters']]], + ['typesurfoctaves_635',['typeSURFOctaves',['../classrtabmap_1_1Parameters.html#a565feb999eee25079507ad89386e264e',1,'rtabmap::Parameters']]], + ['typesurfupright_636',['typeSURFUpright',['../classrtabmap_1_1Parameters.html#a9783a526bedffde71c4e1c370f727466',1,'rtabmap::Parameters']]], + ['typevhepenabled_637',['typeVhEpEnabled',['../classrtabmap_1_1Parameters.html#a9563b53396f4c91ebade46e661685151',1,'rtabmap::Parameters']]], + ['typevhepmatchcountmin_638',['typeVhEpMatchCountMin',['../classrtabmap_1_1Parameters.html#a5ef8a0019e9a20106c0f40df0e675e74',1,'rtabmap::Parameters']]], + ['typevhepransacparam1_639',['typeVhEpRansacParam1',['../classrtabmap_1_1Parameters.html#a0aeb5e0de32338d8486d77e90a14b84c',1,'rtabmap::Parameters']]], + ['typevhepransacparam2_640',['typeVhEpRansacParam2',['../classrtabmap_1_1Parameters.html#add6bdcc4a9160da114da3e20e7243243',1,'rtabmap::Parameters']]], + ['typevisbundleadjustment_641',['typeVisBundleAdjustment',['../classrtabmap_1_1Parameters.html#a47fa393c25c4e714c69c45e513142f41',1,'rtabmap::Parameters']]], + ['typeviscorfloweps_642',['typeVisCorFlowEps',['../classrtabmap_1_1Parameters.html#a596a58ef9dd6acb1ccb88cc0338ab604',1,'rtabmap::Parameters']]], + ['typeviscorflowerrorthreshold_643',['typeVisCorFlowErrorThreshold',['../classrtabmap_1_1Parameters.html#a76d8900b0ab4606c26e99dc88d56457a',1,'rtabmap::Parameters']]], + ['typeviscorflowgpu_644',['typeVisCorFlowGpu',['../classrtabmap_1_1Parameters.html#a0116c54852452f561f7c5060cfc0e0ae',1,'rtabmap::Parameters']]], + ['typeviscorflowiterations_645',['typeVisCorFlowIterations',['../classrtabmap_1_1Parameters.html#a2d29bd6a8fcc526c2c6592b143d85137',1,'rtabmap::Parameters']]], + ['typeviscorflowmaxlevel_646',['typeVisCorFlowMaxLevel',['../classrtabmap_1_1Parameters.html#a40bfd2894ef640bda4792dee318c9ae2',1,'rtabmap::Parameters']]], + ['typeviscorflowmineigthreshold_647',['typeVisCorFlowMinEigThreshold',['../classrtabmap_1_1Parameters.html#a311fee8964d0c9a359e50427d46cc35b',1,'rtabmap::Parameters']]], + ['typeviscorflowusemineigenvals_648',['typeVisCorFlowUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a49472980c07dc829da826548b6d54424',1,'rtabmap::Parameters']]], + ['typeviscorflowwinsize_649',['typeVisCorFlowWinSize',['../classrtabmap_1_1Parameters.html#a38ba60f85961b66beeb2b1321e02ff2a',1,'rtabmap::Parameters']]], + ['typeviscorguessmatchtoprojection_650',['typeVisCorGuessMatchToProjection',['../classrtabmap_1_1Parameters.html#a758d070a20c7758c8fa6f27c79923ab9',1,'rtabmap::Parameters']]], + ['typeviscorguesswinsize_651',['typeVisCorGuessWinSize',['../classrtabmap_1_1Parameters.html#a9eb30a50919660f2ec5b760b97488c1a',1,'rtabmap::Parameters']]], + ['typeviscornndr_652',['typeVisCorNNDR',['../classrtabmap_1_1Parameters.html#ac3915d3b373e2af95502c1fa5a679c28',1,'rtabmap::Parameters']]], + ['typeviscornntype_653',['typeVisCorNNType',['../classrtabmap_1_1Parameters.html#a2163ffa2863aba050a6b7558f6418fd6',1,'rtabmap::Parameters']]], + ['typeviscortype_654',['typeVisCorType',['../classrtabmap_1_1Parameters.html#a32e8334e07d7959d8d14ef93954d4e91',1,'rtabmap::Parameters']]], + ['typevisdepthasmask_655',['typeVisDepthAsMask',['../classrtabmap_1_1Parameters.html#a863653c7e572c6b22e38b68d29651295',1,'rtabmap::Parameters']]], + ['typevisdepthmaskfloorthr_656',['typeVisDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a0bf299687815004eb6e664fb69233c2c',1,'rtabmap::Parameters']]], + ['typevisepipolargeometryvar_657',['typeVisEpipolarGeometryVar',['../classrtabmap_1_1Parameters.html#ab2e425074920b63eff72ab32147c4704',1,'rtabmap::Parameters']]], + ['typevisestimationtype_658',['typeVisEstimationType',['../classrtabmap_1_1Parameters.html#a98e1bdd263de6f9a9f6dd475c35f74f4',1,'rtabmap::Parameters']]], + ['typevisfeaturetype_659',['typeVisFeatureType',['../classrtabmap_1_1Parameters.html#ad7ea635d31857ef770e5671b3808d22b',1,'rtabmap::Parameters']]], + ['typevisgridcols_660',['typeVisGridCols',['../classrtabmap_1_1Parameters.html#ac6799038c5b087f5827feeeb8836e5cb',1,'rtabmap::Parameters']]], + ['typevisgridrows_661',['typeVisGridRows',['../classrtabmap_1_1Parameters.html#a4295683e5c351301bd21fa1c9227bca1',1,'rtabmap::Parameters']]], + ['typevisinlierdistance_662',['typeVisInlierDistance',['../classrtabmap_1_1Parameters.html#a6d9e4406d8104edd36c8fec3be27848f',1,'rtabmap::Parameters']]], + ['typevisiterations_663',['typeVisIterations',['../classrtabmap_1_1Parameters.html#ac009b5c2473c3f91cd94581f90963b3d',1,'rtabmap::Parameters']]], + ['typevismaxdepth_664',['typeVisMaxDepth',['../classrtabmap_1_1Parameters.html#adb5de0d9decde11579af125305e5e671',1,'rtabmap::Parameters']]], + ['typevismaxfeatures_665',['typeVisMaxFeatures',['../classrtabmap_1_1Parameters.html#a269fdc0e34ef352ce466bc91dbbea967',1,'rtabmap::Parameters']]], + ['typevismeaninliersdistance_666',['typeVisMeanInliersDistance',['../classrtabmap_1_1Parameters.html#a8bba63e7d2ad79d596c6a42114ff4aef',1,'rtabmap::Parameters']]], + ['typevismindepth_667',['typeVisMinDepth',['../classrtabmap_1_1Parameters.html#a3150216bf6d1f105c61f5a0e6f848da1',1,'rtabmap::Parameters']]], + ['typevismininliers_668',['typeVisMinInliers',['../classrtabmap_1_1Parameters.html#a02498f3bf42366baa525ea4ca2a7a279',1,'rtabmap::Parameters']]], + ['typevismininliersdistribution_669',['typeVisMinInliersDistribution',['../classrtabmap_1_1Parameters.html#a4fdde7f5a28c7fa97a915075fe4593c0',1,'rtabmap::Parameters']]], + ['typevispnpflags_670',['typeVisPnPFlags',['../classrtabmap_1_1Parameters.html#a5bcb76d9b5d8d1c96e09bfc0f639a11a',1,'rtabmap::Parameters']]], + ['typevispnpmaxvariance_671',['typeVisPnPMaxVariance',['../classrtabmap_1_1Parameters.html#adb98bdd2574ee7b151ef2749a01187fa',1,'rtabmap::Parameters']]], + ['typevispnprefineiterations_672',['typeVisPnPRefineIterations',['../classrtabmap_1_1Parameters.html#a7cece48fcdc6839ce795ff2fffc21e5d',1,'rtabmap::Parameters']]], + ['typevispnpreprojerror_673',['typeVisPnPReprojError',['../classrtabmap_1_1Parameters.html#a1b52d225d51a3f8bbed1f801c107cef2',1,'rtabmap::Parameters']]], + ['typevispnpsamplingpolicy_674',['typeVisPnPSamplingPolicy',['../classrtabmap_1_1Parameters.html#a48d42e977c6b1127f3a18329139d3026',1,'rtabmap::Parameters']]], + ['typevispnpsplitlinearcovcomponents_675',['typeVisPnPSplitLinearCovComponents',['../classrtabmap_1_1Parameters.html#ad238a288872094b71341dce0a75e7c8f',1,'rtabmap::Parameters']]], + ['typevispnpvariancemedianratio_676',['typeVisPnPVarianceMedianRatio',['../classrtabmap_1_1Parameters.html#a426329ebf4d3d6eebc7bf9ac4757dad2',1,'rtabmap::Parameters']]], + ['typevisrefineiterations_677',['typeVisRefineIterations',['../classrtabmap_1_1Parameters.html#a6b07555e3abea92b0a6ba4e7f1e4cc06',1,'rtabmap::Parameters']]], + ['typevisroiratios_678',['typeVisRoiRatios',['../classrtabmap_1_1Parameters.html#abb76550923a002229ac77a1bfaf7dd8d',1,'rtabmap::Parameters']]], + ['typevisssc_679',['typeVisSSC',['../classrtabmap_1_1Parameters.html#a5bbff1e088706471e130318de9e5d32e',1,'rtabmap::Parameters']]], + ['typevissubpixeps_680',['typeVisSubPixEps',['../classrtabmap_1_1Parameters.html#aeb842a5739e0b558bff66cf1c46766a8',1,'rtabmap::Parameters']]], + ['typevissubpixiterations_681',['typeVisSubPixIterations',['../classrtabmap_1_1Parameters.html#a576ebf2d0d010b7d5185933d09d32279',1,'rtabmap::Parameters']]], + ['typevissubpixwinsize_682',['typeVisSubPixWinSize',['../classrtabmap_1_1Parameters.html#a7fdf8755260c27895ae903b491975e66',1,'rtabmap::Parameters']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_16.js b/preview/pr-1773/api/latest/search/all_16.js new file mode 100644 index 00000000..ed7daec5 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_16.js @@ -0,0 +1,131 @@ +var searchData= +[ + ['uappend_0',['uAppend',['../UStl_8h.html#a472c2e123cd6eb04165b2d3461a634d3',1,'UStl.h']]], + ['uascii2hex_1',['uAscii2Hex',['../UConversion_8h.html#a6c8b49faa5c59294f350dda7152f66a4',1,'UConversion.h']]], + ['uassert_2',['UASSERT',['../ULogger_8h.html#ab3436168e27946669bbd4c76e4c4007e',1,'ULogger.h']]], + ['ubool2str_3',['uBool2Str',['../UConversion_8h.html#ad80132c4fed005af5c96b39fca453ce6',1,'UConversion.h']]], + ['ubytes2hex_4',['uBytes2Hex',['../UConversion_8h.html#a51c595b50bcb99186160a9e18df13c60',1,'UConversion.h']]], + ['ubytes2str_5',['uBytes2Str',['../UConversion_8h.html#a00c1115896f3da7c7c025ccbe651c0a3',1,'UConversion.h']]], + ['ucontains_6',['ucontains',['../UStl_8h.html#a4cad7064de642559152c873f2ca9a471',1,'uContains(const std::list< V > &list, const V &value): UStl.h'],['../UStl_8h.html#a601d3abba756f3a7a666d463080d159c',1,'uContains(const std::map< K, V > &map, const K &key): UStl.h'],['../UStl_8h.html#a078a72c8c7cf5821d67140f3d38f27e0',1,'uContains(const std::multimap< K, V > &map, const K &key): UStl.h']]], + ['uconversion_2eh_7',['UConversion.h',['../UConversion_8h.html',1,'']]], + ['udebug_8',['UDEBUG',['../ULogger_8h.html#a9104cb408bf9019db2a2c4476835db4a',1,'ULogger.h']]], + ['udestroyer_9',['udestroyer',['../classUDestroyer.html#abbc66cb8c688f1c93e87ea9aa46e58ee',1,'UDestroyer::UDestroyer()'],['../classUDestroyer.html',1,'UDestroyer< T >']]], + ['udestroyer_3c_20ueventsmanager_20_3e_10',['UDestroyer< UEventsManager >',['../classUDestroyer.html',1,'']]], + ['udestroyer_3c_20ulogger_20_3e_11',['UDestroyer< ULogger >',['../classUDestroyer.html',1,'']]], + ['udirectory_12',['udirectory',['../classUDirectory.html',1,'UDirectory'],['../classUDirectory.html#ac2063a33161b07a0c9e841cc1ee5fcaf',1,'UDirectory::UDirectory()']]], + ['udirectory_20ufile_13',['UDirectory, UFile',['../group__UtiLite.html#filedir',1,'']]], + ['uerror_14',['UERROR',['../ULogger_8h.html#a1249ddbc4c9cc43be53048c08dda129b',1,'ULogger.h']]], + ['uevent_15',['uevent',['../classUEvent.html',1,'UEvent'],['../classUEvent.html#a662b610c2e9ebaae5e91ed5ea1dcef34',1,'UEvent::UEvent()'],['../group__UtiLite.html#eventsmanager',1,'UEventsManager, UEventsHandler, UEvent']]], + ['ueventdispatcher_16',['UEventDispatcher',['../classUEventDispatcher.html',1,'']]], + ['ueventshandler_17',['ueventshandler',['../classUEventsHandler.html',1,'UEventsHandler'],['../classUEventsHandler.html#abfe2ba3d1fb92e59aff1978cbc21d134',1,'UEventsHandler::UEventsHandler()']]], + ['ueventshandler_20uevent_18',['UEventsManager, UEventsHandler, UEvent',['../group__UtiLite.html#eventsmanager',1,'']]], + ['ueventsmanager_19',['ueventsmanager',['../classUEventsManager.html',1,'UEventsManager'],['../classUEventsHandler.html#a977152b27d4c918d79a2db23ed85bfa6',1,'UEventsHandler::UEventsManager']]], + ['ueventsmanager_20ueventshandler_20uevent_20',['UEventsManager, UEventsHandler, UEvent',['../group__UtiLite.html#eventsmanager',1,'']]], + ['ueventssender_21',['UEventsSender',['../classUEventsSender.html',1,'']]], + ['uexception_22',['UException',['../classUException.html',1,'']]], + ['ufatal_23',['UFATAL',['../ULogger_8h.html#aabc10368a622911d56a4dd5a4b461385',1,'ULogger.h']]], + ['ufile_24',['ufile',['../group__UtiLite.html#filedir',1,'UDirectory, UFile'],['../classUFile.html',1,'UFile'],['../classUFile.html#a19572c749b383b5fc15aca3615cdc682',1,'UFile::UFile()']]], + ['uformat_25',['uFormat',['../UConversion_8h.html#a59ad5e2b3368d3dd19d73a24159388ce',1,'UConversion.h']]], + ['uformatv_26',['uFormatv',['../UConversion_8h.html#a9b62bc055b0d262a21af6b9e00b6db5f',1,'UConversion.h']]], + ['uhamming_27',['uHamming',['../UMath_8h.html#add815f68a7ad0f18c667311826a85a52',1,'UMath.h']]], + ['uhex2ascii_28',['uHex2Ascii',['../UConversion_8h.html#a03dfb0596b84e5673061561a1388b4ee',1,'UConversion.h']]], + ['uhex2bytes_29',['uhex2bytes',['../UConversion_8h.html#aafb2c6939780df0241eb35ab4fc8b91b',1,'uHex2Bytes(const std::string &hex): UConversion.h'],['../UConversion_8h.html#ab4e6aa72e322c619e4bbaf5b98dba9d3',1,'uHex2Bytes(const char *hex, int hexLen): UConversion.h']]], + ['uhex2str_30',['uHex2Str',['../UConversion_8h.html#a6d66453336bccd040539ac9905a9c409',1,'UConversion.h']]], + ['uindexof_31',['uIndexOf',['../UStl_8h.html#ad3918a32500de71ba8bb7aab99dccf46',1,'UStl.h']]], + ['uinfo_32',['UINFO',['../ULogger_8h.html#a5b63c9a1441181723754c0c6084231a8',1,'ULogger.h']]], + ['uinsert_33',['uinsert',['../UStl_8h.html#ac9c9d1520c7facb601ae56cab3762b41',1,'uInsert(std::map< K, V > &map, const std::pair< K, V > &pair): UStl.h'],['../UStl_8h.html#af516369e4f6b3977e543dfadbc50dc31',1,'uInsert(std::map< K, V > &map, const std::map< K, V > &items): UStl.h']]], + ['uisdigit_34',['uIsDigit',['../UStl_8h.html#ad24f845084c84b60614bb789e0d1966a',1,'UStl.h']]], + ['uisfinite_35',['uIsFinite',['../UMath_8h.html#abc9c1a676bf1b33a7d2bc0452a04fed3',1,'UMath.h']]], + ['uisinteger_36',['uIsInteger',['../UStl_8h.html#afa021f46be20f6e6c2e5210eced0ae0e',1,'UStl.h']]], + ['uisnan_37',['uIsNan',['../UMath_8h.html#a0ce262f6e3a80f7efafc73052600d309',1,'UMath.h']]], + ['uisnumber_38',['uIsNumber',['../UStl_8h.html#a5ed24437c4b893ed09886ea64ea33ba0',1,'UStl.h']]], + ['uiteratorat_39',['uiteratorat',['../UStl_8h.html#aa8bd447989a2ac6dbd4537cabdb9b8a2',1,'uIteratorAt(std::list< V > &list, const unsigned int &pos): UStl.h'],['../UStl_8h.html#aca319f475b50c21cd5a1ad7e13b45d68',1,'uIteratorAt(const std::vector< V > &v, const unsigned int &pos): UStl.h'],['../UStl_8h.html#aee9c8ca5f61ce7b0d778a092e4dd7d16',1,'uIteratorAt(std::vector< V > &v, const unsigned int &pos): UStl.h'],['../UStl_8h.html#a06a98a13ef2041e0553e6c8a61c81b9e',1,'uIteratorAt(const std::set< V > &set, const unsigned int &pos): UStl.h'],['../UStl_8h.html#a14d41e1a496b95a083f98d1b6c3d829b',1,'uIteratorAt(std::set< V > &set, const unsigned int &pos): UStl.h'],['../UStl_8h.html#a89bf42f074b0882296f02e7b7e7f03ce',1,'uIteratorAt(const std::list< V > &list, const unsigned int &pos): UStl.h']]], + ['ujoin_40',['uJoin',['../UStl_8h.html#a2a1ab992e6cc8d3057000847eea5b2e0',1,'UStl.h']]], + ['ukeys_41',['ukeys',['../UStl_8h.html#a1f58dc31a71daf05032ea06518098021',1,'uKeys(const std::map< K, V > &m): UStl.h'],['../UStl_8h.html#aa67c880cc8f27c9270c7bd4bdce62ca7',1,'uKeys(const std::multimap< K, V > &mm): UStl.h']]], + ['ukeyslist_42',['ukeyslist',['../UStl_8h.html#a07de105144c60cbf3d96725c2587ab61',1,'uKeysList(const std::map< K, V > &m): UStl.h'],['../UStl_8h.html#ae6db6e3e229492a7d62f310705eda986',1,'uKeysList(const std::multimap< K, V > &mm): UStl.h']]], + ['ukeysset_43',['uKeysSet',['../UStl_8h.html#adc7941aec77b49687c0cb79be23eb539',1,'UStl.h']]], + ['ulisttovector_44',['uListToVector',['../UStl_8h.html#a85cf086e57dd289775cf2fd7c82a6ffe',1,'UStl.h']]], + ['ulocalmaxima_45',['ulocalmaxima',['../UMath_8h.html#a2feb416e779b88c4a6a849d609222c99',1,'uLocalMaxima(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#a321ec84227fff8bf26aa85b0d3be5bb7',1,'uLocalMaxima(const std::vector< T > &v): UMath.h']]], + ['ulogevent_46',['ulogevent',['../classULogEvent.html',1,'ULogEvent'],['../classULogEvent.html#aa403fb381a5bfd2986f08c10f0b1b24e',1,'ULogEvent::ULogEvent()']]], + ['ulogger_47',['ulogger',['../classULogger.html',1,'ULogger'],['../group__UtiLite.html#logger',1,'ULogger']]], + ['ulogger_2eh_48',['ULogger.h',['../ULogger_8h.html',1,'']]], + ['umath_2eh_49',['UMath.h',['../UMath_8h.html',1,'']]], + ['umax_50',['umax',['../UMath_8h.html#a1362990d0ce7f09ef735292cc480fa23',1,'uMax(const T *v, unsigned int size, unsigned int &index): UMath.h'],['../UMath_8h.html#a0aef304a0891fafcef581dcfbf3ac792',1,'uMax(const std::vector< T > &v): UMath.h'],['../UMath_8h.html#a387b43468da220548d025010be075476',1,'uMax(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#a429cc62f1ca3c7a00e0062301ae60bcc',1,'uMax(const std::vector< T > &v, unsigned int &index): UMath.h']]], + ['umax3_51',['uMax3',['../UMath_8h.html#a601a7e18acb1512a60cd8ef248271c85',1,'UMath.h']]], + ['umean_52',['umean',['../UMath_8h.html#a7376638ab6047306c66a357153a47196',1,'uMean(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#aa4e1e6cf3df49d68d95bbe9981d1600e',1,'uMean(const std::list< T > &list): UMath.h'],['../UMath_8h.html#a8c8cd8ce7b3d8f32847bb57e9f73a625',1,'uMean(const std::vector< T > &v): UMath.h']]], + ['umeansquarederror_53',['umeansquarederror',['../UMath_8h.html#a319bcffddfeab66d5cbb729fa56dd361',1,'uMeanSquaredError(const std::vector< T > &x, const std::vector< T > &y): UMath.h'],['../UMath_8h.html#a28770817787def2a9165ed070fa17a54',1,'uMeanSquaredError(const T *x, unsigned int sizeX, const T *y, unsigned int sizeY): UMath.h']]], + ['umin_54',['umin',['../UMath_8h.html#aeb0652d64e72d115d751f8186ac9016e',1,'uMin(const std::vector< T > &v): UMath.h'],['../UMath_8h.html#aa37a66d04825a8834648dbe931bd57e6',1,'uMin(const T *v, unsigned int size, unsigned int &index): UMath.h'],['../UMath_8h.html#a99bd3bc365630c1760432cf810ea5831',1,'uMin(const std::vector< T > &v, unsigned int &index): UMath.h'],['../UMath_8h.html#a68e11ea992520b98d4e688f8853b5dc4',1,'uMin(const T *v, unsigned int size): UMath.h']]], + ['umin3_55',['uMin3',['../UMath_8h.html#ad653f26bbf08ce113b5a69a49bb4e41d',1,'UMath.h']]], + ['uminmax_56',['uminmax',['../UMath_8h.html#af9bfdafb6da16f9c6f4691a6d951538b',1,'uMinMax(const T *v, unsigned int size, T &min, T &max, unsigned int &indexMin, unsigned int &indexMax): UMath.h'],['../UMath_8h.html#a23b93249fbe3eebc9d95104f4f8cafff',1,'uMinMax(const std::vector< T > &v, T &min, T &max, unsigned int &indexMin, unsigned int &indexMax): UMath.h'],['../UMath_8h.html#a9cc051a73d402e69919d8fcea51c3098',1,'uMinMax(const T *v, unsigned int size, T &min, T &max): UMath.h'],['../UMath_8h.html#af5f7ebda9d440043cd3c57037e81318b',1,'uMinMax(const std::vector< T > &v, T &min, T &max): UMath.h']]], + ['umultimaptomap_57',['uMultimapToMap',['../UStl_8h.html#af9a778651477107bcba607087c3e02ea',1,'UStl.h']]], + ['umultimaptomapunique_58',['uMultimapToMapUnique',['../UStl_8h.html#ac65e613c42858a01f5d4f29446f53cd6',1,'UStl.h']]], + ['umutex_59',['umutex',['../classUMutex.html',1,'UMutex'],['../classUMutex.html#a292198fffdbd7d0d5a550946f156f70e',1,'UMutex::UMutex()']]], + ['umutex_20usemaphore_60',['UThread, UMutex, USemaphore',['../group__UtiLite.html#thread',1,'']]], + ['uncompressdata_61',['uncompressdata',['../namespacertabmap.html#a5b02b6a5cd3c620aff7e76c05f78b20f',1,'rtabmap::uncompressData()'],['../classrtabmap_1_1SensorData.html#aa356c9d5e9e7ea55ccdbe99c215bcb52',1,'rtabmap::SensorData::uncompressData()'],['../classrtabmap_1_1SensorData.html#a8c3364f43f7c0a57261720408a088158',1,'rtabmap::SensorData::uncompressData(cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0)'],['../namespacertabmap.html#a696fffaafe542bfb49fc9ab0da2c66b9',1,'rtabmap::uncompressData(const cv::Mat &bytes)'],['../namespacertabmap.html#aa15a9e946d6571254fc3c808b624e6cd',1,'rtabmap::uncompressData(const std::vector< unsigned char > &bytes)']]], + ['uncompressdataconst_62',['uncompressDataConst',['../classrtabmap_1_1SensorData.html#a2e0be45871fa8dbce1c3cf727953358f',1,'rtabmap::SensorData']]], + ['uncompressimage_63',['uncompressimage',['../namespacertabmap.html#a462f181a147c9f5315f70b0cd89210e5',1,'rtabmap::uncompressImage(const cv::Mat &bytes)'],['../namespacertabmap.html#af56ea8b86f7a873959588d35a7ede187',1,'rtabmap::uncompressImage(const std::vector< unsigned char > &bytes)']]], + ['uncompressstring_64',['uncompressString',['../namespacertabmap.html#a811701fc1452e49e82fcab8d4476832f',1,'rtabmap']]], + ['uncompressuserdata_65',['uncompressUserData',['../classrtabmap_1_1Link.html#adb075101cafb535fc4a9b74f7afae521',1,'rtabmap::Link']]], + ['uncompressuserdataconst_66',['uncompressUserDataConst',['../classrtabmap_1_1Link.html#ac425a90800494da64512011315c47e62',1,'rtabmap::Link']]], + ['uniformsampling_67',['uniformsampling',['../namespacertabmap_1_1util3d.html#a8dfd7d808fa94e809b4a1a1fba6b8226',1,'rtabmap::util3d::uniformSampling(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)'],['../namespacertabmap_1_1util3d.html#a858e0a5338f348eb1033d6a85c3db926',1,'rtabmap::util3d::uniformSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)'],['../namespacertabmap_1_1util3d.html#af526f72e838659de76ac45447d3860ae',1,'rtabmap::util3d::uniformSampling(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)']]], + ['unlock_68',['unlock',['../classUMutex.html#a4c5b4e04ad4e2f0eda2e8d4325d45d38',1,'UMutex']]], + ['unorm_69',['unorm',['../UMath_8h.html#ab5e611c29307d8733cfaebc68bed1ac6',1,'uNorm(const std::vector< T > &v): UMath.h'],['../UMath_8h.html#a6b6fbb2032ce05eeacdb1b0bc87627e8',1,'uNorm(const T &x1, const T &x2, const T &x3): UMath.h'],['../UMath_8h.html#abe92bd5cba3860759c40c322ab1ac995',1,'uNorm(const T &x1, const T &x2): UMath.h']]], + ['unormalize_70',['uNormalize',['../UMath_8h.html#a2f843f6f6bf0bd59b527aaa8c4731612',1,'UMath.h']]], + ['unormsquared_71',['unormsquared',['../UMath_8h.html#aeed14782b35224f70db6b5435dce06a1',1,'uNormSquared(const std::vector< T > &v): UMath.h'],['../UMath_8h.html#aea5fd5d0bd9afdb11c765584c89a5f8f',1,'uNormSquared(const T &x1, const T &x2): UMath.h'],['../UMath_8h.html#a0a3b6871504f5a745f8769492f45871c',1,'uNormSquared(const T &x1, const T &x2, const T &x3): UMath.h']]], + ['unumber2str_72',['unumber2str',['../UConversion_8h.html#aa2bbc65658f335e92631e9f1d091a698',1,'uNumber2Str(unsigned int number): UConversion.h'],['../UConversion_8h.html#ab3a674443d1d17328488398497380eb0',1,'uNumber2Str(int number): UConversion.h'],['../UConversion_8h.html#a7d269614a35d90f2ee7eb1204bca0856',1,'uNumber2Str(float number, int precision=6, bool fixed=false): UConversion.h'],['../UConversion_8h.html#a863753727325d89d62a941b1e28ec080',1,'uNumber2Str(double number, int precision=6, bool fixed=false): UConversion.h']]], + ['uobjdeletedevent_73',['UObjDeletedEvent',['../classUObjDeletedEvent.html',1,'']]], + ['uobjdeletionthread_74',['uobjdeletionthread',['../classUObjDeletionThread.html',1,'UObjDeletionThread< T >'],['../classUObjDeletionThread.html#a860499bd0467d2cc0fb467b124d085e0',1,'UObjDeletionThread::UObjDeletionThread()']]], + ['update_75',['update',['../classUDirectory.html#ab738cea12207aea77c7a0581c57d6008',1,'UDirectory::update()'],['../classrtabmap_1_1Memory.html#aae43fd080c6bc9773fa58f1c36e6684f',1,'rtabmap::Memory::update()'],['../classrtabmap_1_1VWDictionary.html#a844ae27eb6d1f0674c8f7777451812c5',1,'rtabmap::VWDictionary::update()'],['../classrtabmap_1_1Memory.html#a3c029b2788f3b599480d5150120a6bee',1,'rtabmap::Memory::update()'],['../classrtabmap_1_1IMUFilter.html#ab02c81af3543cfb1d53b4a0b064a0363',1,'rtabmap::IMUFilter::update()'],['../classrtabmap_1_1GlobalMap.html#aa21a1e3baba94ded5663a8057a3b8cd6',1,'rtabmap::GlobalMap::update()']]], + ['updateage_76',['updateAge',['../classrtabmap_1_1Memory.html#a76fd8c93220c16fac5843ccc2c0bec3c',1,'rtabmap::Memory']]], + ['updatecalibration_77',['updateCalibration',['../classrtabmap_1_1DBDriver.html#a6d59931a9496cf1b23568f79fc421cc1',1,'rtabmap::DBDriver']]], + ['updatedepthimage_78',['updateDepthImage',['../classrtabmap_1_1DBDriver.html#a3a02d595356e2dd0ed8b8933a6c4e811',1,'rtabmap::DBDriver']]], + ['updatelaserscan_79',['updateLaserScan',['../classrtabmap_1_1DBDriver.html#a7d167e53d447d77dd3fe35665f8a661b',1,'rtabmap::DBDriver']]], + ['updatelink_80',['updatelink',['../classrtabmap_1_1DBDriver.html#a94eb69c07a44343c008654b1401dce80',1,'rtabmap::DBDriver::updateLink()'],['../classrtabmap_1_1Memory.html#a7c7f80937a35204cb5b44faec8e99736',1,'rtabmap::Memory::updateLink()']]], + ['updateoccupancygrid_81',['updateOccupancyGrid',['../classrtabmap_1_1DBDriver.html#a2f5e8e0b367e49cfbba7c96b28306a61',1,'rtabmap::DBDriver']]], + ['uprocessinfo_82',['uprocessinfo',['../classUProcessInfo.html#a9786bfe4f14bb80ddf206904f12d8f9b',1,'UProcessInfo::UProcessInfo()'],['../group__UtiLite.html#processinfo',1,'UProcessInfo'],['../classUProcessInfo.html',1,'UProcessInfo']]], + ['uprocessinfo_2eh_83',['UProcessInfo.h',['../UProcessInfo_8h.html',1,'']]], + ['ureplacechar_84',['ureplacechar',['../UConversion_8h.html#a214297200ebabb7a349fb203103d72ef',1,'uReplaceChar(const std::string &str, char before, const std::string &after): UConversion.h'],['../UConversion_8h.html#ac17caccd78f21956b7ddb78aa0c0c438',1,'uReplaceChar(const std::string &str, char before, char after): UConversion.h']]], + ['uresourcegenerator_85',['uResourceGenerator',['../uResourceGeneratorPage.html',1,'']]], + ['uscopemutex_86',['UScopeMutex',['../classUScopeMutex.html',1,'']]], + ['use_20of_20stl_87',['Convenient use of STL',['../group__UtiLite.html#stl',1,'']]], + ['usemaphore_88',['usemaphore',['../classUSemaphore.html',1,'USemaphore'],['../classUSemaphore.html#ad991738e68e0a2baaec46ab27296cbe6',1,'USemaphore::USemaphore()'],['../group__UtiLite.html#thread',1,'UThread, UMutex, USemaphore']]], + ['userdatacompressed_89',['userDataCompressed',['../classrtabmap_1_1Link.html#abdec9d745b1b4679a87b944cd5b48213',1,'rtabmap::Link']]], + ['userdataevent_90',['UserDataEvent',['../classrtabmap_1_1UserDataEvent.html',1,'rtabmap']]], + ['userdataraw_91',['userDataRaw',['../classrtabmap_1_1Link.html#a1fce4ae495f2a4f5e0f7ac10551983ac',1,'rtabmap::Link']]], + ['usign_92',['uSign',['../UMath_8h.html#a6e100ed2031a529679a93b9b4bf818af',1,'UMath.h']]], + ['usplit_93',['uSplit',['../UStl_8h.html#ab1862437019327ce8419569e3c2ea90f',1,'UStl.h']]], + ['usplitnumchar_94',['uSplitNumChar',['../UStl_8h.html#a4045d74e1a84cde1489a754375c1d55e',1,'UStl.h']]], + ['ustl_2eh_95',['UStl.h',['../UStl_8h.html',1,'']]], + ['ustr2bool_96',['uStr2Bool',['../UConversion_8h.html#abb8205ea44ccbebab8cf064fed0c7c1b',1,'UConversion.h']]], + ['ustr2bytes_97',['uStr2Bytes',['../UConversion_8h.html#aa320ef94bde5dd6f9e6ebdb986fc5ca6',1,'UConversion.h']]], + ['ustr2double_98',['uStr2Double',['../UConversion_8h.html#a9e8508b95f98ab3da0d942ee7d6b2105',1,'UConversion.h']]], + ['ustr2float_99',['uStr2Float',['../UConversion_8h.html#aaa5c2c8be40ec84e20bc6967b6b9b46a',1,'UConversion.h']]], + ['ustr2int_100',['uStr2Int',['../UConversion_8h.html#a3cd287c149717691ee36fcd593940f68',1,'UConversion.h']]], + ['ustrcontains_101',['uStrContains',['../UStl_8h.html#ab4e2c55d7930e99514a2315a2c6b4f82',1,'UStl.h']]], + ['ustrnumcmp_102',['uStrNumCmp',['../UStl_8h.html#af48fdad882d4429e4044372589503da1',1,'UStl.h']]], + ['usum_103',['usum',['../UMath_8h.html#a86599e95ecdc91ce2d9497985d5d642b',1,'uSum(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#a81a1c24c0229e6c4dc8d8e09497ad114',1,'uSum(const std::list< T > &list): UMath.h'],['../UMath_8h.html#af15f0fa694931f0f99ba640d52539b09',1,'uSum(const std::vector< T > &v): UMath.h']]], + ['usumsquared_104',['usumsquared',['../UMath_8h.html#aeb6a6517666687e509617e6bfaf274d3',1,'uSumSquared(const T *v, unsigned int size, T subtract=T()): UMath.h'],['../UMath_8h.html#a94be0f1c509db2f294048e6d5b16a522',1,'uSumSquared(const std::vector< T > &v, T subtract=T()): UMath.h']]], + ['utake_105',['uTake',['../UStl_8h.html#a6242bd5879bd7f06b8de6498650aa3b7',1,'UStl.h']]], + ['uthread_106',['uthread',['../classUThread.html#a05a92f95e2a8900f27b09ddf907b97be',1,'UThread::UThread()'],['../classUThread.html',1,'UThread']]], + ['uthread_20umutex_20usemaphore_107',['UThread, UMutex, USemaphore',['../group__UtiLite.html#thread',1,'']]], + ['uthreadc_108',['UThreadC',['../classUThreadC.html',1,'']]], + ['uthreadc_3c_20void_20_3e_109',['UThreadC< void >',['../classUThreadC_3_01void_01_4.html',1,'']]], + ['uthreadnode_110',['UThreadNode',['../UThreadNode_8h.html#a82fc8ffe23f95d50f934eb27afd351d6',1,'UThreadNode.h']]], + ['uthreadnode_2eh_111',['UThreadNode.h',['../UThreadNode_8h.html',1,'']]], + ['utilite_112',['UtiLite',['../group__UtiLite.html',1,'']]], + ['utimer_113',['utimer',['../group__UtiLite.html#timer',1,'UTimer'],['../classUTimer.html',1,'UTimer']]], + ['utolowercase_114',['uToLowerCase',['../UConversion_8h.html#a426b88c678e06f77912c006ba02805ec',1,'UConversion.h']]], + ['utouppercase_115',['uToUpperCase',['../UConversion_8h.html#adc98c4d87bc7c13b7fc5b5504f457105',1,'UConversion.h']]], + ['uuniquekeys_116',['uUniqueKeys',['../UStl_8h.html#a62335030b4c0d80f80e7c4a21721c05e',1,'UStl.h']]], + ['uvalue_117',['uValue',['../UStl_8h.html#a155cd26667d2f88ee05dd3d819ae8182',1,'UStl.h']]], + ['uvalueat_118',['uvalueat',['../UStl_8h.html#a27a0f94be07c53df9827b082eb107337',1,'uValueAt(std::list< V > &list, const unsigned int &pos): UStl.h'],['../UStl_8h.html#af9a13d96ccaf6094128eb350d0253d22',1,'uValueAt(const std::list< V > &list, const unsigned int &pos): UStl.h']]], + ['uvalues_119',['uvalues',['../UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314',1,'uValues(const std::multimap< K, V > &mm): UStl.h'],['../UStl_8h.html#a081a7dd08a9962ee1651eb4ddb01729e',1,'uValues(const std::map< K, V > &m): UStl.h'],['../UStl_8h.html#a3514dc64eabe675042a4d1b7d8770910',1,'uValues(const std::multimap< K, V > &mm, const K &key): UStl.h']]], + ['uvalueslist_120',['uvalueslist',['../UStl_8h.html#a9419324b5c47549d954313582e69dc5c',1,'uValuesList(const std::multimap< K, V > &mm): UStl.h'],['../UStl_8h.html#ab5ea404864ed672cca3a05435786f4be',1,'uValuesList(const std::map< K, V > &m): UStl.h']]], + ['uvariance_121',['uvariance',['../UMath_8h.html#a8d443d065900ca7096d08c9431fef71f',1,'uVariance(const std::vector< T > &v, const T &m): UMath.h'],['../UMath_8h.html#add45b750bab7251ba196079289f17d7d',1,'uVariance(const T *v, unsigned int size, T meanV): UMath.h'],['../UMath_8h.html#aa6ea127b567072434a5616bcc1c1f6e3',1,'uVariance(const std::list< T > &list, const T &m): UMath.h'],['../UMath_8h.html#a0aa8de7d20731bcae07d956256e293f6',1,'uVariance(const T *v, unsigned int size): UMath.h']]], + ['uvariant_122',['uvariant',['../classUVariant.html#a66b347ecdbdcd3b9bb6675d3a5040e26',1,'UVariant::UVariant(const std::vector< unsigned short > &value)'],['../classUVariant.html#a0f29e416edccd2af78192288bb7ca884',1,'UVariant::UVariant(const std::string &value)'],['../classUVariant.html',1,'UVariant'],['../classUVariant.html#a77de7639a21b4002f6c4c8f765db9748',1,'UVariant::UVariant(const std::vector< signed char > &value)'],['../classUVariant.html#a709722d8603fdb5208f5853073c0557b',1,'UVariant::UVariant(const std::vector< unsigned char > &value)'],['../classUVariant.html#a7ecbf63121fc31f094534293a05af6f3',1,'UVariant::UVariant(const std::vector< short > &value)'],['../classUVariant.html#ad5517ddcc64a521f2bb6079d568a6029',1,'UVariant::UVariant(const std::vector< double > &value)'],['../classUVariant.html#a2054869e20d561d129fa2cfbd0dbe923',1,'UVariant::UVariant(const std::vector< int > &value)'],['../classUVariant.html#abb4dcb9be13b81f672c2012e09234be9',1,'UVariant::UVariant(const std::vector< float > &value)'],['../classUVariant.html#ad71bbca096fb06dfe1009105c6546c78',1,'UVariant::UVariant(const std::vector< unsigned int > &value)'],['../classUVariant.html#af210833caf9715d7678fb6d64dddf599',1,'UVariant::UVariant()'],['../classUVariant.html#a98f1bc68af62d433f2946cab87fc520c',1,'UVariant::UVariant(const bool &value)'],['../classUVariant.html#ae0939524a0c68004804381492aaab285',1,'UVariant::UVariant(const signed char &value)'],['../classUVariant.html#a66f79ef197d7a9fb87781073b44ed426',1,'UVariant::UVariant(const unsigned char &value)'],['../classUVariant.html#a0c4434b8a0e3d8d5a13967196ef75c9d',1,'UVariant::UVariant(const char *value)'],['../classUVariant.html#a17a521fb10da7564bf5104c717ea977c',1,'UVariant::UVariant(const double &value)'],['../classUVariant.html#aae15560cd7d827b4df20ca93e73e488d',1,'UVariant::UVariant(const float &value)'],['../classUVariant.html#a30476f11f550fdb86f97f30f9a34d042',1,'UVariant::UVariant(const unsigned int &value)'],['../classUVariant.html#a896511df83bbcc6d2892902b83495bae',1,'UVariant::UVariant(const int &value)'],['../classUVariant.html#a3f893e4ec4714cb594e88eb6ee421a0b',1,'UVariant::UVariant(const unsigned short &value)'],['../classUVariant.html#a5253c21485672e2e20149db1661ffc64',1,'UVariant::UVariant(const short &value)']]], + ['uvariant_2eh_123',['UVariant.h',['../UVariant_8h.html',1,'']]], + ['uvectortolist_124',['uVectorToList',['../UStl_8h.html#a5a5fb7b34b8c3adb63d641358b7a7e1b',1,'UStl.h']]], + ['uwarn_125',['UWARN',['../ULogger_8h.html#ab5a739ad9340455e46eaa570f8223d9a',1,'ULogger.h']]], + ['uxmatch_126',['uxmatch',['../UMath_8h.html#a726f4662efa078be30f5320bbb994c7a',1,'uXMatch(const std::vector< T > &vA, const std::vector< T > &vB, unsigned int index, UXMatchMethod method): UMath.h'],['../UMath_8h.html#ac616ce0471d2e35fafd59d88021ccab3',1,'uXMatch(const T *vA, const T *vB, unsigned int sizeA, unsigned int sizeB, unsigned int index, UXMatchMethod method): UMath.h'],['../UMath_8h.html#a4694c7d40749b5cb09c596d232720192',1,'uXMatch(const std::vector< T > &vA, const std::vector< T > &vB, UXMatchMethod method): UMath.h'],['../UMath_8h.html#a913829c5228fabff88e4918111c1d424',1,'uXMatch(const T *vA, const T *vB, unsigned int sizeA, unsigned int sizeB, UXMatchMethod method): UMath.h']]], + ['uxmatchmethod_127',['UXMatchMethod',['../UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cba',1,'UMath.h']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_17.js b/preview/pr-1773/api/latest/search/all_17.js new file mode 100644 index 00000000..1e155a82 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_17.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['value_0',['value',['../classrtabmap_1_1EnvSensor.html#a27b343c9be68fd326c10157102bb750f',1,'rtabmap::EnvSensor::value()'],['../classUSemaphore.html#a840fadefd8bc873c8bdf34c90d180a3b',1,'USemaphore::value()']]], + ['variance_1',['variance',['../classrtabmap_1_1RegistrationInfo.html#a95b6903a7b750f9ada14000dc37800dc',1,'rtabmap::RegistrationInfo']]], + ['variance_20and_20correspondences_20of_20two_20point_20clouds_2',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['velocity_3',['velocity',['../classrtabmap_1_1OdometryEvent.html#adbac8609d65d32f38d1e724007091398',1,'rtabmap::OdometryEvent']]], + ['verticalfov_4',['verticalFOV',['../classrtabmap_1_1CameraModel.html#af6226e43afcb69259b137bbe50099537',1,'rtabmap::CameraModel']]], + ['vhep_5',['VhEp',['../parameters.html#autotoc_md27',1,'']]], + ['vhstrategy_6',['VhStrategy',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568c',1,'rtabmap::Rtabmap']]], + ['viewpoint_7',['viewPoint',['../classrtabmap_1_1LocalGrid.html#aa8f5a6219144d584cde0fe6b565ac0bb',1,'rtabmap::LocalGrid']]], + ['vis_8',['Vis',['../parameters.html#autotoc_md47',1,'']]], + ['visualword_9',['visualword',['../classrtabmap_1_1VisualWord.html#a64ce7c97214265e24e00e3888b85f967',1,'rtabmap::VisualWord::VisualWord()'],['../classrtabmap_1_1VisualWord.html',1,'rtabmap::VisualWord']]], + ['voxel_20filtering_10',['Voxel Filtering',['../group__VoxelFiltering.html',1,'']]], + ['voxelize_11',['voxelize',['../group__VoxelFiltering.html#gab2a9294812a8c0fcaed92d0f119eaa31',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gac6809e08656312d793ce34e828e33998',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#ga751ff8adfdf8e6f824a7bef0d4630044',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#gab974887ed7faf7685d6c8c181827b2c2',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#ga8fce5075a28203045c3865b1d068c084',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#ga3ea1e68d63d45c84d2c3b6b3bcac4653',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#gaf5726b462426b56425604343e51a79c3',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#gac5158ba02fc61bfa503967ddd5ec319d',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gaebeee3702499e5f8d692ecd0bc48029b',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gabf0201c1253022d7ce8278fc44998530',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#ga94af1db82b1faffff875a9902d44285b',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)']]], + ['vwdictionary_12',['vwdictionary',['../classrtabmap_1_1VWDictionary.html#ada3980b520d8411a1ebb3ce14e2f8734',1,'rtabmap::VWDictionary::VWDictionary()'],['../classrtabmap_1_1VWDictionary.html',1,'rtabmap::VWDictionary']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_18.js b/preview/pr-1773/api/latest/search/all_18.js new file mode 100644 index 00000000..3be2d2fc --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_18.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['weights_0',['weights',['../classrtabmap_1_1Statistics.html#ab29fce77b8debf381356e27ac039fafc',1,'rtabmap::Statistics']]], + ['width_5f_1',['width_',['../classclams_1_1DiscreteDepthDistortionModel.html#a7de0c7b8a5db34270645b6454f74392c',1,'clams::DiscreteDepthDistortionModel']]], + ['winsize_2',['winSize',['../classrtabmap_1_1Stereo.html#a5474ebbc178bcc29ebaff3d9d4e22e54',1,'rtabmap::Stereo']]], + ['winssd_3',['winSSD',['../classrtabmap_1_1Stereo.html#aed372a471e6d3ea72713e239709da978',1,'rtabmap::Stereo']]], + ['with_20a_20map_4',['Working with a map',['../tools.html#autotoc_md5',1,'']]], + ['with_20normals_5',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['wmstate_6',['wmState',['../classrtabmap_1_1Statistics.html#a0b0bb69d788a142a7b51ae2e916798b6',1,'rtabmap::Statistics']]], + ['words_7',['words',['../classrtabmap_1_1OdometryInfo.html#ac40ddcfab5cd0c6b9fe34aa5b0143814',1,'rtabmap::OdometryInfo']]], + ['working_20with_20a_20map_8',['Working with a map',['../tools.html#autotoc_md5',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_19.js b/preview/pr-1773/api/latest/search/all_19.js new file mode 100644 index 00000000..c0185b90 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_19.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_0',['x',['../classrtabmap_1_1Transform.html#a5173dd4491ea0796180d1eb0f88a6762',1,'rtabmap::Transform']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_1a.js b/preview/pr-1773/api/latest/search/all_1a.js new file mode 100644 index 00000000..cd805c0e --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_1a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_0',['y',['../classrtabmap_1_1Transform.html#acbb0afe7eb39181f85c2f9734352d6a9',1,'rtabmap::Transform']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_1b.js b/preview/pr-1773/api/latest/search/all_1b.js new file mode 100644 index 00000000..5b6894d4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_1b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['z_0',['z',['../classrtabmap_1_1Transform.html#af90acc40bed06ab96468fd17585f1944',1,'rtabmap::Transform']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_1c.js b/preview/pr-1773/api/latest/search/all_1c.js new file mode 100644 index 00000000..7c8fe2df --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_1c.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['_7ecameramodel_0',['~CameraModel',['../classrtabmap_1_1CameraModel.html#af6f35e5071ef0070d3fae3ebaa33ce4c',1,'rtabmap::CameraModel']]], + ['_7esensorcapture_1',['~SensorCapture',['../classrtabmap_1_1SensorCapture.html#a0578f6540ecdf8c4b3b747d511ecb625',1,'rtabmap::SensorCapture']]], + ['_7esensorcaptureinfo_2',['~SensorCaptureInfo',['../classrtabmap_1_1SensorCaptureInfo.html#a31eca8aee2a61df0d35d91edbc54ac53',1,'rtabmap::SensorCaptureInfo']]], + ['_7esensorcapturethread_3',['~SensorCaptureThread',['../classrtabmap_1_1SensorCaptureThread.html#af8133c1b2332568c4699282f59c141c9',1,'rtabmap::SensorCaptureThread']]], + ['_7esensordata_4',['~SensorData',['../classrtabmap_1_1SensorData.html#a94f4e8970ae34d652100dce131cc9e44',1,'rtabmap::SensorData']]], + ['_7esensorevent_5',['~SensorEvent',['../classrtabmap_1_1SensorEvent.html#a2794fb8f052c08efdfd4b379e359fecb',1,'rtabmap::SensorEvent']]], + ['_7esignature_6',['~Signature',['../classrtabmap_1_1Signature.html#a67c41f31ff6fd72815190cc1bbba9569',1,'rtabmap::Signature']]], + ['_7estatistics_7',['~Statistics',['../classrtabmap_1_1Statistics.html#af7ecfdb141de651d094d28a2d035dca0',1,'rtabmap::Statistics']]], + ['_7estereo_8',['~Stereo',['../classrtabmap_1_1Stereo.html#aca70a15916baf916d6d66c93dad6b3d5',1,'rtabmap::Stereo']]], + ['_7estereobm_9',['~StereoBM',['../classrtabmap_1_1StereoBM.html#a6d5e4ac8698669323dff297c01f7ee4b',1,'rtabmap::StereoBM']]], + ['_7estereocameramodel_10',['~StereoCameraModel',['../classrtabmap_1_1StereoCameraModel.html#afaa6d8cf4c9b503cc8c8a03fb25ecdf3',1,'rtabmap::StereoCameraModel']]], + ['_7estereodense_11',['~StereoDense',['../classrtabmap_1_1StereoDense.html#a5c720eb11114c19540d30886cb0ba1e6',1,'rtabmap::StereoDense']]], + ['_7estereoopticalflow_12',['~StereoOpticalFlow',['../classrtabmap_1_1StereoOpticalFlow.html#afa38ce6868f4bf0388559f81ff917a97',1,'rtabmap::StereoOpticalFlow']]], + ['_7estereosgbm_13',['~StereoSGBM',['../classrtabmap_1_1StereoSGBM.html#a1568e99913769d8442c6013a7adc8796',1,'rtabmap::StereoSGBM']]], + ['_7eueventshandler_14',['~UEventsHandler',['../classUEventsHandler.html#a15ac2bf243e938c411fac0dff7db2f51',1,'UEventsHandler']]], + ['_7euobjdeletionthread_15',['~UObjDeletionThread',['../classUObjDeletionThread.html#a44e27bada40a7fdb67ebad9270da8192',1,'UObjDeletionThread']]], + ['_7euprocessinfo_16',['~UProcessInfo',['../classUProcessInfo.html#a4b4a0da3c612692790191b914e37b1a4',1,'UProcessInfo']]], + ['_7euthread_17',['~UThread',['../classUThread.html#a437580d224111e60cbe2626f0e4cb12e',1,'UThread']]], + ['_7euvariant_18',['~UVariant',['../classUVariant.html#aeeaef6c17460567dec089740e276f50a',1,'UVariant']]], + ['_7evisualword_19',['~VisualWord',['../classrtabmap_1_1VisualWord.html#adc2dc719d2e6ed06ff92a2370d9955b2',1,'rtabmap::VisualWord']]], + ['_7evwdictionary_20',['~VWDictionary',['../classrtabmap_1_1VWDictionary.html#af7f669f103368e30e31a028efbcac89d',1,'rtabmap::VWDictionary']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_2.js b/preview/pr-1773/api/latest/search/all_2.js new file mode 100644 index 00000000..387717ab --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['_5fdbdriver_0',['_dbDriver',['../classrtabmap_1_1Memory.html#a6110b0ea8a7b35bae46083f2ce66e148',1,'rtabmap::Memory']]], + ['_5fppdb_1',['_ppDb',['../classrtabmap_1_1DBDriverSqlite3.html#a073748d5c4dac2e01966147c022ea943',1,'rtabmap::DBDriverSqlite3']]], + ['_5ftotalactivereferences_2',['_totalActiveReferences',['../classrtabmap_1_1VWDictionary.html#a5222c6a21307f0e4b9346c87db166b44',1,'rtabmap::VWDictionary']]], + ['_5fversion_3',['_version',['../classrtabmap_1_1DBDriverSqlite3.html#a0aa18124e40d2ac53e0e1b450d7399b8',1,'rtabmap::DBDriverSqlite3']]], + ['_5fvisualwords_4',['_visualWords',['../classrtabmap_1_1VWDictionary.html#adcb4739e09e27b20125880e9d3026383',1,'rtabmap::VWDictionary']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_3.js b/preview/pr-1773/api/latest/search/all_3.js new file mode 100644 index 00000000..9633f1b5 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_3.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['a_20map_0',['Working with a map',['../tools.html#autotoc_md5',1,'']]], + ['a_20point_20cloud_1',['a point cloud',['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['a_20point_20cloud_20with_20normals_2',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['a_20single_20point_3',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['accumulate_4',['accumulate',['../classclams_1_1DiscreteDepthDistortionModel.html#ab9b7555fbf710706d7b94dfcb9ed6399',1,'clams::DiscreteDepthDistortionModel']]], + ['acquire_5',['acquire',['../classUSemaphore.html#a1128f81a47324e6de3946a7719c24223',1,'USemaphore']]], + ['acquiretry_6',['acquireTry',['../classUSemaphore.html#a51a925279a04a54aea3583c4399a744b',1,'USemaphore']]], + ['add_7',['add',['../classrtabmap_1_1LocalGridCache.html#a765142f021aa580bcfdd84545ebc044f',1,'rtabmap::LocalGridCache::add(int nodeId, const LocalGrid &localGrid)'],['../classrtabmap_1_1LocalGridCache.html#a2e83e9c0c11051b5da84bf04b603a99b',1,'rtabmap::LocalGridCache::add(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))']]], + ['addassemblednode_8',['addAssembledNode',['../classrtabmap_1_1GlobalMap.html#a0b95370df2582da48ff0e1e405cccda2',1,'rtabmap::GlobalMap']]], + ['addednodes_9',['addedNodes',['../classrtabmap_1_1GlobalMap.html#a98c2c10030cfa64c1b72d17f046243f4',1,'rtabmap::GlobalMap']]], + ['addenvsensor_10',['addEnvSensor',['../classrtabmap_1_1SensorData.html#a1006dbcfb640b599f0587af3b0ba46ae',1,'rtabmap::SensorData']]], + ['addexample_11',['addExample',['../classclams_1_1DiscreteFrustum.html#aef183fc7d90c0a6ba3245bccf9fbb616',1,'clams::DiscreteFrustum']]], + ['addglobaldescriptor_12',['addGlobalDescriptor',['../classrtabmap_1_1SensorData.html#acc0ac26f01ad9f5185f80f8f09da252e',1,'rtabmap::SensorData']]], + ['addhandler_13',['addHandler',['../classUEventsManager.html#a3bb033062e4a0eb59efdf5f84d170388',1,'UEventsManager']]], + ['addlandmark_14',['addLandmark',['../classrtabmap_1_1Signature.html#a71621ac6411f778342c23fbc4e695a12',1,'rtabmap::Signature']]], + ['addlink_15',['addlink',['../classrtabmap_1_1DBDriver.html#acfb5fed58aad744050c392a8d346926b',1,'rtabmap::DBDriver::addLink()'],['../classrtabmap_1_1Memory.html#a4140effa4830fbe679a51e975f0021a1',1,'rtabmap::Memory::addLink()'],['../classrtabmap_1_1Rtabmap.html#aef03c0d6ee1ef5646ba11be5dbe9faa5',1,'rtabmap::Rtabmap::addLink()'],['../classrtabmap_1_1Signature.html#a3bb2e6a8de8e615e51385c4113630f93',1,'rtabmap::Signature::addLink(const Link &link)']]], + ['addlinks_16',['addlinks',['../classrtabmap_1_1Signature.html#af92465ad9cbfab36ffbc6d372781170c',1,'rtabmap::Signature::addLinks(const std::map< int, Link > &links)'],['../classrtabmap_1_1Signature.html#aa8513c4ecb77c38b95610834c66e893e',1,'rtabmap::Signature::addLinks(const std::list< Link > &links)']]], + ['addnewwords_17',['addNewWords',['../classrtabmap_1_1VWDictionary.html#a2998a6b11e102a2253ac592acf076841',1,'rtabmap::VWDictionary']]], + ['addnodestorepublish_18',['addNodesToRepublish',['../classrtabmap_1_1Rtabmap.html#a0d2caf505525f635bda914e73aa59232',1,'rtabmap::Rtabmap']]], + ['addpoints_19',['addPoints',['../classrtabmap_1_1FlannIndex.html#a8bd8312e92376d6bf2885907f5d93c68',1,'rtabmap::FlannIndex']]], + ['addref_20',['addRef',['../classrtabmap_1_1VisualWord.html#a5826c6a57f9115e6766bb60e2628fe30',1,'rtabmap::VisualWord']]], + ['addsignaturedata_21',['addSignatureData',['../classrtabmap_1_1Statistics.html#a55748a17bc6348a83dc184fb1b2631fd',1,'rtabmap::Statistics']]], + ['addstatistic_22',['addStatistic',['../classrtabmap_1_1Statistics.html#a24d85beaf52fd03ad67c6d9d417efd79',1,'rtabmap::Statistics']]], + ['addstatistics_23',['addStatistics',['../classrtabmap_1_1DBDriver.html#a4dbccd0dabf72da724488692b1713832',1,'rtabmap::DBDriver']]], + ['addword_24',['addWord',['../classrtabmap_1_1VWDictionary.html#ad464ad961b0e4d4cd6dd7895e9ff3d59',1,'rtabmap::VWDictionary']]], + ['addwordref_25',['addWordRef',['../classrtabmap_1_1VWDictionary.html#aea2f0d043d043df37258dc225c62edec',1,'rtabmap::VWDictionary']]], + ['adjustlikelihood_26',['adjustLikelihood',['../classrtabmap_1_1Rtabmap.html#aad648f09bb04b193907528987ccda413',1,'rtabmap::Rtabmap']]], + ['aggregate_27',['aggregate',['../namespacertabmap_1_1util3d.html#acc3c59044fcfdb8cc1fba8a41a0e9eab',1,'rtabmap::util3d']]], + ['algorithm_20evaluation_28',['Algorithm evaluation',['../tools.html#autotoc_md8',1,'']]], + ['allnodesinwm_29',['allNodesInWM',['../classrtabmap_1_1Memory.html#a2098205b805bde66a4a57906a8ca95f5',1,'rtabmap::Memory']]], + ['altitude_30',['altitude',['../classrtabmap_1_1GeodeticCoords.html#a3a0d110deb25400137d4fe552742970a',1,'rtabmap::GeodeticCoords::altitude()'],['../classrtabmap_1_1GPS.html#a50ae4bb38ab5dc1fef49ff367b602adc',1,'rtabmap::GPS::altitude()']]], + ['and_20calibration_31',['Sensors and calibration',['../tools.html#autotoc_md7',1,'']]], + ['and_20correspondences_20of_20two_20point_20clouds_32',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['and_20datasets_33',['Recording and datasets',['../tools.html#autotoc_md6',1,'']]], + ['angular_34',['angular',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html#a08918b252e5814477beff38b423df39b',1,'rtabmap::graph::MaxGraphErrors']]], + ['angularlink_35',['angularLink',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html#a95dc5269dfe47ed56b315cebe3389ab6',1,'rtabmap::graph::MaxGraphErrors']]], + ['angularratio_36',['angularRatio',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html#a97bead9a8191f2746e2586a965ca3c80',1,'rtabmap::graph::MaxGraphErrors']]], + ['angularvelocity_37',['angularVelocity',['../classrtabmap_1_1IMU.html#ad0160a803d2005f3f4db27c402e6bceb',1,'rtabmap::IMU']]], + ['angularvelocitycovariance_38',['angularVelocityCovariance',['../classrtabmap_1_1IMU.html#a660c82c641525ff24aefa7e03ebf7d4a',1,'rtabmap::IMU']]], + ['api_39',['RTAB-Map C++ API',['../index.html',1,'']]], + ['assemble_40',['assemble',['../classrtabmap_1_1GlobalMap.html#ae622850e2447bf1cc3e99ee9dcd4b65f',1,'rtabmap::GlobalMap::assemble()'],['../classrtabmap_1_1OctoMap.html#ac74a308322f3162307bfe73bfd60c2dd',1,'rtabmap::OctoMap::assemble()'],['../classrtabmap_1_1OccupancyGrid.html#a4e83e17bca353cd46097c14779119ffd',1,'rtabmap::OccupancyGrid::assemble()'],['../classrtabmap_1_1GridMap.html#a57ad9df30e61345ec23a45bcda0f2e93',1,'rtabmap::GridMap::assemble()'],['../classrtabmap_1_1CloudMap.html#a58b2f9f2a99fe3ab14ba73603e3d4f68',1,'rtabmap::CloudMap::assemble()']]], + ['assemblednodes_41',['assembledNodes',['../classrtabmap_1_1GlobalMap.html#a7fc3f43e65401d3842419066242e081d',1,'rtabmap::GlobalMap']]], + ['asyncsave_42',['asyncsave',['../classrtabmap_1_1DBDriver.html#a88eee22aa9707a6993f734fe29f6af5d',1,'rtabmap::DBDriver::asyncSave(VisualWord *vw)'],['../classrtabmap_1_1DBDriver.html#ad1510e157f3ab8df3284528369a6d88f',1,'rtabmap::DBDriver::asyncSave(Signature *s)']]], + ['available_43',['available',['../classrtabmap_1_1RegistrationIcp.html#a892ab46eff4e5b0b16bee7d93fa3ba56',1,'rtabmap::RegistrationIcp']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_4.js b/preview/pr-1773/api/latest/search/all_4.js new file mode 100644 index 00000000..4019c375 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_4.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['backwardcompatibility_0',['backwardcompatibility',['../classrtabmap_1_1LaserScan.html#aafea81eab365a2fc2b4f90d8deceafc9',1,'rtabmap::LaserScan::backwardCompatibility(const cv::Mat &oldScanFormat, int maxPoints=0, int maxRange=0, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1LaserScan.html#a61e1fefc6554dd6fc1da3c2e5aeefd0c',1,'rtabmap::LaserScan::backwardCompatibility(const cv::Mat &oldScanFormat, float minRange, float maxRange, float angleMin, float angleMax, float angleInc, const Transform &localTransform=Transform::getIdentity())']]], + ['baseline_1',['baseline',['../classrtabmap_1_1StereoCameraModel.html#a8dc48f95fcf68eb81da96941f778535f',1,'rtabmap::StereoCameraModel']]], + ['basic_20mathematic_20operations_2',['Basic mathematic operations',['../group__UtiLite.html#math',1,'']]], + ['bayes_3',['Bayes',['../parameters.html#autotoc_md26',1,'']]], + ['bayesfilter_4',['bayesfilter',['../classrtabmap_1_1BayesFilter.html#a2955edc4b79110b5bd1bd03f1616056e',1,'rtabmap::BayesFilter::BayesFilter()'],['../classrtabmap_1_1BayesFilter.html',1,'rtabmap::BayesFilter']]], + ['bearing_5',['bearing',['../classrtabmap_1_1GPS.html#a9285c1d2e97f83dc0b8df3666b912169',1,'rtabmap::GPS']]], + ['bin_5fdepth_5f_6',['bin_depth_',['../classclams_1_1DiscreteDepthDistortionModel.html#a1bd63eed7f9ca2759dcf4975b4f2f951',1,'clams::DiscreteDepthDistortionModel']]], + ['bin_5fheight_5f_7',['bin_height_',['../classclams_1_1DiscreteDepthDistortionModel.html#ae74671d8a3dd71c5fa3f3b44d163ba0c',1,'clams::DiscreteDepthDistortionModel']]], + ['bin_5fwidth_5f_8',['bin_width_',['../classclams_1_1DiscreteDepthDistortionModel.html#acbc26d0d0feddc1a7f27eca81b39dd20',1,'clams::DiscreteDepthDistortionModel']]], + ['box_20filtering_9',['Crop Box Filtering',['../group__CropBox.html',1,'']]], + ['brief_10',['BRIEF',['../parameters.html#autotoc_md16',1,'']]], + ['brightnessandcontrastauto_11',['brightnessAndContrastAuto',['../namespacertabmap_1_1util2d.html#a89ec90b2659c764ba22b5c36d729c8f8',1,'rtabmap::util2d']]], + ['brisk_12',['brisk',['../parameters.html#autotoc_md21',1,'BRISK'],['../classrtabmap_1_1BRISK.html',1,'rtabmap::BRISK']]], + ['buildindex_13',['buildIndex',['../classrtabmap_1_1FlannIndex.html#aad2f29314c6b021d1c53217a7a041521',1,'rtabmap::FlannIndex']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_5.js b/preview/pr-1773/api/latest/search/all_5.js new file mode 100644 index 00000000..972466b4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_5.js @@ -0,0 +1,151 @@ +var searchData= +[ + ['c_20api_0',['RTAB-Map C++ API',['../index.html',1,'']]], + ['cache_1',['cache',['../classrtabmap_1_1GlobalMap.html#a632f06ccce72bce66a9fd38d37f23b80',1,'rtabmap::GlobalMap']]], + ['calckittisequenceerrors_2',['calcKittiSequenceErrors',['../namespacertabmap_1_1graph.html#a3c9effdb0d7c235dc1b8d7e3f8487c67',1,'rtabmap::graph']]], + ['calcopticalflowpyrlkstereo_3',['calcOpticalFlowPyrLKStereo',['../namespacertabmap_1_1util2d.html#a3d01284751a6b46770a28a7f63576600',1,'rtabmap::util2d']]], + ['calcrelativeerrors_4',['calcRelativeErrors',['../namespacertabmap_1_1graph.html#a83c41a7cdd595ae6f76d3f1c5140c215',1,'rtabmap::graph']]], + ['calcrmse_5',['calcRMSE',['../namespacertabmap_1_1graph.html#a5c36e32a4acd10ac3cdbbf7d73591f88',1,'rtabmap::graph']]], + ['calcstereocorrespondences_6',['calcStereoCorrespondences',['../namespacertabmap_1_1util2d.html#a53e2ae078c4c5c997fda9f1b6d1dda33',1,'rtabmap::util2d']]], + ['calibration_7',['Sensors and calibration',['../tools.html#autotoc_md7',1,'']]], + ['camera_8',['camera',['../classrtabmap_1_1Camera.html',1,'rtabmap::Camera'],['../classrtabmap_1_1Camera.html#aaae7434ffa5e54f5006355779d335dd3',1,'rtabmap::Camera::Camera()'],['../classrtabmap_1_1SensorCaptureThread.html#ad6750f6280bdcbb386a051ba9cc36857',1,'rtabmap::SensorCaptureThread::camera()']]], + ['cameradepthai_9',['CameraDepthAI',['../classrtabmap_1_1CameraDepthAI.html',1,'rtabmap']]], + ['cameraevent_10',['CameraEvent',['../namespacertabmap.html#a02e773b48c5ac372ce67fe4e040d835d',1,'rtabmap']]], + ['camerafreenect_11',['CameraFreenect',['../classrtabmap_1_1CameraFreenect.html',1,'rtabmap']]], + ['camerafreenect2_12',['CameraFreenect2',['../classrtabmap_1_1CameraFreenect2.html',1,'rtabmap']]], + ['cameraimages_13',['CameraImages',['../classrtabmap_1_1CameraImages.html',1,'rtabmap']]], + ['cameraindex_14',['cameraIndex',['../classrtabmap_1_1FeatureBA.html#a8db953b6f93249d5c28c25073cd4e095',1,'rtabmap::FeatureBA']]], + ['camerainfo_15',['CameraInfo',['../namespacertabmap.html#ac1143b629394a895ca246d256dbc6038',1,'rtabmap']]], + ['camerak4a_16',['CameraK4A',['../classrtabmap_1_1CameraK4A.html',1,'rtabmap']]], + ['camerak4w2_17',['CameraK4W2',['../classrtabmap_1_1CameraK4W2.html',1,'rtabmap']]], + ['cameramodel_18',['cameramodel',['../classrtabmap_1_1CameraModel.html#aadb6b19ea8a94f3f6719ea0233196c34',1,'rtabmap::CameraModel::CameraModel()'],['../classrtabmap_1_1CameraModel.html',1,'rtabmap::CameraModel'],['../classrtabmap_1_1CameraModel.html#a4810e60f3af95b73a61879aa97201695',1,'rtabmap::CameraModel::CameraModel(const std::string &name, const cv::Size &imageSize, const cv::Mat &K, const cv::Mat &D, const cv::Mat &R, const cv::Mat &P, const Transform &localTransform=opticalRotation())'],['../classrtabmap_1_1CameraModel.html#adad6652a711eecc9a50e544f14d276cd',1,'rtabmap::CameraModel::CameraModel()'],['../classrtabmap_1_1CameraModel.html#a745c2d60ef6b460ca380aebd55b5d61c',1,'rtabmap::CameraModel::CameraModel(const std::string &name, double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))']]], + ['cameramodels_19',['cameraModels',['../classrtabmap_1_1SensorData.html#a6ace7b2b8ebae5f7ab18e159fe6e8a92',1,'rtabmap::SensorData']]], + ['cameramynteye_20',['CameraMyntEye',['../classrtabmap_1_1CameraMyntEye.html',1,'rtabmap']]], + ['cameraname_21',['cameraname',['../classrtabmap_1_1SensorCaptureInfo.html#a8f4c2fb07970cb40bf2fe7ad19743d23',1,'rtabmap::SensorCaptureInfo::cameraName'],['../classrtabmap_1_1SensorEvent.html#adaf11817f3e0338ab63b1e8fee4a3c01',1,'rtabmap::SensorEvent::cameraName()']]], + ['cameraopenni_22',['CameraOpenni',['../classrtabmap_1_1CameraOpenni.html',1,'rtabmap']]], + ['cameraopenni2_23',['CameraOpenNI2',['../classrtabmap_1_1CameraOpenNI2.html',1,'rtabmap']]], + ['cameraopennicv_24',['CameraOpenNICV',['../classrtabmap_1_1CameraOpenNICV.html',1,'rtabmap']]], + ['cameraorbbecsdk_25',['CameraOrbbecSDK',['../classrtabmap_1_1CameraOrbbecSDK.html',1,'rtabmap']]], + ['camerarealsense_26',['CameraRealSense',['../classrtabmap_1_1CameraRealSense.html',1,'rtabmap']]], + ['camerarealsense2_27',['CameraRealSense2',['../classrtabmap_1_1CameraRealSense2.html',1,'rtabmap']]], + ['camerargbdimages_28',['CameraRGBDImages',['../classrtabmap_1_1CameraRGBDImages.html',1,'rtabmap']]], + ['cameraseersense_29',['CameraSeerSense',['../classrtabmap_1_1CameraSeerSense.html',1,'rtabmap']]], + ['camerastereodc1394_30',['CameraStereoDC1394',['../classrtabmap_1_1CameraStereoDC1394.html',1,'rtabmap']]], + ['camerastereoflycapture2_31',['CameraStereoFlyCapture2',['../classrtabmap_1_1CameraStereoFlyCapture2.html',1,'rtabmap']]], + ['camerastereoimages_32',['CameraStereoImages',['../classrtabmap_1_1CameraStereoImages.html',1,'rtabmap']]], + ['camerastereotara_33',['CameraStereoTara',['../classrtabmap_1_1CameraStereoTara.html',1,'rtabmap']]], + ['camerastereovideo_34',['CameraStereoVideo',['../classrtabmap_1_1CameraStereoVideo.html',1,'rtabmap']]], + ['camerastereozed_35',['CameraStereoZed',['../classrtabmap_1_1CameraStereoZed.html',1,'rtabmap']]], + ['camerastereozedoc_36',['CameraStereoZedOC',['../classrtabmap_1_1CameraStereoZedOC.html',1,'rtabmap']]], + ['camerathread_37',['CameraThread',['../namespacertabmap.html#acd001e2ea3d2e44d9e24faab74d36324',1,'rtabmap']]], + ['cameravideo_38',['CameraVideo',['../classrtabmap_1_1CameraVideo.html',1,'rtabmap']]], + ['canparsestring_39',['canParseString',['../classrtabmap_1_1Transform.html#af44657c8360a79a67e538f25027df639',1,'rtabmap::Transform']]], + ['canprocessasyncimu_40',['canprocessasyncimu',['../classrtabmap_1_1OdometryVINSFusion.html#a1a3145c62e7b0b43cfb5a94f61d2c9d1',1,'rtabmap::OdometryVINSFusion::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryMSCKF.html#a4dd9c2358d2e69f397b61746519a923a',1,'rtabmap::OdometryMSCKF::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryLIOSAM.html#a51193d7f42c9b0174c6eedd75d8f4535',1,'rtabmap::OdometryLIOSAM::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryOkvis.html#a4e94c233112e7105dffa37eb8d33427f',1,'rtabmap::OdometryOkvis::canProcessAsyncIMU()'],['../classrtabmap_1_1Odometry.html#a7a1c1e4598528a4e94f510b5dabac528',1,'rtabmap::Odometry::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryOpenVINS.html#a7712fe74d5ff65a67fe362010b795e14',1,'rtabmap::OdometryOpenVINS::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryORBSLAM3.html#a2f226f38792f0c8bc146d73985239370',1,'rtabmap::OdometryORBSLAM3::canProcessAsyncIMU()']]], + ['canprocessrawimages_41',['canprocessrawimages',['../classrtabmap_1_1OdometryVINSFusion.html#a505ae049f32115a81d4f4258b5fb2134',1,'rtabmap::OdometryVINSFusion::canProcessRawImages()'],['../classrtabmap_1_1OdometryOpenVINS.html#aed27c46aa9ddc68c59eb09f2b3a9d3d0',1,'rtabmap::OdometryOpenVINS::canProcessRawImages()'],['../classrtabmap_1_1OdometryOkvis.html#ad4d4602445081fff30b74d1c7e22dbff',1,'rtabmap::OdometryOkvis::canProcessRawImages()'],['../classrtabmap_1_1OdometryMSCKF.html#a06b5b242107ffe5c379ff7ed089d07c6',1,'rtabmap::OdometryMSCKF::canProcessRawImages()'],['../classrtabmap_1_1Odometry.html#a69809beb553e6d4cd4a950ce251449e0',1,'rtabmap::Odometry::canProcessRawImages()']]], + ['canuseguess_42',['canUseGuess',['../classrtabmap_1_1Registration.html#ab000f795ec498882585a634c2dafec05',1,'rtabmap::Registration']]], + ['capturedata_43',['capturedata',['../classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958',1,'rtabmap::SensorCapture::captureData()'],['../classrtabmap_1_1LidarVLP16.html#a60d8190947d474e0557695c1032c40b8',1,'rtabmap::LidarVLP16::captureData()']]], + ['captureimage_44',['captureImage',['../classrtabmap_1_1CameraMyntEye.html#acefbf910185313e7cf645ecff344329c',1,'rtabmap::CameraMyntEye']]], + ['cellsize_45',['cellSize',['../classrtabmap_1_1LocalGrid.html#a13abf7a3ed9d8680ea339551401b62f5',1,'rtabmap::LocalGrid']]], + ['changelinkids_46',['changeLinkIds',['../classrtabmap_1_1Signature.html#a10d3bce2c3e4ec2de31aa5fa0c4b5934',1,'rtabmap::Signature']]], + ['changewordsref_47',['changeWordsRef',['../classrtabmap_1_1Signature.html#a0fbef54e89583c0ee919f938d57c8759',1,'rtabmap::Signature']]], + ['classes_48',['The main classes',['../index.html#autotoc_md4',1,'']]], + ['cleantexturemesh_49',['cleanTextureMesh',['../namespacertabmap_1_1util3d.html#a07466d3f99ac7f763ba476f65c99ebb0',1,'rtabmap::util3d']]], + ['cleanup_50',['cleanup',['../classrtabmap_1_1Memory.html#af87e4718dd842c59fd8459430c40d78f',1,'rtabmap::Memory']]], + ['cleanuplocalgrids_51',['cleanuplocalgrids',['../classrtabmap_1_1Rtabmap.html#ac7de2278aa53a315a63bec05c1f0a15f',1,'rtabmap::Rtabmap::cleanupLocalGrids()'],['../classrtabmap_1_1Memory.html#a6e63312ada575016b583a4252dc0a70c',1,'rtabmap::Memory::cleanupLocalGrids()']]], + ['clear_52',['clear',['../classrtabmap_1_1VWDictionary.html#a566aaf19cdc098587e88393e4140b351',1,'rtabmap::VWDictionary::clear()'],['../classrtabmap_1_1LocalGridCache.html#a4068440ef10859d05f252e36f916604b',1,'rtabmap::LocalGridCache::clear()'],['../classrtabmap_1_1LaserScan.html#af0ad1e84f0be48a84b772385249adb45',1,'rtabmap::LaserScan::clear()'],['../classrtabmap_1_1GlobalMap.html#aa6701a09e2532877e73d5b1ba8cb1213',1,'rtabmap::GlobalMap::clear()'],['../classrtabmap_1_1OctoMap.html#a6f9f296f3d5852f749c88291fa11d70f',1,'rtabmap::OctoMap::clear()'],['../classrtabmap_1_1OccupancyGrid.html#a76e50602b4dea4a94b1e7e1db25c9177',1,'rtabmap::OccupancyGrid::clear()'],['../classrtabmap_1_1GridMap.html#a2a3b8ba591cf41da62e5486bb62b8f51',1,'rtabmap::GridMap::clear()'],['../classrtabmap_1_1CloudMap.html#a3e2089cb30bd4efbee1ede0c041ee4af',1,'rtabmap::CloudMap::clear()']]], + ['clearbuffereddata_53',['clearBufferedData',['../classrtabmap_1_1RtabmapThread.html#aea5c7a61adab9ed8382066806420bfac',1,'rtabmap::RtabmapThread']]], + ['clearcompresseddata_54',['clearCompressedData',['../classrtabmap_1_1SensorData.html#a33244e8049bfae5bea9ecf80057bcd29',1,'rtabmap::SensorData']]], + ['clearglobaldescriptors_55',['clearGlobalDescriptors',['../classrtabmap_1_1SensorData.html#a37c2569419731afc855a3ce984c11505',1,'rtabmap::SensorData']]], + ['clearpath_56',['clearPath',['../classrtabmap_1_1Rtabmap.html#a589cd696bffe53a5e00898631e7d9103',1,'rtabmap::Rtabmap']]], + ['clearrawdata_57',['clearRawData',['../classrtabmap_1_1SensorData.html#a53040403970a08a677e69d824a31f7b2',1,'rtabmap::SensorData']]], + ['clone_58',['clone',['../classrtabmap_1_1Transform.html#a93af73b3a388d66293d007cb164b2198',1,'rtabmap::Transform']]], + ['close_59',['close',['../classrtabmap_1_1RtabmapThread.html#aabea5cf86e55d6669d41b0b569dac574',1,'rtabmap::RtabmapThread::close()'],['../classrtabmap_1_1Memory.html#a44023158524dee3471a8dff43ea132db',1,'rtabmap::Memory::close()'],['../classrtabmap_1_1Rtabmap.html#a5e0b2eada8ae885e45df23165bb91d2f',1,'rtabmap::Rtabmap::close()']]], + ['closeconnection_60',['closeConnection',['../classrtabmap_1_1DBDriver.html#abb644a203d148d0b29db41aea04c949f',1,'rtabmap::DBDriver']]], + ['cloud_61',['cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['cloud_20cluster_20extraction_62',['Point Cloud Cluster Extraction',['../group__ExtractClusters.html',1,'']]], + ['cloud_20downsampling_63',['Point Cloud Downsampling',['../group__PointCloudDownSampling.html',1,'']]], + ['cloud_20indices_20extraction_64',['Point Cloud Indices Extraction',['../group__ExtractIndices.html',1,'']]], + ['cloud_20with_20normals_65',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['cloudfromdepth_66',['cloudfromdepth',['../namespacertabmap_1_1util3d.html#a45c699a4a8f4108aa31148fb706e6249',1,'rtabmap::util3d::cloudFromDepth(const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)'],['../namespacertabmap_1_1util3d.html#a9fa0222fe9a7f74fcfa4c04c0c2dd532',1,'rtabmap::util3d::cloudFromDepth(const cv::Mat &imageDepth, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)']]], + ['cloudfromdepthrgb_67',['cloudfromdepthrgb',['../namespacertabmap_1_1util3d.html#a982bc5d13fea129a174e16373aa8a31c',1,'rtabmap::util3d::cloudFromDepthRGB(const cv::Mat &imageRgb, const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)'],['../namespacertabmap_1_1util3d.html#a64b369873a01960576cb34aab4c5a319',1,'rtabmap::util3d::cloudFromDepthRGB(const cv::Mat &imageRgb, const cv::Mat &imageDepth, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)']]], + ['cloudfromdisparity_68',['cloudFromDisparity',['../namespacertabmap_1_1util3d.html#aee34b5fe56014a9fa058fbdbf90cab71',1,'rtabmap::util3d']]], + ['cloudfromdisparityrgb_69',['cloudFromDisparityRGB',['../namespacertabmap_1_1util3d.html#a1e4a96407fb1b92018e640ef41b8db8e',1,'rtabmap::util3d']]], + ['cloudfromsensordata_70',['cloudFromSensorData',['../namespacertabmap_1_1util3d.html#aacda489f2336d8edb4e982f61f55cc66',1,'rtabmap::util3d']]], + ['cloudfromstereoimages_71',['cloudFromStereoImages',['../namespacertabmap_1_1util3d.html#a406caa6c0c51bae870a8c3a44e7daccc',1,'rtabmap::util3d']]], + ['cloudmap_72',['CloudMap',['../classrtabmap_1_1CloudMap.html',1,'rtabmap']]], + ['cloudrgbfromsensordata_73',['cloudRGBFromSensorData',['../namespacertabmap_1_1util3d.html#a29ece82e01f041cab271fe9322cf9745',1,'rtabmap::util3d']]], + ['clouds_74',['clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'Compute Variance and Correspondences of Two Point Clouds'],['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds'],['../group__TransformPointcloud.html',1,'Transform PCL Point Clouds']]], + ['cloudsfromsensordata_75',['cloudsFromSensorData',['../namespacertabmap_1_1util3d.html#ada07c0379fcc7bb7465e31a5a53ebfaa',1,'rtabmap::util3d']]], + ['cloudsrgbfromsensordata_76',['cloudsRGBFromSensorData',['../namespacertabmap_1_1util3d.html#a2155fca440675ca9697a2fe7b2efb30e',1,'rtabmap::util3d']]], + ['cluster_20extraction_77',['Point Cloud Cluster Extraction',['../group__ExtractClusters.html',1,'']]], + ['cmd_78',['Cmd',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801',1,'rtabmap::RtabmapEventCmd']]], + ['code_79',['Code',['../classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66',1,'rtabmap::SensorEvent']]], + ['command_20line_20tools_80',['Command-line tools',['../tools.html',1,'']]], + ['commonfiltering_81',['commonfiltering',['../namespacertabmap_1_1util3d.html#ad02c78c4d3ca36fa9a27a845540ebe55',1,'rtabmap::util3d::commonFiltering(const LaserScan &scan, int downsamplingStep, float rangeMin, float rangeMax, float voxelSize, int normalK, float normalRadius, bool forceGroundNormalsUp)'],['../namespacertabmap_1_1util3d.html#a7edd91750858112fd161f0ed30af7f45',1,'rtabmap::util3d::commonFiltering(const LaserScan &scan, int downsamplingStep, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalK=0, float normalRadius=0.0f, float groundNormalsUp=0.0f)']]], + ['compareto_82',['compareTo',['../classrtabmap_1_1Signature.html#abe3b712a3c74599007b1974f592d82bd',1,'rtabmap::Signature']]], + ['complexity_20of_20a_20point_20cloud_20with_20normals_83',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['compressdata_84',['compressData',['../namespacertabmap.html#a749adef593d09b887926afb6ebdb5834',1,'rtabmap']]], + ['compressdata2_85',['compressData2',['../namespacertabmap.html#aca82ee9efc46461c648c7ab8999e1d5b',1,'rtabmap']]], + ['compresseddepthformat_86',['compresseddepthformat',['../namespacertabmap.html#a67c525e80a7187b3106e5fd76155cabc',1,'rtabmap::compressedDepthFormat(const cv::Mat &bytes)'],['../namespacertabmap.html#a58b406e413250675abbf0ec2956e3de8',1,'rtabmap::compressedDepthFormat(const unsigned char *bytes, size_t size)'],['../namespacertabmap.html#ab5cb2dcd6db7fe3bbe25d847177582c2',1,'rtabmap::compressedDepthFormat(const std::vector< unsigned char > &bytes)']]], + ['compressimage_87',['compressImage',['../namespacertabmap.html#a52beb14eea422420c95fd69bdf3ab9dc',1,'rtabmap']]], + ['compressimage2_88',['compressImage2',['../namespacertabmap.html#abd9d5523210562abd9b5dc8fa9dbeb99',1,'rtabmap']]], + ['compressionthread_89',['compressionthread',['../classrtabmap_1_1CompressionThread.html#a8cfe0e3d632c888c143b4e7902145fde',1,'rtabmap::CompressionThread::CompressionThread()'],['../classrtabmap_1_1CompressionThread.html',1,'rtabmap::CompressionThread'],['../classrtabmap_1_1CompressionThread.html#a6bdec4c44e47774291bc9f98b3b5c146',1,'rtabmap::CompressionThread::CompressionThread()']]], + ['compressstring_90',['compressString',['../namespacertabmap.html#a4f0dfae296aa7029e959d573b286285a',1,'rtabmap']]], + ['computation_91',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['compute_20structural_20complexity_20of_20a_20point_20cloud_20with_20normals_92',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['compute_20variance_20and_20correspondences_20of_20two_20point_20clouds_93',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['computebacorrespondences_94',['computeBACorrespondences',['../classrtabmap_1_1Optimizer.html#a93fb09dac068e64de000f692bcb8216f',1,'rtabmap::Optimizer']]], + ['computecorrespondences_95',['computecorrespondences',['../classrtabmap_1_1Stereo.html#aefb9a38643b353727430c4bb6a551382',1,'rtabmap::Stereo::computeCorrespondences()'],['../classrtabmap_1_1StereoOpticalFlow.html#a406bbf688782966ea55a44c49ac10cbe',1,'rtabmap::StereoOpticalFlow::computeCorrespondences()']]], + ['computedepth_96',['computeDepth',['../classrtabmap_1_1StereoCameraModel.html#a514f7d1baff8b4be96d760b27279f5d6',1,'rtabmap::StereoCameraModel']]], + ['computedisparity_97',['computedisparity',['../classrtabmap_1_1StereoDense.html#ac394d1dad3fa899f310e4c3eb3e428c4',1,'rtabmap::StereoDense::computeDisparity()'],['../classrtabmap_1_1StereoCameraModel.html#a28230b8236ed778729ed1e1ceb590f31',1,'rtabmap::StereoCameraModel::computeDisparity(unsigned short depth) const'],['../classrtabmap_1_1StereoCameraModel.html#aecf8b2a628ead0bc422dbf791d683f5b',1,'rtabmap::StereoCameraModel::computeDisparity(float depth) const'],['../classrtabmap_1_1StereoSGBM.html#ac0677ba125a665fe723f20814bf724cc',1,'rtabmap::StereoSGBM::computeDisparity()'],['../classrtabmap_1_1StereoBM.html#a94b6d71050cf4b784f87853175c57b00',1,'rtabmap::StereoBM::computeDisparity()']]], + ['computeicptransform_98',['computeIcpTransform',['../classrtabmap_1_1Memory.html#aca66c6d1316f9d833b279104a683ee50',1,'rtabmap::Memory']]], + ['computeicptransformmulti_99',['computeIcpTransformMulti',['../classrtabmap_1_1Memory.html#a34aa7efd5f6ce0fd3136459542ad8ebb',1,'rtabmap::Memory']]], + ['computelikelihood_100',['computeLikelihood',['../classrtabmap_1_1Memory.html#a984ca01a87434b11a66dc1d96e2fff17',1,'rtabmap::Memory']]], + ['computemaxgrapherrors_101',['computeMaxGraphErrors',['../namespacertabmap_1_1graph.html#a4691b760dfafe6d93de514c96fa55e0e',1,'rtabmap::graph']]], + ['computeminmax_102',['computeMinMax',['../namespacertabmap_1_1graph.html#a39f8c9011cb5b7652003df9275c88410',1,'rtabmap::graph']]], + ['computenormalscomplexity_103',['computenormalscomplexity',['../group__ComputeNormalsComplexity.html#ga3e024c51a6a49d1c8e6b64c230148137',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga6e03130bf686d43ea527dc8e6f5cce55',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga13a6d7525494d390041c9ef0337e02dd',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga5a68422282e99f8d05c0821eac491895',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::Normal > &normals, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga3724a082502fbef6222c11843ca56b58',1,'rtabmap::util3d::computeNormalsComplexity(const LaserScan &scan, const Transform &t=Transform::getIdentity(), cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)']]], + ['computepath_104',['computepath',['../namespacertabmap_1_1graph.html#a1ec6b9506985624f31fb2091219cb142',1,'rtabmap::graph::computePath(int fromId, int toId, const Memory *memory, bool lookInDatabase=true, bool updateNewCosts=false, float linearVelocity=0.0f, float angularVelocity=0.0f, bool ignoreDirectLinks=false)'],['../namespacertabmap_1_1graph.html#ae21d02d613df461d6163f9d9a3db7ad2',1,'rtabmap::graph::computePath(const std::multimap< int, Link > &links, int from, int to, bool updateNewCosts=false, bool useSameCostForAllLinks=false)'],['../namespacertabmap_1_1graph.html#a5ec6c3883f73181d9458c5905c0aa0ea',1,'rtabmap::graph::computePath(const std::map< int, rtabmap::Transform > &poses, const std::multimap< int, int > &links, int from, int to, bool updateNewCosts=false)'],['../classrtabmap_1_1Rtabmap.html#ab797f7f5bb73a507ba4d4672cd5476df',1,'rtabmap::Rtabmap::computePath(int targetNode, bool global)'],['../classrtabmap_1_1Rtabmap.html#a14d5c84b61386e95071e90aba406ff49',1,'rtabmap::Rtabmap::computePath(const Transform &targetPose, float tolerance=-1.0f)']]], + ['computepathdepths_105',['computePathDepths',['../namespacertabmap_1_1graph.html#a8acc34fed4cb4e452e8e14d05dafc578',1,'rtabmap::graph']]], + ['computepathlength_106',['computepathlength',['../namespacertabmap_1_1graph.html#a3cd2009752bc8e39ec00f7f08cfd4a39',1,'rtabmap::graph::computePathLength(const std::vector< std::pair< int, Transform > > &path)'],['../namespacertabmap_1_1graph.html#a14376d7f2365ab41e5c361876c999277',1,'rtabmap::graph::computePathLength(const std::map< int, Transform > &path)']]], + ['computeposterior_107',['computePosterior',['../classrtabmap_1_1BayesFilter.html#aa3ec78130d67d9cca8c2f11c31bc28d2',1,'rtabmap::BayesFilter']]], + ['computeroi_108',['computeroi',['../classrtabmap_1_1Feature2D.html#a8bdfa57df68506fecb6342b9f5bc98e8',1,'rtabmap::Feature2D::computeRoi()'],['../group__RoiComputation.html#ga79d3f93673fb236980f0be532695f478',1,'rtabmap::util2d::computeRoi(const cv::Mat &image, const std::string &roiRatios)'],['../group__RoiComputation.html#ga2f0ffb8f6882e28709b03446d50250bb',1,'rtabmap::util2d::computeRoi(const cv::Size &imageSize, const std::string &roiRatios)'],['../group__RoiComputation.html#ga81d9f49d117d02494c7ff57f5d426b15',1,'rtabmap::util2d::computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios)'],['../group__RoiComputation.html#ga56fed8ce688e8e9eb3b1f74ad0febcef',1,'rtabmap::util2d::computeRoi(const cv::Size &imageSize, const std::vector< float > &roiRatios)']]], + ['computetransform_109',['computetransform',['../classrtabmap_1_1Memory.html#a29636c34234e6e2809e3d57329dc40d6',1,'rtabmap::Memory::computeTransform(int fromId, int toId, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false)'],['../classrtabmap_1_1Memory.html#a4ae0287262c04905baab2d6f94448486',1,'rtabmap::Memory::computeTransform(Signature &fromS, Signature &toS, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false) const']]], + ['computetransformation_110',['computetransformation',['../classrtabmap_1_1Registration.html#a42d0c93204bc4da11eb89707ea2c03c6',1,'rtabmap::Registration::computeTransformation(const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const'],['../classrtabmap_1_1Registration.html#aa6b81a6f4137138a1b49510cc3f97679',1,'rtabmap::Registration::computeTransformation(const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const']]], + ['computetransformationimpl_111',['computetransformationimpl',['../classrtabmap_1_1RegistrationVis.html#aa47fd3a0599ee918e024161db330a92f',1,'rtabmap::RegistrationVis::computeTransformationImpl()'],['../classrtabmap_1_1RegistrationIcp.html#a8a18107160cfc05cfb8a5109540d81b5',1,'rtabmap::RegistrationIcp::computeTransformationImpl()'],['../classrtabmap_1_1Registration.html#a21635a391a85b64bc33787179a6cd71b',1,'rtabmap::Registration::computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const =0']]], + ['computetransformationmod_112',['computeTransformationMod',['../classrtabmap_1_1Registration.html#a44530cd77f6d0a9657251864fb136c0d',1,'rtabmap::Registration']]], + ['computevarianceandcorrespondences_113',['computevarianceandcorrespondences',['../group__ComputeVarianceAndCorrespondences.html#ga7d90c0848a13e35f37588addf3637fe2',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)'],['../group__ComputeVarianceAndCorrespondences.html#ga92518a7b79e9265380f3a047e46ec247',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)'],['../group__ComputeVarianceAndCorrespondences.html#gaae6ddd0517614e9332669c37c6816777',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)'],['../group__ComputeVarianceAndCorrespondences.html#gaf474f9fb6eaaf532e9b18af63b9e1665',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)']]], + ['concatenate_114',['concatenate',['../namespacertabmap_1_1util3d.html#ac6c2019b1dad806d0c593e2ee3c21185',1,'rtabmap::util3d::concatenate(const pcl::IndicesPtr &indicesA, const pcl::IndicesPtr &indicesB)'],['../namespacertabmap_1_1util3d.html#aff3c61a08b0fcad7f1c3f7c847190969',1,'rtabmap::util3d::concatenate(const std::vector< pcl::IndicesPtr > &indices)']]], + ['concatenateclouds_115',['concatenateclouds',['../namespacertabmap_1_1util3d.html#a863268b894de375aa45485dafe52dd7b',1,'rtabmap::util3d::concatenateClouds(const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr > &clouds)'],['../namespacertabmap_1_1util3d.html#a909a600c90d8bc4f77b62ff21a97ddc1',1,'rtabmap::util3d::concatenateClouds(const std::list< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds)']]], + ['configuration_116',['Configuration',['../index.html#autotoc_md3',1,'']]], + ['constraints_117',['constraints',['../classrtabmap_1_1Statistics.html#a30275a92af2f9fb08f3955c5b9e8b661',1,'rtabmap::Statistics']]], + ['convenient_20use_20of_20stl_118',['Convenient use of STL',['../group__UtiLite.html#stl',1,'']]], + ['conversion_119',['Conversion',['../group__UtiLite.html#conversion',1,'']]], + ['convert32ftobin_120',['convert32FToBin',['../classrtabmap_1_1VWDictionary.html#acda9d98e4ad4897ce8a8b945f396221c',1,'rtabmap::VWDictionary']]], + ['convertbinto32f_121',['convertBinTo32F',['../classrtabmap_1_1VWDictionary.html#a70aec2b9d1bf55d47192949aa728448e',1,'rtabmap::VWDictionary']]], + ['convertimage8u2map_122',['convertImage8U2Map',['../namespacertabmap_1_1util3d.html#acb47883439442306b63f5bf234e87049',1,'rtabmap::util3d']]], + ['convertmap2image8u_123',['convertMap2Image8U',['../namespacertabmap_1_1util3d.html#ae57dd8dcc488496a2c3872eba97eb4e4',1,'rtabmap::util3d']]], + ['converttobaseframe_124',['convertToBaseFrame',['../classrtabmap_1_1IMU.html#a1ccae83f46e87d28e56bcfc4a25fafb8',1,'rtabmap::IMU']]], + ['converttointermediate_125',['convertToIntermediate',['../classrtabmap_1_1Memory.html#ae66a7837edc6e844ee9186e61d139300',1,'rtabmap::Memory']]], + ['copy_126',['copy',['../classUFile.html#aa02141310fab62290721deee433f6314',1,'UFile::copy(const std::string &to)'],['../classUFile.html#aa99e6dc81f23e17ce92bd848dfe5a2f4',1,'UFile::copy(const std::string &from, const std::string &to)']]], + ['copywithoutdata_127',['copywithoutdata',['../classrtabmap_1_1OdometryInfo.html#abce081943ea566e0dcc1532ce749e276',1,'rtabmap::OdometryInfo::copyWithoutData()'],['../classrtabmap_1_1RegistrationInfo.html#ae7abf7e34019a0c27b2de8ac5647f277',1,'rtabmap::RegistrationInfo::copyWithoutData()']]], + ['cornerinliers_128',['cornerInliers',['../classrtabmap_1_1OdometryInfo.html#a6410510dbdd2e9ce8fb1e7cb60dc3c4e',1,'rtabmap::OdometryInfo']]], + ['correspondences_20of_20two_20point_20clouds_129',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['countuniquepairs_130',['countUniquePairs',['../namespacertabmap_1_1util3d.html#af7d4d348836959bbdce0e5db0a4af91c',1,'rtabmap::util3d']]], + ['covariance_131',['covariance',['../classrtabmap_1_1OdometryEvent.html#a13be8ff5e398f9fd00d09aac8deddaba',1,'rtabmap::OdometryEvent::covariance()'],['../classrtabmap_1_1Landmark.html#a1c1e20cccc5f659743ba48c8afe1a8a0',1,'rtabmap::Landmark::covariance()'],['../classrtabmap_1_1RegistrationInfo.html#a347f413d8a96dea23c4fdc6af2a1ddb5',1,'rtabmap::RegistrationInfo::covariance']]], + ['covariance_5fangular_5fepsilon_132',['COVARIANCE_ANGULAR_EPSILON',['../classrtabmap_1_1Registration.html#ae40b7ab65642aac9f21f44887b23b97d',1,'rtabmap::Registration']]], + ['covariance_5flinear_5fepsilon_133',['COVARIANCE_LINEAR_EPSILON',['../classrtabmap_1_1Registration.html#a7c8c2d7a65357ef9f5d60ce3f763f4b3',1,'rtabmap::Registration']]], + ['create_134',['create',['../classrtabmap_1_1DBDriver.html#a1f75e440b35243ccad645052bc4a12f9',1,'rtabmap::DBDriver::create()'],['../classrtabmap_1_1Feature2D.html#a58ac3dff96e882f0e4bbbf8a8ffc435d',1,'rtabmap::Feature2D::create(const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Feature2D.html#ab9deec7c0e26722736aeeaeb5541ac3a',1,'rtabmap::Feature2D::create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Odometry.html#a1240aaf3a92a75b4c3c9ded9117144bb',1,'rtabmap::Odometry::create(Type &type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Odometry.html#ac8992df0b92a86c10fe8e8da2b5f3627',1,'rtabmap::Odometry::create(const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1IMUFilter.html#a7a01dc897399c51c4a362d2438b90875',1,'rtabmap::IMUFilter::create(IMUFilter::Type type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1IMUFilter.html#a16790b3787da5941c89d0c1d98e76234',1,'rtabmap::IMUFilter::create(const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1RtabmapColorOcTree.html#ac109340a5367e1b818febb00ae06f18e',1,'rtabmap::RtabmapColorOcTree::create()'],['../classrtabmap_1_1StereoDense.html#ae52002299f7e443a8e9cdc33effae37c',1,'rtabmap::StereoDense::create()'],['../classrtabmap_1_1Optimizer.html#a78b457bec2cdb7bdd320e2bfcca759df',1,'rtabmap::Optimizer::create(const ParametersMap &parameters)'],['../classrtabmap_1_1Optimizer.html#aeff86117cf69fdae3c25e5bc327a142d',1,'rtabmap::Optimizer::create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Registration.html#a516e8d64cdb3e7a743a3aa40ab026def',1,'rtabmap::Registration::create(const ParametersMap &parameters)'],['../classrtabmap_1_1Registration.html#a1e3493a850551c98f9e814fed74400e6',1,'rtabmap::Registration::create(Type &type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Stereo.html#a2ce0c01fac282e0a8ffd862608fa2d96',1,'rtabmap::Stereo::create()'],['../classrtabmap_1_1StereoDense.html#ad2a4e50429b17c2cb1938e9d922ba7ce',1,'rtabmap::StereoDense::create()']]], + ['create2dmap_135',['create2dmap',['../namespacertabmap_1_1util3d.html#afff989b8fc8d612a69d82bdfa7a28fe8',1,'rtabmap::util3d::create2DMap(const std::map< int, Transform > &poses, const std::map< int, std::pair< cv::Mat, cv::Mat > > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#adcc1d4aca3da4fcb11fa44d3a20f46ca',1,'rtabmap::util3d::create2DMap(const std::map< int, Transform > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#ae7dca67101116f7de0114cea5442ec23',1,'rtabmap::util3d::create2DMap(const std::map< int, Transform > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)']]], + ['create2dmapfromoccupancylocalmaps_136',['create2DMapFromOccupancyLocalMaps',['../namespacertabmap_1_1util3d.html#a86ea393c958183f10da8f7327e25d894',1,'rtabmap::util3d']]], + ['createintermediatenodes_137',['createIntermediateNodes',['../classrtabmap_1_1RtabmapThread.html#a78271ce60d00219c4fdd86813136a116',1,'rtabmap::RtabmapThread']]], + ['createlocalmap_138',['createlocalmap',['../classrtabmap_1_1LocalGridMaker.html#a97d17a585226dcffe580406736e00117',1,'rtabmap::LocalGridMaker::createLocalMap(const Signature &node, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPoint)'],['../classrtabmap_1_1LocalGridMaker.html#a3d43b8e022d7638262282ab2c7da0ead',1,'rtabmap::LocalGridMaker::createLocalMap(const LaserScan &cloud, const Transform &pose, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPointInOut) const']]], + ['createpolygonindexes_139',['createPolygonIndexes',['../namespacertabmap_1_1util3d.html#a9ebe11bdf534e3bdbcb2802d5dd70e62',1,'rtabmap::util3d']]], + ['crop_20box_20filtering_140',['Crop Box Filtering',['../group__CropBox.html',1,'']]], + ['cropbox_141',['cropbox',['../group__CropBox.html#ga1302fc8f7569390d2d9a6a66c24f5179',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga32e6cd849848faaccc6b46ba02f98f6b',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga5d5cafb95fb856438e55a0de06378ef7',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga8065c61da2295bf203e4ee7471e9332d',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga1f23604e3b58f73183fe3102dd9f86c9',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga15f14d0a8c9de82ff3ad398fa8c36097',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga0fe7f976bca4c8ec9dd0afa95f590c72',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga43309cd4b35fcbe7a746ccb1dc9a1b4f',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga3b4c45a05e5bc0ff7d4c3917103e4f29',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga20a5eeed65c38958ed5866216f26bd44',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#gaa6737135785f73d1a2f3ec966ab22bc7',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga668e8d0a8a8abd65500bd7e7b748eec2',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga8291151381ff38773e641740b66b93ef',1,'rtabmap::util3d::cropBox(const pcl::PCLPointCloud2::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)']]], + ['currentdir_142',['currentDir',['../classUDirectory.html#a30b3c4e8f81892e5ea04bdab3beba900',1,'UDirectory']]], + ['currentgoalid_143',['currentGoalId',['../classrtabmap_1_1Statistics.html#adae0424da0557be95b6968eecdbc628e',1,'rtabmap::Statistics']]], + ['cvtdepthfromfloat_144',['cvtDepthFromFloat',['../namespacertabmap_1_1util2d.html#a6740b13198a2c437ab51d8e0503f2d33',1,'rtabmap::util2d']]], + ['cvtdepthtofloat_145',['cvtDepthToFloat',['../namespacertabmap_1_1util2d.html#a0e4631bed561b3a694a1a65853221f75',1,'rtabmap::util2d']]], + ['cx_146',['cx',['../classrtabmap_1_1CameraModel.html#af81ee9572d32f69bf0a66cd1f4671c20',1,'rtabmap::CameraModel']]], + ['cy_147',['cy',['../classrtabmap_1_1CameraModel.html#aa3a18f811d3e9db290d01371e078add3',1,'rtabmap::CameraModel']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_6.js b/preview/pr-1773/api/latest/search/all_6.js new file mode 100644 index 00000000..8e5c80e8 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_6.js @@ -0,0 +1,671 @@ +var searchData= +[ + ['d_0',['D',['../classrtabmap_1_1CameraModel.html#a4aa121905a9b2aabb6a3592a6eb7459a',1,'rtabmap::CameraModel']]], + ['d_5fraw_1',['D_raw',['../classrtabmap_1_1CameraModel.html#a88ec7053f4d442c4b1b79803c2840f28',1,'rtabmap::CameraModel']]], + ['data_2',['data',['../classrtabmap_1_1OdometryEvent.html#a19edd3196a5723053ba425186b1f3d33',1,'rtabmap::OdometryEvent::data()'],['../classrtabmap_1_1OdometryEvent.html#ac29fe21e2ba017148dae0dfd9d8c028c',1,'rtabmap::OdometryEvent::data() const'],['../classrtabmap_1_1SensorEvent.html#a02d0ef0c42eab24adb8013a9693e02b1',1,'rtabmap::SensorEvent::data()'],['../classrtabmap_1_1Statistics.html#ab5c8be76435cdfb98c656ccc236f029a',1,'rtabmap::Statistics::data()'],['../classrtabmap_1_1Transform.html#a8db5709fa16ae937c5221b6e8bbbf364',1,'rtabmap::Transform::data()']]], + ['databaserecovery_3',['databaseRecovery',['../namespacertabmap.html#a84468b4bab971b3b8e2c33a746bf7f36',1,'rtabmap']]], + ['datamatrix_4',['dataMatrix',['../classrtabmap_1_1Transform.html#aac41c119a4602f70494380303fe5d277',1,'rtabmap::Transform']]], + ['datasets_5',['Recording and datasets',['../tools.html#autotoc_md6',1,'']]], + ['db_6',['Db',['../parameters.html#autotoc_md13',1,'']]], + ['dbdriver_7',['dbdriver',['../classrtabmap_1_1DBDriver.html',1,'rtabmap::DBDriver'],['../classrtabmap_1_1DBDriver.html#a5f90eb62bb559d42611dbe7ffe11328e',1,'rtabmap::DBDriver::DBDriver()']]], + ['dbdriversqlite3_8',['dbdriversqlite3',['../classrtabmap_1_1DBDriverSqlite3.html',1,'rtabmap::DBDriverSqlite3'],['../classrtabmap_1_1DBDriverSqlite3.html#a471f26a35b093bbd5a59766735a94fd1',1,'rtabmap::DBDriverSqlite3::DBDriverSqlite3()']]], + ['dbreader_9',['DBReader',['../classrtabmap_1_1DBReader.html',1,'rtabmap']]], + ['dbsqlite3_10',['DbSqlite3',['../parameters.html#autotoc_md12',1,'']]], + ['decimate_11',['decimate',['../namespacertabmap_1_1util2d.html#a0b545a9f852684afb0a6d8f835f9eaf2',1,'rtabmap::util2d']]], + ['defaultbayesfullpredictionupdate_12',['defaultBayesFullPredictionUpdate',['../classrtabmap_1_1Parameters.html#acb494af5ed2d49e5d97c7df1b6a38a18',1,'rtabmap::Parameters']]], + ['defaultbayespredictionlc_13',['defaultBayesPredictionLC',['../classrtabmap_1_1Parameters.html#a4c911439d8366cb6a15cc106d051ba70',1,'rtabmap::Parameters']]], + ['defaultbayessparseprediction_14',['defaultBayesSparsePrediction',['../classrtabmap_1_1Parameters.html#a4c7834c4fbf9488336a0d1eb54ba6596',1,'rtabmap::Parameters']]], + ['defaultbayesvirtualplacepriorthr_15',['defaultBayesVirtualPlacePriorThr',['../classrtabmap_1_1Parameters.html#aeb4f9762df3e027594ed16c2028d537e',1,'rtabmap::Parameters']]], + ['defaultbriefbytes_16',['defaultBRIEFBytes',['../classrtabmap_1_1Parameters.html#afed3dda76ce941d77b7572b5556e3ae7',1,'rtabmap::Parameters']]], + ['defaultbriskoctaves_17',['defaultBRISKOctaves',['../classrtabmap_1_1Parameters.html#adf6fc76e9ad8d5155525240e4ef5a266',1,'rtabmap::Parameters']]], + ['defaultbriskpatternscale_18',['defaultBRISKPatternScale',['../classrtabmap_1_1Parameters.html#a697a20070d22285dfe9a3b70495b3883',1,'rtabmap::Parameters']]], + ['defaultbriskthresh_19',['defaultBRISKThresh',['../classrtabmap_1_1Parameters.html#a4e7f9cdbc4f3297c47f8f4e3594d61ef',1,'rtabmap::Parameters']]], + ['defaultdata_20',['defaultData',['../classrtabmap_1_1Statistics.html#a917322822da5565f5c7438849f307c4f',1,'rtabmap::Statistics']]], + ['defaultdbsqlite3cachesize_21',['defaultDbSqlite3CacheSize',['../classrtabmap_1_1Parameters.html#a5a884b150b992f3036e0edd2af41f982',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3inmemory_22',['defaultDbSqlite3InMemory',['../classrtabmap_1_1Parameters.html#a6328492132d4c825c2686be9b14a887f',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3journalmode_23',['defaultDbSqlite3JournalMode',['../classrtabmap_1_1Parameters.html#a092819342dd9653df6c864f005a54002',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3synchronous_24',['defaultDbSqlite3Synchronous',['../classrtabmap_1_1Parameters.html#affc43d17e3aa571ace8661703fc7fe07',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3tempstore_25',['defaultDbSqlite3TempStore',['../classrtabmap_1_1Parameters.html#a4ecff498d7aae4c909823e2470aa42d8',1,'rtabmap::Parameters']]], + ['defaultdbtargetversion_26',['defaultDbTargetVersion',['../classrtabmap_1_1Parameters.html#a75ed80e64e48b43d9fdc78650943c182',1,'rtabmap::Parameters']]], + ['defaultfastcv_27',['defaultFASTCV',['../classrtabmap_1_1Parameters.html#a8e98c4bff1a80612547d3e64af5dec5a',1,'rtabmap::Parameters']]], + ['defaultfastgpu_28',['defaultFASTGpu',['../classrtabmap_1_1Parameters.html#a93ea5d1f5986e5b4369045f43d65a7ff',1,'rtabmap::Parameters']]], + ['defaultfastgpukeypointsratio_29',['defaultFASTGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#afb23ee4d8780efc2c9103bfd01b59b02',1,'rtabmap::Parameters']]], + ['defaultfastgridcols_30',['defaultFASTGridCols',['../classrtabmap_1_1Parameters.html#a1a9a9653aedaf49cc5d23644d364db7e',1,'rtabmap::Parameters']]], + ['defaultfastgridrows_31',['defaultFASTGridRows',['../classrtabmap_1_1Parameters.html#a4766b8fdbe1f9cbb70db5395b6ccddd9',1,'rtabmap::Parameters']]], + ['defaultfastmaxthreshold_32',['defaultFASTMaxThreshold',['../classrtabmap_1_1Parameters.html#a201352771572624a745d46e8e06e06bd',1,'rtabmap::Parameters']]], + ['defaultfastminthreshold_33',['defaultFASTMinThreshold',['../classrtabmap_1_1Parameters.html#a9dd993e3616459eba668ffe59c8c476d',1,'rtabmap::Parameters']]], + ['defaultfastnonmaxsuppression_34',['defaultFASTNonmaxSuppression',['../classrtabmap_1_1Parameters.html#adcf54f387eb8692e7588f51b510d2d7f',1,'rtabmap::Parameters']]], + ['defaultfastthreshold_35',['defaultFASTThreshold',['../classrtabmap_1_1Parameters.html#a45d6c6be39871d8bda5fe5d4fe604178',1,'rtabmap::Parameters']]], + ['defaultfreaknoctaves_36',['defaultFREAKNOctaves',['../classrtabmap_1_1Parameters.html#a054f06d5fe9f1d6b025b06dfd154ab6c',1,'rtabmap::Parameters']]], + ['defaultfreakorientationnormalized_37',['defaultFREAKOrientationNormalized',['../classrtabmap_1_1Parameters.html#a53be4c4eb30ddfa4da53aa5b87798be8',1,'rtabmap::Parameters']]], + ['defaultfreakpatternscale_38',['defaultFREAKPatternScale',['../classrtabmap_1_1Parameters.html#a73d5d5bb6c06505560060456bf0d8f21',1,'rtabmap::Parameters']]], + ['defaultfreakscalenormalized_39',['defaultFREAKScaleNormalized',['../classrtabmap_1_1Parameters.html#ae98cac5e506b63e2c242ed750b089364',1,'rtabmap::Parameters']]], + ['defaultg2ooptimizer_40',['defaultg2oOptimizer',['../classrtabmap_1_1Parameters.html#a01a1c280ff72e8b57b9ee3281d5a9b7b',1,'rtabmap::Parameters']]], + ['defaultg2osolver_41',['defaultg2oSolver',['../classrtabmap_1_1Parameters.html#a7f1b92b3088d718e32d474a31190498a',1,'rtabmap::Parameters']]], + ['defaultgfttblocksize_42',['defaultGFTTBlockSize',['../classrtabmap_1_1Parameters.html#a3ebd63265592876d33e12e4fed155671',1,'rtabmap::Parameters']]], + ['defaultgfttgpu_43',['defaultGFTTGpu',['../classrtabmap_1_1Parameters.html#af8e5d8e3f745dd0df0f59ec1bd864b78',1,'rtabmap::Parameters']]], + ['defaultgfttk_44',['defaultGFTTK',['../classrtabmap_1_1Parameters.html#a335fb3b20d447687808d82e2e0082e18',1,'rtabmap::Parameters']]], + ['defaultgfttmindistance_45',['defaultGFTTMinDistance',['../classrtabmap_1_1Parameters.html#a3a223c759e077983bcf8b3445be5420b',1,'rtabmap::Parameters']]], + ['defaultgfttqualitylevel_46',['defaultGFTTQualityLevel',['../classrtabmap_1_1Parameters.html#ab445c47af2fe642eb50da3e97df547f2',1,'rtabmap::Parameters']]], + ['defaultgfttuseharrisdetector_47',['defaultGFTTUseHarrisDetector',['../classrtabmap_1_1Parameters.html#a69d1e44e3ee6901b066858a2a68b62a9',1,'rtabmap::Parameters']]], + ['defaultgmsthresholdfactor_48',['defaultGMSThresholdFactor',['../classrtabmap_1_1Parameters.html#a9d9022450fb2ed8dc53ed0955c5565f5',1,'rtabmap::Parameters']]], + ['defaultgmswithrotation_49',['defaultGMSWithRotation',['../classrtabmap_1_1Parameters.html#afa02153eae02a863c54686e13b4537f1',1,'rtabmap::Parameters']]], + ['defaultgmswithscale_50',['defaultGMSWithScale',['../classrtabmap_1_1Parameters.html#a346f5e35f0ec8b14df603785b59e7916',1,'rtabmap::Parameters']]], + ['defaultgrid3d_51',['defaultGrid3D',['../classrtabmap_1_1Parameters.html#a0b6eb3bba47924c214f33a281771d8d9',1,'rtabmap::Parameters']]], + ['defaultgridcellsize_52',['defaultGridCellSize',['../classrtabmap_1_1Parameters.html#a96a93b16ce8e0a4126ce6503a6bd5f2d',1,'rtabmap::Parameters']]], + ['defaultgridclusterradius_53',['defaultGridClusterRadius',['../classrtabmap_1_1Parameters.html#ad6a857a91d940c7dbb754c6baa7349ad',1,'rtabmap::Parameters']]], + ['defaultgriddepthdecimation_54',['defaultGridDepthDecimation',['../classrtabmap_1_1Parameters.html#a57bd48a54aaaa5973c8d344e0a92915f',1,'rtabmap::Parameters']]], + ['defaultgriddepthroiratios_55',['defaultGridDepthRoiRatios',['../classrtabmap_1_1Parameters.html#ae6f3eb72ad5123476e03b78cef47f523',1,'rtabmap::Parameters']]], + ['defaultgridflatobstacledetected_56',['defaultGridFlatObstacleDetected',['../classrtabmap_1_1Parameters.html#af0c8e5bb596876f4721823afd95505cb',1,'rtabmap::Parameters']]], + ['defaultgridfootprintheight_57',['defaultGridFootprintHeight',['../classrtabmap_1_1Parameters.html#ab6ee60666b38709085569d70174ebf84',1,'rtabmap::Parameters']]], + ['defaultgridfootprintlength_58',['defaultGridFootprintLength',['../classrtabmap_1_1Parameters.html#a1aa053c04e42ff09046df1377518cc96',1,'rtabmap::Parameters']]], + ['defaultgridfootprintwidth_59',['defaultGridFootprintWidth',['../classrtabmap_1_1Parameters.html#aaf2fc9dd2873ddd03969776c9e832dfa',1,'rtabmap::Parameters']]], + ['defaultgridglobalaltitudedelta_60',['defaultGridGlobalAltitudeDelta',['../classrtabmap_1_1Parameters.html#a11495d14ef327e284d01b65c9c74f3bb',1,'rtabmap::Parameters']]], + ['defaultgridglobaleroded_61',['defaultGridGlobalEroded',['../classrtabmap_1_1Parameters.html#a11677d5287f3b6c0d4b4480b9526bad1',1,'rtabmap::Parameters']]], + ['defaultgridglobalfloodfilldepth_62',['defaultGridGlobalFloodFillDepth',['../classrtabmap_1_1Parameters.html#a4d3ad503a5b8737aa3528ca27b6bee02',1,'rtabmap::Parameters']]], + ['defaultgridglobalfootprintradius_63',['defaultGridGlobalFootprintRadius',['../classrtabmap_1_1Parameters.html#abd9b4c3907b11a093b8576f8e225fd0b',1,'rtabmap::Parameters']]], + ['defaultgridglobalmaxnodes_64',['defaultGridGlobalMaxNodes',['../classrtabmap_1_1Parameters.html#a40f120fb907600ce7992aed2bc10d6f9',1,'rtabmap::Parameters']]], + ['defaultgridglobalminsize_65',['defaultGridGlobalMinSize',['../classrtabmap_1_1Parameters.html#a782ef417fcb895f4c9bd50a7c623e434',1,'rtabmap::Parameters']]], + ['defaultgridglobaloccupancythr_66',['defaultGridGlobalOccupancyThr',['../classrtabmap_1_1Parameters.html#af5cf3655e66ba2f8e86b84af68a2c358',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobclampingmax_67',['defaultGridGlobalProbClampingMax',['../classrtabmap_1_1Parameters.html#af08efafaf8747496a8669fdfcb07d8af',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobclampingmin_68',['defaultGridGlobalProbClampingMin',['../classrtabmap_1_1Parameters.html#a41502bbdd364b10113db122354becb5a',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobhit_69',['defaultGridGlobalProbHit',['../classrtabmap_1_1Parameters.html#a6318e26b58df3545e2968b6d828d395e',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobmiss_70',['defaultGridGlobalProbMiss',['../classrtabmap_1_1Parameters.html#ab69bcf2461998d744f3a6cd3f65b23d8',1,'rtabmap::Parameters']]], + ['defaultgridglobalupdateerror_71',['defaultGridGlobalUpdateError',['../classrtabmap_1_1Parameters.html#a6e25c31658e200cac75e71dd9dd6424f',1,'rtabmap::Parameters']]], + ['defaultgridgroundisobstacle_72',['defaultGridGroundIsObstacle',['../classrtabmap_1_1Parameters.html#a36b39cd7eff09c4c1aeef3c458651670',1,'rtabmap::Parameters']]], + ['defaultgridmapframeprojection_73',['defaultGridMapFrameProjection',['../classrtabmap_1_1Parameters.html#a82ca167bf012afed26ef43c8e870fc34',1,'rtabmap::Parameters']]], + ['defaultgridmaxgroundangle_74',['defaultGridMaxGroundAngle',['../classrtabmap_1_1Parameters.html#a58513dd50061768ea9d3ad1638fce78f',1,'rtabmap::Parameters']]], + ['defaultgridmaxgroundheight_75',['defaultGridMaxGroundHeight',['../classrtabmap_1_1Parameters.html#a2b87b706a55a4b178800bd2f232f1854',1,'rtabmap::Parameters']]], + ['defaultgridmaxobstacleheight_76',['defaultGridMaxObstacleHeight',['../classrtabmap_1_1Parameters.html#a248d9d96681e897e39d1ec93d4185777',1,'rtabmap::Parameters']]], + ['defaultgridminclustersize_77',['defaultGridMinClusterSize',['../classrtabmap_1_1Parameters.html#a101841642b00291cc1c50e6f42442653',1,'rtabmap::Parameters']]], + ['defaultgridmingroundheight_78',['defaultGridMinGroundHeight',['../classrtabmap_1_1Parameters.html#aaf47b8fce88fbd8444775c4e953e3243',1,'rtabmap::Parameters']]], + ['defaultgridnoisefilteringminneighbors_79',['defaultGridNoiseFilteringMinNeighbors',['../classrtabmap_1_1Parameters.html#a7d13e70bb851fc35b34da4f0e58bf41a',1,'rtabmap::Parameters']]], + ['defaultgridnoisefilteringradius_80',['defaultGridNoiseFilteringRadius',['../classrtabmap_1_1Parameters.html#a7aeb29b1f9a2bc1b8c1ba9ab83b445de',1,'rtabmap::Parameters']]], + ['defaultgridnormalk_81',['defaultGridNormalK',['../classrtabmap_1_1Parameters.html#ac0b04b0c1d17cc4927269c09a8b0cf07',1,'rtabmap::Parameters']]], + ['defaultgridnormalssegmentation_82',['defaultGridNormalsSegmentation',['../classrtabmap_1_1Parameters.html#a41e52d754479af71f18e7389fe92ab81',1,'rtabmap::Parameters']]], + ['defaultgridprevoxelfiltering_83',['defaultGridPreVoxelFiltering',['../classrtabmap_1_1Parameters.html#a65bdcf12c06a2b558ed703cba95a6034',1,'rtabmap::Parameters']]], + ['defaultgridrangemax_84',['defaultGridRangeMax',['../classrtabmap_1_1Parameters.html#a58347bba2b64588e462f105bfc35e3f3',1,'rtabmap::Parameters']]], + ['defaultgridrangemin_85',['defaultGridRangeMin',['../classrtabmap_1_1Parameters.html#a8405ef0df1d5abf50bc367a75c3ab7c7',1,'rtabmap::Parameters']]], + ['defaultgridraytracing_86',['defaultGridRayTracing',['../classrtabmap_1_1Parameters.html#a83124bee1f8c7deb63d15f871129b56a',1,'rtabmap::Parameters']]], + ['defaultgridscan2dunknownspacefilled_87',['defaultGridScan2dUnknownSpaceFilled',['../classrtabmap_1_1Parameters.html#a2e953d7c1d784099b5bf9743a155b7f7',1,'rtabmap::Parameters']]], + ['defaultgridscandecimation_88',['defaultGridScanDecimation',['../classrtabmap_1_1Parameters.html#ae3ff9dc2f20c580bcf76f7fa064cca4f',1,'rtabmap::Parameters']]], + ['defaultgridsensor_89',['defaultGridSensor',['../classrtabmap_1_1Parameters.html#acbadf2f07b7bc3f4e766e16c958f7d83',1,'rtabmap::Parameters']]], + ['defaultgtsamincrelinearizeskip_90',['defaultGTSAMIncRelinearizeSkip',['../classrtabmap_1_1Parameters.html#a9655fd620e39777f3f829003b6f3e115',1,'rtabmap::Parameters']]], + ['defaultgtsamincrelinearizethreshold_91',['defaultGTSAMIncRelinearizeThreshold',['../classrtabmap_1_1Parameters.html#a02b3bc870c99fc2c9581e2b7e8e2f790',1,'rtabmap::Parameters']]], + ['defaultgtsamincremental_92',['defaultGTSAMIncremental',['../classrtabmap_1_1Parameters.html#a66c11bfaae450751def3a11a6fdd63e6',1,'rtabmap::Parameters']]], + ['defaultgtsamoptimizer_93',['defaultGTSAMOptimizer',['../classrtabmap_1_1Parameters.html#ad1a81c4592bd2d628badbb53ad767e10',1,'rtabmap::Parameters']]], + ['defaulticpccfilteroutfarthestpoints_94',['defaultIcpCCFilterOutFarthestPoints',['../classrtabmap_1_1Parameters.html#ac70e4c88b147402e0252cf4dec8dbdb5',1,'rtabmap::Parameters']]], + ['defaulticpccmaxfinalrms_95',['defaultIcpCCMaxFinalRMS',['../classrtabmap_1_1Parameters.html#aac51ae7a84230f23c174dede57dcd4c9',1,'rtabmap::Parameters']]], + ['defaulticpccsamplinglimit_96',['defaultIcpCCSamplingLimit',['../classrtabmap_1_1Parameters.html#abff765f21e3216be19abad3c884f41ba',1,'rtabmap::Parameters']]], + ['defaulticpcorrespondenceratio_97',['defaultIcpCorrespondenceRatio',['../classrtabmap_1_1Parameters.html#adfe8c59562a8b2a4c05a577bd246b33f',1,'rtabmap::Parameters']]], + ['defaulticpdebugexportformat_98',['defaultIcpDebugExportFormat',['../classrtabmap_1_1Parameters.html#a66006bf7dd18f8a0de308bbcf0bab014',1,'rtabmap::Parameters']]], + ['defaulticpdownsamplingstep_99',['defaultIcpDownsamplingStep',['../classrtabmap_1_1Parameters.html#a73f22b909b9f8c5f5a90507e413497c6',1,'rtabmap::Parameters']]], + ['defaulticpepsilon_100',['defaultIcpEpsilon',['../classrtabmap_1_1Parameters.html#ae7c659591f51feff0b74a925b26a8ac8',1,'rtabmap::Parameters']]], + ['defaulticpfiltersenabled_101',['defaultIcpFiltersEnabled',['../classrtabmap_1_1Parameters.html#afe98ba19467980deea6f7c792358bccd',1,'rtabmap::Parameters']]], + ['defaulticpforce4dof_102',['defaultIcpForce4DoF',['../classrtabmap_1_1Parameters.html#a86c2803255834b69cc9b5557721c5ed3',1,'rtabmap::Parameters']]], + ['defaulticpiterations_103',['defaultIcpIterations',['../classrtabmap_1_1Parameters.html#a272a33aa43d7ce5adaf1928f619ed1d6',1,'rtabmap::Parameters']]], + ['defaulticpmaxcorrespondencedistance_104',['defaultIcpMaxCorrespondenceDistance',['../classrtabmap_1_1Parameters.html#a2062addb9e1f26d9869c8a8a335c275c',1,'rtabmap::Parameters']]], + ['defaulticpmaxrotation_105',['defaultIcpMaxRotation',['../classrtabmap_1_1Parameters.html#a0fcc69faf752edc0413ffc74e1920bf3',1,'rtabmap::Parameters']]], + ['defaulticpmaxtranslation_106',['defaultIcpMaxTranslation',['../classrtabmap_1_1Parameters.html#a48ad351e07d927c5e5d7078042360ac5',1,'rtabmap::Parameters']]], + ['defaulticpoutlierratio_107',['defaultIcpOutlierRatio',['../classrtabmap_1_1Parameters.html#ad1301dc537bbe67736be508c5e85bf55',1,'rtabmap::Parameters']]], + ['defaulticppmconfig_108',['defaultIcpPMConfig',['../classrtabmap_1_1Parameters.html#a6980f6acce87ef655f8fab7e301db560',1,'rtabmap::Parameters']]], + ['defaulticppmmatcherepsilon_109',['defaultIcpPMMatcherEpsilon',['../classrtabmap_1_1Parameters.html#ac7bc6428c071295fb0a042a7b293e366',1,'rtabmap::Parameters']]], + ['defaulticppmmatcherintensity_110',['defaultIcpPMMatcherIntensity',['../classrtabmap_1_1Parameters.html#a818c7242245d46e324e81dcf77a8792c',1,'rtabmap::Parameters']]], + ['defaulticppmmatcherknn_111',['defaultIcpPMMatcherKnn',['../classrtabmap_1_1Parameters.html#a46b977b4ad9a3c1a7a6dbb6ff9e191ab',1,'rtabmap::Parameters']]], + ['defaulticppointtoplane_112',['defaultIcpPointToPlane',['../classrtabmap_1_1Parameters.html#add9b61da4ce22d5a0f847e48e05968fd',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanecomplexitycentered_113',['defaultIcpPointToPlaneComplexityCentered',['../classrtabmap_1_1Parameters.html#a7921673566fbb71db1143b3c1866b3e5',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanegroundnormalsup_114',['defaultIcpPointToPlaneGroundNormalsUp',['../classrtabmap_1_1Parameters.html#a60ccd48fddfb1c45c371d9827197a982',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanek_115',['defaultIcpPointToPlaneK',['../classrtabmap_1_1Parameters.html#ac1a10501fecebad9b4013b0ff7a8bad7',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanelowcomplexitystrategy_116',['defaultIcpPointToPlaneLowComplexityStrategy',['../classrtabmap_1_1Parameters.html#ad3249c659f7314d8715d109a4df9356b',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanemincomplexity_117',['defaultIcpPointToPlaneMinComplexity',['../classrtabmap_1_1Parameters.html#a37bc1c553ac075d0dde1b5f0df877952',1,'rtabmap::Parameters']]], + ['defaulticppointtoplaneradius_118',['defaultIcpPointToPlaneRadius',['../classrtabmap_1_1Parameters.html#a1856ca425ea0dbce101dee61123c6193',1,'rtabmap::Parameters']]], + ['defaulticprangemax_119',['defaultIcpRangeMax',['../classrtabmap_1_1Parameters.html#a0d045291712292ef1ea4c6be6e414744',1,'rtabmap::Parameters']]], + ['defaulticprangemin_120',['defaultIcpRangeMin',['../classrtabmap_1_1Parameters.html#ac293ef0ededcbe97332e06f9193d7cf2',1,'rtabmap::Parameters']]], + ['defaulticpreciprocalcorrespondences_121',['defaultIcpReciprocalCorrespondences',['../classrtabmap_1_1Parameters.html#a3567fdbac78fa3f98b98fc043e8c06df',1,'rtabmap::Parameters']]], + ['defaulticpstrategy_122',['defaultIcpStrategy',['../classrtabmap_1_1Parameters.html#a460c9b69cba029ac63a92133bb5bd3b6',1,'rtabmap::Parameters']]], + ['defaulticpvoxelsize_123',['defaultIcpVoxelSize',['../classrtabmap_1_1Parameters.html#aefeff456decda53ac6ac935cc34514e1',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarybiasalpha_124',['defaultImuFilterComplementaryBiasAlpha',['../classrtabmap_1_1Parameters.html#aa83213367d3e8ed5a397a32bc7cab340',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarydoadpativegain_125',['defaultImuFilterComplementaryDoAdpativeGain',['../classrtabmap_1_1Parameters.html#a85c221b4112ae51e9fb66e3c0641cea3',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarydobiasestimation_126',['defaultImuFilterComplementaryDoBiasEstimation',['../classrtabmap_1_1Parameters.html#a1227b448cd86787f3947379a5a2b035e',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarygainacc_127',['defaultImuFilterComplementaryGainAcc',['../classrtabmap_1_1Parameters.html#aeab1fce7ec197b0c98d9f59cd3bf0245',1,'rtabmap::Parameters']]], + ['defaultimufiltermadgwickgain_128',['defaultImuFilterMadgwickGain',['../classrtabmap_1_1Parameters.html#a00093b3dc49ed5480355d0032c17002f',1,'rtabmap::Parameters']]], + ['defaultimufiltermadgwickzeta_129',['defaultImuFilterMadgwickZeta',['../classrtabmap_1_1Parameters.html#a506655a4389ba5a6a37d4d59df788d3b',1,'rtabmap::Parameters']]], + ['defaultkazediffusivity_130',['defaultKAZEDiffusivity',['../classrtabmap_1_1Parameters.html#a05fd79f518399c0dd6f9b6fded713c79',1,'rtabmap::Parameters']]], + ['defaultkazeextended_131',['defaultKAZEExtended',['../classrtabmap_1_1Parameters.html#a7cb2bf7a6c30beec554cf991fad5f7d9',1,'rtabmap::Parameters']]], + ['defaultkazenoctavelayers_132',['defaultKAZENOctaveLayers',['../classrtabmap_1_1Parameters.html#a6fff9e155ce10a31f6d3b8e5396d18a2',1,'rtabmap::Parameters']]], + ['defaultkazenoctaves_133',['defaultKAZENOctaves',['../classrtabmap_1_1Parameters.html#abb03d452f7c432f206dd38a675c6ef1e',1,'rtabmap::Parameters']]], + ['defaultkazethreshold_134',['defaultKAZEThreshold',['../classrtabmap_1_1Parameters.html#aff82ed202205cbb380d28bba97820b2c',1,'rtabmap::Parameters']]], + ['defaultkazeupright_135',['defaultKAZEUpright',['../classrtabmap_1_1Parameters.html#a2944dca840e36bf2e0e82a081cde421f',1,'rtabmap::Parameters']]], + ['defaultkpbadsignratio_136',['defaultKpBadSignRatio',['../classrtabmap_1_1Parameters.html#a2d03d0083e112c34d7211c682f12b4b0',1,'rtabmap::Parameters']]], + ['defaultkpbytetofloat_137',['defaultKpByteToFloat',['../classrtabmap_1_1Parameters.html#a65c89efe990caf9872456567afd54c71',1,'rtabmap::Parameters']]], + ['defaultkpdetectorstrategy_138',['defaultKpDetectorStrategy',['../classrtabmap_1_1Parameters.html#afbe9d14ecea943aa7f67375648df0c4e',1,'rtabmap::Parameters']]], + ['defaultkpdictionarypath_139',['defaultKpDictionaryPath',['../classrtabmap_1_1Parameters.html#a554c76ea763b4a63003a059c344e282c',1,'rtabmap::Parameters']]], + ['defaultkpflannindexsaved_140',['defaultKpFlannIndexSaved',['../classrtabmap_1_1Parameters.html#ab13a284ca5975977d5434f6d95fef86b',1,'rtabmap::Parameters']]], + ['defaultkpflannrebalancingfactor_141',['defaultKpFlannRebalancingFactor',['../classrtabmap_1_1Parameters.html#a48c34474ee0a9b6f8862688f2015fce8',1,'rtabmap::Parameters']]], + ['defaultkpflannthreads_142',['defaultKpFlannThreads',['../classrtabmap_1_1Parameters.html#aa4efa328145004e470dac002845d9edf',1,'rtabmap::Parameters']]], + ['defaultkpgridcols_143',['defaultKpGridCols',['../classrtabmap_1_1Parameters.html#aea86ae4c7b844fed4fa2c65a0dffb6e4',1,'rtabmap::Parameters']]], + ['defaultkpgridrows_144',['defaultKpGridRows',['../classrtabmap_1_1Parameters.html#a6ac24bc6ad96363c6172a51ee7bf489c',1,'rtabmap::Parameters']]], + ['defaultkpincrementaldictionary_145',['defaultKpIncrementalDictionary',['../classrtabmap_1_1Parameters.html#ad7274a400277b33267ef1ee69aa528ee',1,'rtabmap::Parameters']]], + ['defaultkpincrementalflann_146',['defaultKpIncrementalFlann',['../classrtabmap_1_1Parameters.html#a66f0bded3fc68132c461caec2347d740',1,'rtabmap::Parameters']]], + ['defaultkpmaxdepth_147',['defaultKpMaxDepth',['../classrtabmap_1_1Parameters.html#a1d5841e95b1f505365866234f89b3d5f',1,'rtabmap::Parameters']]], + ['defaultkpmaxfeatures_148',['defaultKpMaxFeatures',['../classrtabmap_1_1Parameters.html#ab21984b1a150eb9dc439ef3fd12c3410',1,'rtabmap::Parameters']]], + ['defaultkpmindepth_149',['defaultKpMinDepth',['../classrtabmap_1_1Parameters.html#aae97af028948e434ca9a6e48d1f1aa33',1,'rtabmap::Parameters']]], + ['defaultkpnewwordscomparedtogether_150',['defaultKpNewWordsComparedTogether',['../classrtabmap_1_1Parameters.html#a0bfe074e401d001341f2ad33ab860ff9',1,'rtabmap::Parameters']]], + ['defaultkpnndrratio_151',['defaultKpNndrRatio',['../classrtabmap_1_1Parameters.html#aa762b8106f1aa255aaea164c0c6834d8',1,'rtabmap::Parameters']]], + ['defaultkpnnstrategy_152',['defaultKpNNStrategy',['../classrtabmap_1_1Parameters.html#a2df3c573a24040a99c2204b15d40b3af',1,'rtabmap::Parameters']]], + ['defaultkpparallelized_153',['defaultKpParallelized',['../classrtabmap_1_1Parameters.html#a57c85a044e33721d5f74c07ac0bb1774',1,'rtabmap::Parameters']]], + ['defaultkproiratios_154',['defaultKpRoiRatios',['../classrtabmap_1_1Parameters.html#a6eb23a4101a03899cb749844d643a031',1,'rtabmap::Parameters']]], + ['defaultkpserializewithchecksum_155',['defaultKpSerializeWithChecksum',['../classrtabmap_1_1Parameters.html#a27931d62192448763f478b5c64dffa6f',1,'rtabmap::Parameters']]], + ['defaultkpssc_156',['defaultKpSSC',['../classrtabmap_1_1Parameters.html#a5f430747d74d7df265f20a5c83290ce9',1,'rtabmap::Parameters']]], + ['defaultkpsubpixeps_157',['defaultKpSubPixEps',['../classrtabmap_1_1Parameters.html#a65d5b01115225f787942f558ae03c8da',1,'rtabmap::Parameters']]], + ['defaultkpsubpixiterations_158',['defaultKpSubPixIterations',['../classrtabmap_1_1Parameters.html#aa3759274713c3872bf8712e6176ef029',1,'rtabmap::Parameters']]], + ['defaultkpsubpixwinsize_159',['defaultKpSubPixWinSize',['../classrtabmap_1_1Parameters.html#a1237fc0d0c27b7e9e02b2c0781e9eaec',1,'rtabmap::Parameters']]], + ['defaultkptfidflikelihoodused_160',['defaultKpTfIdfLikelihoodUsed',['../classrtabmap_1_1Parameters.html#a899ab46fdc89303e0eca550c20d49f97',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagdebug_161',['defaultMarkerAprilTagDebug',['../classrtabmap_1_1Parameters.html#ac64439e547bca975dffbc4e1e2d7d323',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagdecodesharpening_162',['defaultMarkerAprilTagDecodeSharpening',['../classrtabmap_1_1Parameters.html#ac71c241a47b182a2397b667aecc2db60',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagnthreads_163',['defaultMarkerAprilTagNThreads',['../classrtabmap_1_1Parameters.html#a2bbec969b470dce7e649350ad6cec3ba',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagquaddecimate_164',['defaultMarkerAprilTagQuadDecimate',['../classrtabmap_1_1Parameters.html#af1bf0c1f974d3a6f7af71ba86e362054',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagquadsigma_165',['defaultMarkerAprilTagQuadSigma',['../classrtabmap_1_1Parameters.html#a46902165a0506cf367120c75fc0bdadb',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagrefineedges_166',['defaultMarkerAprilTagRefineEdges',['../classrtabmap_1_1Parameters.html#ace2768173b1e4dd7c4c90313df1a6687',1,'rtabmap::Parameters']]], + ['defaultmarkerdictionary_167',['defaultMarkerDictionary',['../classrtabmap_1_1Parameters.html#a89e4e2adc1501701afcb33b835a019c1',1,'rtabmap::Parameters']]], + ['defaultmarkerlength_168',['defaultMarkerLength',['../classrtabmap_1_1Parameters.html#ae807eaa877eeb5ecbfc633ef746cdca7',1,'rtabmap::Parameters']]], + ['defaultmarkerlengths_169',['defaultMarkerLengths',['../classrtabmap_1_1Parameters.html#a200c43f96c1a74b1a0bffb44b0e3b0b7',1,'rtabmap::Parameters']]], + ['defaultmarkermaxdeptherror_170',['defaultMarkerMaxDepthError',['../classrtabmap_1_1Parameters.html#a1a22d9e421f766a7e14b6ff60bea1c5c',1,'rtabmap::Parameters']]], + ['defaultmarkermaxrange_171',['defaultMarkerMaxRange',['../classrtabmap_1_1Parameters.html#a10a1eb6ba4c13f00b2859bcbf2ca75bf',1,'rtabmap::Parameters']]], + ['defaultmarkerminrange_172',['defaultMarkerMinRange',['../classrtabmap_1_1Parameters.html#ada7dff5d592bb160272f6056fb9712b4',1,'rtabmap::Parameters']]], + ['defaultmarkeropencvcornerrefinementmethod_173',['defaultMarkerOpenCVCornerRefinementMethod',['../classrtabmap_1_1Parameters.html#ad3ea4f4e9a55812e44b336f515e58107',1,'rtabmap::Parameters']]], + ['defaultmarkerpriors_174',['defaultMarkerPriors',['../classrtabmap_1_1Parameters.html#a967c0591e9b4a922f266e569f4872ab2',1,'rtabmap::Parameters']]], + ['defaultmarkerpriorsvarianceangular_175',['defaultMarkerPriorsVarianceAngular',['../classrtabmap_1_1Parameters.html#a0d6c4002cfe7b213dc76655d011fe586',1,'rtabmap::Parameters']]], + ['defaultmarkerpriorsvariancelinear_176',['defaultMarkerPriorsVarianceLinear',['../classrtabmap_1_1Parameters.html#a5f8b4750c25c3b11c26aa6e65534fa7a',1,'rtabmap::Parameters']]], + ['defaultmarkerstrategy_177',['defaultMarkerStrategy',['../classrtabmap_1_1Parameters.html#ae1e284597b4137aa16e0462c545b27b7',1,'rtabmap::Parameters']]], + ['defaultmarkervarianceangular_178',['defaultMarkerVarianceAngular',['../classrtabmap_1_1Parameters.html#a4685a5901c92910d199cc9232e682888',1,'rtabmap::Parameters']]], + ['defaultmarkervariancelinear_179',['defaultMarkerVarianceLinear',['../classrtabmap_1_1Parameters.html#ae68320748306e51bfac2d41d752c2f60',1,'rtabmap::Parameters']]], + ['defaultmarkervarianceorientationignored_180',['defaultMarkerVarianceOrientationIgnored',['../classrtabmap_1_1Parameters.html#ad02a68ccc38dfe99c474bce7f8c1beb8',1,'rtabmap::Parameters']]], + ['defaultmembadsignaturesignored_181',['defaultMemBadSignaturesIgnored',['../classrtabmap_1_1Parameters.html#a05100dbe754fe80f80e295f8488db2bf',1,'rtabmap::Parameters']]], + ['defaultmembindatakept_182',['defaultMemBinDataKept',['../classrtabmap_1_1Parameters.html#a8de7d48c83fb6e01445aba0db8ae0757',1,'rtabmap::Parameters']]], + ['defaultmemcompressionparallelized_183',['defaultMemCompressionParallelized',['../classrtabmap_1_1Parameters.html#a18f0b2d1533598f44bc24068bb2037bf',1,'rtabmap::Parameters']]], + ['defaultmemcovoffdiagignored_184',['defaultMemCovOffDiagIgnored',['../classrtabmap_1_1Parameters.html#a9d6f381a9a0b59483fe9bfbfdda561ef',1,'rtabmap::Parameters']]], + ['defaultmemdepthasmask_185',['defaultMemDepthAsMask',['../classrtabmap_1_1Parameters.html#a0b951157e5f4d13eaf02a9fcc96e4fe7',1,'rtabmap::Parameters']]], + ['defaultmemdepthcompressionformat_186',['defaultMemDepthCompressionFormat',['../classrtabmap_1_1Parameters.html#a910b2ae89d8052dd47a351ec70837fff',1,'rtabmap::Parameters']]], + ['defaultmemdepthmaskfloorthr_187',['defaultMemDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#ab67a80c58f1fe6229f495b562aab4dff',1,'rtabmap::Parameters']]], + ['defaultmemgenerateids_188',['defaultMemGenerateIds',['../classrtabmap_1_1Parameters.html#ad20f4bc73ba55bf59e363f8954ae0093',1,'rtabmap::Parameters']]], + ['defaultmemglobaldescriptorstrategy_189',['defaultMemGlobalDescriptorStrategy',['../classrtabmap_1_1Parameters.html#ae8628f043403b1e6b5d151e4502966a1',1,'rtabmap::Parameters']]], + ['defaultmemimagecompressionformat_190',['defaultMemImageCompressionFormat',['../classrtabmap_1_1Parameters.html#a93e3a1a8e17c89b5bd296b2e46e01f59',1,'rtabmap::Parameters']]], + ['defaultmemimagekept_191',['defaultMemImageKept',['../classrtabmap_1_1Parameters.html#a7acd099f792c408938369a5d6ac2cbb4',1,'rtabmap::Parameters']]], + ['defaultmemimagepostdecimation_192',['defaultMemImagePostDecimation',['../classrtabmap_1_1Parameters.html#a1e10a4ffe99aebfb52a875786da93942',1,'rtabmap::Parameters']]], + ['defaultmemimagepredecimation_193',['defaultMemImagePreDecimation',['../classrtabmap_1_1Parameters.html#a38e39c920f79b924fe4a72851b0f2369',1,'rtabmap::Parameters']]], + ['defaultmemincrementalmemory_194',['defaultMemIncrementalMemory',['../classrtabmap_1_1Parameters.html#a8bb38651262b700eac115e843fd4052b',1,'rtabmap::Parameters']]], + ['defaultmeminitwmwithallnodes_195',['defaultMemInitWMWithAllNodes',['../classrtabmap_1_1Parameters.html#a219e4eb04a5a4ed9ec18c21fe7358feb',1,'rtabmap::Parameters']]], + ['defaultmemintermediatenodedatakept_196',['defaultMemIntermediateNodeDataKept',['../classrtabmap_1_1Parameters.html#aa0833629878456d49d6b9abeda19154a',1,'rtabmap::Parameters']]], + ['defaultmemlaserscandownsamplestepsize_197',['defaultMemLaserScanDownsampleStepSize',['../classrtabmap_1_1Parameters.html#ab2a7153ce501d4e3b5fbcc67451ffa2b',1,'rtabmap::Parameters']]], + ['defaultmemlaserscannormalk_198',['defaultMemLaserScanNormalK',['../classrtabmap_1_1Parameters.html#a3b3da0e74eb2eb6953af5f4093ebf636',1,'rtabmap::Parameters']]], + ['defaultmemlaserscannormalradius_199',['defaultMemLaserScanNormalRadius',['../classrtabmap_1_1Parameters.html#a996ec0a78373510fd9fa3a1e809f72e3',1,'rtabmap::Parameters']]], + ['defaultmemlaserscanvoxelsize_200',['defaultMemLaserScanVoxelSize',['../classrtabmap_1_1Parameters.html#a0a452f952823c8515d8c0445cd3a3e7e',1,'rtabmap::Parameters']]], + ['defaultmemloadvisuallocalfeaturesoninit_201',['defaultMemLoadVisualLocalFeaturesOnInit',['../classrtabmap_1_1Parameters.html#ac9f8a3dde1fdbf9d12c916dd64816577',1,'rtabmap::Parameters']]], + ['defaultmemlocalizationdatasaved_202',['defaultMemLocalizationDataSaved',['../classrtabmap_1_1Parameters.html#af371caa7510c244cf2e77f9517e20c87',1,'rtabmap::Parameters']]], + ['defaultmemlocalizationreadonly_203',['defaultMemLocalizationReadOnly',['../classrtabmap_1_1Parameters.html#a8a28e4d7255ffc9748111478f123e92c',1,'rtabmap::Parameters']]], + ['defaultmemmaplabelsadded_204',['defaultMemMapLabelsAdded',['../classrtabmap_1_1Parameters.html#a314d269c542216bc1648a941749769a3',1,'rtabmap::Parameters']]], + ['defaultmemnotlinkednodeskept_205',['defaultMemNotLinkedNodesKept',['../classrtabmap_1_1Parameters.html#a0378f5c6c5fa962273e14b4abf16c3b7',1,'rtabmap::Parameters']]], + ['defaultmemrawdescriptorskept_206',['defaultMemRawDescriptorsKept',['../classrtabmap_1_1Parameters.html#afdd68706f173ac772c09e5bdf8506e47',1,'rtabmap::Parameters']]], + ['defaultmemrecentwmratio_207',['defaultMemRecentWmRatio',['../classrtabmap_1_1Parameters.html#a2d08f0a0bf9f1971b5f0e050189a822a',1,'rtabmap::Parameters']]], + ['defaultmemreducegraph_208',['defaultMemReduceGraph',['../classrtabmap_1_1Parameters.html#ac798d107c6adf5eec5afa92f9bde20f1',1,'rtabmap::Parameters']]], + ['defaultmemrehearsalidupdatedtonewone_209',['defaultMemRehearsalIdUpdatedToNewOne',['../classrtabmap_1_1Parameters.html#a3a7129fc995fbdcdb40aba94242e73a8',1,'rtabmap::Parameters']]], + ['defaultmemrehearsalsimilarity_210',['defaultMemRehearsalSimilarity',['../classrtabmap_1_1Parameters.html#a24fc112f4a843966f15b7547ed7774fc',1,'rtabmap::Parameters']]], + ['defaultmemrehearsalweightignoredwhilemoving_211',['defaultMemRehearsalWeightIgnoredWhileMoving',['../classrtabmap_1_1Parameters.html#a4a2f8b6aed34584b1b68e88b95bbf3c0',1,'rtabmap::Parameters']]], + ['defaultmemrotateimagesupsideup_212',['defaultMemRotateImagesUpsideUp',['../classrtabmap_1_1Parameters.html#a14b56aaa304f0a16640ab233cdf51699',1,'rtabmap::Parameters']]], + ['defaultmemsavedepth16format_213',['defaultMemSaveDepth16Format',['../classrtabmap_1_1Parameters.html#ae23d9e42dbfbf5221f40828212b95dbc',1,'rtabmap::Parameters']]], + ['defaultmemstereofrommotion_214',['defaultMemStereoFromMotion',['../classrtabmap_1_1Parameters.html#ab9c856a18e3b60843eef5d263095354f',1,'rtabmap::Parameters']]], + ['defaultmemstmsize_215',['defaultMemSTMSize',['../classrtabmap_1_1Parameters.html#ab5a017cb8ba362dcc65ef27af01ee68e',1,'rtabmap::Parameters']]], + ['defaultmemtransfersortingbyweightid_216',['defaultMemTransferSortingByWeightId',['../classrtabmap_1_1Parameters.html#a3872c9c529790aa5ec13b3db08889936',1,'rtabmap::Parameters']]], + ['defaultmemuseodomfeatures_217',['defaultMemUseOdomFeatures',['../classrtabmap_1_1Parameters.html#aea6bd00c7845c08d64ed8ce0942c6b5d',1,'rtabmap::Parameters']]], + ['defaultmemuseodomgravity_218',['defaultMemUseOdomGravity',['../classrtabmap_1_1Parameters.html#aaf12cf04eca49960b331182d933b3525',1,'rtabmap::Parameters']]], + ['defaultodomalignwithground_219',['defaultOdomAlignWithGround',['../classrtabmap_1_1Parameters.html#adf61806ebca30c99cc61708a03487069',1,'rtabmap::Parameters']]], + ['defaultodomcuvslammulticammode_220',['defaultOdomCuVSLAMMulticamMode',['../classrtabmap_1_1Parameters.html#a6321edd033cc8dda8df213b2a3b27bbb',1,'rtabmap::Parameters']]], + ['defaultodomdeskewing_221',['defaultOdomDeskewing',['../classrtabmap_1_1Parameters.html#a3a8263972a698faa1da37e4f2007a8d3',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustment_222',['defaultOdomF2MBundleAdjustment',['../classrtabmap_1_1Parameters.html#a3e1eb21d9993f959bd5092006d76abf4',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustmentmaxframes_223',['defaultOdomF2MBundleAdjustmentMaxFrames',['../classrtabmap_1_1Parameters.html#a45e8427292d5400170b1212abcec6521',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustmentmaxkeyframesperfeature_224',['defaultOdomF2MBundleAdjustmentMaxKeyFramesPerFeature',['../classrtabmap_1_1Parameters.html#a5a9009e5400a8c41f0e8685ac5cdeb27',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustmentminmotion_225',['defaultOdomF2MBundleAdjustmentMinMotion',['../classrtabmap_1_1Parameters.html#a9fa254f3db2fa2571e0cdc235836d4d8',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleupdatefeaturemaponallframes_226',['defaultOdomF2MBundleUpdateFeatureMapOnAllFrames',['../classrtabmap_1_1Parameters.html#a90664ff4e25f23f644e4acaaa7457e70',1,'rtabmap::Parameters']]], + ['defaultodomf2mfloorthreshold_227',['defaultOdomF2MFloorThreshold',['../classrtabmap_1_1Parameters.html#afb4da34908495ef75b835dc29db5433a',1,'rtabmap::Parameters']]], + ['defaultodomf2minitdepthfactor_228',['defaultOdomF2MInitDepthFactor',['../classrtabmap_1_1Parameters.html#a29e7c5e7d4c6f267fe1ae81612bbc405',1,'rtabmap::Parameters']]], + ['defaultodomf2mmaxnewfeatures_229',['defaultOdomF2MMaxNewFeatures',['../classrtabmap_1_1Parameters.html#a38b8eb922697a26d2ac49b66d3820d4d',1,'rtabmap::Parameters']]], + ['defaultodomf2mmaxsize_230',['defaultOdomF2MMaxSize',['../classrtabmap_1_1Parameters.html#a497cfa082354a36a2904b4e599ea4037',1,'rtabmap::Parameters']]], + ['defaultodomf2mscanmaxsize_231',['defaultOdomF2MScanMaxSize',['../classrtabmap_1_1Parameters.html#ae114fc8566cbe5a8eb542a9ececb5edf',1,'rtabmap::Parameters']]], + ['defaultodomf2mscanrange_232',['defaultOdomF2MScanRange',['../classrtabmap_1_1Parameters.html#afb0502573b7b34b6a4d2f8528724a9ff',1,'rtabmap::Parameters']]], + ['defaultodomf2mscansubtractangle_233',['defaultOdomF2MScanSubtractAngle',['../classrtabmap_1_1Parameters.html#a6fd50e45fa9efdbacb4747378959884c',1,'rtabmap::Parameters']]], + ['defaultodomf2mscansubtractradius_234',['defaultOdomF2MScanSubtractRadius',['../classrtabmap_1_1Parameters.html#a3cf5aa47d0837e8ec65d714e1c112b81',1,'rtabmap::Parameters']]], + ['defaultodomf2mvaliddepthratio_235',['defaultOdomF2MValidDepthRatio',['../classrtabmap_1_1Parameters.html#abfb4c6fd15bcfa071bed540c0f7e96d8',1,'rtabmap::Parameters']]], + ['defaultodomfillinfodata_236',['defaultOdomFillInfoData',['../classrtabmap_1_1Parameters.html#aec72ae27f91cc9e12b3353396993b478',1,'rtabmap::Parameters']]], + ['defaultodomfilteringstrategy_237',['defaultOdomFilteringStrategy',['../classrtabmap_1_1Parameters.html#a8b370a112ae85e9825286591d27bcdaa',1,'rtabmap::Parameters']]], + ['defaultodomfovisbucketheight_238',['defaultOdomFovisBucketHeight',['../classrtabmap_1_1Parameters.html#a7f22415d7908d094c5aa015b440420b7',1,'rtabmap::Parameters']]], + ['defaultodomfovisbucketwidth_239',['defaultOdomFovisBucketWidth',['../classrtabmap_1_1Parameters.html#adf69c49e64a7385b9325dd8e423e69bf',1,'rtabmap::Parameters']]], + ['defaultodomfoviscliqueinlierthreshold_240',['defaultOdomFovisCliqueInlierThreshold',['../classrtabmap_1_1Parameters.html#ad5f6221218799efca22c96585cd24545',1,'rtabmap::Parameters']]], + ['defaultodomfovisfastthreshold_241',['defaultOdomFovisFastThreshold',['../classrtabmap_1_1Parameters.html#a700a47acc644e78198e9badaa6cde066',1,'rtabmap::Parameters']]], + ['defaultodomfovisfastthresholdadaptivegain_242',['defaultOdomFovisFastThresholdAdaptiveGain',['../classrtabmap_1_1Parameters.html#ac3a040582a539045a65f8fc0b6d74a8d',1,'rtabmap::Parameters']]], + ['defaultodomfovisfeaturesearchwindow_243',['defaultOdomFovisFeatureSearchWindow',['../classrtabmap_1_1Parameters.html#af9404a130353bb7b64882e6e50ccb006',1,'rtabmap::Parameters']]], + ['defaultodomfovisfeaturewindowsize_244',['defaultOdomFovisFeatureWindowSize',['../classrtabmap_1_1Parameters.html#ade2e444ac97aad41fe71fea20af57d3a',1,'rtabmap::Parameters']]], + ['defaultodomfovisinliermaxreprojectionerror_245',['defaultOdomFovisInlierMaxReprojectionError',['../classrtabmap_1_1Parameters.html#a07aba043390fbb0ea5b544e451586cf6',1,'rtabmap::Parameters']]], + ['defaultodomfovismaxkeypointsperbucket_246',['defaultOdomFovisMaxKeypointsPerBucket',['../classrtabmap_1_1Parameters.html#aa0baa7c864efff0adeed5bf108eac6df',1,'rtabmap::Parameters']]], + ['defaultodomfovismaxmeanreprojectionerror_247',['defaultOdomFovisMaxMeanReprojectionError',['../classrtabmap_1_1Parameters.html#aba0b8f4e74cebe20ecc10f8f76323d24',1,'rtabmap::Parameters']]], + ['defaultodomfovismaxpyramidlevel_248',['defaultOdomFovisMaxPyramidLevel',['../classrtabmap_1_1Parameters.html#acd133e19a601529b581c0d80bcd5eb37',1,'rtabmap::Parameters']]], + ['defaultodomfovisminfeaturesforestimate_249',['defaultOdomFovisMinFeaturesForEstimate',['../classrtabmap_1_1Parameters.html#a414caf76d6a6517bdb3d2ec0900771e4',1,'rtabmap::Parameters']]], + ['defaultodomfovisminpyramidlevel_250',['defaultOdomFovisMinPyramidLevel',['../classrtabmap_1_1Parameters.html#ad14afed75e7df64906231c198ead9806',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereomaxdisparity_251',['defaultOdomFovisStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a3751cc3828e192dce707f57f74f34593',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereomaxdistepipolarline_252',['defaultOdomFovisStereoMaxDistEpipolarLine',['../classrtabmap_1_1Parameters.html#a498b781dbbcafed78d27643512b36f3c',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereomaxrefinementdisplacement_253',['defaultOdomFovisStereoMaxRefinementDisplacement',['../classrtabmap_1_1Parameters.html#a5799a6d9934061ad97c29a106f07c86e',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereorequiremutualmatch_254',['defaultOdomFovisStereoRequireMutualMatch',['../classrtabmap_1_1Parameters.html#a8b59dc119f3c1dabddf99239a32cc44f',1,'rtabmap::Parameters']]], + ['defaultodomfovistargetpixelsperfeature_255',['defaultOdomFovisTargetPixelsPerFeature',['../classrtabmap_1_1Parameters.html#ad75316aad624c6d6b899eb4dc7953434',1,'rtabmap::Parameters']]], + ['defaultodomfovisupdatetargetfeatureswithrefined_256',['defaultOdomFovisUpdateTargetFeaturesWithRefined',['../classrtabmap_1_1Parameters.html#ad58b3bace690a5ac77d67961f2b613f0',1,'rtabmap::Parameters']]], + ['defaultodomfovisuseadaptivethreshold_257',['defaultOdomFovisUseAdaptiveThreshold',['../classrtabmap_1_1Parameters.html#a2575d8ba3b70f26f0f9bc3bc9d885c49',1,'rtabmap::Parameters']]], + ['defaultodomfovisusebucketing_258',['defaultOdomFovisUseBucketing',['../classrtabmap_1_1Parameters.html#a0ff03d3e381396c8d29cfe7bb2634a61',1,'rtabmap::Parameters']]], + ['defaultodomfovisusehomographyinitialization_259',['defaultOdomFovisUseHomographyInitialization',['../classrtabmap_1_1Parameters.html#a316f11d7c192cb395ff72a15e708aea0',1,'rtabmap::Parameters']]], + ['defaultodomfovisuseimagenormalization_260',['defaultOdomFovisUseImageNormalization',['../classrtabmap_1_1Parameters.html#a5fa1e186fb28299644211763eeda696b',1,'rtabmap::Parameters']]], + ['defaultodomfovisusesubpixelrefinement_261',['defaultOdomFovisUseSubpixelRefinement',['../classrtabmap_1_1Parameters.html#a07297e9e7f311987fbd154b6348145e3',1,'rtabmap::Parameters']]], + ['defaultodomguessmotion_262',['defaultOdomGuessMotion',['../classrtabmap_1_1Parameters.html#aed75497245cb08a0d126dc4e5abc2c19',1,'rtabmap::Parameters']]], + ['defaultodomguesssmoothingdelay_263',['defaultOdomGuessSmoothingDelay',['../classrtabmap_1_1Parameters.html#ab92e1ac2b4bcdcc6551533aaf19aa4e2',1,'rtabmap::Parameters']]], + ['defaultodomholonomic_264',['defaultOdomHolonomic',['../classrtabmap_1_1Parameters.html#aa016823429e4d0f9253f8815583cf890',1,'rtabmap::Parameters']]], + ['defaultodomimagebuffersize_265',['defaultOdomImageBufferSize',['../classrtabmap_1_1Parameters.html#a7007e291b876f4c3c78b17639e547aae',1,'rtabmap::Parameters']]], + ['defaultodomimagedecimation_266',['defaultOdomImageDecimation',['../classrtabmap_1_1Parameters.html#a29925c5f81033bf7841a302e30b336ce',1,'rtabmap::Parameters']]], + ['defaultodomkalmanmeasurementnoise_267',['defaultOdomKalmanMeasurementNoise',['../classrtabmap_1_1Parameters.html#a1b74baad5e6ec5c35f35522c8941dc18',1,'rtabmap::Parameters']]], + ['defaultodomkalmanprocessnoise_268',['defaultOdomKalmanProcessNoise',['../classrtabmap_1_1Parameters.html#a1c5361e55edddc9fcf941a0e79ca6622',1,'rtabmap::Parameters']]], + ['defaultodomkeyframethr_269',['defaultOdomKeyFrameThr',['../classrtabmap_1_1Parameters.html#aebbba0733b605dffc9d3e09cc6c5f4c8',1,'rtabmap::Parameters']]], + ['defaultodomliosamangvar_270',['defaultOdomLIOSAMAngVar',['../classrtabmap_1_1Parameters.html#a575f1579dff09f3e994a1c240806df02',1,'rtabmap::Parameters']]], + ['defaultodomliosamconfigpath_271',['defaultOdomLIOSAMConfigPath',['../classrtabmap_1_1Parameters.html#ae647bfc8e912c2a3a12ba0b1a9073c3a',1,'rtabmap::Parameters']]], + ['defaultodomliosamedgethreshold_272',['defaultOdomLIOSAMEdgeThreshold',['../classrtabmap_1_1Parameters.html#aea09c42680d231381944fd0791fdd09a',1,'rtabmap::Parameters']]], + ['defaultodomliosamhorizonscan_273',['defaultOdomLIOSAMHorizonScan',['../classrtabmap_1_1Parameters.html#ae313ad29097b20594b73820d00dcdfeb',1,'rtabmap::Parameters']]], + ['defaultodomliosamimuaccbiasn_274',['defaultOdomLIOSAMImuAccBiasN',['../classrtabmap_1_1Parameters.html#a847625d6ff1cc59c2c3de02fd3c2e36b',1,'rtabmap::Parameters']]], + ['defaultodomliosamimuaccnoise_275',['defaultOdomLIOSAMImuAccNoise',['../classrtabmap_1_1Parameters.html#a099f2325458ade22804d20d84dfeee3e',1,'rtabmap::Parameters']]], + ['defaultodomliosamimugravity_276',['defaultOdomLIOSAMImuGravity',['../classrtabmap_1_1Parameters.html#ab07bee4cad6abb0d74b2b229340a0923',1,'rtabmap::Parameters']]], + ['defaultodomliosamimugyrbiasn_277',['defaultOdomLIOSAMImuGyrBiasN',['../classrtabmap_1_1Parameters.html#a6ad4b345fb908c819f48b0da6c26391d',1,'rtabmap::Parameters']]], + ['defaultodomliosamimugyrnoise_278',['defaultOdomLIOSAMImuGyrNoise',['../classrtabmap_1_1Parameters.html#a6ccf979b8a2b786a4fa5310ecccd66cb',1,'rtabmap::Parameters']]], + ['defaultodomliosamlinvar_279',['defaultOdomLIOSAMLinVar',['../classrtabmap_1_1Parameters.html#a4ae6a37370f77e3576cbbf7aba5c5197',1,'rtabmap::Parameters']]], + ['defaultodomliosamnscan_280',['defaultOdomLIOSAMNScan',['../classrtabmap_1_1Parameters.html#aaba2ce4d92d139f3b114c1ffce133091',1,'rtabmap::Parameters']]], + ['defaultodomliosamsensor_281',['defaultOdomLIOSAMSensor',['../classrtabmap_1_1Parameters.html#ad936440b9718d013ae4e0c229c6c3e04',1,'rtabmap::Parameters']]], + ['defaultodomliosamsurfthreshold_282',['defaultOdomLIOSAMSurfThreshold',['../classrtabmap_1_1Parameters.html#abcc86ef38c56a0a8cc7160aacbbc6d7d',1,'rtabmap::Parameters']]], + ['defaultodomloamangvar_283',['defaultOdomLOAMAngVar',['../classrtabmap_1_1Parameters.html#aef9c223d75c418dad360cc5d48c1c89f',1,'rtabmap::Parameters']]], + ['defaultodomloamlinvar_284',['defaultOdomLOAMLinVar',['../classrtabmap_1_1Parameters.html#af993c5440d36205803d38a777961da54',1,'rtabmap::Parameters']]], + ['defaultodomloamlocalmapping_285',['defaultOdomLOAMLocalMapping',['../classrtabmap_1_1Parameters.html#a8d70548d0c38720f159fe017bf56858d',1,'rtabmap::Parameters']]], + ['defaultodomloamresolution_286',['defaultOdomLOAMResolution',['../classrtabmap_1_1Parameters.html#a46bf5542610081e2ef578d11c2117313',1,'rtabmap::Parameters']]], + ['defaultodomloamscanperiod_287',['defaultOdomLOAMScanPeriod',['../classrtabmap_1_1Parameters.html#ab969f8e8af3d39234d8c56091750de5f',1,'rtabmap::Parameters']]], + ['defaultodomloamsensor_288',['defaultOdomLOAMSensor',['../classrtabmap_1_1Parameters.html#a08c6c9c804fb52cc3c982371603908bc',1,'rtabmap::Parameters']]], + ['defaultodommonoinitminflow_289',['defaultOdomMonoInitMinFlow',['../classrtabmap_1_1Parameters.html#a7f65ed004403fa9edbbff3e6405ca891',1,'rtabmap::Parameters']]], + ['defaultodommonoinitmintranslation_290',['defaultOdomMonoInitMinTranslation',['../classrtabmap_1_1Parameters.html#a1ac667c7a48be31fb51e082993277d5f',1,'rtabmap::Parameters']]], + ['defaultodommonomaxvariance_291',['defaultOdomMonoMaxVariance',['../classrtabmap_1_1Parameters.html#a6e45d5c403607f445dfcad384358ac74',1,'rtabmap::Parameters']]], + ['defaultodommonomintranslation_292',['defaultOdomMonoMinTranslation',['../classrtabmap_1_1Parameters.html#a16f3c3aa628f68e2606a94baa4b304ef',1,'rtabmap::Parameters']]], + ['defaultodommsckffastthreshold_293',['defaultOdomMSCKFFastThreshold',['../classrtabmap_1_1Parameters.html#a8f705436db08f88c518f74ac1acd9037',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridcol_294',['defaultOdomMSCKFGridCol',['../classrtabmap_1_1Parameters.html#a1e184b7a26a82b3d94a95353358d0349',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridmaxfeaturenum_295',['defaultOdomMSCKFGridMaxFeatureNum',['../classrtabmap_1_1Parameters.html#a774387049daba9119d2eb85f3e687fb4',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridminfeaturenum_296',['defaultOdomMSCKFGridMinFeatureNum',['../classrtabmap_1_1Parameters.html#ae0f2a06ff72491ddd8c4119d504accce',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridrow_297',['defaultOdomMSCKFGridRow',['../classrtabmap_1_1Parameters.html#ae9d193a2dddd7cf9fc15d589f2c47411',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovaccbias_298',['defaultOdomMSCKFInitCovAccBias',['../classrtabmap_1_1Parameters.html#a445bd24bdd34a0aa27fcf5ff36a47364',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovexrot_299',['defaultOdomMSCKFInitCovExRot',['../classrtabmap_1_1Parameters.html#a67a5d1eb0f678ac399bb467e011ac403',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovextrans_300',['defaultOdomMSCKFInitCovExTrans',['../classrtabmap_1_1Parameters.html#a1a1228eec668c42f7358c69caec0ee70',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovgyrobias_301',['defaultOdomMSCKFInitCovGyroBias',['../classrtabmap_1_1Parameters.html#a1c218ac5a9a5e97a602829ca5c5c9cdf',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovvel_302',['defaultOdomMSCKFInitCovVel',['../classrtabmap_1_1Parameters.html#a2419769d93949fc1f097d002c9c20c22',1,'rtabmap::Parameters']]], + ['defaultodommsckfmaxcamstatesize_303',['defaultOdomMSCKFMaxCamStateSize',['../classrtabmap_1_1Parameters.html#ad2a521ea5f3a2b1eb48cb0613542ddb2',1,'rtabmap::Parameters']]], + ['defaultodommsckfmaxiteration_304',['defaultOdomMSCKFMaxIteration',['../classrtabmap_1_1Parameters.html#a228a84611344d7db43d4d14eaffdf15e',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoiseacc_305',['defaultOdomMSCKFNoiseAcc',['../classrtabmap_1_1Parameters.html#ac3637861797af117354619b13a63e6de',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoiseaccbias_306',['defaultOdomMSCKFNoiseAccBias',['../classrtabmap_1_1Parameters.html#a0e7f583660061567e068fceecd672c22',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoisefeature_307',['defaultOdomMSCKFNoiseFeature',['../classrtabmap_1_1Parameters.html#a1cc429adff28df7e630c29bc67a54bf3',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoisegyro_308',['defaultOdomMSCKFNoiseGyro',['../classrtabmap_1_1Parameters.html#a827db4e8b440b924fc2f0ce6be9fb940',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoisegyrobias_309',['defaultOdomMSCKFNoiseGyroBias',['../classrtabmap_1_1Parameters.html#a797cfbfab620a68648fb4d6f6729dad8',1,'rtabmap::Parameters']]], + ['defaultodommsckfopttranslationthreshold_310',['defaultOdomMSCKFOptTranslationThreshold',['../classrtabmap_1_1Parameters.html#af30192a47c66b1fc6c73fec78092f940',1,'rtabmap::Parameters']]], + ['defaultodommsckfpatchsize_311',['defaultOdomMSCKFPatchSize',['../classrtabmap_1_1Parameters.html#a6aceae41d0ddc22cee471661a8dc9430',1,'rtabmap::Parameters']]], + ['defaultodommsckfpositionstdthreshold_312',['defaultOdomMSCKFPositionStdThreshold',['../classrtabmap_1_1Parameters.html#a1a6adbc06f4f19059b17f77ed6c744a0',1,'rtabmap::Parameters']]], + ['defaultodommsckfpyramidlevels_313',['defaultOdomMSCKFPyramidLevels',['../classrtabmap_1_1Parameters.html#aa4b73d6831d8daaa9db3981e30b49818',1,'rtabmap::Parameters']]], + ['defaultodommsckfransacthreshold_314',['defaultOdomMSCKFRansacThreshold',['../classrtabmap_1_1Parameters.html#a092a2962faabb91bf8486e71d31f0a07',1,'rtabmap::Parameters']]], + ['defaultodommsckfrotationthreshold_315',['defaultOdomMSCKFRotationThreshold',['../classrtabmap_1_1Parameters.html#a1a4d1f9579e16ebf21a7ab4ba3436a60',1,'rtabmap::Parameters']]], + ['defaultodommsckfstereothreshold_316',['defaultOdomMSCKFStereoThreshold',['../classrtabmap_1_1Parameters.html#ab2f28e5a6de694c7a55519dec63c5a30',1,'rtabmap::Parameters']]], + ['defaultodommsckftrackingratethreshold_317',['defaultOdomMSCKFTrackingRateThreshold',['../classrtabmap_1_1Parameters.html#a4b15c6cece18b7fbfeab9c3012e8f975',1,'rtabmap::Parameters']]], + ['defaultodommsckftrackprecision_318',['defaultOdomMSCKFTrackPrecision',['../classrtabmap_1_1Parameters.html#a677ee5a5b6bae0b65b9c4735494fc823',1,'rtabmap::Parameters']]], + ['defaultodommsckftranslationthreshold_319',['defaultOdomMSCKFTranslationThreshold',['../classrtabmap_1_1Parameters.html#a80d7a199eca7bf5dbe11a89ae2505dc8',1,'rtabmap::Parameters']]], + ['defaultodomokvisconfigpath_320',['defaultOdomOKVISConfigPath',['../classrtabmap_1_1Parameters.html#a42709fed698a2b97684140ac9f5a7b32',1,'rtabmap::Parameters']]], + ['defaultodomopen3dmaxdepth_321',['defaultOdomOpen3DMaxDepth',['../classrtabmap_1_1Parameters.html#a3501ff6b79ecf1089480b180a24d375f',1,'rtabmap::Parameters']]], + ['defaultodomopen3dmethod_322',['defaultOdomOpen3DMethod',['../classrtabmap_1_1Parameters.html#a454aed6a09f909eb384aaf7f5b6a0995',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsaccelerometernoisedensity_323',['defaultOdomOpenVINSAccelerometerNoiseDensity',['../classrtabmap_1_1Parameters.html#ad3b48f09c6ae5b0749794c289763f6f3',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsaccelerometerrandomwalk_324',['defaultOdomOpenVINSAccelerometerRandomWalk',['../classrtabmap_1_1Parameters.html#ae244b49a31a04101cfcea4c5e5d6eff1',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibcamextrinsics_325',['defaultOdomOpenVINSCalibCamExtrinsics',['../classrtabmap_1_1Parameters.html#abad820880f66289a5bb3539b6cece37b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibcamintrinsics_326',['defaultOdomOpenVINSCalibCamIntrinsics',['../classrtabmap_1_1Parameters.html#a325720d717ef80d19b03a9f2d504ed28',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibcamtimeoffset_327',['defaultOdomOpenVINSCalibCamTimeoffset',['../classrtabmap_1_1Parameters.html#ab6dd58e8cc0f581bf02765ffbf8d6df7',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibimugsensitivity_328',['defaultOdomOpenVINSCalibIMUGSensitivity',['../classrtabmap_1_1Parameters.html#ab14ce144b0d11185b303a9f336590174',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibimuintrinsics_329',['defaultOdomOpenVINSCalibIMUIntrinsics',['../classrtabmap_1_1Parameters.html#a43cf0249cd4accae00804d80d7ec74bd',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsconfigpath_330',['defaultOdomOpenVINSConfigPath',['../classrtabmap_1_1Parameters.html#a3d0f13ab949ed08f216ecf7dea6dc4aa',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsdtslamdelay_331',['defaultOdomOpenVINSDtSLAMDelay',['../classrtabmap_1_1Parameters.html#a62210249c6a36aa2d5c82e283b69a89f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfeatrepmsckf_332',['defaultOdomOpenVINSFeatRepMSCKF',['../classrtabmap_1_1Parameters.html#a53b0cbaf7b295195689bd52e44f67057',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfeatrepslam_333',['defaultOdomOpenVINSFeatRepSLAM',['../classrtabmap_1_1Parameters.html#a0e22a193990315a0c169c0f961addaac',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfimaxbaseline_334',['defaultOdomOpenVINSFiMaxBaseline',['../classrtabmap_1_1Parameters.html#a859b3bc69da9573d1592c76811698451',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfimaxcondnumber_335',['defaultOdomOpenVINSFiMaxCondNumber',['../classrtabmap_1_1Parameters.html#a0a197c6368939cbc8a365a92580f67c6',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfimaxruns_336',['defaultOdomOpenVINSFiMaxRuns',['../classrtabmap_1_1Parameters.html#a0ded3bb70718deb25b3c5fd9faba16b1',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfirefinefeatures_337',['defaultOdomOpenVINSFiRefineFeatures',['../classrtabmap_1_1Parameters.html#a6ffc20ed47a965ac527889e4946833d0',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfitriangulate1d_338',['defaultOdomOpenVINSFiTriangulate1d',['../classrtabmap_1_1Parameters.html#a68fe1405aa148b207622af0951b3229c',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsgravitymag_339',['defaultOdomOpenVINSGravityMag',['../classrtabmap_1_1Parameters.html#a59525c19420757af33a0b081c717fd36',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsgyroscopenoisedensity_340',['defaultOdomOpenVINSGyroscopeNoiseDensity',['../classrtabmap_1_1Parameters.html#a878cf99f652db81cb416c2b359fe8438',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsgyroscoperandomwalk_341',['defaultOdomOpenVINSGyroscopeRandomWalk',['../classrtabmap_1_1Parameters.html#a6d7b2adb63801c77d39d5a72a09decad',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationba_342',['defaultOdomOpenVINSInitDynInflationBa',['../classrtabmap_1_1Parameters.html#afe5184aef893a0b985f979c2c1f78d59',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationbg_343',['defaultOdomOpenVINSInitDynInflationBg',['../classrtabmap_1_1Parameters.html#a1d021093c325316bb03a57b16308b6e5',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationori_344',['defaultOdomOpenVINSInitDynInflationOri',['../classrtabmap_1_1Parameters.html#ac7e1906e0f98e72750f419e72e821120',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationvel_345',['defaultOdomOpenVINSInitDynInflationVel',['../classrtabmap_1_1Parameters.html#ab5bfd3d2cf5d6dacebeb77f00c96003b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmindeg_346',['defaultOdomOpenVINSInitDynMinDeg',['../classrtabmap_1_1Parameters.html#a89160b019c1d237ad7f67720e741b790',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynminreccond_347',['defaultOdomOpenVINSInitDynMinRecCond',['../classrtabmap_1_1Parameters.html#a0a30a3740f3427803f325c2dff6ff88c',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmlemaxiter_348',['defaultOdomOpenVINSInitDynMLEMaxIter',['../classrtabmap_1_1Parameters.html#a016c6e6429a1972d19a2265285420cff',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmlemaxthreads_349',['defaultOdomOpenVINSInitDynMLEMaxThreads',['../classrtabmap_1_1Parameters.html#a9dfa2510f2abfc920345222b7bf3bb42',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmlemaxtime_350',['defaultOdomOpenVINSInitDynMLEMaxTime',['../classrtabmap_1_1Parameters.html#a6cb0a7432ebba00c7c6457253430eb9e',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmleoptcalib_351',['defaultOdomOpenVINSInitDynMLEOptCalib',['../classrtabmap_1_1Parameters.html#a937e112aa605e4674401dc8e01631433',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynnumpose_352',['defaultOdomOpenVINSInitDynNumPose',['../classrtabmap_1_1Parameters.html#a3e612bb9c96142493df81d2f5ae82933',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynuse_353',['defaultOdomOpenVINSInitDynUse',['../classrtabmap_1_1Parameters.html#aed862b5334f34e11f0c1c1ae72eee7e0',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitimuthresh_354',['defaultOdomOpenVINSInitIMUThresh',['../classrtabmap_1_1Parameters.html#a0a444b5fd99ca929eafe9f369deb6275',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitmaxdisparity_355',['defaultOdomOpenVINSInitMaxDisparity',['../classrtabmap_1_1Parameters.html#a3cf405a2987bfc621c957b25f29cf9a4',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitmaxfeatures_356',['defaultOdomOpenVINSInitMaxFeatures',['../classrtabmap_1_1Parameters.html#a06e454a54226066c9fe555147e2a924f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitwindowtime_357',['defaultOdomOpenVINSInitWindowTime',['../classrtabmap_1_1Parameters.html#a497e3c6de5c331901a25f8f20dc22e33',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsintegration_358',['defaultOdomOpenVINSIntegration',['../classrtabmap_1_1Parameters.html#a07e666fe4774be272d92169d7e51d72e',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsleftmaskpath_359',['defaultOdomOpenVINSLeftMaskPath',['../classrtabmap_1_1Parameters.html#ae99dde6443571ac09d8db1bac3d5824e',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxclones_360',['defaultOdomOpenVINSMaxClones',['../classrtabmap_1_1Parameters.html#a53df19bf9e8b01c78258b17d784432ed',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxmsckfinupdate_361',['defaultOdomOpenVINSMaxMSCKFInUpdate',['../classrtabmap_1_1Parameters.html#a94acdf45e1bf8ce5b1d547f37e04b9b2',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxslam_362',['defaultOdomOpenVINSMaxSLAM',['../classrtabmap_1_1Parameters.html#a1e1aa930222b5df89e4059640c01f77f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxslaminupdate_363',['defaultOdomOpenVINSMaxSLAMInUpdate',['../classrtabmap_1_1Parameters.html#a953fca633fc1700453fad55faa5efd9f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsminpxdist_364',['defaultOdomOpenVINSMinPxDist',['../classrtabmap_1_1Parameters.html#a3379fb4026b4f2b87b4d9ac962b02884',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsnumpts_365',['defaultOdomOpenVINSNumPts',['../classrtabmap_1_1Parameters.html#acc3507fadec6548443ee3ca6d51ed74b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsrightmaskpath_366',['defaultOdomOpenVINSRightMaskPath',['../classrtabmap_1_1Parameters.html#a2e179e0624073ebc5d2934cd836b343d',1,'rtabmap::Parameters']]], + ['defaultodomopenvinstryzupt_367',['defaultOdomOpenVINSTryZUPT',['../classrtabmap_1_1Parameters.html#af4eebbcf12dd4e9cfcee87552c8086df',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupmsckfchi2multiplier_368',['defaultOdomOpenVINSUpMSCKFChi2Multiplier',['../classrtabmap_1_1Parameters.html#ad3a86a56e223816258cad17c2a0c0910',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupmsckfsigmapx_369',['defaultOdomOpenVINSUpMSCKFSigmaPx',['../classrtabmap_1_1Parameters.html#affdeec9133e7f06af421cccf87bcb981',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupslamchi2multiplier_370',['defaultOdomOpenVINSUpSLAMChi2Multiplier',['../classrtabmap_1_1Parameters.html#ab835ef788b3b42b8c85e11f89cadcd5b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupslamsigmapx_371',['defaultOdomOpenVINSUpSLAMSigmaPx',['../classrtabmap_1_1Parameters.html#a9de79f11f8e9f5d61d18d2821b095070',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsusefej_372',['defaultOdomOpenVINSUseFEJ',['../classrtabmap_1_1Parameters.html#a864a71e62e61b03d2c23afa2abf2c7db',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsuseklt_373',['defaultOdomOpenVINSUseKLT',['../classrtabmap_1_1Parameters.html#abf2880c3c5dbb224274237d99b0185cc',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsusestereo_374',['defaultOdomOpenVINSUseStereo',['../classrtabmap_1_1Parameters.html#abc1565f7225cd5be7f09e82d6b52c4f1',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptchi2multiplier_375',['defaultOdomOpenVINSZUPTChi2Multiplier',['../classrtabmap_1_1Parameters.html#aa67576cd497ae3c827fc00cdd383d7a6',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptmaxdisparity_376',['defaultOdomOpenVINSZUPTMaxDisparity',['../classrtabmap_1_1Parameters.html#a2f847a941866b28e6aa401babfe459c6',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptmaxvelodicy_377',['defaultOdomOpenVINSZUPTMaxVelodicy',['../classrtabmap_1_1Parameters.html#a4bdf4f5c9e84c943a7414576b9192b26',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptnoisemultiplier_378',['defaultOdomOpenVINSZUPTNoiseMultiplier',['../classrtabmap_1_1Parameters.html#ac38e66485ad24d894911d9ce03986689',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptonlyatbeginning_379',['defaultOdomOpenVINSZUPTOnlyAtBeginning',['../classrtabmap_1_1Parameters.html#a91b98b9532960850486e6eb55a12e06d',1,'rtabmap::Parameters']]], + ['defaultodomorbslamaccnoise_380',['defaultOdomORBSLAMAccNoise',['../classrtabmap_1_1Parameters.html#a0fceb51732eea1d2c2f5cfcfc9f6c908',1,'rtabmap::Parameters']]], + ['defaultodomorbslamaccwalk_381',['defaultOdomORBSLAMAccWalk',['../classrtabmap_1_1Parameters.html#a5e01b168e4a31aec792366e0139cc959',1,'rtabmap::Parameters']]], + ['defaultodomorbslambf_382',['defaultOdomORBSLAMBf',['../classrtabmap_1_1Parameters.html#a69c4cb422de40aa1346158375147a333',1,'rtabmap::Parameters']]], + ['defaultodomorbslamfps_383',['defaultOdomORBSLAMFps',['../classrtabmap_1_1Parameters.html#ae927ca70227e512394ca9b7b91a1251b',1,'rtabmap::Parameters']]], + ['defaultodomorbslamgyronoise_384',['defaultOdomORBSLAMGyroNoise',['../classrtabmap_1_1Parameters.html#a92c076aa98e5f4d3996ab370305fb128',1,'rtabmap::Parameters']]], + ['defaultodomorbslamgyrowalk_385',['defaultOdomORBSLAMGyroWalk',['../classrtabmap_1_1Parameters.html#a34cae713888a601086153ac0fb5236df',1,'rtabmap::Parameters']]], + ['defaultodomorbslaminertial_386',['defaultOdomORBSLAMInertial',['../classrtabmap_1_1Parameters.html#aac902f6d6374c112c3a60b6ae7c305df',1,'rtabmap::Parameters']]], + ['defaultodomorbslammapsize_387',['defaultOdomORBSLAMMapSize',['../classrtabmap_1_1Parameters.html#a3c339175a63d8b6ff3111baf64862bba',1,'rtabmap::Parameters']]], + ['defaultodomorbslammaxfeatures_388',['defaultOdomORBSLAMMaxFeatures',['../classrtabmap_1_1Parameters.html#ad41dc0470b91a895e53a5d1319701096',1,'rtabmap::Parameters']]], + ['defaultodomorbslamsamplingrate_389',['defaultOdomORBSLAMSamplingRate',['../classrtabmap_1_1Parameters.html#a98f800e901efb131cc4399a811462f83',1,'rtabmap::Parameters']]], + ['defaultodomorbslamthdepth_390',['defaultOdomORBSLAMThDepth',['../classrtabmap_1_1Parameters.html#affa55160db0408d1d22ae7935649b4ec',1,'rtabmap::Parameters']]], + ['defaultodomorbslamvocpath_391',['defaultOdomORBSLAMVocPath',['../classrtabmap_1_1Parameters.html#a9191f537b0cbd35fa3865b584168b1a3',1,'rtabmap::Parameters']]], + ['defaultodomparticlelambdar_392',['defaultOdomParticleLambdaR',['../classrtabmap_1_1Parameters.html#a999356e45e0d04c0e23b8a658bdce1ad',1,'rtabmap::Parameters']]], + ['defaultodomparticlelambdat_393',['defaultOdomParticleLambdaT',['../classrtabmap_1_1Parameters.html#a5b779a5e544c6fcdc714683edba8b3d3',1,'rtabmap::Parameters']]], + ['defaultodomparticlenoiser_394',['defaultOdomParticleNoiseR',['../classrtabmap_1_1Parameters.html#a8e6f5c04ac08cc14e6a8d7163a6df977',1,'rtabmap::Parameters']]], + ['defaultodomparticlenoiset_395',['defaultOdomParticleNoiseT',['../classrtabmap_1_1Parameters.html#a36a060c171c3804e1e208f879c93e7e6',1,'rtabmap::Parameters']]], + ['defaultodomparticlesize_396',['defaultOdomParticleSize',['../classrtabmap_1_1Parameters.html#a080173bc5ca04f3b41c0e397339647ab',1,'rtabmap::Parameters']]], + ['defaultodomresetcountdown_397',['defaultOdomResetCountdown',['../classrtabmap_1_1Parameters.html#af755f7fbaed913e4718ab7d6f6531db6',1,'rtabmap::Parameters']]], + ['defaultodomscankeyframethr_398',['defaultOdomScanKeyFrameThr',['../classrtabmap_1_1Parameters.html#ad6174a0ecd9ac76d8242540c30df4ad5',1,'rtabmap::Parameters']]], + ['defaultodomstrategy_399',['defaultOdomStrategy',['../classrtabmap_1_1Parameters.html#a1e9109160a37784a68c945acebd38525',1,'rtabmap::Parameters']]], + ['defaultodomvinsfusionconfigpath_400',['defaultOdomVINSFusionConfigPath',['../classrtabmap_1_1Parameters.html#a383c3a45b5aa61295e33a6e9da4542c5',1,'rtabmap::Parameters']]], + ['defaultodomviskeyframethr_401',['defaultOdomVisKeyFrameThr',['../classrtabmap_1_1Parameters.html#ae37f0155b9c8b516cda895f08b1344ba',1,'rtabmap::Parameters']]], + ['defaultodomviso2bucketheight_402',['defaultOdomViso2BucketHeight',['../classrtabmap_1_1Parameters.html#aa0f7d154eb3e914488380c80252b0541',1,'rtabmap::Parameters']]], + ['defaultodomviso2bucketmaxfeatures_403',['defaultOdomViso2BucketMaxFeatures',['../classrtabmap_1_1Parameters.html#a4cbb446867b50e3187af090146c578f0',1,'rtabmap::Parameters']]], + ['defaultodomviso2bucketwidth_404',['defaultOdomViso2BucketWidth',['../classrtabmap_1_1Parameters.html#ad46d465287b4b685122eec82f8765da6',1,'rtabmap::Parameters']]], + ['defaultodomviso2inlierthreshold_405',['defaultOdomViso2InlierThreshold',['../classrtabmap_1_1Parameters.html#a429bac1484f93fa8a011f72c98e763ea',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchbinsize_406',['defaultOdomViso2MatchBinsize',['../classrtabmap_1_1Parameters.html#aff4139b8a4b5be3bb32f9d7f7a56786a',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchdisptolerance_407',['defaultOdomViso2MatchDispTolerance',['../classrtabmap_1_1Parameters.html#aeef943b33c89637852d411a2e43a5d7a',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchhalfresolution_408',['defaultOdomViso2MatchHalfResolution',['../classrtabmap_1_1Parameters.html#ab25dec8a4a1ba5ef0bc3ef14d455ffd4',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchmultistage_409',['defaultOdomViso2MatchMultiStage',['../classrtabmap_1_1Parameters.html#a38c5e12cb00d850e9741248fb564be0f',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchnmsn_410',['defaultOdomViso2MatchNmsN',['../classrtabmap_1_1Parameters.html#a6dc343145cffd796512b4b0733057642',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchnmstau_411',['defaultOdomViso2MatchNmsTau',['../classrtabmap_1_1Parameters.html#a2e80812231c26ef3d3a2e06ce3a5d79e',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchoutlierdisptolerance_412',['defaultOdomViso2MatchOutlierDispTolerance',['../classrtabmap_1_1Parameters.html#af9a738592540bc96e5f9b054fdd34f96',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchoutlierflowtolerance_413',['defaultOdomViso2MatchOutlierFlowTolerance',['../classrtabmap_1_1Parameters.html#a4c488a981cf4228a1ae147505695b7ea',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchradius_414',['defaultOdomViso2MatchRadius',['../classrtabmap_1_1Parameters.html#a2cb8a4380b2ac7513acfe4c227b0f512',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchrefinement_415',['defaultOdomViso2MatchRefinement',['../classrtabmap_1_1Parameters.html#ad0ee385292880d42488589f00f820335',1,'rtabmap::Parameters']]], + ['defaultodomviso2ransaciters_416',['defaultOdomViso2RansacIters',['../classrtabmap_1_1Parameters.html#a0dfa5c17449e9e07f21ec6cdbb637e71',1,'rtabmap::Parameters']]], + ['defaultodomviso2reweighting_417',['defaultOdomViso2Reweighting',['../classrtabmap_1_1Parameters.html#acca03777ae8d44bbb151efe95d866370',1,'rtabmap::Parameters']]], + ['defaultoptimizerbaseline_418',['defaultOptimizerBaseline',['../classrtabmap_1_1Parameters.html#a62219439aa503751ef54d6476e0ef5c2',1,'rtabmap::Parameters']]], + ['defaultoptimizerdisparityvariance_419',['defaultOptimizerDisparityVariance',['../classrtabmap_1_1Parameters.html#a9b2bf1254c87e79d358dd45a27d92254',1,'rtabmap::Parameters']]], + ['defaultoptimizerepsilon_420',['defaultOptimizerEpsilon',['../classrtabmap_1_1Parameters.html#a8fb0df24ed2d24a013abc03828f43acc',1,'rtabmap::Parameters']]], + ['defaultoptimizergravitysigma_421',['defaultOptimizerGravitySigma',['../classrtabmap_1_1Parameters.html#a88fab03b485f103123fad036a536c71a',1,'rtabmap::Parameters']]], + ['defaultoptimizeriterations_422',['defaultOptimizerIterations',['../classrtabmap_1_1Parameters.html#a88a7018a56b4e6c7c0ceb8e11286f319',1,'rtabmap::Parameters']]], + ['defaultoptimizerlandmarksignored_423',['defaultOptimizerLandmarksIgnored',['../classrtabmap_1_1Parameters.html#a45cdc34f61574e7de40f2d4a822b1ca6',1,'rtabmap::Parameters']]], + ['defaultoptimizerpixelvariance_424',['defaultOptimizerPixelVariance',['../classrtabmap_1_1Parameters.html#aac621d5d3acba7b0d9a9b5dcd52f7d4f',1,'rtabmap::Parameters']]], + ['defaultoptimizerpriorsignored_425',['defaultOptimizerPriorsIgnored',['../classrtabmap_1_1Parameters.html#a6394c7cc99dca72faf68799adc89ffd7',1,'rtabmap::Parameters']]], + ['defaultoptimizerrobust_426',['defaultOptimizerRobust',['../classrtabmap_1_1Parameters.html#a2a83a1c7b7cc3dfe1b03bd9c10a437fd',1,'rtabmap::Parameters']]], + ['defaultoptimizerrobustkerneldelta_427',['defaultOptimizerRobustKernelDelta',['../classrtabmap_1_1Parameters.html#a29ca5e5f03feb515f565edb0caae230b',1,'rtabmap::Parameters']]], + ['defaultoptimizerstrategy_428',['defaultOptimizerStrategy',['../classrtabmap_1_1Parameters.html#a09eb562dd5700d848c1e8ccfa161e94e',1,'rtabmap::Parameters']]], + ['defaultoptimizervarianceignored_429',['defaultOptimizerVarianceIgnored',['../classrtabmap_1_1Parameters.html#ad329ace1333ac8c94cd4043b58173f1b',1,'rtabmap::Parameters']]], + ['defaultorbedgethreshold_430',['defaultORBEdgeThreshold',['../classrtabmap_1_1Parameters.html#a0f10206dac5e7ecfef51feb8c533f996',1,'rtabmap::Parameters']]], + ['defaultorbfirstlevel_431',['defaultORBFirstLevel',['../classrtabmap_1_1Parameters.html#a1d9630d2b1c11e310279388894b4ac7f',1,'rtabmap::Parameters']]], + ['defaultorbgpu_432',['defaultORBGpu',['../classrtabmap_1_1Parameters.html#ae59341ab604bc7a29bd2e6417b63e90e',1,'rtabmap::Parameters']]], + ['defaultorbnlevels_433',['defaultORBNLevels',['../classrtabmap_1_1Parameters.html#abc8351dab8ba91e67ab33fd39240728c',1,'rtabmap::Parameters']]], + ['defaultorbpatchsize_434',['defaultORBPatchSize',['../classrtabmap_1_1Parameters.html#abeca7515070ae40463c94ec043d8a96c',1,'rtabmap::Parameters']]], + ['defaultorbscalefactor_435',['defaultORBScaleFactor',['../classrtabmap_1_1Parameters.html#a2a0b519bfda2c164ac9765e5cafa298e',1,'rtabmap::Parameters']]], + ['defaultorbscoretype_436',['defaultORBScoreType',['../classrtabmap_1_1Parameters.html#ae23c8c0a797337aff68aea63ab366045',1,'rtabmap::Parameters']]], + ['defaultorbwta_5fk_437',['defaultORBWTA_K',['../classrtabmap_1_1Parameters.html#a03b2170e4675ea9a566b9b2e8474d04b',1,'rtabmap::Parameters']]], + ['defaultpydescriptordim_438',['defaultPyDescriptorDim',['../classrtabmap_1_1Parameters.html#acd3f288c78d60132fe3103cc3baa56b6',1,'rtabmap::Parameters']]], + ['defaultpydescriptorpath_439',['defaultPyDescriptorPath',['../classrtabmap_1_1Parameters.html#a679be234a8731a22b2533291030920d9',1,'rtabmap::Parameters']]], + ['defaultpydetectorcuda_440',['defaultPyDetectorCuda',['../classrtabmap_1_1Parameters.html#a67de62af4a854432733f5cd4121532fa',1,'rtabmap::Parameters']]], + ['defaultpydetectorpath_441',['defaultPyDetectorPath',['../classrtabmap_1_1Parameters.html#a12dd2fc3f9ffd3c563d577c64fa890c0',1,'rtabmap::Parameters']]], + ['defaultpymatchercuda_442',['defaultPyMatcherCuda',['../classrtabmap_1_1Parameters.html#ae8b2abba1413851a1ef9d71c24691df9',1,'rtabmap::Parameters']]], + ['defaultpymatcheriterations_443',['defaultPyMatcherIterations',['../classrtabmap_1_1Parameters.html#a21c62122654773faec6dad9e861e6bfa',1,'rtabmap::Parameters']]], + ['defaultpymatchermodel_444',['defaultPyMatcherModel',['../classrtabmap_1_1Parameters.html#a9c56180fc02716fcb268ab139f211e3f',1,'rtabmap::Parameters']]], + ['defaultpymatcherpath_445',['defaultPyMatcherPath',['../classrtabmap_1_1Parameters.html#a978797b8ec7933292493fff90251fa5b',1,'rtabmap::Parameters']]], + ['defaultpymatcherthreshold_446',['defaultPyMatcherThreshold',['../classrtabmap_1_1Parameters.html#a3e826c170c563783be3b31c129db5ecb',1,'rtabmap::Parameters']]], + ['defaultregforce3dof_447',['defaultRegForce3DoF',['../classrtabmap_1_1Parameters.html#aee1046f9615d2ed988c952cc47c9331e',1,'rtabmap::Parameters']]], + ['defaultregrepeatonce_448',['defaultRegRepeatOnce',['../classrtabmap_1_1Parameters.html#a389ef8590b17e0c8e1cca6e01ed82ef0',1,'rtabmap::Parameters']]], + ['defaultregstrategy_449',['defaultRegStrategy',['../classrtabmap_1_1Parameters.html#a2bf8075d9a8e7f47cb99b5ebafaaad34',1,'rtabmap::Parameters']]], + ['defaultrgbdaggressiveloopthr_450',['defaultRGBDAggressiveLoopThr',['../classrtabmap_1_1Parameters.html#aa0280b8578239d72dc63137145c0a26e',1,'rtabmap::Parameters']]], + ['defaultrgbdangularspeedupdate_451',['defaultRGBDAngularSpeedUpdate',['../classrtabmap_1_1Parameters.html#a4bfae76169252ef1b605a3de2cffb79b',1,'rtabmap::Parameters']]], + ['defaultrgbdangularupdate_452',['defaultRGBDAngularUpdate',['../classrtabmap_1_1Parameters.html#afb7eb4db84edfdc8e5db6dd5a223735d',1,'rtabmap::Parameters']]], + ['defaultrgbdcreateoccupancygrid_453',['defaultRGBDCreateOccupancyGrid',['../classrtabmap_1_1Parameters.html#aad44b21f15d9893f9447419a12432ba1',1,'rtabmap::Parameters']]], + ['defaultrgbdenabled_454',['defaultRGBDEnabled',['../classrtabmap_1_1Parameters.html#ac5704dfa1a8d2f498aa41dd22e2fad96',1,'rtabmap::Parameters']]], + ['defaultrgbdforceodom3dof_455',['defaultRGBDForceOdom3DoF',['../classrtabmap_1_1Parameters.html#acd5a7917273e734f113b670f2fe6f0f2',1,'rtabmap::Parameters']]], + ['defaultrgbdgoalreachedradius_456',['defaultRGBDGoalReachedRadius',['../classrtabmap_1_1Parameters.html#aef2ac63e326b9fd31c4aecd71c57a485',1,'rtabmap::Parameters']]], + ['defaultrgbdgoalssavedinuserdata_457',['defaultRGBDGoalsSavedInUserData',['../classrtabmap_1_1Parameters.html#afeb3cc8064aa5bcb10b547565764f938',1,'rtabmap::Parameters']]], + ['defaultrgbdinvertedreg_458',['defaultRGBDInvertedReg',['../classrtabmap_1_1Parameters.html#a8a43f35d5d3ff84ea040d11c67f06cd3',1,'rtabmap::Parameters']]], + ['defaultrgbdlinearspeedupdate_459',['defaultRGBDLinearSpeedUpdate',['../classrtabmap_1_1Parameters.html#aaf25ea9452edef26470859b2fa3a18b0',1,'rtabmap::Parameters']]], + ['defaultrgbdlinearupdate_460',['defaultRGBDLinearUpdate',['../classrtabmap_1_1Parameters.html#a6a5e27ec1dd5895cdc044b15f933847c',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalbundleonloopclosure_461',['defaultRGBDLocalBundleOnLoopClosure',['../classrtabmap_1_1Parameters.html#a3a04224f5cae1e13997bed67bfdf2421',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalimmunizationratio_462',['defaultRGBDLocalImmunizationRatio',['../classrtabmap_1_1Parameters.html#a75e80116239ca237f05b5030dbddff94',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalizationpriorerror_463',['defaultRGBDLocalizationPriorError',['../classrtabmap_1_1Parameters.html#a3ea147a3dcb325d1dd8245d5ac6c355a',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalizationsecondtrywithoutproximitylinks_464',['defaultRGBDLocalizationSecondTryWithoutProximityLinks',['../classrtabmap_1_1Parameters.html#a29069e6e4a55635bf0c553353a309386',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalizationsmoothing_465',['defaultRGBDLocalizationSmoothing',['../classrtabmap_1_1Parameters.html#a0411f730d9d60eba47de4135c54ae517',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalradius_466',['defaultRGBDLocalRadius',['../classrtabmap_1_1Parameters.html#acf286a0736091c5249eb7b3e745ce3e1',1,'rtabmap::Parameters']]], + ['defaultrgbdloopclosureidentityguess_467',['defaultRGBDLoopClosureIdentityGuess',['../classrtabmap_1_1Parameters.html#a3a91dafa1048d1c378960782f9a7c88e',1,'rtabmap::Parameters']]], + ['defaultrgbdloopclosurereextractfeatures_468',['defaultRGBDLoopClosureReextractFeatures',['../classrtabmap_1_1Parameters.html#afd0bc554dfe35e65fa9bbefdf917cfcf',1,'rtabmap::Parameters']]], + ['defaultrgbdloopcovlimited_469',['defaultRGBDLoopCovLimited',['../classrtabmap_1_1Parameters.html#abc8740cd9ff03f46b8c4838b1e79a9b1',1,'rtabmap::Parameters']]], + ['defaultrgbdmarkerdetection_470',['defaultRGBDMarkerDetection',['../classrtabmap_1_1Parameters.html#ac8fa2190bca9a03f92fe33d3ad4052d6',1,'rtabmap::Parameters']]], + ['defaultrgbdmaxlocalretrieved_471',['defaultRGBDMaxLocalRetrieved',['../classrtabmap_1_1Parameters.html#ab6a66375f993df5e2f4c8f20e42aaca6',1,'rtabmap::Parameters']]], + ['defaultrgbdmaxloopclosuredistance_472',['defaultRGBDMaxLoopClosureDistance',['../classrtabmap_1_1Parameters.html#a6ccc6b27ed352368d401cb2eadf4aef9',1,'rtabmap::Parameters']]], + ['defaultrgbdmaxodomcachesize_473',['defaultRGBDMaxOdomCacheSize',['../classrtabmap_1_1Parameters.html#a20604ab3e4ca41289cf8143b73b825bf',1,'rtabmap::Parameters']]], + ['defaultrgbdneighborlinkrefining_474',['defaultRGBDNeighborLinkRefining',['../classrtabmap_1_1Parameters.html#a43cd30d28fef96ead5dad3681918512a',1,'rtabmap::Parameters']]], + ['defaultrgbdnewmapodomchangedistance_475',['defaultRGBDNewMapOdomChangeDistance',['../classrtabmap_1_1Parameters.html#a382348a9c98d6dcde1612d4886747777',1,'rtabmap::Parameters']]], + ['defaultrgbdoptimizefromgraphend_476',['defaultRGBDOptimizeFromGraphEnd',['../classrtabmap_1_1Parameters.html#ac6fe48a78f487f8bd8973166c54c94ea',1,'rtabmap::Parameters']]], + ['defaultrgbdoptimizemaxerror_477',['defaultRGBDOptimizeMaxError',['../classrtabmap_1_1Parameters.html#a34706ecf0c565f91077916bb3b1df82d',1,'rtabmap::Parameters']]], + ['defaultrgbdoptimizemaxerrorrepairradius_478',['defaultRGBDOptimizeMaxErrorRepairRadius',['../classrtabmap_1_1Parameters.html#acbf5f04306c6009925f517397b804b16',1,'rtabmap::Parameters']]], + ['defaultrgbdplanangularvelocity_479',['defaultRGBDPlanAngularVelocity',['../classrtabmap_1_1Parameters.html#aebb28a5fbb4e6d36ccd3c3fc67e8e604',1,'rtabmap::Parameters']]], + ['defaultrgbdplanlinearvelocity_480',['defaultRGBDPlanLinearVelocity',['../classrtabmap_1_1Parameters.html#a0ea9c8facb5cb321f3741e2bedacb4a6',1,'rtabmap::Parameters']]], + ['defaultrgbdplanstuckiterations_481',['defaultRGBDPlanStuckIterations',['../classrtabmap_1_1Parameters.html#a4b1e69675edd82c0e91786c10a1a8670',1,'rtabmap::Parameters']]], + ['defaultrgbdproximityangle_482',['defaultRGBDProximityAngle',['../classrtabmap_1_1Parameters.html#afdb1d6a1d9574cbca1c8709f35e26130',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitybyspace_483',['defaultRGBDProximityBySpace',['../classrtabmap_1_1Parameters.html#a9df84bca361ba3bef08c626dc2f1abc5',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitybytime_484',['defaultRGBDProximityByTime',['../classrtabmap_1_1Parameters.html#a9a1572edf65d9b14ff26fdb2f7041bb8',1,'rtabmap::Parameters']]], + ['defaultrgbdproximityglobalscanmap_485',['defaultRGBDProximityGlobalScanMap',['../classrtabmap_1_1Parameters.html#a92466baf9167fd0afb22b7f9eefa8c0b',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitymaxgraphdepth_486',['defaultRGBDProximityMaxGraphDepth',['../classrtabmap_1_1Parameters.html#a63616e8796fa3ddab768591a031cd122',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitymaxpaths_487',['defaultRGBDProximityMaxPaths',['../classrtabmap_1_1Parameters.html#a1b207ec20b49719f0c2849a3009ed50b',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitymergedscancovfactor_488',['defaultRGBDProximityMergedScanCovFactor',['../classrtabmap_1_1Parameters.html#a0b12eea42081e74fb478aee4754d66bf',1,'rtabmap::Parameters']]], + ['defaultrgbdproximityodomguess_489',['defaultRGBDProximityOdomGuess',['../classrtabmap_1_1Parameters.html#a06df8e609e0574dd3428b8056e33b9f1',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitypathfilteringradius_490',['defaultRGBDProximityPathFilteringRadius',['../classrtabmap_1_1Parameters.html#a2883511bedcc4c220754ea93b6e08525',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitypathmaxneighbors_491',['defaultRGBDProximityPathMaxNeighbors',['../classrtabmap_1_1Parameters.html#a317c5dcf56c171dc06b8734322ef71c5',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitypathrawposesused_492',['defaultRGBDProximityPathRawPosesUsed',['../classrtabmap_1_1Parameters.html#af8d84436a760061ced713ccba723dafd',1,'rtabmap::Parameters']]], + ['defaultrgbdscanmatchingidssavedinlinks_493',['defaultRGBDScanMatchingIdsSavedInLinks',['../classrtabmap_1_1Parameters.html#a55e477f21db71f035354857824cdae62',1,'rtabmap::Parameters']]], + ['defaultrgbdstartatorigin_494',['defaultRGBDStartAtOrigin',['../classrtabmap_1_1Parameters.html#ae9008be85b56ced7a1a0380d6403b4f4',1,'rtabmap::Parameters']]], + ['defaultrtabmapcomputermse_495',['defaultRtabmapComputeRMSE',['../classrtabmap_1_1Parameters.html#a64af0d2d6c1f1d37401c19d333c9d2fd',1,'rtabmap::Parameters']]], + ['defaultrtabmapcreateintermediatenodes_496',['defaultRtabmapCreateIntermediateNodes',['../classrtabmap_1_1Parameters.html#a8883a52eabe5cf1b8543f28883b5c5cc',1,'rtabmap::Parameters']]], + ['defaultrtabmapdetectionrate_497',['defaultRtabmapDetectionRate',['../classrtabmap_1_1Parameters.html#a17d26c31e01108f87151549822d14d55',1,'rtabmap::Parameters']]], + ['defaultrtabmapimagebuffersize_498',['defaultRtabmapImageBufferSize',['../classrtabmap_1_1Parameters.html#acf225328e66eabb45e6e7bb61541b75a',1,'rtabmap::Parameters']]], + ['defaultrtabmapimagesalreadyrectified_499',['defaultRtabmapImagesAlreadyRectified',['../classrtabmap_1_1Parameters.html#a655fb29bc817d5be3be975a68b22d051',1,'rtabmap::Parameters']]], + ['defaultrtabmaploopgps_500',['defaultRtabmapLoopGPS',['../classrtabmap_1_1Parameters.html#a72811b235cade342cb8598f8fc98fd2a',1,'rtabmap::Parameters']]], + ['defaultrtabmaploopratio_501',['defaultRtabmapLoopRatio',['../classrtabmap_1_1Parameters.html#a693a08916d475d7ed25a94f9e5ee9e48',1,'rtabmap::Parameters']]], + ['defaultrtabmaploopthr_502',['defaultRtabmapLoopThr',['../classrtabmap_1_1Parameters.html#a297d4cfc19464ff9944cec968f69f25e',1,'rtabmap::Parameters']]], + ['defaultrtabmapmaxrepublished_503',['defaultRtabmapMaxRepublished',['../classrtabmap_1_1Parameters.html#a84e422bed1fee99bf3add6b22509d7b3',1,'rtabmap::Parameters']]], + ['defaultrtabmapmaxretrieved_504',['defaultRtabmapMaxRetrieved',['../classrtabmap_1_1Parameters.html#a10d3800662d76d7ca707779be4c64562',1,'rtabmap::Parameters']]], + ['defaultrtabmapmemorythr_505',['defaultRtabmapMemoryThr',['../classrtabmap_1_1Parameters.html#a74a04a2c228039577af97a6eca733af4',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishlastsignature_506',['defaultRtabmapPublishLastSignature',['../classrtabmap_1_1Parameters.html#a5409119d4fa7ae4467bb5ad2bd8fd264',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishlikelihood_507',['defaultRtabmapPublishLikelihood',['../classrtabmap_1_1Parameters.html#aec63f44fb276848c0276ef49e157a42e',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishpdf_508',['defaultRtabmapPublishPdf',['../classrtabmap_1_1Parameters.html#a71cdb17c468eb22164c8fea56809381f',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishramusage_509',['defaultRtabmapPublishRAMUsage',['../classrtabmap_1_1Parameters.html#a435580b8d8bfc04a3056a670733fd4ee',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishstats_510',['defaultRtabmapPublishStats',['../classrtabmap_1_1Parameters.html#a7c5e66f953be45705f9733cb9b6c45fe',1,'rtabmap::Parameters']]], + ['defaultrtabmaprectifyonlyfeatures_511',['defaultRtabmapRectifyOnlyFeatures',['../classrtabmap_1_1Parameters.html#a192b1b802343b48e517d153a44fca57a',1,'rtabmap::Parameters']]], + ['defaultrtabmapsavewmstate_512',['defaultRtabmapSaveWMState',['../classrtabmap_1_1Parameters.html#ae85f3dc522a58805b8e4292924fbcae4',1,'rtabmap::Parameters']]], + ['defaultrtabmapstartnewmapongoodsignature_513',['defaultRtabmapStartNewMapOnGoodSignature',['../classrtabmap_1_1Parameters.html#ae2ec57ced69ca430af3979e0c06ca1de',1,'rtabmap::Parameters']]], + ['defaultrtabmapstartnewmaponloopclosure_514',['defaultRtabmapStartNewMapOnLoopClosure',['../classrtabmap_1_1Parameters.html#abffddbc89dfbc074e09561c39e749102',1,'rtabmap::Parameters']]], + ['defaultrtabmapstatisticlogged_515',['defaultRtabmapStatisticLogged',['../classrtabmap_1_1Parameters.html#a0e063855679c989570030552742516dc',1,'rtabmap::Parameters']]], + ['defaultrtabmapstatisticloggedheaders_516',['defaultRtabmapStatisticLoggedHeaders',['../classrtabmap_1_1Parameters.html#a927f4dbc6c08e694d937ee23363568a7',1,'rtabmap::Parameters']]], + ['defaultrtabmapstatisticlogsbufferedinram_517',['defaultRtabmapStatisticLogsBufferedInRAM',['../classrtabmap_1_1Parameters.html#aaf1d0f53f567096d54ab06ac97598d8f',1,'rtabmap::Parameters']]], + ['defaultrtabmaptimethr_518',['defaultRtabmapTimeThr',['../classrtabmap_1_1Parameters.html#a25c9d8fcef338e3ff2b5906b5a3641d8',1,'rtabmap::Parameters']]], + ['defaultrtabmapvirtualplacelikelihoodratio_519',['defaultRtabmapVirtualPlaceLikelihoodRatio',['../classrtabmap_1_1Parameters.html#a36ed76f23eb746ff97f5c3a751e40743',1,'rtabmap::Parameters']]], + ['defaultrtabmapworkingdirectory_520',['defaultRtabmapWorkingDirectory',['../classrtabmap_1_1Parameters.html#a5ea43cb3ed900709216cf27daf05d34d',1,'rtabmap::Parameters']]], + ['defaultsiftcontrastthreshold_521',['defaultSIFTContrastThreshold',['../classrtabmap_1_1Parameters.html#adc01d33cd863ae0ade2628adcd6c63ae',1,'rtabmap::Parameters']]], + ['defaultsiftedgethreshold_522',['defaultSIFTEdgeThreshold',['../classrtabmap_1_1Parameters.html#a9b6eb51827444f9f62d0ae9f4ab917a7',1,'rtabmap::Parameters']]], + ['defaultsiftgaussianthreshold_523',['defaultSIFTGaussianThreshold',['../classrtabmap_1_1Parameters.html#a3bf6aa344aab628f500b5e481175d55c',1,'rtabmap::Parameters']]], + ['defaultsiftgpu_524',['defaultSIFTGpu',['../classrtabmap_1_1Parameters.html#a21d9a558dd10640d5b6a783ba5feea31',1,'rtabmap::Parameters']]], + ['defaultsiftmaxgaussianthreshold_525',['defaultSIFTMaxGaussianThreshold',['../classrtabmap_1_1Parameters.html#a8600392dd5581a0ac428c998ea21b403',1,'rtabmap::Parameters']]], + ['defaultsiftnoctavelayers_526',['defaultSIFTNOctaveLayers',['../classrtabmap_1_1Parameters.html#a781567208efdfc12e71bd746ffab8207',1,'rtabmap::Parameters']]], + ['defaultsiftpreciseupscale_527',['defaultSIFTPreciseUpscale',['../classrtabmap_1_1Parameters.html#ad80d2376a9730979d3d3f593cc92137c',1,'rtabmap::Parameters']]], + ['defaultsiftrootsift_528',['defaultSIFTRootSIFT',['../classrtabmap_1_1Parameters.html#a588c11fb03b02d42df5240dc65cce418',1,'rtabmap::Parameters']]], + ['defaultsiftsigma_529',['defaultSIFTSigma',['../classrtabmap_1_1Parameters.html#aca50d40cc689b8a88def05680f08f5da',1,'rtabmap::Parameters']]], + ['defaultsiftupscale_530',['defaultSIFTUpscale',['../classrtabmap_1_1Parameters.html#a5353494af0d7bfddbd330da6becef8f9',1,'rtabmap::Parameters']]], + ['defaultstereobmblocksize_531',['defaultStereoBMBlockSize',['../classrtabmap_1_1Parameters.html#af41ea4fb7bb26a8997b8fbe9b72ab579',1,'rtabmap::Parameters']]], + ['defaultstereobmdisp12maxdiff_532',['defaultStereoBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#a28f2f033c9e4d8ec27d5e681985f8405',1,'rtabmap::Parameters']]], + ['defaultstereobmmindisparity_533',['defaultStereoBMMinDisparity',['../classrtabmap_1_1Parameters.html#afb4c35b0bf30231b04ab959ce0bf2042',1,'rtabmap::Parameters']]], + ['defaultstereobmnumdisparities_534',['defaultStereoBMNumDisparities',['../classrtabmap_1_1Parameters.html#abea19c85ecb7d078942054d2396ce9d8',1,'rtabmap::Parameters']]], + ['defaultstereobmprefiltercap_535',['defaultStereoBMPreFilterCap',['../classrtabmap_1_1Parameters.html#aabe53158599b1479ed66ddf61d688188',1,'rtabmap::Parameters']]], + ['defaultstereobmprefiltersize_536',['defaultStereoBMPreFilterSize',['../classrtabmap_1_1Parameters.html#a729dda48a58cb48cef88cd1c523120da',1,'rtabmap::Parameters']]], + ['defaultstereobmspecklerange_537',['defaultStereoBMSpeckleRange',['../classrtabmap_1_1Parameters.html#a1fe10e68203a20650dad3c0b158babef',1,'rtabmap::Parameters']]], + ['defaultstereobmspecklewindowsize_538',['defaultStereoBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#ad4388d8163b7c79ca22a81e10de1da7f',1,'rtabmap::Parameters']]], + ['defaultstereobmtexturethreshold_539',['defaultStereoBMTextureThreshold',['../classrtabmap_1_1Parameters.html#a7988cca845e3d4ab0f9c8f4044c7b357',1,'rtabmap::Parameters']]], + ['defaultstereobmuniquenessratio_540',['defaultStereoBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a8a86b2a1c92d1c60ff8732df829d93e0',1,'rtabmap::Parameters']]], + ['defaultstereodensestrategy_541',['defaultStereoDenseStrategy',['../classrtabmap_1_1Parameters.html#ae37ed02b9869832e1e40015b2a742cae',1,'rtabmap::Parameters']]], + ['defaultstereoeps_542',['defaultStereoEps',['../classrtabmap_1_1Parameters.html#affd797869ba81693ceb41c699a16b189',1,'rtabmap::Parameters']]], + ['defaultstereoerrorthreshold_543',['defaultStereoErrorThreshold',['../classrtabmap_1_1Parameters.html#a43dd4b83451d88127fe3d92d24a6f468',1,'rtabmap::Parameters']]], + ['defaultstereogpu_544',['defaultStereoGpu',['../classrtabmap_1_1Parameters.html#a3be75b42ebe3f34e345f97c38944ce21',1,'rtabmap::Parameters']]], + ['defaultstereoiterations_545',['defaultStereoIterations',['../classrtabmap_1_1Parameters.html#ab71248546a9b14dfb0a9d9caf978fd11',1,'rtabmap::Parameters']]], + ['defaultstereomaxdisparity_546',['defaultStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a3610794bc2182265cb702f459f46b4a9',1,'rtabmap::Parameters']]], + ['defaultstereomaxlevel_547',['defaultStereoMaxLevel',['../classrtabmap_1_1Parameters.html#adb2d145c305560d9c5c660bb74a024b5',1,'rtabmap::Parameters']]], + ['defaultstereomindisparity_548',['defaultStereoMinDisparity',['../classrtabmap_1_1Parameters.html#ace1334e39c04840c4607f3369c73deaa',1,'rtabmap::Parameters']]], + ['defaultstereomineigthreshold_549',['defaultStereoMinEigThreshold',['../classrtabmap_1_1Parameters.html#ac7f0f4f9f362450c79ae78851913fdcf',1,'rtabmap::Parameters']]], + ['defaultstereoopticalflow_550',['defaultStereoOpticalFlow',['../classrtabmap_1_1Parameters.html#a9a332a183a459fb27dc5a209d7ed79d7',1,'rtabmap::Parameters']]], + ['defaultstereosgbmblocksize_551',['defaultStereoSGBMBlockSize',['../classrtabmap_1_1Parameters.html#aa9b0276b847320e2ceb5f6f536e8b4d6',1,'rtabmap::Parameters']]], + ['defaultstereosgbmdisp12maxdiff_552',['defaultStereoSGBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#a3bc7e2d1fbfb1cf62d41a112b23fcfa2',1,'rtabmap::Parameters']]], + ['defaultstereosgbmmindisparity_553',['defaultStereoSGBMMinDisparity',['../classrtabmap_1_1Parameters.html#a10a6872195e5d06d192599c34f466f3e',1,'rtabmap::Parameters']]], + ['defaultstereosgbmmode_554',['defaultStereoSGBMMode',['../classrtabmap_1_1Parameters.html#ae15de14b2d38197d68681b431127c8d7',1,'rtabmap::Parameters']]], + ['defaultstereosgbmnumdisparities_555',['defaultStereoSGBMNumDisparities',['../classrtabmap_1_1Parameters.html#a21c10e376ba39baa30de0852667f0b95',1,'rtabmap::Parameters']]], + ['defaultstereosgbmp1_556',['defaultStereoSGBMP1',['../classrtabmap_1_1Parameters.html#a4430ed2635ebecb07373215e32d22528',1,'rtabmap::Parameters']]], + ['defaultstereosgbmp2_557',['defaultStereoSGBMP2',['../classrtabmap_1_1Parameters.html#a4b4d64be676abfea14639a769bdb4de0',1,'rtabmap::Parameters']]], + ['defaultstereosgbmprefiltercap_558',['defaultStereoSGBMPreFilterCap',['../classrtabmap_1_1Parameters.html#a56df9c1f66bc2386969a7e98db78a616',1,'rtabmap::Parameters']]], + ['defaultstereosgbmspecklerange_559',['defaultStereoSGBMSpeckleRange',['../classrtabmap_1_1Parameters.html#affdf258b1abcb915b8b434f0cf896609',1,'rtabmap::Parameters']]], + ['defaultstereosgbmspecklewindowsize_560',['defaultStereoSGBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a0b799762d41b09d020c89d6591db4530',1,'rtabmap::Parameters']]], + ['defaultstereosgbmuniquenessratio_561',['defaultStereoSGBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a4d94a30645c4f406bcd07c81c44404eb',1,'rtabmap::Parameters']]], + ['defaultstereossd_562',['defaultStereoSSD',['../classrtabmap_1_1Parameters.html#a8e40f0194449e89021f25b90456fc4da',1,'rtabmap::Parameters']]], + ['defaultstereousemineigenvals_563',['defaultStereoUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a02e16884db0e7711c14361f21abc8ab7',1,'rtabmap::Parameters']]], + ['defaultstereowinheight_564',['defaultStereoWinHeight',['../classrtabmap_1_1Parameters.html#a73674efa12b70980fd75d2ccb6d570d7',1,'rtabmap::Parameters']]], + ['defaultstereowinwidth_565',['defaultStereoWinWidth',['../classrtabmap_1_1Parameters.html#abaf98fb040c73d8184620b83aa17a665',1,'rtabmap::Parameters']]], + ['defaultsuperpointcuda_566',['defaultSuperPointCuda',['../classrtabmap_1_1Parameters.html#ac8736592c8be8e0d08532ddbbd67669c',1,'rtabmap::Parameters']]], + ['defaultsuperpointmodelpath_567',['defaultSuperPointModelPath',['../classrtabmap_1_1Parameters.html#a7937dcfbdddbb8ce94a24483c69e8379',1,'rtabmap::Parameters']]], + ['defaultsuperpointnms_568',['defaultSuperPointNMS',['../classrtabmap_1_1Parameters.html#a52e41199a441d7faf8bca48bfb493f89',1,'rtabmap::Parameters']]], + ['defaultsuperpointnmsradius_569',['defaultSuperPointNMSRadius',['../classrtabmap_1_1Parameters.html#a20b6d913f74764fc38f373315af31a4d',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratcuda_570',['defaultSuperPointRpautratCuda',['../classrtabmap_1_1Parameters.html#a41f09de77ae04f8a2045d03101754cd7',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratmodelpath_571',['defaultSuperPointRpautratModelPath',['../classrtabmap_1_1Parameters.html#a8d5ea16300f98ab2a05b2f26ab7d647f',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratnms_572',['defaultSuperPointRpautratNMS',['../classrtabmap_1_1Parameters.html#a4182d2ab831934256d47ba166e24a926',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratnmsradius_573',['defaultSuperPointRpautratNMSRadius',['../classrtabmap_1_1Parameters.html#a22fe1cd294532b26ef49e4298a69e26b',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratthreshold_574',['defaultSuperPointRpautratThreshold',['../classrtabmap_1_1Parameters.html#a69b146047ebb1870028729f0e7be3d50',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratweightspath_575',['defaultSuperPointRpautratWeightsPath',['../classrtabmap_1_1Parameters.html#a49c218c9619ea2185fce9487ecf718ab',1,'rtabmap::Parameters']]], + ['defaultsuperpointthreshold_576',['defaultSuperPointThreshold',['../classrtabmap_1_1Parameters.html#ace5033f0007763fc93e65932b9041682',1,'rtabmap::Parameters']]], + ['defaultsurfextended_577',['defaultSURFExtended',['../classrtabmap_1_1Parameters.html#a53f85d547c5cc152962f311803a70fdf',1,'rtabmap::Parameters']]], + ['defaultsurfgpukeypointsratio_578',['defaultSURFGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#ace3c3edea85a3a6b2e073d14bdfb2ab7',1,'rtabmap::Parameters']]], + ['defaultsurfgpuversion_579',['defaultSURFGpuVersion',['../classrtabmap_1_1Parameters.html#aa74df8b4c0b7b8fb769b1f33ca6a290d',1,'rtabmap::Parameters']]], + ['defaultsurfhessianthreshold_580',['defaultSURFHessianThreshold',['../classrtabmap_1_1Parameters.html#ab79bcf3220b95aafd2d1172359f26ae2',1,'rtabmap::Parameters']]], + ['defaultsurfoctavelayers_581',['defaultSURFOctaveLayers',['../classrtabmap_1_1Parameters.html#a4f35eb1553af531d3f4c59cc35f327bf',1,'rtabmap::Parameters']]], + ['defaultsurfoctaves_582',['defaultSURFOctaves',['../classrtabmap_1_1Parameters.html#ae02e3fea01023968f7f269038f0e477a',1,'rtabmap::Parameters']]], + ['defaultsurfupright_583',['defaultSURFUpright',['../classrtabmap_1_1Parameters.html#a372b88b3284dc01afcfabe4750964a64',1,'rtabmap::Parameters']]], + ['defaultvhepenabled_584',['defaultVhEpEnabled',['../classrtabmap_1_1Parameters.html#a55d159a1f4d432f77b50cde8b642439e',1,'rtabmap::Parameters']]], + ['defaultvhepmatchcountmin_585',['defaultVhEpMatchCountMin',['../classrtabmap_1_1Parameters.html#a0247195ecf1fe7fa766ae79bd49e03e0',1,'rtabmap::Parameters']]], + ['defaultvhepransacparam1_586',['defaultVhEpRansacParam1',['../classrtabmap_1_1Parameters.html#a63632c5cbe1f0b13fbc1bb7ed558d61f',1,'rtabmap::Parameters']]], + ['defaultvhepransacparam2_587',['defaultVhEpRansacParam2',['../classrtabmap_1_1Parameters.html#a4adc701cd2e1d9ee639cf26d41b0a548',1,'rtabmap::Parameters']]], + ['defaultvisbundleadjustment_588',['defaultVisBundleAdjustment',['../classrtabmap_1_1Parameters.html#a04e6d740b74a7796929a1265ff7be884',1,'rtabmap::Parameters']]], + ['defaultviscorfloweps_589',['defaultVisCorFlowEps',['../classrtabmap_1_1Parameters.html#ace9e57ccaffb74ac1991465d20d0b8e3',1,'rtabmap::Parameters']]], + ['defaultviscorflowerrorthreshold_590',['defaultVisCorFlowErrorThreshold',['../classrtabmap_1_1Parameters.html#aa67b91b1e6966f2877e82a38efbc388a',1,'rtabmap::Parameters']]], + ['defaultviscorflowgpu_591',['defaultVisCorFlowGpu',['../classrtabmap_1_1Parameters.html#a434023e866dd8b6300a5952c0fecfbca',1,'rtabmap::Parameters']]], + ['defaultviscorflowiterations_592',['defaultVisCorFlowIterations',['../classrtabmap_1_1Parameters.html#a0c297e3a0aee1942d658f82e737a4d8a',1,'rtabmap::Parameters']]], + ['defaultviscorflowmaxlevel_593',['defaultVisCorFlowMaxLevel',['../classrtabmap_1_1Parameters.html#aef22d8f74728d085ae108c35a1791d82',1,'rtabmap::Parameters']]], + ['defaultviscorflowmineigthreshold_594',['defaultVisCorFlowMinEigThreshold',['../classrtabmap_1_1Parameters.html#aefee30d19bc9b87b06e21abe5eb1cbbc',1,'rtabmap::Parameters']]], + ['defaultviscorflowusemineigenvals_595',['defaultVisCorFlowUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a2a05bef06bac1622562c563fe32927a1',1,'rtabmap::Parameters']]], + ['defaultviscorflowwinsize_596',['defaultVisCorFlowWinSize',['../classrtabmap_1_1Parameters.html#afb33251a94f3517c520a34a3a1283e5a',1,'rtabmap::Parameters']]], + ['defaultviscorguessmatchtoprojection_597',['defaultVisCorGuessMatchToProjection',['../classrtabmap_1_1Parameters.html#aa12553705c26df80ec035a08c172138f',1,'rtabmap::Parameters']]], + ['defaultviscorguesswinsize_598',['defaultVisCorGuessWinSize',['../classrtabmap_1_1Parameters.html#af34904f60b0b96ad96f9cbf1a4b14cd3',1,'rtabmap::Parameters']]], + ['defaultviscornndr_599',['defaultVisCorNNDR',['../classrtabmap_1_1Parameters.html#a9878752f654207e07d5ab91c957eea8e',1,'rtabmap::Parameters']]], + ['defaultviscornntype_600',['defaultVisCorNNType',['../classrtabmap_1_1Parameters.html#a975192ffcb93b8b2923379657090fcf7',1,'rtabmap::Parameters']]], + ['defaultviscortype_601',['defaultVisCorType',['../classrtabmap_1_1Parameters.html#a4390086fa765b55ed8db95ed4c84402f',1,'rtabmap::Parameters']]], + ['defaultvisdepthasmask_602',['defaultVisDepthAsMask',['../classrtabmap_1_1Parameters.html#a8b9bb46e56f16efd4e6e7b48b97ca4e8',1,'rtabmap::Parameters']]], + ['defaultvisdepthmaskfloorthr_603',['defaultVisDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a03cefcae7f028d96a1ba1f2aee762594',1,'rtabmap::Parameters']]], + ['defaultvisepipolargeometryvar_604',['defaultVisEpipolarGeometryVar',['../classrtabmap_1_1Parameters.html#a3f14a544667c829c6dfaea70168cc8d2',1,'rtabmap::Parameters']]], + ['defaultvisestimationtype_605',['defaultVisEstimationType',['../classrtabmap_1_1Parameters.html#aaf0ed785770024ea04a36b5748be0acd',1,'rtabmap::Parameters']]], + ['defaultvisfeaturetype_606',['defaultVisFeatureType',['../classrtabmap_1_1Parameters.html#a6d6b05e1579e3b4598e0ef991f74f814',1,'rtabmap::Parameters']]], + ['defaultvisgridcols_607',['defaultVisGridCols',['../classrtabmap_1_1Parameters.html#ac277e2a7fc50b150144308e1ba9b241a',1,'rtabmap::Parameters']]], + ['defaultvisgridrows_608',['defaultVisGridRows',['../classrtabmap_1_1Parameters.html#a073559bc6e3b3b08ac7e7595e9e3dd2a',1,'rtabmap::Parameters']]], + ['defaultvisinlierdistance_609',['defaultVisInlierDistance',['../classrtabmap_1_1Parameters.html#aaaf5aa4cf8883a92ff81342023e4206e',1,'rtabmap::Parameters']]], + ['defaultvisiterations_610',['defaultVisIterations',['../classrtabmap_1_1Parameters.html#a49294cd6ce5b24d516b2a88768e336ba',1,'rtabmap::Parameters']]], + ['defaultvismaxdepth_611',['defaultVisMaxDepth',['../classrtabmap_1_1Parameters.html#afce66bb7dea92bf71cb6c40eee0525aa',1,'rtabmap::Parameters']]], + ['defaultvismaxfeatures_612',['defaultVisMaxFeatures',['../classrtabmap_1_1Parameters.html#a4d1e65f17b6f579a3dc3ea706b7daece',1,'rtabmap::Parameters']]], + ['defaultvismeaninliersdistance_613',['defaultVisMeanInliersDistance',['../classrtabmap_1_1Parameters.html#afc400a1894120b3adbd301ea92dee760',1,'rtabmap::Parameters']]], + ['defaultvismindepth_614',['defaultVisMinDepth',['../classrtabmap_1_1Parameters.html#a0a34ea2af26613e72a8a40d45efe5f3b',1,'rtabmap::Parameters']]], + ['defaultvismininliers_615',['defaultVisMinInliers',['../classrtabmap_1_1Parameters.html#a803b4fd705ce5153fd06920dc658689d',1,'rtabmap::Parameters']]], + ['defaultvismininliersdistribution_616',['defaultVisMinInliersDistribution',['../classrtabmap_1_1Parameters.html#a3fcf445dfb4a6e0d379a92e428dfa6dd',1,'rtabmap::Parameters']]], + ['defaultvispnpflags_617',['defaultVisPnPFlags',['../classrtabmap_1_1Parameters.html#a525f5019e8faa02db110c201b0abe691',1,'rtabmap::Parameters']]], + ['defaultvispnpmaxvariance_618',['defaultVisPnPMaxVariance',['../classrtabmap_1_1Parameters.html#a14411e7adc3db5e7faed1c4376430529',1,'rtabmap::Parameters']]], + ['defaultvispnprefineiterations_619',['defaultVisPnPRefineIterations',['../classrtabmap_1_1Parameters.html#a7a51cff01e503035688fe92d1a88183d',1,'rtabmap::Parameters']]], + ['defaultvispnpreprojerror_620',['defaultVisPnPReprojError',['../classrtabmap_1_1Parameters.html#a5726f7a1920f35b0ffd9f0fe267b1404',1,'rtabmap::Parameters']]], + ['defaultvispnpsamplingpolicy_621',['defaultVisPnPSamplingPolicy',['../classrtabmap_1_1Parameters.html#a11862bd3db45c58db755e297d3647273',1,'rtabmap::Parameters']]], + ['defaultvispnpsplitlinearcovcomponents_622',['defaultVisPnPSplitLinearCovComponents',['../classrtabmap_1_1Parameters.html#a5a06db00062712789d4731839a76b789',1,'rtabmap::Parameters']]], + ['defaultvispnpvariancemedianratio_623',['defaultVisPnPVarianceMedianRatio',['../classrtabmap_1_1Parameters.html#a40a071dad5bb22dfc482f67142013f1a',1,'rtabmap::Parameters']]], + ['defaultvisrefineiterations_624',['defaultVisRefineIterations',['../classrtabmap_1_1Parameters.html#aa9777fe86b771f07d5c65e0f003bcae3',1,'rtabmap::Parameters']]], + ['defaultvisroiratios_625',['defaultVisRoiRatios',['../classrtabmap_1_1Parameters.html#af63113a8692b8400a33c684cee55d604',1,'rtabmap::Parameters']]], + ['defaultvisssc_626',['defaultVisSSC',['../classrtabmap_1_1Parameters.html#a2c78fb7b71679e3aa143f73ac02cc6e0',1,'rtabmap::Parameters']]], + ['defaultvissubpixeps_627',['defaultVisSubPixEps',['../classrtabmap_1_1Parameters.html#abb32e5ec30ef33bb29dbcb5123731630',1,'rtabmap::Parameters']]], + ['defaultvissubpixiterations_628',['defaultVisSubPixIterations',['../classrtabmap_1_1Parameters.html#ae5d158af0e723d456769f20f98624f61',1,'rtabmap::Parameters']]], + ['defaultvissubpixwinsize_629',['defaultVisSubPixWinSize',['../classrtabmap_1_1Parameters.html#ad12de348591423de8595d3c067b419e5',1,'rtabmap::Parameters']]], + ['deletelastlocation_630',['deleteLastLocation',['../classrtabmap_1_1Rtabmap.html#aee23115b4bd02bce5d1721418a0f7599',1,'rtabmap::Rtabmap']]], + ['deletelocation_631',['deleteLocation',['../classrtabmap_1_1Memory.html#a2b91d8b5d651fbaa12a31e364c793a21',1,'rtabmap::Memory']]], + ['deleteunusedwords_632',['deleteUnusedWords',['../classrtabmap_1_1VWDictionary.html#a33c8904edf3d0af65dfd2a6d817416fa',1,'rtabmap::VWDictionary']]], + ['deprecated_20list_633',['Deprecated List',['../deprecated.html',1,'']]], + ['depth_634',['depth',['../classrtabmap_1_1FeatureBA.html#ad48600a5b6ed17e7713f1485c4317948',1,'rtabmap::FeatureBA']]], + ['depthbleedingfiltering_635',['depthBleedingFiltering',['../namespacertabmap_1_1util2d.html#a7788d4dabf084959aa69162d5dbb2d2e',1,'rtabmap::util2d']]], + ['depthconfidencecompressed_636',['depthConfidenceCompressed',['../classrtabmap_1_1SensorData.html#aebbab80906082f6e35ce5731fa67ca26',1,'rtabmap::SensorData']]], + ['depthconfidenceraw_637',['depthConfidenceRaw',['../classrtabmap_1_1SensorData.html#a0cfb7cee085b7959c9ddf1d7854ed910',1,'rtabmap::SensorData']]], + ['depthfromcloud_638',['depthFromCloud',['../namespacertabmap_1_1util3d.html#aaf77cb59d32f36c1e9baa2111a7b1b3d',1,'rtabmap::util3d']]], + ['depthfromdisparity_639',['depthFromDisparity',['../namespacertabmap_1_1util2d.html#a110359c4884579e1c7b68d8baa7acb6c',1,'rtabmap::util2d']]], + ['depthfromstereocorrespondences_640',['depthFromStereoCorrespondences',['../namespacertabmap_1_1util2d.html#ae6548e6246eceaff5dcc9ee30514eac5',1,'rtabmap::util2d']]], + ['depthfromstereoimages_641',['depthFromStereoImages',['../namespacertabmap_1_1util2d.html#aacf89454b054d86b53a8038c8a404b50',1,'rtabmap::util2d']]], + ['depthorrightcompressed_642',['depthOrRightCompressed',['../classrtabmap_1_1SensorData.html#a85b36ca12b0936a99d61b768908097da',1,'rtabmap::SensorData']]], + ['depthorrightraw_643',['depthOrRightRaw',['../classrtabmap_1_1SensorData.html#a2476c59283ef2e24d7a3f10301433327',1,'rtabmap::SensorData']]], + ['depthraw_644',['depthRaw',['../classrtabmap_1_1SensorData.html#a1970cd319999fb371873553b53b07d73',1,'rtabmap::SensorData']]], + ['descriptor_645',['descriptor',['../classrtabmap_1_1FeatureBA.html#a7db630b2f418b05d2fbd772d1caadf48',1,'rtabmap::FeatureBA']]], + ['descriptors_646',['descriptors',['../classrtabmap_1_1SensorData.html#a5cf732793c05b16bb67f144524882b26',1,'rtabmap::SensorData']]], + ['deserialize_647',['deserialize',['../classrtabmap_1_1CameraModel.html#a490dc97ca8aa55d96324eb6612ccfd30',1,'rtabmap::CameraModel::deserialize(const std::vector< unsigned char > &data)'],['../classrtabmap_1_1CameraModel.html#a181c2e53da1151c281d85fde986a29c5',1,'rtabmap::CameraModel::deserialize(const unsigned char *data, unsigned int dataSize)'],['../classrtabmap_1_1StereoCameraModel.html#a7467f3a9a7961e643d0cd152286a13dd',1,'rtabmap::StereoCameraModel::deserialize(const std::vector< unsigned char > &data)'],['../classrtabmap_1_1StereoCameraModel.html#afdec3f5bab7ab9b4c339edaa30e639db',1,'rtabmap::StereoCameraModel::deserialize(const unsigned char *data, unsigned int dataSize)']]], + ['deserializedata_648',['deserializeData',['../classrtabmap_1_1Statistics.html#a167ea0c3bc76865e90624323e72399c7',1,'rtabmap::Statistics']]], + ['deserializeindex_649',['deserializeindex',['../classrtabmap_1_1VWDictionary.html#a3af1cce90b50dcb0f9dcd77e1fb08aad',1,'rtabmap::VWDictionary::deserializeIndex(const std::vector< unsigned char > &data)'],['../classrtabmap_1_1VWDictionary.html#a0a29d849a7c2b626407f453e5cb4b526',1,'rtabmap::VWDictionary::deserializeIndex(const unsigned char *data, size_t size)']]], + ['deskew_650',['deskew',['../namespacertabmap_1_1util3d.html#ae4f056638c16889c7cb1d41ecac2866c',1,'rtabmap::util3d']]], + ['detectmoreloopclosures_651',['detectMoreLoopClosures',['../classrtabmap_1_1Rtabmap.html#a600d86ab2a67fa08d6a1e726380948ea',1,'rtabmap::Rtabmap']]], + ['disablebilateralfiltering_652',['disableBilateralFiltering',['../classrtabmap_1_1SensorCaptureThread.html#a57beeb2c34d4430e37da05ef8e400a9b',1,'rtabmap::SensorCaptureThread']]], + ['disablefeaturedetection_653',['disableFeatureDetection',['../classrtabmap_1_1SensorCaptureThread.html#aeddec5c0c55aab261b31d0a980a7d327',1,'rtabmap::SensorCaptureThread']]], + ['disableimufiltering_654',['disableimufiltering',['../classrtabmap_1_1IMUThread.html#a7934573b7f4899278f1b048cf9a686bc',1,'rtabmap::IMUThread::disableIMUFiltering()'],['../classrtabmap_1_1SensorCaptureThread.html#a75c2426adc532854f1d7119256b1cf0d',1,'rtabmap::SensorCaptureThread::disableIMUFiltering()']]], + ['discretedepthdistortionmodel_655',['DiscreteDepthDistortionModel',['../classclams_1_1DiscreteDepthDistortionModel.html',1,'clams']]], + ['discretefrustum_656',['DiscreteFrustum',['../classclams_1_1DiscreteFrustum.html',1,'clams']]], + ['disparityfromstereocorrespondences_657',['disparityFromStereoCorrespondences',['../namespacertabmap_1_1util2d.html#a4f10f8038c62a97d3a79bd2dc5bf2c58',1,'rtabmap::util2d']]], + ['disparityfromstereoimages_658',['disparityFromStereoImages',['../namespacertabmap_1_1util2d.html#ad7ea8d1905c7143d376c57c9e22dcea5',1,'rtabmap::util2d']]], + ['distancetravelled_659',['distanceTravelled',['../classrtabmap_1_1OdometryInfo.html#a669d252c42f5635ecbe0288c1b0e8721',1,'rtabmap::OdometryInfo']]], + ['downsample_660',['downsample',['../group__PointCloudDownSampling.html#ga83a15e5eaeee8707bfa5563c71154579',1,'rtabmap::util3d::downsample(const LaserScan &cloud, int step)'],['../group__PointCloudDownSampling.html#ga2f9dd8a7c572ce78b76aec448b17a863',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga7a57facb7148254d43af7577a3716d15',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#gab4b196b83a0634b8e58c145ed54d510d',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga83657d48dce8b727088941773f4d8a73',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga8c3ca654fb0cc07084fdac8077714b3a',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga32d575439b2f5082c3946bc964c14b75',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int step)']]], + ['downsampling_661',['Point Cloud Downsampling',['../group__PointCloudDownSampling.html',1,'']]], + ['dumpdata_662',['dumpData',['../classrtabmap_1_1Rtabmap.html#a38db1c80ae583e255dd6174ba6d41ffc',1,'rtabmap::Rtabmap']]], + ['dumpdictionary_663',['dumpDictionary',['../classrtabmap_1_1Memory.html#afc3de4b861e23f90bf753794bcb40e68',1,'rtabmap::Memory']]], + ['dumpmemory_664',['dumpMemory',['../classrtabmap_1_1Memory.html#a634e2fdc0e1c93a2cb01f07c9cbac33f',1,'rtabmap::Memory']]], + ['dumpmemorytree_665',['dumpMemoryTree',['../classrtabmap_1_1Memory.html#a4aef39ff933463d9693e8f4f325f74e7',1,'rtabmap::Memory']]], + ['dumpprediction_666',['dumpPrediction',['../classrtabmap_1_1Rtabmap.html#ad0c040e54bbca27dffc46346d96c57cb',1,'rtabmap::Rtabmap']]], + ['dumpsignatures_667',['dumpSignatures',['../classrtabmap_1_1Memory.html#a1b470cb9ff41fd77a35d9a6230750446',1,'rtabmap::Memory']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_7.js b/preview/pr-1773/api/latest/search/all_7.js new file mode 100644 index 00000000..dede82a9 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_7.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['e_0',['E',['../classrtabmap_1_1StereoCameraModel.html#a8ab6c698248837e4dcfe36c2e7b02546',1,'rtabmap::StereoCameraModel']]], + ['elapsed_1',['elapsed',['../classUTimer.html#a372405f02e1d4e9571a73d80962d6f4c',1,'UTimer']]], + ['empty_2',['empty',['../classrtabmap_1_1IMU.html#ace111e68ca49e6d47cc92f53a0be87ef',1,'rtabmap::IMU']]], + ['emptycells_3',['emptyCells',['../classrtabmap_1_1LocalGrid.html#a7d0a732be74bd5c46e9029982bf4972b',1,'rtabmap::LocalGrid']]], + ['emptytrash_4',['emptyTrash',['../classrtabmap_1_1Memory.html#a072ec41027a03072f1a945540b43a1b8',1,'rtabmap::Memory']]], + ['emptytrashes_5',['emptyTrashes',['../classrtabmap_1_1DBDriver.html#ab4a0036162994c2ef76d4236e2a7ea0a',1,'rtabmap::DBDriver']]], + ['enablebilateralfiltering_6',['enableBilateralFiltering',['../classrtabmap_1_1SensorCaptureThread.html#a429011ef7b39d30fc98413d727cccf4b',1,'rtabmap::SensorCaptureThread']]], + ['enablefeaturedetection_7',['enableFeatureDetection',['../classrtabmap_1_1SensorCaptureThread.html#aa0a6c975417a655029470aea2ea5d01a',1,'rtabmap::SensorCaptureThread']]], + ['enableimufiltering_8',['enableimufiltering',['../classrtabmap_1_1IMUThread.html#ad7e54aa5d2c6a9354e38bda9f01c89ab',1,'rtabmap::IMUThread::enableIMUFiltering()'],['../classrtabmap_1_1SensorCaptureThread.html#a97ef5e49b994fcd2a3c87d6f7ef244ec',1,'rtabmap::SensorCaptureThread::enableIMUFiltering()']]], + ['ensurelinking_9',['ensureLinking',['../classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html#aff6bc204ec1c5dfaa423d8ec3e448f0f',1,'rtabmap::RtabmapColorOcTree::StaticMemberInitializer']]], + ['enu_5fwgs84togeocentric_5fwgs84_10',['ENU_WGS84ToGeocentric_WGS84',['../classrtabmap_1_1GeodeticCoords.html#a7f8066cd690d20fc02ad19bf96d9215b',1,'rtabmap::GeodeticCoords']]], + ['envsensor_11',['envsensor',['../classrtabmap_1_1EnvSensor.html',1,'rtabmap::EnvSensor'],['../classrtabmap_1_1EnvSensor.html#a512758b1afef465b24ce24de8a705dc9',1,'rtabmap::EnvSensor::EnvSensor()'],['../classrtabmap_1_1EnvSensor.html#a8b2f05e0297750a60ccd05c56f141a1b',1,'rtabmap::EnvSensor::EnvSensor(const Type &type, const double &value, const double &stamp=0)']]], + ['envsensors_12',['envsensors',['../namespacertabmap.html#ac175ef40b7a4acb632232d3d96a1199a',1,'rtabmap::EnvSensors'],['../classrtabmap_1_1SensorData.html#a4cce095c69f9fa8f0035c9f2f51c0ff9',1,'rtabmap::SensorData::envSensors()']]], + ['epipolargeometry_13',['EpipolarGeometry',['../classrtabmap_1_1EpipolarGeometry.html',1,'rtabmap']]], + ['epsilon_14',['epsilon',['../classrtabmap_1_1Optimizer.html#a3bca4e3df1048f8bbad9b3b9473924a2',1,'rtabmap::Optimizer::epsilon()'],['../classrtabmap_1_1StereoOpticalFlow.html#ae53f537e0e9ebf121ff8a8b3bdc410a8',1,'rtabmap::StereoOpticalFlow::epsilon()']]], + ['erase_15',['erase',['../classUFile.html#a1faba3e78bb915a685d82f0696e1ec02',1,'UFile']]], + ['erodemap_16',['erodeMap',['../namespacertabmap_1_1util3d.html#aa4d323d39ec23ea314c22f0668ab11c4',1,'rtabmap::util3d']]], + ['error_17',['error',['../classrtabmap_1_1GPS.html#acf16049cca9dfc2fdb46705818f3bb34',1,'rtabmap::GPS']]], + ['estimatemapdepth_18',['estimateMapDepth',['../classclams_1_1FrameProjector.html#a26c74a7a7f6f6e9c2e18d6a38693699c',1,'clams::FrameProjector']]], + ['estimatemotion3dto2d_19',['estimatemotion3dto2d',['../namespacertabmap_1_1util3d.html#a3fffe99bf880decfb8a9f60ff7b882bd',1,'rtabmap::util3d::estimateMotion3DTo2D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< CameraModel > &cameraModels, unsigned int samplingPolicy, int minInliers, int iterations, double reprojError, int flagsPnP, int refineIterations, int varianceMedianRatio, float maxVariance, const Transform &guess, const std::map< int, cv::Point3f > &words3B, cv::Mat *covariance, std::vector< std::vector< int > > *matchesOut, std::vector< std::vector< int > > *inliersOut, bool splitLinearCovarianceComponents)'],['../namespacertabmap_1_1util3d.html#a94321442a82f05368f8fd9c9a998284e',1,'rtabmap::util3d::estimateMotion3DTo2D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const CameraModel &cameraModel, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const Transform &guess=Transform::getIdentity(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)'],['../namespacertabmap_1_1util3d.html#a0a1a57cb2be47c4b6670672b2a0a5a93',1,'rtabmap::util3d::estimateMotion3DTo2D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< CameraModel > &cameraModels, unsigned int samplingPolicy=0, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const Transform &guess=Transform::getIdentity(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)']]], + ['estimatemotion3dto3d_20',['estimateMotion3DTo3D',['../namespacertabmap_1_1util3d.html#a717fefeecb331b1dddc3ec3b4f6beb3a',1,'rtabmap::util3d']]], + ['evaluation_21',['Algorithm evaluation',['../tools.html#autotoc_md8',1,'']]], + ['executenoresult_22',['executeNoResult',['../classrtabmap_1_1DBDriver.html#a835fc23bd4f6532af71f3aadfb8037d8',1,'rtabmap::DBDriver']]], + ['exists_23',['exists',['../classUFile.html#a4963afa70289718a3bd1ca50b6adb420',1,'UFile::exists()'],['../classUFile.html#ab8719ee88436205b171674060eaa4dea',1,'UFile::exists(const std::string &filePath)'],['../classUDirectory.html#ad82410f2502789f23d30984a5b1d7724',1,'UDirectory::exists()']]], + ['exportdictionary_24',['exportDictionary',['../classrtabmap_1_1VWDictionary.html#a1ba7cb31f8658980849ffd9ce76b3cb8',1,'rtabmap::VWDictionary']]], + ['exportgps_25',['exportGPS',['../namespacertabmap_1_1graph.html#a96a6c2e8348e3d9cfd8b1770d17da9b2',1,'rtabmap::graph']]], + ['exportposes_26',['exportposes',['../classrtabmap_1_1Rtabmap.html#aeffdfc811a178ba2e55205b746a6ea71',1,'rtabmap::Rtabmap::exportPoses()'],['../namespacertabmap_1_1graph.html#af5622dec3112ea0b5154056bde132d46',1,'rtabmap::graph::exportPoses()']]], + ['exposurefusion_27',['exposureFusion',['../namespacertabmap_1_1util2d.html#ac38e8ed586d24c4b9fe72d64afeb9583',1,'rtabmap::util2d']]], + ['extended_28',['extended',['../classrtabmap_1_1Statistics.html#a1e1ba8f7429fa212aa32897877dec122',1,'rtabmap::Statistics']]], + ['extractclusters_29',['extractclusters',['../group__ExtractClusters.html#ga8184974cc084fdd804e82bb979eb2353',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga62a0d02930f5969cbff707afe01d1bcd',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga8e23ae8df06afbb753eb6eb0b54a400a',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga3e51576a82fef5cddffe4d3ae14d8899',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga7c622ccc41a487527f0448db84fd8539',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga180048dc26009c5d6d1233bb6ce5de04',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#gada592bb1e0525a32412d5009002b9b1e',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#gaecfbf327f7ef38738d0e592ed470d318',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)']]], + ['extractindices_30',['extractindices',['../group__ExtractIndices.html#gad759e35639cd87f04ebd09eadb5865f5',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gaa312bb0ae54f1472d4e4f22bee7cc4d6',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gaf6cd58fdda3450fb11496395e35908d7',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gaca2188ec4a875fb9c6d2fa240888dcf1',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#ga2a39a8e9d769e5e2cea8054b7084af1e',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gae196609121fa899ba2735d406aedc73b',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#gaf8e635d6864b0a7f41bad4bb185a57f4',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga93acd3d20cbab15b628cbc2a0f3b1919',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga0c8a4fe56efba09d2bf6c5b84da36702',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga8ce0dc4070d599c6f4a8c55651c2f944',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga8685395807479f06b19d9d41616a03a7',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)']]], + ['extraction_31',['extraction',['../group__ExtractClusters.html',1,'Point Cloud Cluster Extraction'],['../group__ExtractIndices.html',1,'Point Cloud Indices Extraction']]], + ['extractplane_32',['extractPlane',['../namespacertabmap_1_1util3d.html#acc584a6135a4567d4566f72a64d0770a',1,'rtabmap::util3d']]], + ['extractxyzcorrespondences_33',['extractxyzcorrespondences',['../namespacertabmap_1_1util3d.html#a58b9802c1fc28b7e8927359173f98de8',1,'rtabmap::util3d::extractXYZCorrespondences(const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)'],['../namespacertabmap_1_1util3d.html#a0696277eef10a197af8fd5dcba52fc12',1,'rtabmap::util3d::extractXYZCorrespondences(const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const cv::Mat &depthImage1, const cv::Mat &depthImage2, float cx, float cy, float fx, float fy, float maxDepth, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)'],['../namespacertabmap_1_1util3d.html#a340e76117340170fb465ade8b11dd6af',1,'rtabmap::util3d::extractXYZCorrespondences(const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZ > &cloud1, const pcl::PointCloud< pcl::PointXYZ > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)'],['../namespacertabmap_1_1util3d.html#a43b6de83939173dfd275cbd17f5d7500',1,'rtabmap::util3d::extractXYZCorrespondences(const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZRGB > &cloud1, const pcl::PointCloud< pcl::PointXYZRGB > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)']]], + ['extractxyzcorrespondencesransac_34',['extractXYZCorrespondencesRANSAC',['../namespacertabmap_1_1util3d.html#ab6a2896e40afacde8cb8b0d10a955e02',1,'rtabmap::util3d']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_8.js b/preview/pr-1773/api/latest/search/all_8.js new file mode 100644 index 00000000..0ef33f07 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_8.js @@ -0,0 +1,64 @@ +var searchData= +[ + ['f_0',['F',['../classrtabmap_1_1StereoCameraModel.html#a1e4ffc9baa8dfee0a79ea32bac9b7c1c',1,'rtabmap::StereoCameraModel']]], + ['fast_1',['fast',['../parameters.html#autotoc_md17',1,'FAST'],['../classrtabmap_1_1FAST.html',1,'rtabmap::FAST']]], + ['fast_5fbrief_2',['FAST_BRIEF',['../classrtabmap_1_1FAST__BRIEF.html',1,'rtabmap']]], + ['fast_5ffreak_3',['FAST_FREAK',['../classrtabmap_1_1FAST__FREAK.html',1,'rtabmap']]], + ['fastbilateralfiltering_4',['fastBilateralFiltering',['../namespacertabmap_1_1util2d.html#a076914fde23d1323fccf71a794b9bc51',1,'rtabmap::util2d']]], + ['feature2d_5',['Feature2D',['../classrtabmap_1_1Feature2D.html',1,'rtabmap']]], + ['featureba_6',['FeatureBA',['../classrtabmap_1_1FeatureBA.html',1,'rtabmap']]], + ['features_7',['features',['../classrtabmap_1_1OdometryInfo.html#a736c2515b2347de6e1c6099a727aea8c',1,'rtabmap::OdometryInfo']]], + ['featuresdim_8',['featuresDim',['../classrtabmap_1_1FlannIndex.html#a8191e3ba9cc7a5361443430171691df3',1,'rtabmap::FlannIndex']]], + ['featurestype_9',['featuresType',['../classrtabmap_1_1FlannIndex.html#ace329768df8b54b935fbe7a8921efe69',1,'rtabmap::FlannIndex']]], + ['field_10',['field',['../classrtabmap_1_1LaserScan.html#a61d7ecfee5d444fdde06efb0f13ed68d',1,'rtabmap::LaserScan']]], + ['filldepthholes_11',['fillDepthHoles',['../namespacertabmap_1_1util2d.html#aeb3dee2cf6484f0b224d4687899cb004',1,'rtabmap::util2d']]], + ['fillprojectedcloudholes_12',['fillProjectedCloudHoles',['../namespacertabmap_1_1util3d.html#a992c9dd2c6243261244e0650d3e98564',1,'rtabmap::util3d']]], + ['fillregistereddepthholes_13',['fillRegisteredDepthHoles',['../namespacertabmap_1_1util2d.html#afc6c9b3442c64ef2061365ead3923228',1,'rtabmap::util2d']]], + ['filterduplicatelinks_14',['filterDuplicateLinks',['../namespacertabmap_1_1graph.html#a5d11e3cccfeca97d570c528858863dd2',1,'rtabmap::graph']]], + ['filterfloor_15',['filterFloor',['../namespacertabmap_1_1util3d.html#ae145af1bf4955fa135bcf359fb1fe628',1,'rtabmap::util3d']]], + ['filtering_16',['filtering',['../group__CropBox.html',1,'Crop Box Filtering'],['../group__FrustumFiltering.html',1,'Frustum Filtering'],['../group__PassThrough.html',1,'Pass-through Filtering'],['../group__PointNormalFiltering.html',1,'Point Normal Filtering'],['../group__ProportionalRadiusFiltering.html',1,'Proportional Radius Filtering'],['../group__RadiusFiltering.html',1,'Radius Filtering'],['../group__SubtractFiltering.html',1,'Subtract Filtering'],['../group__VoxelFiltering.html',1,'Voxel Filtering']]], + ['filtering_20of_20pcl_20point_20clouds_17',['filtering of pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds']]], + ['filterkeypointsbydepth_18',['filterKeypointsByDepth',['../classrtabmap_1_1Feature2D.html#aadbb5a7611eb94ea6925115999bc0f4e',1,'rtabmap::Feature2D']]], + ['filterkeypointsbydisparity_19',['filterKeypointsByDisparity',['../classrtabmap_1_1Feature2D.html#a32fa09026282be6a729483bfe57d31ec',1,'rtabmap::Feature2D']]], + ['filterlinks_20',['filterlinks',['../namespacertabmap_1_1graph.html#a592918d54b32d6f13236de85958da300',1,'rtabmap::graph::filterLinks(const std::multimap< int, Link > &links, Link::Type filteredType, bool inverted=false)'],['../namespacertabmap_1_1graph.html#af4dffb2a3eced519378d18bca8fa4419',1,'rtabmap::graph::filterLinks(const std::map< int, Link > &links, Link::Type filteredType, bool inverted=false)']]], + ['filtermaxdepth_21',['filterMaxDepth',['../namespacertabmap_1_1util3d.html#a96efcf6ed971e5a5d6b7f9a5e03d1ce3',1,'rtabmap::util3d']]], + ['filterparameters_22',['filterParameters',['../classrtabmap_1_1Parameters.html#a24faced7b8d2ebb7045cd6f8f6382ad7',1,'rtabmap::Parameters']]], + ['findcorrespondences_23',['findcorrespondences',['../namespacertabmap_1_1util3d.html#a5c07f098f9f5ba889e18d22b927f3cd4',1,'rtabmap::util3d::findCorrespondences(const std::map< int, cv::Point3f > &words1, const std::map< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *correspondences=0)'],['../namespacertabmap_1_1util3d.html#ac466a705ab9ee7d99f23842cd71f3c96',1,'rtabmap::util3d::findCorrespondences(const std::multimap< int, cv::Point3f > &words1, const std::multimap< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *uniqueCorrespondences=0)'],['../namespacertabmap_1_1util3d.html#a188c2a13980f6b7d85e6e0804a38cb50',1,'rtabmap::util3d::findCorrespondences(const std::multimap< int, cv::KeyPoint > &wordsA, const std::multimap< int, cv::KeyPoint > &wordsB, std::list< std::pair< cv::Point2f, cv::Point2f > > &pairs)']]], + ['findlink_24',['findlink',['../namespacertabmap_1_1graph.html#a8200ae3a6bd27ee2cee4b71d85ace3e9',1,'rtabmap::graph::findLink(const std::multimap< int, std::pair< int, Link::Type > > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)'],['../namespacertabmap_1_1graph.html#a7695c60c6bb375057586449674d42eea',1,'rtabmap::graph::findLink(const std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)'],['../namespacertabmap_1_1graph.html#a06ed3112247c13dcf494665c1d9df327',1,'rtabmap::graph::findLink(std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)'],['../namespacertabmap_1_1graph.html#ad91079c9cdd934c8ba8927d3c52b40e5',1,'rtabmap::graph::findLink(std::multimap< int, std::pair< int, Link::Type > > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)'],['../namespacertabmap_1_1graph.html#aaa0b06795dea514ad1d5fdd4626d32ec',1,'rtabmap::graph::findLink(std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)'],['../namespacertabmap_1_1graph.html#aecdcc01682092f4c89257d070aa2a437',1,'rtabmap::graph::findLink(const std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)']]], + ['findlinks_25',['findLinks',['../namespacertabmap_1_1graph.html#a308c9331cd3dd36a776517e64b33bd82',1,'rtabmap::graph']]], + ['findnearestnode_26',['findNearestNode',['../namespacertabmap_1_1graph.html#a3d6e74a018b07cd52151e3e168f6384c',1,'rtabmap::graph']]], + ['findnearestnodes_27',['findnearestnodes',['../namespacertabmap_1_1graph.html#a70a5f4b17aa3bb54cad151c9f290ff7f',1,'rtabmap::graph::findNearestNodes(const Transform &targetPose, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)'],['../namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157',1,'rtabmap::graph::findNearestNodes(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)'],['../namespacertabmap_1_1graph.html#a52dbbfb5099e97699f2ead9139891a5f',1,'rtabmap::graph::findNearestNodes(const std::map< int, rtabmap::Transform > &nodes, const rtabmap::Transform &targetPose, int k)']]], + ['findnearestposes_28',['findnearestposes',['../namespacertabmap_1_1graph.html#a8cd823f440a4512407ef78d76ff1dbbf',1,'rtabmap::graph::findNearestPoses(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)'],['../namespacertabmap_1_1graph.html#a236de727a38e51699fe73ff61b459d95',1,'rtabmap::graph::findNearestPoses(const Transform &targetPose, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)']]], + ['findnn_29',['findnn',['../classrtabmap_1_1VWDictionary.html#aada11cf01b586ac8205f8bff0b1ab295',1,'rtabmap::VWDictionary::findNN(const cv::Mat &descriptors) const'],['../classrtabmap_1_1VWDictionary.html#ac2f21a98b70e91ab2e8a07151c508d1c',1,'rtabmap::VWDictionary::findNN(const std::list< VisualWord * > &vws) const']]], + ['findpairs_30',['findpairs',['../classrtabmap_1_1EpipolarGeometry.html#a8fc121340b9d638dc9b8c69f2d86c5e7',1,'rtabmap::EpipolarGeometry::findPairs(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)'],['../classrtabmap_1_1EpipolarGeometry.html#ace979984a7d97ccaa18bf0764318d342',1,'rtabmap::EpipolarGeometry::findPairs(const std::map< int, T > &wordsA, const std::map< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)']]], + ['findpairsall_31',['findPairsAll',['../classrtabmap_1_1EpipolarGeometry.html#adfcc58ee756cb99887c6d8807bc7104c',1,'rtabmap::EpipolarGeometry']]], + ['findpairsunique_32',['findPairsUnique',['../classrtabmap_1_1EpipolarGeometry.html#a7c3886c647a098d33a88640ed2477e24',1,'rtabmap::EpipolarGeometry']]], + ['flann_5falgorithm_5ft_33',['flann_algorithm_t',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010',1,'rtabmap::FlannIndex']]], + ['flann_5findex_5fkdtree_34',['FLANN_INDEX_KDTREE',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a4e3f4b810ce249000373d41046ab273d',1,'rtabmap::FlannIndex']]], + ['flann_5findex_5fkdtree_5fsingle_35',['FLANN_INDEX_KDTREE_SINGLE',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a519b6d4008708066a792ac2929607081',1,'rtabmap::FlannIndex']]], + ['flann_5findex_5flinear_36',['FLANN_INDEX_LINEAR',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010ad91d542360e077f1f119dca41dcef818',1,'rtabmap::FlannIndex']]], + ['flann_5findex_5flsh_37',['FLANN_INDEX_LSH',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a9f4f22cd092844bde159ebc0b004a5c8',1,'rtabmap::FlannIndex']]], + ['flannindex_38',['FlannIndex',['../classrtabmap_1_1FlannIndex.html',1,'rtabmap']]], + ['flush_39',['flush',['../classULogger.html#a701ad6b99c9040cf3b5d47711e9f6d6a',1,'ULogger']]], + ['force3dof_40',['force3DoF',['../classrtabmap_1_1Registration.html#abb255bdab60a262f9cfc5d868e50cc9c',1,'rtabmap::Registration']]], + ['forget_41',['forget',['../classrtabmap_1_1Memory.html#a51e89ccab2261912b09a5b7178fdd46c',1,'rtabmap::Memory']]], + ['format_42',['Format',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007',1,'rtabmap::LaserScan']]], + ['fovx_43',['fovX',['../classrtabmap_1_1CameraModel.html#ac3aa6835f8ae019de4dbf85eed849b75',1,'rtabmap::CameraModel']]], + ['fovy_44',['fovY',['../classrtabmap_1_1CameraModel.html#af4df41cc8a613f3e03b1ed14fc0a887e',1,'rtabmap::CameraModel']]], + ['frameprojector_45',['FrameProjector',['../classclams_1_1FrameProjector.html',1,'clams']]], + ['framesprocessed_46',['framesProcessed',['../classrtabmap_1_1Odometry.html#a7476b9fffee225ef396804ef59084659',1,'rtabmap::Odometry']]], + ['freak_47',['FREAK',['../parameters.html#autotoc_md20',1,'']]], + ['from_48',['from',['../classrtabmap_1_1Link.html#a185194e8e766ca979e4de7e179f0e534',1,'rtabmap::Link']]], + ['from_20a_20point_20cloud_49',['from a point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['fromeigen4f_50',['fromEigen4f',['../classrtabmap_1_1Transform.html#aed17615176c1c3e6fdc682232b753d29',1,'rtabmap::Transform']]], + ['fromenu_5fwgs84_51',['fromENU_WGS84',['../classrtabmap_1_1GeodeticCoords.html#abc69e5c7f8e473fe6788042237992d43',1,'rtabmap::GeodeticCoords']]], + ['fromgeocentric_5fwgs84_52',['fromGeocentric_WGS84',['../classrtabmap_1_1GeodeticCoords.html#ae37435ee904b9782fcddbf0f72f388bd',1,'rtabmap::GeodeticCoords']]], + ['fromstring_53',['fromString',['../classrtabmap_1_1Transform.html#a8358aacfcddec4ab82c43c758cad0b75',1,'rtabmap::Transform']]], + ['frustum_20filtering_54',['Frustum Filtering',['../group__FrustumFiltering.html',1,'']]], + ['frustumfiltering_55',['frustumfiltering',['../group__FrustumFiltering.html#ga4ceacaabe757da82d3278b08df766a69',1,'rtabmap::util3d::frustumFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)'],['../group__FrustumFiltering.html#ga93cb6151fc470d6b932b4a7c6cb15090',1,'rtabmap::util3d::frustumFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)'],['../group__FrustumFiltering.html#gad05921639a3371d2ee0f684b77542330',1,'rtabmap::util3d::frustumFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)']]], + ['frustumposesfiltering_56',['frustumPosesFiltering',['../namespacertabmap_1_1graph.html#a8213a5876c86611ee4c832981eb1e7de',1,'rtabmap::graph']]], + ['frustums_5f_57',['frustums_',['../classclams_1_1DiscreteDepthDistortionModel.html#a21e2cb0d6cb694629231405ca67f00a1',1,'clams::DiscreteDepthDistortionModel']]], + ['fullupdateneeded_58',['fullUpdateNeeded',['../classrtabmap_1_1GlobalMap.html#a11e9ba83337edf7f08f3c50064be028a',1,'rtabmap::GlobalMap']]], + ['fx_59',['fx',['../classrtabmap_1_1CameraModel.html#acea616d4e141804dbc5c6eda58bebf6b',1,'rtabmap::CameraModel']]], + ['fy_60',['fy',['../classrtabmap_1_1CameraModel.html#ac4089d34947b040205e281edae4151a1',1,'rtabmap::CameraModel']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_9.js b/preview/pr-1773/api/latest/search/all_9.js new file mode 100644 index 00000000..da6a7b28 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_9.js @@ -0,0 +1,229 @@ +var searchData= +[ + ['g2o_0',['g2o',['../parameters.html#autotoc_md30',1,'']]], + ['gaincompensator_1',['GainCompensator',['../classrtabmap_1_1GainCompensator.html',1,'rtabmap']]], + ['generatedescriptors_2',['generateDescriptors',['../classrtabmap_1_1Feature2D.html#abaca942668ac3d2f16d3e78797ff0fb9',1,'rtabmap::Feature2D']]], + ['generatedotgraph_3',['generateDOTGraph',['../classrtabmap_1_1Rtabmap.html#a3c32f64acd943c676a9b11c7dbd3a5ae',1,'rtabmap::Rtabmap']]], + ['generategraph_4',['generategraph',['../classrtabmap_1_1Memory.html#aebef354bb315f522b4767337a6bd1ee6',1,'rtabmap::Memory::generateGraph()'],['../classrtabmap_1_1DBDriver.html#abbf62fc6967cf618e6b2aece44f45230',1,'rtabmap::DBDriver::generateGraph()']]], + ['generatekeypoints_5',['generateKeypoints',['../classrtabmap_1_1Feature2D.html#a78d70d2150b42203ffd1c94d79661248',1,'rtabmap::Feature2D']]], + ['generatekeypoints3d_6',['generateKeypoints3D',['../classrtabmap_1_1Feature2D.html#ae01a548fe993a7aa309cce96645693ce',1,'rtabmap::Feature2D']]], + ['generatekeypoints3ddepth_7',['generatekeypoints3ddepth',['../namespacertabmap_1_1util3d.html#a4f938d094d62997e0fb5d53c59f7ef82',1,'rtabmap::util3d::generateKeypoints3DDepth(const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const CameraModel &cameraModel, float minDepth=0, float maxDepth=0)'],['../namespacertabmap_1_1util3d.html#a785db0d55f5eccf209b9d3d712ec92b2',1,'rtabmap::util3d::generateKeypoints3DDepth(const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, float minDepth=0, float maxDepth=0)']]], + ['generatekeypoints3ddisparity_8',['generateKeypoints3DDisparity',['../namespacertabmap_1_1util3d.html#af34bc7763a1e077a3520f4952ed9d196',1,'rtabmap::util3d']]], + ['generatekeypoints3dstereo_9',['generateKeypoints3DStereo',['../namespacertabmap_1_1util3d.html#a7d48db86fe2f0cfc9abc974a66be8695',1,'rtabmap::util3d']]], + ['generateprediction_10',['generatePrediction',['../classrtabmap_1_1BayesFilter.html#a489031236b91dbaba0ff192f90799cd4',1,'rtabmap::BayesFilter']]], + ['geocentric_5fwgs84toenu_5fwgs84_11',['Geocentric_WGS84ToENU_WGS84',['../classrtabmap_1_1GeodeticCoords.html#a76c33e9f988c743e429b0a04d18e258d',1,'rtabmap::GeodeticCoords']]], + ['geodeticcoords_12',['geodeticcoords',['../classrtabmap_1_1GeodeticCoords.html',1,'rtabmap::GeodeticCoords'],['../classrtabmap_1_1GeodeticCoords.html#a41294c28a20d82ca1cee7f7038255d64',1,'rtabmap::GeodeticCoords::GeodeticCoords()'],['../classrtabmap_1_1GeodeticCoords.html#a0e70bc5a1464b930fafc579322912a68',1,'rtabmap::GeodeticCoords::GeodeticCoords(double latitude, double longitude, double altitude)']]], + ['get3dmap_13',['get3DMap',['../classrtabmap_1_1Rtabmap.html#ae617c65a0ba6f95a321b8c0c3a18b0e3',1,'rtabmap::Rtabmap']]], + ['getalllabels_14',['getAllLabels',['../classrtabmap_1_1Memory.html#a055a0ebfc7e2c128d386f8141dc320ce',1,'rtabmap::Memory']]], + ['getalllinks_15',['getAllLinks',['../classrtabmap_1_1Memory.html#acde7a0f34f8896c3c9f002c6cbcc614e',1,'rtabmap::Memory']]], + ['getallsignatureids_16',['getAllSignatureIds',['../classrtabmap_1_1Memory.html#a4c7c344a7f3733a8f30a6e82fbb4f20a',1,'rtabmap::Memory']]], + ['getangle_17',['getAngle',['../classrtabmap_1_1Transform.html#abd0f443c22c295cfe85e2402516defcc',1,'rtabmap::Transform']]], + ['getbackwardcompatibilitymap_18',['getBackwardCompatibilityMap',['../classrtabmap_1_1Parameters.html#a66c12cd1e2e614cc5c987cf7f0dbe2be',1,'rtabmap::Parameters']]], + ['getcellsize_19',['getcellsize',['../classrtabmap_1_1GlobalMap.html#a445f18d347d5624a012f756eb9fe5320',1,'rtabmap::GlobalMap::getCellSize()'],['../classrtabmap_1_1LocalGridMaker.html#a305865c8f98b498b13a35ef0b790f926',1,'rtabmap::LocalGridMaker::getCellSize()']]], + ['getclassname_20',['getclassname',['../classrtabmap_1_1RtabmapEventInit.html#ac10fa3c98f98804d1059b2673233bf0c',1,'rtabmap::RtabmapEventInit::getClassName()'],['../classrtabmap_1_1OdometryEvent.html#a461365124cbdf488d3a05874be8c4bb2',1,'rtabmap::OdometryEvent::getClassName()'],['../classrtabmap_1_1RtabmapEvent3DMap.html#ad2d9581145b56762e1d9ae5f04101db5',1,'rtabmap::RtabmapEvent3DMap::getClassName()'],['../classrtabmap_1_1RtabmapGlobalPathEvent.html#a5dd474b3110c9d4bb53a832aaeda8145',1,'rtabmap::RtabmapGlobalPathEvent::getClassName()'],['../classrtabmap_1_1RtabmapLabelErrorEvent.html#ab41ac9cdd98c1d94b1a8dc9a21364315',1,'rtabmap::RtabmapLabelErrorEvent::getClassName()'],['../classrtabmap_1_1RtabmapGoalStatusEvent.html#aa90a7d8a6afe4de12b28f68aaf4f2897',1,'rtabmap::RtabmapGoalStatusEvent::getClassName()'],['../classrtabmap_1_1SensorEvent.html#a7bb8ca3a235aa8b58227bc50e19d7493',1,'rtabmap::SensorEvent::getClassName()'],['../classrtabmap_1_1UserDataEvent.html#a26248169380397c47377310d61090385',1,'rtabmap::UserDataEvent::getClassName()'],['../classUEvent.html#a2c7d278240ad4b7d88a2c534cc5f47b4',1,'UEvent::getClassName()'],['../classULogEvent.html#a70ec329f7f43a18805469302ffddc610',1,'ULogEvent::getClassName()'],['../classrtabmap_1_1RtabmapEventCmd.html#a23c1b76dc2e8d6223cb52cb4fcaf7b5c',1,'rtabmap::RtabmapEventCmd::getClassName()'],['../classrtabmap_1_1RtabmapEvent.html#ae548b73bb3504a10a4e40592648f42b8',1,'rtabmap::RtabmapEvent::getClassName()'],['../classrtabmap_1_1ParamEvent.html#a877e2b7fedcb8aba63e3430d7f975e0a',1,'rtabmap::ParamEvent::getClassName()'],['../classrtabmap_1_1OdometryResetEvent.html#a94dc8e8b7ec952c0ca2b393cc0f3e71d',1,'rtabmap::OdometryResetEvent::getClassName()'],['../classrtabmap_1_1IMUEvent.html#adf3482d48ccbf36daa039efb596405d0',1,'rtabmap::IMUEvent::getClassName()'],['../classUObjDeletedEvent.html#adb1ad42f6258d12eee9da77d6f129633',1,'UObjDeletedEvent::getClassName()']]], + ['getclosesttransform_21',['getClosestTransform',['../classrtabmap_1_1Transform.html#ab943d72a808b96b7f89943fc78e38d68',1,'rtabmap::Transform']]], + ['getcode_22',['getCode',['../classUEvent.html#a7356350719dfd5ba2d28368d1fdcd143',1,'UEvent']]], + ['getcompresseddata_23',['getCompressedData',['../classrtabmap_1_1CompressionThread.html#a6908afb16364f91c7d0744decf6c970d',1,'rtabmap::CompressionThread']]], + ['getconnectedgraph_24',['getConnectedGraph',['../classrtabmap_1_1Optimizer.html#a4477c9a5b6651729944726465b5eba7f',1,'rtabmap::Optimizer']]], + ['getcreateintermediatenodes_25',['getCreateIntermediateNodes',['../classrtabmap_1_1RtabmapThread.html#a3dffee6fb4ae760c140144fd47923643',1,'rtabmap::RtabmapThread']]], + ['getdata_26',['getData',['../classrtabmap_1_1IMUEvent.html#a3ebdf9e3cb56c153bf76d4aad5a6b44e',1,'rtabmap::IMUEvent']]], + ['getdatabasememoryused_27',['getDatabaseMemoryUsed',['../classrtabmap_1_1Memory.html#a83d0b30afc46dd66ab3106c9997657c4',1,'rtabmap::Memory']]], + ['getdatabaseurl_28',['getDatabaseUrl',['../classrtabmap_1_1Memory.html#ab2c3951385254cbb42fb399b407ded24',1,'rtabmap::Memory']]], + ['getdatabaseversion_29',['getdatabaseversion',['../classrtabmap_1_1DBDriver.html#a9adb7be1463016917f24a3db5f1e8264',1,'rtabmap::DBDriver::getDatabaseVersion()'],['../classrtabmap_1_1Memory.html#aebd7dd4ef859d70435a5db8e4f398ea5',1,'rtabmap::Memory::getDatabaseVersion()']]], + ['getdatabuffersize_30',['getDataBufferSize',['../classrtabmap_1_1RtabmapThread.html#a9aa2f05308498abcba0f01b2df25cac0',1,'rtabmap::RtabmapThread']]], + ['getdbsavingtime_31',['getDbSavingTime',['../classrtabmap_1_1Memory.html#a40ba03d0f1291fc9e45ce86d05479cd3',1,'rtabmap::Memory']]], + ['getdefaultparameters_32',['getDefaultParameters',['../classrtabmap_1_1Parameters.html#a3921b82495e0308f8cfcbdb8ef072e21',1,'rtabmap::Parameters']]], + ['getdepth_33',['getDepth',['../namespacertabmap_1_1util2d.html#a48b07b02efba21a914db10e832589aba',1,'rtabmap::util2d']]], + ['getdescription_34',['getDescription',['../classrtabmap_1_1Parameters.html#a7aacfe3e18e28a1fb81d0f3f0ffbb414',1,'rtabmap::Parameters']]], + ['getdescriptor_35',['getDescriptor',['../classrtabmap_1_1VisualWord.html#a2d20ce6234dc211335a926759e111bbb',1,'rtabmap::VisualWord']]], + ['getdetector_36',['getDetector',['../classrtabmap_1_1RegistrationVis.html#a0a860fb3509b4c5b135b66ebd5cd6e55',1,'rtabmap::RegistrationVis']]], + ['getdetectorrate_37',['getDetectorRate',['../classrtabmap_1_1RtabmapThread.html#ac788245b9aa70ebc9e7148fad3b92ed1',1,'rtabmap::RtabmapThread']]], + ['getdir_38',['getDir',['../classUDirectory.html#a0177e6f7286fc63c48fe2629e6ba5b34',1,'UDirectory']]], + ['getdistance_39',['getDistance',['../classrtabmap_1_1Transform.html#ade8f4e91576b320690741efa817bd7ad',1,'rtabmap::Transform']]], + ['getdistancesquared_40',['getDistanceSquared',['../classrtabmap_1_1Transform.html#ae311741cc884ca8f5343bc2710b96a0b',1,'rtabmap::Transform']]], + ['getestimationtype_41',['getEstimationType',['../classrtabmap_1_1RegistrationVis.html#a951c79dd9be75b896c551e5213c0ee31',1,'rtabmap::RegistrationVis']]], + ['geteulerangles_42',['getEulerAngles',['../classrtabmap_1_1Transform.html#adf2345af30927b656ceca938ec4d0525',1,'rtabmap::Transform']]], + ['getextension_43',['getextension',['../classUFile.html#ac630657b2f15288df6ecddec029b42c6',1,'UFile::getExtension(const std::string &filePath)'],['../classUFile.html#aa937b9f20ef2e51091845c5108ded154',1,'UFile::getExtension()']]], + ['getfeature2d_44',['getFeature2D',['../classrtabmap_1_1Memory.html#ab094dfa40b0fe37cb12552a6ba081d6b',1,'rtabmap::Memory']]], + ['getfilenames_45',['getFileNames',['../classUDirectory.html#aa16e64be3cc238eec871bddaf6dbc289',1,'UDirectory']]], + ['getforwardwmposes_46',['getForwardWMPoses',['../classrtabmap_1_1Rtabmap.html#a8400ccecd090cb438d16178930fe0872',1,'rtabmap::Rtabmap']]], + ['getframerate_47',['getFrameRate',['../classrtabmap_1_1SensorCapture.html#af7de847c118ec1ba77a5c9f29f7efece',1,'rtabmap::SensorCapture']]], + ['getgoalreachedradius_48',['getGoalReachedRadius',['../classrtabmap_1_1Rtabmap.html#a6098155788f6e9ccaa636e26f8881c07',1,'rtabmap::Rtabmap']]], + ['getgps_49',['getGPS',['../classrtabmap_1_1Memory.html#aca3bdb688c64dd62672f2385ce6de594',1,'rtabmap::Memory']]], + ['getgraph_50',['getGraph',['../classrtabmap_1_1Rtabmap.html#a456fa0c95770f052d78f6d9f745fa1e3',1,'rtabmap::Rtabmap']]], + ['getgridmax_51',['getgridmax',['../classrtabmap_1_1GlobalMap.html#a060366742fc8f51deaf7dd75b66615c7',1,'rtabmap::GlobalMap::getGridMax(double &x, double &y, double &z) const'],['../classrtabmap_1_1GlobalMap.html#aa840b2e62893de929f952b8511df6164',1,'rtabmap::GlobalMap::getGridMax(double &x, double &y) const']]], + ['getgridmin_52',['getgridmin',['../classrtabmap_1_1GlobalMap.html#a37adbbb0e80ba76cfa080cec9811cca3',1,'rtabmap::GlobalMap::getGridMin(double &x, double &y, double &z) const'],['../classrtabmap_1_1GlobalMap.html#aaf028c4c070aa8568eaaf3dae4b926ee',1,'rtabmap::GlobalMap::getGridMin(double &x, double &y) const']]], + ['getgroundtruthpose_53',['getgroundtruthpose',['../classrtabmap_1_1Memory.html#a89dd9b0aea5595e929b23ded82cd8ff1',1,'rtabmap::Memory::getGroundTruthPose()'],['../classrtabmap_1_1Signature.html#a5d5f3aa41c0d9404654ebc5628a5189c',1,'rtabmap::Signature::getGroundTruthPose()']]], + ['getgroundtruths_54',['getGroundTruths',['../classrtabmap_1_1Memory.html#ac61afdb7694d54b5e3d146be427638b2',1,'rtabmap::Memory']]], + ['gethighesthypothesisid_55',['getHighestHypothesisId',['../classrtabmap_1_1Rtabmap.html#ab11a50751ab17717f567934e7cb2c450',1,'rtabmap::Rtabmap']]], + ['gethighesthypothesisvalue_56',['getHighestHypothesisValue',['../classrtabmap_1_1Rtabmap.html#a530c87cda2cd010e384178bced6611a1',1,'rtabmap::Rtabmap']]], + ['getidentity_57',['getIdentity',['../classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2',1,'rtabmap::Transform']]], + ['getimagecompressed_58',['getImageCompressed',['../classrtabmap_1_1Memory.html#abc4c40056783163ec5abde9366060cb2',1,'rtabmap::Memory']]], + ['getindexedwordscount_59',['getIndexedWordsCount',['../classrtabmap_1_1VWDictionary.html#a6a0610e87964c3881dc70cae6cd9123c',1,'rtabmap::VWDictionary']]], + ['getindexmemoryused_60',['getIndexMemoryUsed',['../classrtabmap_1_1VWDictionary.html#a63ec6a9b915eb939c2650e623feb0576',1,'rtabmap::VWDictionary']]], + ['getinformation_61',['getInformation',['../classrtabmap_1_1Rtabmap.html#aeea47830776fe57c456ae6a673069ddc',1,'rtabmap::Rtabmap']]], + ['getinlierdistance_62',['getInlierDistance',['../classrtabmap_1_1RegistrationVis.html#a488ecb8a7423996abdad98b0044cd7f2',1,'rtabmap::RegistrationVis']]], + ['getinvalidwordscount_63',['getInvalidWordsCount',['../classrtabmap_1_1Signature.html#ac2d1526d87df9ff5d4885b16c460ebcf',1,'rtabmap::Signature']]], + ['getiterations_64',['getIterations',['../classrtabmap_1_1RegistrationVis.html#a93331add1822dd6f02bc74efec6d6834',1,'rtabmap::RegistrationVis']]], + ['getlabel_65',['getLabel',['../classrtabmap_1_1Signature.html#a78a9ae9059257c60cf1d50ef415520cd',1,'rtabmap::Signature']]], + ['getlandmarks_66',['getLandmarks',['../classrtabmap_1_1Signature.html#a2257cfc6c620d726484f1c6c2b11257a',1,'rtabmap::Signature']]], + ['getlandmarksindex_67',['getLandmarksIndex',['../classrtabmap_1_1Memory.html#acf7e6cbe5eda50b024cbb1bc82d03b7c',1,'rtabmap::Memory']]], + ['getlastgloballoopclosureid_68',['getLastGlobalLoopClosureId',['../classrtabmap_1_1Memory.html#ad6e8870c75b300a7d526f49467f67913',1,'rtabmap::Memory']]], + ['getlastindexedwordid_69',['getLastIndexedWordId',['../classrtabmap_1_1VWDictionary.html#a65a99ae457b1c779233de57d190ca8da',1,'rtabmap::VWDictionary']]], + ['getlastlocalizationpose_70',['getLastLocalizationPose',['../classrtabmap_1_1Rtabmap.html#a2d2efac02d4a6d1d7bbc505d94fd634b',1,'rtabmap::Rtabmap']]], + ['getlastlocationid_71',['getLastLocationId',['../classrtabmap_1_1Rtabmap.html#a9406c710b7af988dda1868a3efa8f1dd',1,'rtabmap::Rtabmap']]], + ['getlastprocesstime_72',['getLastProcessTime',['../classrtabmap_1_1Rtabmap.html#a88ffdd1ba70707e5969deab4f6ee66a0',1,'rtabmap::Rtabmap']]], + ['getlastsignaturedata_73',['getLastSignatureData',['../classrtabmap_1_1Statistics.html#a582cb4d6d0b3034062d508a6cac77081',1,'rtabmap::Statistics']]], + ['getlastsignatureid_74',['getLastSignatureId',['../classrtabmap_1_1Memory.html#a65552e672e67c9f511b3384e3d117de6',1,'rtabmap::Memory']]], + ['getlastworkingsignature_75',['getLastWorkingSignature',['../classrtabmap_1_1Memory.html#ad14c4346a42a621b7834c60de6bc2e63',1,'rtabmap::Memory']]], + ['getleftsuffix_76',['getLeftSuffix',['../classrtabmap_1_1StereoCameraModel.html#a799e3f787d015b5cbd0189768f5b673c',1,'rtabmap::StereoCameraModel']]], + ['getlinks_77',['getlinks',['../classrtabmap_1_1Memory.html#a7d4e2a2281980bc1b18683fd8fc2ebeb',1,'rtabmap::Memory::getLinks()'],['../classrtabmap_1_1Signature.html#a1496e2f2ae46f2b6efcf7ece309ffd22',1,'rtabmap::Signature::getLinks()']]], + ['getlocalconstraints_78',['getLocalConstraints',['../classrtabmap_1_1Rtabmap.html#a4d1e329f0c0fcc341d14f6853ec86750',1,'rtabmap::Rtabmap']]], + ['getlocaloptimizedposes_79',['getLocalOptimizedPoses',['../classrtabmap_1_1Rtabmap.html#aebe0bf9364ff8952d041f57c6a1c1d57',1,'rtabmap::Rtabmap']]], + ['getlocalradius_80',['getLocalRadius',['../classrtabmap_1_1Rtabmap.html#a6a4c533659621ccb1f6a5ddbc8149306',1,'rtabmap::Rtabmap']]], + ['getlocaltransform_81',['getLocalTransform',['../classrtabmap_1_1SensorCapture.html#a99829249c51fd08c32310b788b00b663',1,'rtabmap::SensorCapture']]], + ['getloopclosureid_82',['getLoopClosureId',['../classrtabmap_1_1Rtabmap.html#a2bc8eecb690ec1e36955119cd2c1a197',1,'rtabmap::Rtabmap']]], + ['getloopclosurelinks_83',['getLoopClosureLinks',['../classrtabmap_1_1Memory.html#a88fecb24bd16886d6086937277df5f20',1,'rtabmap::Memory']]], + ['getloopclosurevalue_84',['getLoopClosureValue',['../classrtabmap_1_1Rtabmap.html#adc87cbb6adde3027b8c20bbba25fec7b',1,'rtabmap::Rtabmap']]], + ['getmapcorrection_85',['getMapCorrection',['../classrtabmap_1_1Rtabmap.html#a7b71f70a20f1ef42a65fa9571e254711',1,'rtabmap::Rtabmap']]], + ['getmapid_86',['getMapId',['../classrtabmap_1_1Memory.html#a2391cf06d55513bee3cfd50d8beb3a59',1,'rtabmap::Memory']]], + ['getmaxodominf_87',['getMaxOdomInf',['../namespacertabmap_1_1graph.html#a6c009c4c819abe37ec2ca6d041edd92b',1,'rtabmap::graph']]], + ['getmaxstmemsize_88',['getMaxStMemSize',['../classrtabmap_1_1Memory.html#a41b23c567f6aa6bcc3a756e5ae5c1f33',1,'rtabmap::Memory']]], + ['getmemory_89',['getMemory',['../classrtabmap_1_1Rtabmap.html#a08adb5e0b8019c1dbd4f571099d2d46b',1,'rtabmap::Rtabmap']]], + ['getmemorythreshold_90',['getMemoryThreshold',['../classrtabmap_1_1Rtabmap.html#a876d3599c76de815bee4b278a087cfa5',1,'rtabmap::Rtabmap']]], + ['getmemoryusage_91',['getMemoryUsage',['../classUProcessInfo.html#a8a494e68cdea348a4788b8d54fd7de40',1,'UProcessInfo']]], + ['getmemoryused_92',['getmemoryused',['../classrtabmap_1_1VWDictionary.html#ac5177a75f402538b50ec6c36bdbc7307',1,'rtabmap::VWDictionary::getMemoryUsed()'],['../classrtabmap_1_1VisualWord.html#ad23c14c1c81848fb42573fd5ceac3a42',1,'rtabmap::VisualWord::getMemoryUsed()'],['../classrtabmap_1_1BayesFilter.html#a60ad13fd18ac4e595359f3c86c430a80',1,'rtabmap::BayesFilter::getMemoryUsed()'],['../classrtabmap_1_1CloudMap.html#a18a2dd71488719960f06eb4ae5e2cf4b',1,'rtabmap::CloudMap::getMemoryUsed()'],['../classrtabmap_1_1OccupancyGrid.html#a06bee0b73df176bd0ab6495e22992d7f',1,'rtabmap::OccupancyGrid::getMemoryUsed()'],['../classrtabmap_1_1OctoMap.html#ab4706881eee755cf58312859e6a3af89',1,'rtabmap::OctoMap::getMemoryUsed()'],['../classrtabmap_1_1GlobalMap.html#a20031690daf7a7e9195ae97abf46522b',1,'rtabmap::GlobalMap::getMemoryUsed()'],['../classrtabmap_1_1LocalGridCache.html#ab72a88b5c00d2a104ac1055538960acb',1,'rtabmap::LocalGridCache::getMemoryUsed()'],['../classrtabmap_1_1Memory.html#ad59e8591cd04e2ecd93b4e706f198763',1,'rtabmap::Memory::getMemoryUsed()'],['../classrtabmap_1_1SensorData.html#a60b3b2366bb66c914cfa7799204828fc',1,'rtabmap::SensorData::getMemoryUsed()'],['../classrtabmap_1_1Signature.html#a014fd12ee6cd47004e94ef4bb4753459',1,'rtabmap::Signature::getMemoryUsed()']]], + ['getmetricconstraints_93',['getMetricConstraints',['../classrtabmap_1_1Memory.html#ab5329c43c6b185613222d8458c049848',1,'rtabmap::Memory']]], + ['getmingeometrycorrespondencesratio_94',['getMinGeometryCorrespondencesRatio',['../classrtabmap_1_1Registration.html#ac4baf87f079ce52df845805b84cad6c9',1,'rtabmap::Registration']]], + ['getmininliers_95',['getMinInliers',['../classrtabmap_1_1RegistrationVis.html#ae951e95c4ae2ea1ab5c4d849823d66c4',1,'rtabmap::RegistrationVis']]], + ['getminmax3d_96',['getminmax3d',['../namespacertabmap_1_1util3d.html#afc22f82c00f6dcc8a4ec1963891f4b7e',1,'rtabmap::util3d::getMinMax3D(const cv::Mat &laserScan, pcl::PointXYZ &min, pcl::PointXYZ &max)'],['../namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018',1,'rtabmap::util3d::getMinMax3D(const cv::Mat &laserScan, cv::Point3f &min, cv::Point3f &max)']]], + ['getminvisualcorrespondences_97',['getMinVisualCorrespondences',['../classrtabmap_1_1Registration.html#abc02df4842af900fbb5da75b8e5318e0',1,'rtabmap::Registration']]], + ['getmsg_98',['getMsg',['../classULogEvent.html#a460976b037ecf8357fc3fa3f613e5817',1,'ULogEvent']]], + ['getname_99',['getname',['../classUFile.html#a3e7905705a69b747e1ed6b6e37b19f3f',1,'UFile::getName(const std::string &filePath)'],['../classUFile.html#af7e7f5995b05cda098037ca1cdcd63f4',1,'UFile::getName()']]], + ['getneighborlinks_100',['getNeighborLinks',['../classrtabmap_1_1Memory.html#a172f0d3046c0b7d6b37cdf11af153bee',1,'rtabmap::Memory']]], + ['getneighborsid_101',['getNeighborsId',['../classrtabmap_1_1Memory.html#a521305f39adcdfbedebbe5bdae9efbc6',1,'rtabmap::Memory']]], + ['getneighborsidradius_102',['getNeighborsIdRadius',['../classrtabmap_1_1Memory.html#a10c44ee8a5d84480b41aa4980665d894',1,'rtabmap::Memory']]], + ['getneuralmodelwarning_103',['getNeuralModelWarning',['../classrtabmap_1_1CameraStereoZed.html#aab6005c68f61b37ee1919ef6828b32a4',1,'rtabmap::CameraStereoZed']]], + ['getnextfilename_104',['getNextFileName',['../classUDirectory.html#a89ff08bf6044f2a0dc61f0dbbdc9d2cc',1,'UDirectory']]], + ['getnextfilepath_105',['getNextFilePath',['../classUDirectory.html#a2e435d2c98e54a8119c2fc3b388c03e9',1,'UDirectory']]], + ['getnextid_106',['getNextId',['../classrtabmap_1_1VWDictionary.html#a085d69ef577600000f397bd63abeaf69',1,'rtabmap::VWDictionary']]], + ['getnextseqid_107',['getNextSeqID',['../classrtabmap_1_1SensorCapture.html#acbffaf17772639bc65b0a5457bc56b22',1,'rtabmap::SensorCapture']]], + ['getnndr_108',['getNNDR',['../classrtabmap_1_1RegistrationVis.html#aed9e9e593b290a4be1aeda05967a631a',1,'rtabmap::RegistrationVis']]], + ['getnndrratio_109',['getNndrRatio',['../classrtabmap_1_1VWDictionary.html#a454639bff3d95b2f9dd346413981d5c5',1,'rtabmap::VWDictionary']]], + ['getnnstrategy_110',['getNNStrategy',['../classrtabmap_1_1VWDictionary.html#ab1ec0db96328164864953f25d463bcbb',1,'rtabmap::VWDictionary']]], + ['getnntype_111',['getNNType',['../classrtabmap_1_1RegistrationVis.html#a697d562bebe30b73a1ecd34dabee4347',1,'rtabmap::RegistrationVis']]], + ['getnntypename_112',['getnntypename',['../classrtabmap_1_1RegistrationVis.html#a9fd0ba3453d2c658d8a9b1cee5ba132c',1,'rtabmap::RegistrationVis::getNNTypeName() const'],['../classrtabmap_1_1RegistrationVis.html#a770e36d382cf124c47847e50436ae40e',1,'rtabmap::RegistrationVis::getNNTypeName(int nnType)']]], + ['getnodecalibration_113',['getNodeCalibration',['../classrtabmap_1_1Memory.html#af48dbd905dda453b6b2c2246a90d0e04',1,'rtabmap::Memory']]], + ['getnodedata_114',['getNodeData',['../classrtabmap_1_1Memory.html#a22d6c0b38d8699cdbba73b6bcdb38dd6',1,'rtabmap::Memory']]], + ['getnodeinfo_115',['getNodeInfo',['../classrtabmap_1_1Memory.html#ae6184a6979703045f34d3e2a155eb9f3',1,'rtabmap::Memory']]], + ['getnodesinradius_116',['getnodesinradius',['../namespacertabmap_1_1graph.html#af9e81a0b31730adb292591b79f45c87e',1,'rtabmap::graph::getNodesInRadius()'],['../classrtabmap_1_1Rtabmap.html#a1a6498f60f52f65ffbed2d89d7c20648',1,'rtabmap::Rtabmap::getNodesInRadius(const Transform &pose, float radius, int k=0, std::map< int, float > *distsSqr=0)'],['../classrtabmap_1_1Rtabmap.html#a9bd263bbcdbc6f41119f8532131db974',1,'rtabmap::Rtabmap::getNodesInRadius(int nodeId, float radius, int k=0, std::map< int, float > *distsSqr=0)'],['../namespacertabmap_1_1graph.html#a4f7f712868babb4cc74f7fe2cc366620',1,'rtabmap::graph::getNodesInRadius()']]], + ['getnodesobservinglandmark_117',['getNodesObservingLandmark',['../classrtabmap_1_1Memory.html#afe7a1c036129e7ec94905c3650e91cc8',1,'rtabmap::Memory']]], + ['getnodewordsandglobaldescriptors_118',['getNodeWordsAndGlobalDescriptors',['../classrtabmap_1_1Memory.html#a4c555fac41be4b4d44c551c010971dc3',1,'rtabmap::Memory']]], + ['getnorm_119',['getNorm',['../classrtabmap_1_1Transform.html#af3c46b76fe855b0334a7f255792a6082',1,'rtabmap::Transform']]], + ['getnormsquared_120',['getNormSquared',['../classrtabmap_1_1Transform.html#aee7765828eb454015b4deb72d70a034a',1,'rtabmap::Transform']]], + ['getnotindexedwordscount_121',['getNotIndexedWordsCount',['../classrtabmap_1_1VWDictionary.html#a293c09f00caf84bb991d73983a5f22c8',1,'rtabmap::VWDictionary']]], + ['getodommaxinf_122',['getOdomMaxInf',['../classrtabmap_1_1Memory.html#ae37d02a779acb85797de25da36066829',1,'rtabmap::Memory']]], + ['getodompose_123',['getOdomPose',['../classrtabmap_1_1Memory.html#a4bb01d27d1ec7776103635b11228626c',1,'rtabmap::Memory']]], + ['getorientation_124',['getOrientation',['../classrtabmap_1_1IMUFilter.html#ae32dda362d720f964781f1681fa6a973',1,'rtabmap::IMUFilter']]], + ['getparameters_125',['getparameters',['../classrtabmap_1_1Rtabmap.html#a9ac5900cbc165df1c501606f79c65ec1',1,'rtabmap::Rtabmap::getParameters()'],['../classrtabmap_1_1Memory.html#af4cc965870dd757517b126af4860d34d',1,'rtabmap::Memory::getParameters()']]], + ['getpath_126',['getPath',['../classrtabmap_1_1Rtabmap.html#a5fe89ac87283a92258d27f42eb7b13f1',1,'rtabmap::Rtabmap']]], + ['getpathcurrentgoalid_127',['getPathCurrentGoalId',['../classrtabmap_1_1Rtabmap.html#a5f886101463229fcd79bf3dd6418aa5c',1,'rtabmap::Rtabmap']]], + ['getpathcurrentgoalindex_128',['getPathCurrentGoalIndex',['../classrtabmap_1_1Rtabmap.html#a781713c190497d5f25d7e12112ae4345',1,'rtabmap::Rtabmap']]], + ['getpathcurrentindex_129',['getPathCurrentIndex',['../classrtabmap_1_1Rtabmap.html#a94eecd89994fc02a913b1eb087d85c84',1,'rtabmap::Rtabmap']]], + ['getpathnextnodes_130',['getPathNextNodes',['../classrtabmap_1_1Rtabmap.html#a45addb0848702b39c67c2394dd62f739',1,'rtabmap::Rtabmap']]], + ['getpathnextposes_131',['getPathNextPoses',['../classrtabmap_1_1Rtabmap.html#af81fe33ef45e1ad1838bc97d6a73a8be',1,'rtabmap::Rtabmap']]], + ['getpaths_132',['getpaths',['../classrtabmap_1_1Rtabmap.html#ad314edf995555480a2db1aceb7fd2ee7',1,'rtabmap::Rtabmap::getPaths()'],['../namespacertabmap_1_1graph.html#a0a04ab5289c258725555d6c18a076094',1,'rtabmap::graph::getPaths()']]], + ['getpathstatus_133',['getPathStatus',['../classrtabmap_1_1Rtabmap.html#afe4aa4f9a67ba85b60c7dfda86d0131b',1,'rtabmap::Rtabmap']]], + ['getpathtransformtogoal_134',['getPathTransformToGoal',['../classrtabmap_1_1Rtabmap.html#aedf5dce175ee325822ab7b7772c8d4f5',1,'rtabmap::Rtabmap']]], + ['getpose_135',['getpose',['../classrtabmap_1_1DBReader.html#abd2b32ae00a05810465f63d63c44d5ed',1,'rtabmap::DBReader::getPose()'],['../classrtabmap_1_1Signature.html#a5166864f276c921963033e8852c13076',1,'rtabmap::Signature::getPose()'],['../classrtabmap_1_1SensorCapture.html#a2f940d75366088bfae0164e1803ffe9a',1,'rtabmap::SensorCapture::getPose()'],['../classrtabmap_1_1Rtabmap.html#ac430e0adb75dc4aec3b7ba77053aabd0',1,'rtabmap::Rtabmap::getPose()'],['../classrtabmap_1_1OdometryResetEvent.html#ae756dea7a2e79fd918dd4c158085bc68',1,'rtabmap::OdometryResetEvent::getPose()'],['../classrtabmap_1_1Odometry.html#a8b45aea55b336f758943b4a6b2ec28ee',1,'rtabmap::Odometry::getPose()'],['../classrtabmap_1_1CameraStereoZed.html#a1fceb3208a256d1023739a60f5931def',1,'rtabmap::CameraStereoZed::getPose()'],['../classrtabmap_1_1CameraSeerSense.html#a831666d29d4eabc1a00e9eb5c8b47c27',1,'rtabmap::CameraSeerSense::getPose()'],['../classrtabmap_1_1CameraRealSense2.html#a31fc38dca7aa6dc61c68150d5409204e',1,'rtabmap::CameraRealSense2::getPose()']]], + ['getposecovariance_136',['getPoseCovariance',['../classrtabmap_1_1Signature.html#afc81cb91421dcd36e2f5e3dc84a77b44',1,'rtabmap::Signature']]], + ['getposesinradius_137',['getposesinradius',['../namespacertabmap_1_1graph.html#a0851e81af5d331032ec790a10bb4302f',1,'rtabmap::graph::getPosesInRadius(const Transform &targetPose, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)'],['../namespacertabmap_1_1graph.html#ae487257302634dff8248188e2ed69043',1,'rtabmap::graph::getPosesInRadius(int nodeId, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)']]], + ['getposteriorids_138',['getPosteriorIds',['../classrtabmap_1_1BayesFilter.html#a4b476a9fa8b1c67562be4134c936081c',1,'rtabmap::BayesFilter']]], + ['getposteriorvalues_139',['getPosteriorValues',['../classrtabmap_1_1BayesFilter.html#aaebf1bee8c904dabdf1d8ea0f446c143',1,'rtabmap::BayesFilter']]], + ['getpredictionlc_140',['getPredictionLC',['../classrtabmap_1_1BayesFilter.html#ab13c8acecfbb4fcfff4e809e2b0a7538',1,'rtabmap::BayesFilter']]], + ['getpredictionlcstr_141',['getPredictionLCStr',['../classrtabmap_1_1BayesFilter.html#a18a6d97fe3088a4a356a85358f641376',1,'rtabmap::BayesFilter']]], + ['getreferences_142',['getReferences',['../classrtabmap_1_1VisualWord.html#aef73a60eccd61a917f27bf277366a5bc',1,'rtabmap::VisualWord']]], + ['getremovedparameters_143',['getRemovedParameters',['../classrtabmap_1_1Parameters.html#ae3e84e415669d8c8bf17b119683b1056',1,'rtabmap::Parameters']]], + ['getrightsuffix_144',['getRightSuffix',['../classrtabmap_1_1StereoCameraModel.html#a3ecae21bbf6bc9914d0bb553c99f9e09',1,'rtabmap::StereoCameraModel']]], + ['getserial_145',['getserial',['../classrtabmap_1_1CameraStereoFlyCapture2.html#a06d1e6cd0ea504f6601e78ecbd0442df',1,'rtabmap::CameraStereoFlyCapture2::getSerial()'],['../classrtabmap_1_1SensorCapture.html#a7830e571e45752f9d8f30fa806f6aa64',1,'rtabmap::SensorCapture::getSerial()'],['../classrtabmap_1_1LidarVLP16.html#a9d533721703457a60e94124d840fee95',1,'rtabmap::LidarVLP16::getSerial()'],['../classrtabmap_1_1DBReader.html#ac6e8622842447cdccfaab061c1cab3c4',1,'rtabmap::DBReader::getSerial()'],['../classrtabmap_1_1CameraVideo.html#ab3400ba7ae983cd1ad9678970079b00a',1,'rtabmap::CameraVideo::getSerial()'],['../classrtabmap_1_1CameraStereoZedOC.html#a11244c590c4e356765abf59e94f66ddb',1,'rtabmap::CameraStereoZedOC::getSerial()'],['../classrtabmap_1_1CameraStereoZed.html#a8c13902c0c25565357e6f7e0a16f0838',1,'rtabmap::CameraStereoZed::getSerial()'],['../classrtabmap_1_1CameraStereoVideo.html#a0eba205715f6f856b14eaba8de2eadcf',1,'rtabmap::CameraStereoVideo::getSerial()'],['../classrtabmap_1_1CameraStereoTara.html#a87d7cdfd3354bdffd8e9e88f1244c79d',1,'rtabmap::CameraStereoTara::getSerial()'],['../classrtabmap_1_1CameraStereoImages.html#a507ca5b4c37b75f4108e9aa8dad5125b',1,'rtabmap::CameraStereoImages::getSerial()'],['../classrtabmap_1_1CameraStereoDC1394.html#a125d6fa6e6bd7f8b2e3d22d10ce54acb',1,'rtabmap::CameraStereoDC1394::getSerial()'],['../classrtabmap_1_1CameraDepthAI.html#ac77ceb30af0f98aa27f2de1259f31d7e',1,'rtabmap::CameraDepthAI::getSerial()'],['../classrtabmap_1_1CameraFreenect.html#ad4aa325278c21b339aea31437430610d',1,'rtabmap::CameraFreenect::getSerial()'],['../classrtabmap_1_1CameraFreenect2.html#a985478701c8eb9751918fcd497893af7',1,'rtabmap::CameraFreenect2::getSerial()'],['../classrtabmap_1_1CameraImages.html#a217f54d1ead7a4d6af733c2644064a5f',1,'rtabmap::CameraImages::getSerial()'],['../classrtabmap_1_1CameraK4A.html#af7dae13200b0d2ca09294b335225e993',1,'rtabmap::CameraK4A::getSerial()'],['../classrtabmap_1_1CameraK4W2.html#a90bd066891ec59c4f1261af3353209bb',1,'rtabmap::CameraK4W2::getSerial()'],['../classrtabmap_1_1CameraMyntEye.html#ac163457701a9274659e41aae5417f831',1,'rtabmap::CameraMyntEye::getSerial()'],['../classrtabmap_1_1CameraOpenNI2.html#a9767b92c3df7b637c75ee351208e3f0b',1,'rtabmap::CameraOpenNI2::getSerial()'],['../classrtabmap_1_1CameraOrbbecSDK.html#a75f9abaf3ddc009c7772cc0239816b86',1,'rtabmap::CameraOrbbecSDK::getSerial()'],['../classrtabmap_1_1CameraRealSense.html#a4abbdf6efedd229a146d066b5ff17799',1,'rtabmap::CameraRealSense::getSerial()'],['../classrtabmap_1_1CameraRealSense2.html#aff19c4db66d2403c0e09a67d1418bcdc',1,'rtabmap::CameraRealSense2::getSerial()'],['../classrtabmap_1_1CameraSeerSense.html#aa921995e3a4a1cd5480868998bd27b2e',1,'rtabmap::CameraSeerSense::getSerial()'],['../classrtabmap_1_1CameraOpenni.html#acaeb07cbf369a47817c48acacee04e41',1,'rtabmap::CameraOpenni::getSerial()'],['../classrtabmap_1_1CameraOpenNICV.html#a29fe33644f755cf54307b55df898617b',1,'rtabmap::CameraOpenNICV::getSerial()']]], + ['getsignature_146',['getSignature',['../classrtabmap_1_1Memory.html#a15ec109dd157745f69dcd4f80efaf561',1,'rtabmap::Memory']]], + ['getsignaturecopy_147',['getSignatureCopy',['../classrtabmap_1_1Rtabmap.html#a7133d8efa98410eaec68e0199ff98a0c',1,'rtabmap::Rtabmap']]], + ['getsignatureidbylabel_148',['getSignatureIdByLabel',['../classrtabmap_1_1Memory.html#a4907501b27fdfd5b8053b9d932d8dec4',1,'rtabmap::Memory']]], + ['getsignaturesdata_149',['getSignaturesData',['../classrtabmap_1_1Statistics.html#abd89f302128c32d07b0dea07e50b742b',1,'rtabmap::Statistics']]], + ['getsimilaritythreshold_150',['getSimilarityThreshold',['../classrtabmap_1_1Memory.html#ae1e4c518ec65f86b7a3eade7ac2705c8',1,'rtabmap::Memory']]], + ['getstamp_151',['getstamp',['../classrtabmap_1_1IMUEvent.html#ac1dc5e7e806fbe05ee5fec562384924f',1,'rtabmap::IMUEvent::getStamp()'],['../classrtabmap_1_1Signature.html#aa9c4ed8d3617b039181cf44a0e30eca2',1,'rtabmap::Signature::getStamp()']]], + ['getstatistics_152',['getStatistics',['../classrtabmap_1_1Rtabmap.html#a5d18002c7eb7cee234471686413d201c',1,'rtabmap::Rtabmap']]], + ['getstm_153',['getSTM',['../classrtabmap_1_1Rtabmap.html#a809673c3d0e6d8fb05ebb4a52218d438',1,'rtabmap::Rtabmap']]], + ['getstmem_154',['getStMem',['../classrtabmap_1_1Memory.html#a007abab13fade6f63b6db3fc279a1631',1,'rtabmap::Memory']]], + ['getstmemintermediatenodescount_155',['getStMemIntermediateNodesCount',['../classrtabmap_1_1Memory.html#a3f3a3da280f9e5ee9bba6df03e551f79',1,'rtabmap::Memory']]], + ['getstmsize_156',['getSTMSize',['../classrtabmap_1_1Rtabmap.html#a49adc83991d6b95c7911f41330cbd467',1,'rtabmap::Rtabmap']]], + ['gettargetversion_157',['getTargetVersion',['../classrtabmap_1_1DBDriver.html#a456bc49e8e60e0c754078a4b09e3f1a1',1,'rtabmap::DBDriver']]], + ['gettime_158',['getTime',['../classULogger.html#a17e6d133cea7c2cbe5365e5f5f2216a9',1,'ULogger']]], + ['gettimethreshold_159',['getTimeThreshold',['../classrtabmap_1_1Rtabmap.html#af7fa0cbd1ef027f8bb2af11364487df8',1,'rtabmap::Rtabmap']]], + ['gettotalactivereferences_160',['getTotalActiveReferences',['../classrtabmap_1_1VWDictionary.html#a98447a880fdcf91709f00d00cfd4e54d',1,'rtabmap::VWDictionary']]], + ['gettotalmemsize_161',['getTotalMemSize',['../classrtabmap_1_1Rtabmap.html#ab44f1bca06eec4beb8dfebeed9ed5ce8',1,'rtabmap::Rtabmap']]], + ['gettotalreferences_162',['getTotalReferences',['../classrtabmap_1_1VisualWord.html#a2eaf9703feb310a1038fcd6c8341a1d3',1,'rtabmap::VisualWord']]], + ['gettransform_163',['getTransform',['../classrtabmap_1_1Transform.html#a3ebc45da479b4cae9a5641fda6ebaf23',1,'rtabmap::Transform']]], + ['gettranslation_164',['getTranslation',['../classrtabmap_1_1Transform.html#a3393daecc17559c66156ba3eb0711875',1,'rtabmap::Transform']]], + ['gettranslationandeulerangles_165',['getTranslationAndEulerAngles',['../classrtabmap_1_1Transform.html#aad65adff491fd57a31dbe4e26d7f29af',1,'rtabmap::Transform']]], + ['gettype_166',['gettype',['../classrtabmap_1_1OdometryOpenVINS.html#a79898924aa5af5d59ce10028e876e387',1,'rtabmap::OdometryOpenVINS::getType()'],['../classrtabmap_1_1OdometryORBSLAM2.html#a8773eea08df092d237e17af96ff6d096',1,'rtabmap::OdometryORBSLAM2::getType()'],['../classrtabmap_1_1OdometryORBSLAM3.html#a6a4161d9be51ff66e3571ba912655029',1,'rtabmap::OdometryORBSLAM3::getType()'],['../classrtabmap_1_1OdometryOpen3D.html#a79c86c26bd892619797d6266243bb8d6',1,'rtabmap::OdometryOpen3D::getType()'],['../classrtabmap_1_1OdometryVINSFusion.html#ac7e841322ccadfcfdec61cc3b698754a',1,'rtabmap::OdometryVINSFusion::getType()'],['../classrtabmap_1_1OdometryViso2.html#ae9bf8422bbf6d2c880098b828b5d6187',1,'rtabmap::OdometryViso2::getType()'],['../classrtabmap_1_1Parameters.html#a08f4ea48ac7dbd93cb322d1c89b455b0',1,'rtabmap::Parameters::getType()'],['../classrtabmap_1_1OdometryLIOSAM.html#aea8d8aea35772e3b81ba3f74c6eb3415',1,'rtabmap::OdometryLIOSAM::getType()'],['../classrtabmap_1_1OdometryMSCKF.html#a81657f9c46e39bfa48e1d0021c5af8ea',1,'rtabmap::OdometryMSCKF::getType()'],['../classrtabmap_1_1OdometryF2F.html#af0e2f40a3dd28b9e1e84159bcf9df323',1,'rtabmap::OdometryF2F::getType()'],['../classrtabmap_1_1OdometryDVO.html#a8475f5a8b1ba4e288ba58daf6284acc9',1,'rtabmap::OdometryDVO::getType()'],['../classrtabmap_1_1OdometryCuVSLAM.html#a68801df22a6803dabf7a064b99e04898',1,'rtabmap::OdometryCuVSLAM::getType()'],['../classrtabmap_1_1Odometry.html#a92685daa2786aff06518c8c4e26b8899',1,'rtabmap::Odometry::getType()'],['../classrtabmap_1_1OdometryOkvis.html#ab93efd88da4ff30e4ee4a0ec525347d8',1,'rtabmap::OdometryOkvis::getType()'],['../classrtabmap_1_1OdometryFLOAM.html#a311c8b022d0a2dc6219b97a8e2b40d84',1,'rtabmap::OdometryFLOAM::getType()'],['../classrtabmap_1_1OdometryFovis.html#a415b08f31a2ab8ff503c84623df71f0d',1,'rtabmap::OdometryFovis::getType()'],['../classrtabmap_1_1OdometryLOAM.html#a0833118684e4f836ec668b735f81da0d',1,'rtabmap::OdometryLOAM::getType()'],['../classrtabmap_1_1OdometryMono.html#ada54391f88a0704c4fab2d9a2b370a15',1,'rtabmap::OdometryMono::getType()'],['../classrtabmap_1_1OdometryF2M.html#aa0244571578fd8604470d8c21af01611',1,'rtabmap::OdometryF2M::getType()']]], + ['getuncompresseddata_167',['getUncompressedData',['../classrtabmap_1_1CompressionThread.html#aafdc57cad744cbe94b30a8abfe7711a4',1,'rtabmap::CompressionThread']]], + ['getunusedword_168',['getUnusedWord',['../classrtabmap_1_1VWDictionary.html#abbd007a028847ecbbdd50e3480ba95e3',1,'rtabmap::VWDictionary']]], + ['getunusedwordids_169',['getUnusedWordIds',['../classrtabmap_1_1VWDictionary.html#a64b0aee7f33cbd4df26e2d0c14329e9d',1,'rtabmap::VWDictionary']]], + ['getunusedwords_170',['getUnusedWords',['../classrtabmap_1_1VWDictionary.html#ab47b5ecb12c822474004f0ad77dbb388',1,'rtabmap::VWDictionary']]], + ['getunusedwordssize_171',['getUnusedWordsSize',['../classrtabmap_1_1VWDictionary.html#a117282f59ed918808d8116cd1f92f412',1,'rtabmap::VWDictionary']]], + ['getupdateerror_172',['getUpdateError',['../classrtabmap_1_1GlobalMap.html#a99c3840a89e76a091cf59cfaf1a8bcc4',1,'rtabmap::GlobalMap']]], + ['geturl_173',['getUrl',['../classrtabmap_1_1DBDriver.html#a79365611bce06aeda0d078641be89cab',1,'rtabmap::DBDriver']]], + ['getvelocity_174',['getVelocity',['../classrtabmap_1_1Signature.html#ae97f22fcb6799a5312c1948cb9f42c99',1,'rtabmap::Signature']]], + ['getvelocityguess_175',['getVelocityGuess',['../classrtabmap_1_1Odometry.html#aa6ab1c129163771b0d87e3e068a0427e',1,'rtabmap::Odometry']]], + ['getvirtualplaceprior_176',['getVirtualPlacePrior',['../classrtabmap_1_1BayesFilter.html#a1f479b2d242f05eef69532f454dc851f',1,'rtabmap::BayesFilter']]], + ['getvisualwords_177',['getVisualWords',['../classrtabmap_1_1VWDictionary.html#a6bcad4c04999469001b5ac03b8a61ab4',1,'rtabmap::VWDictionary']]], + ['getvwdictionary_178',['getVWDictionary',['../classrtabmap_1_1Memory.html#a61adae3b07b3daee32efd1abb4dac45e',1,'rtabmap::Memory']]], + ['getweight_179',['getWeight',['../classrtabmap_1_1Signature.html#a701b32c562d789929a18a19c08bac4ca',1,'rtabmap::Signature']]], + ['getweights_180',['getweights',['../classrtabmap_1_1Memory.html#a4d8bfc0b85f270dbb3fc66cde079b63e',1,'rtabmap::Memory::getWeights()'],['../classrtabmap_1_1Rtabmap.html#a353361aeeece3ce8c799d168a5798a01',1,'rtabmap::Rtabmap::getWeights() const']]], + ['getwm_181',['getWM',['../classrtabmap_1_1Rtabmap.html#ae3d40ed4ee48954e70d45e0779c24a49',1,'rtabmap::Rtabmap']]], + ['getwmsize_182',['getWMSize',['../classrtabmap_1_1Rtabmap.html#a203a18eb60f6c057518fd5129bbc32ff',1,'rtabmap::Rtabmap']]], + ['getword_183',['getWord',['../classrtabmap_1_1VWDictionary.html#a5cf9981cf11f8f93280b7d0c195159e1',1,'rtabmap::VWDictionary']]], + ['getwords_184',['getWords',['../classrtabmap_1_1Signature.html#a68eaa67c81d08e20d2b7a43b0659b1d4',1,'rtabmap::Signature']]], + ['getwords3_185',['getWords3',['../classrtabmap_1_1Signature.html#ab902bfc7cdde2542ffe7e5d441f90a66',1,'rtabmap::Signature']]], + ['getwordschanged_186',['getWordsChanged',['../classrtabmap_1_1Signature.html#a01f6eac0e5836aa921d65108b75249f6',1,'rtabmap::Signature']]], + ['getwordsdescriptors_187',['getWordsDescriptors',['../classrtabmap_1_1Signature.html#a1ed4181ac5cc7b477482459d680c63b1',1,'rtabmap::Signature']]], + ['getwordskpts_188',['getWordsKpts',['../classrtabmap_1_1Signature.html#a471f71821ceeec9a25e9e4e16673d14f',1,'rtabmap::Signature']]], + ['getworkingdir_189',['getWorkingDir',['../classrtabmap_1_1Rtabmap.html#a61bc4dce59a1da8b904a7dbe39e5038a',1,'rtabmap::Rtabmap']]], + ['getworkingmem_190',['getWorkingMem',['../classrtabmap_1_1Memory.html#ab6c0794ad1aac6e9084c0240e709cdc6',1,'rtabmap::Memory']]], + ['getworkingmemintermediatenodescount_191',['getWorkingMemIntermediateNodesCount',['../classrtabmap_1_1Memory.html#ad9b97cdfd95eb3c0dad649d755fc3267',1,'rtabmap::Memory']]], + ['getworkingmemsize_192',['getWorkingMemSize',['../classrtabmap_1_1Memory.html#a5ca9260a2a63fae6f3d16e1db9cbce53',1,'rtabmap::Memory']]], + ['gftt_193',['gftt',['../classrtabmap_1_1GFTT.html',1,'rtabmap::GFTT'],['../parameters.html#autotoc_md18',1,'GFTT']]], + ['gftt_5fbrief_194',['GFTT_BRIEF',['../classrtabmap_1_1GFTT__BRIEF.html',1,'rtabmap']]], + ['gftt_5fdaisy_195',['GFTT_DAISY',['../classrtabmap_1_1GFTT__DAISY.html',1,'rtabmap']]], + ['gftt_5ffreak_196',['GFTT_FREAK',['../classrtabmap_1_1GFTT__FREAK.html',1,'rtabmap']]], + ['gftt_5forb_197',['GFTT_ORB',['../classrtabmap_1_1GFTT__ORB.html',1,'rtabmap']]], + ['globalbundleadjustment_198',['globalBundleAdjustment',['../classrtabmap_1_1Rtabmap.html#ab1044f290653749990018ca5722f00c7',1,'rtabmap::Rtabmap']]], + ['globaldescriptor_199',['GlobalDescriptor',['../classrtabmap_1_1GlobalDescriptor.html',1,'rtabmap']]], + ['globaldescriptorextractor_200',['GlobalDescriptorExtractor',['../classrtabmap_1_1GlobalDescriptorExtractor.html',1,'rtabmap']]], + ['globaldescriptors_201',['globalDescriptors',['../classrtabmap_1_1SensorData.html#acd46b940bac6e1d53ff2826be309b4c8',1,'rtabmap::SensorData']]], + ['globalmap_202',['globalmap',['../classrtabmap_1_1GlobalMap.html#a03581caaa2a313b131726af4e4a6b714',1,'rtabmap::GlobalMap::GlobalMap()'],['../classrtabmap_1_1GlobalMap.html',1,'rtabmap::GlobalMap']]], + ['globalpose_203',['globalPose',['../classrtabmap_1_1SensorData.html#a55e6ca21bfd11b7afb375451a2a77b87',1,'rtabmap::SensorData']]], + ['globalposecovariance_204',['globalPoseCovariance',['../classrtabmap_1_1SensorData.html#a569af71e8757105dc040251a3805fe97',1,'rtabmap::SensorData']]], + ['gms_205',['GMS',['../parameters.html#autotoc_md49',1,'']]], + ['gps_206',['gps',['../classrtabmap_1_1GPS.html#a4ea914df744ae5a9ff60eff6bb2c734d',1,'rtabmap::GPS::GPS()'],['../classrtabmap_1_1GPS.html#a488bb172e3b8836387e0994a31e709ef',1,'rtabmap::GPS::GPS(const double &stamp, const double &longitude, const double &latitude, const double &altitude, const double &error, const double &bearing)'],['../classrtabmap_1_1SensorData.html#a176b8160afc549fc6eaa2d0567c12957',1,'rtabmap::SensorData::gps()'],['../classrtabmap_1_1GPS.html',1,'rtabmap::GPS']]], + ['gravitypitcherror_207',['gravityPitchError',['../classrtabmap_1_1OdometryInfo.html#a9b58bbc659878dc763c6f0201b2ecd28',1,'rtabmap::OdometryInfo']]], + ['gravityrollerror_208',['gravityRollError',['../classrtabmap_1_1OdometryInfo.html#a7641b415d9d08f7d267ca25ee564a2a7',1,'rtabmap::OdometryInfo']]], + ['gravitysigma_209',['gravitySigma',['../classrtabmap_1_1Optimizer.html#aceb68e0f692b81c4a978e46f804515d7',1,'rtabmap::Optimizer']]], + ['grid_210',['grid',['../parameters.html#autotoc_md55',1,'Grid'],['../index.html#autotoc_md1',1,'Occupancy grid']]], + ['gridcellsize_211',['gridCellSize',['../classrtabmap_1_1SensorData.html#a984ce55b6b75152a63441bd07288dc6c',1,'rtabmap::SensorData']]], + ['gridemptycellscompressed_212',['gridEmptyCellsCompressed',['../classrtabmap_1_1SensorData.html#ac2bae4f0747795f778275102b4ebf1b3',1,'rtabmap::SensorData']]], + ['gridemptycellsraw_213',['gridEmptyCellsRaw',['../classrtabmap_1_1SensorData.html#a490e96f3f1d16cc559b3a004e2ec4fbe',1,'rtabmap::SensorData']]], + ['gridglobal_214',['GridGlobal',['../parameters.html#autotoc_md56',1,'']]], + ['gridgroundcellscompressed_215',['gridGroundCellsCompressed',['../classrtabmap_1_1SensorData.html#ab3c515b23322cd31c3fcbcb054588e43',1,'rtabmap::SensorData']]], + ['gridgroundcellsraw_216',['gridGroundCellsRaw',['../classrtabmap_1_1SensorData.html#a2db9b9dbbe3d0943a47cdc4a5a9051d4',1,'rtabmap::SensorData']]], + ['gridmap_217',['GridMap',['../classrtabmap_1_1GridMap.html',1,'rtabmap']]], + ['gridobstaclecellscompressed_218',['gridObstacleCellsCompressed',['../classrtabmap_1_1SensorData.html#a50b09c52de6c8c6a6a95ee08886845a0',1,'rtabmap::SensorData']]], + ['gridobstaclecellsraw_219',['gridObstacleCellsRaw',['../classrtabmap_1_1SensorData.html#a0f2e804ebbcff5be648a43f0a41e9dfc',1,'rtabmap::SensorData']]], + ['gridviewpoint_220',['gridViewPoint',['../classrtabmap_1_1SensorData.html#a51f21b98088ceec4c5d108d0fbe03200',1,'rtabmap::SensorData']]], + ['groundcells_221',['groundCells',['../classrtabmap_1_1LocalGrid.html#a1d828782755374c7601810b35f99a9e5',1,'rtabmap::LocalGrid']]], + ['groundtruth_222',['groundTruth',['../classrtabmap_1_1SensorData.html#aef9e0c36efdc8915536c3bc082108689',1,'rtabmap::SensorData']]], + ['gtsam_223',['GTSAM',['../parameters.html#autotoc_md31',1,'']]], + ['guess_224',['guess',['../classrtabmap_1_1OdometryInfo.html#a8aa1c7947217518727a62bb55106a706',1,'rtabmap::OdometryInfo']]], + ['guessvelocity_225',['guessVelocity',['../classrtabmap_1_1OdometryInfo.html#a3aec571c2fae4b6e3b1197d9f7adabed',1,'rtabmap::OdometryInfo']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_a.js b/preview/pr-1773/api/latest/search/all_a.js new file mode 100644 index 00000000..1ac9b426 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['handleevent_0',['handleevent',['../classrtabmap_1_1OdometryThread.html#a65808dd7148c1e2c49dcf90ef718b5a8',1,'rtabmap::OdometryThread::handleEvent()'],['../classrtabmap_1_1RtabmapThread.html#ab2556f7773329963038d876c86e97d09',1,'rtabmap::RtabmapThread::handleEvent()'],['../classUEventsHandler.html#a0d43b582c19f01196a513f66d3618d8d',1,'UEventsHandler::handleEvent()']]], + ['haslink_1',['hasLink',['../classrtabmap_1_1Signature.html#ad71fa7c0466dbb5c5062953043c3fcb0',1,'rtabmap::Signature']]], + ['height_5f_2',['height_',['../classclams_1_1DiscreteDepthDistortionModel.html#aa1b8d43b1fa2120bd4b711468d9457b1',1,'clams::DiscreteDepthDistortionModel']]], + ['here_3',['Start here',['../index.html#autotoc_md0',1,'']]], + ['homedir_4',['homeDir',['../classUDirectory.html#a3338b47405f65f25a4256e0ea86bff07',1,'UDirectory']]], + ['horizontalfov_5',['horizontalFOV',['../classrtabmap_1_1CameraModel.html#a12abd4cac897f48bf862a96f0eba1d65',1,'rtabmap::CameraModel']]], + ['hsvtorgb_6',['HSVtoRGB',['../namespacertabmap_1_1util2d.html#ac29ac5b8bed26a5299d378708170dd11',1,'rtabmap::util2d']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_b.js b/preview/pr-1773/api/latest/search/all_b.js new file mode 100644 index 00000000..9115a84d --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_b.js @@ -0,0 +1,120 @@ +var searchData= +[ + ['icp_0',['icp',['../namespacertabmap_1_1util3d.html#af9f16d681288b1f91ce6e5a8ee9f6967',1,'rtabmap::util3d::icp(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZ > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)'],['../namespacertabmap_1_1util3d.html#a1a153cf0e597dd206c6a850957f6c1ef',1,'rtabmap::util3d::icp(const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZI > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)'],['../parameters.html#autotoc_md51',1,'Icp']]], + ['icpcorrespondences_1',['icpCorrespondences',['../classrtabmap_1_1RegistrationInfo.html#a2cd3a5a3de9c1a07101ef198bf11a495',1,'rtabmap::RegistrationInfo']]], + ['icpinliersratio_2',['icpInliersRatio',['../classrtabmap_1_1RegistrationInfo.html#aa77a6a2994d004c83ce37906d7adce06',1,'rtabmap::RegistrationInfo']]], + ['icpiterations_3',['icpIterations',['../classrtabmap_1_1RegistrationInfo.html#a4183e994d882e94bd782678a3ab4cd12',1,'rtabmap::RegistrationInfo']]], + ['icppointtoplane_4',['icppointtoplane',['../namespacertabmap_1_1util3d.html#a6ac0f56608f1760d60eda7861b8dc303',1,'rtabmap::util3d::icpPointToPlane(const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointNormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)'],['../namespacertabmap_1_1util3d.html#a12d008fea5babe6a208fca7b1fb719d3',1,'rtabmap::util3d::icpPointToPlane(const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZINormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)']]], + ['icprms_5',['icpRMS',['../classrtabmap_1_1RegistrationInfo.html#a1612de115fbd0bfb6dbe8e3aa3528037',1,'rtabmap::RegistrationInfo']]], + ['icprotation_6',['icpRotation',['../classrtabmap_1_1RegistrationInfo.html#a9487cf937223f68f2658189298d727e4',1,'rtabmap::RegistrationInfo']]], + ['icpstrategy_7',['IcpStrategy',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fab',1,'rtabmap::RegistrationIcp']]], + ['icpstructuralcomplexity_8',['icpStructuralComplexity',['../classrtabmap_1_1RegistrationInfo.html#a702e62ddd46f3912312be7b55fbba4de',1,'rtabmap::RegistrationInfo']]], + ['icpstructuraldistribution_9',['icpStructuralDistribution',['../classrtabmap_1_1RegistrationInfo.html#a8b152df7c54273e6e33cdfa1744157f5',1,'rtabmap::RegistrationInfo']]], + ['icptranslation_10',['icpTranslation',['../classrtabmap_1_1RegistrationInfo.html#a0aca4419a027a27d3aa9b65d7019898b',1,'rtabmap::RegistrationInfo']]], + ['id_11',['id',['../classrtabmap_1_1Signature.html#a31c6e7b7e720eca20fb5935e0ee1d9f9',1,'rtabmap::Signature::id()'],['../classUObjDeletionThread.html#a027f81f93f7b78c442a094d944136f20',1,'UObjDeletionThread::id()'],['../classrtabmap_1_1VisualWord.html#a988fd37d739297c9b04c7dc156de3c66',1,'rtabmap::VisualWord::id()'],['../classrtabmap_1_1SensorData.html#a84fbcb16e51018d96065d3ce240650c6',1,'rtabmap::SensorData::id()'],['../classrtabmap_1_1Landmark.html#a2b5a5cbdb313813e3bb473a05b1145e2',1,'rtabmap::Landmark::id()'],['../classrtabmap_1_1SensorCaptureInfo.html#a2cd84bbdd9bd60f906b9b925ab0d302c',1,'rtabmap::SensorCaptureInfo::id']]], + ['id_5finvalid_12',['ID_INVALID',['../classrtabmap_1_1VWDictionary.html#a83b1966a141848baeec5112c30bacf0f',1,'rtabmap::VWDictionary']]], + ['id_5fstart_13',['ID_START',['../classrtabmap_1_1VWDictionary.html#a2dbfec55a8921f52b642bf0dceea0c37',1,'rtabmap::VWDictionary']]], + ['imagecompressed_14',['imageCompressed',['../classrtabmap_1_1SensorData.html#aafcc6b483798b7a99fafa8f929db1029',1,'rtabmap::SensorData']]], + ['imageraw_15',['imageRaw',['../classrtabmap_1_1SensorData.html#ae9e44401d0d6faee8fcb801090936fef',1,'rtabmap::SensorData']]], + ['imagesalreadyrectified_16',['imagesAlreadyRectified',['../classrtabmap_1_1Odometry.html#ac9ae854d14d44d82e1f20e8a4791b9c4',1,'rtabmap::Odometry']]], + ['importposes_17',['importPoses',['../namespacertabmap_1_1graph.html#a5c0eb890db7dba1c353d57595ccbdc6e',1,'rtabmap::graph']]], + ['imu_18',['imu',['../classrtabmap_1_1IMU.html#a76e674d3ef1865369e1416ae5ff76483',1,'rtabmap::IMU::IMU()'],['../classrtabmap_1_1IMU.html#a8db1233b6871dcbd58f1862cee2826fa',1,'rtabmap::IMU::IMU(const cv::Vec4d &orientation, const cv::Mat &orientationCovariance, const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1IMU.html#a3171afc29cdf8587a401b6da1b1908e6',1,'rtabmap::IMU::IMU(const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1SensorData.html#a056056de80edf1bc20505fd992cdc6e7',1,'rtabmap::SensorData::imu()'],['../classrtabmap_1_1IMU.html',1,'rtabmap::IMU']]], + ['imuevent_19',['imuevent',['../classrtabmap_1_1IMUEvent.html',1,'rtabmap::IMUEvent'],['../classrtabmap_1_1IMUEvent.html#a1ab86d7c16b1cadb44f0440808a9a81b',1,'rtabmap::IMUEvent::IMUEvent()'],['../classrtabmap_1_1IMUEvent.html#af041b297fa5f621dbc4fd085b16da800',1,'rtabmap::IMUEvent::IMUEvent(const IMU &data, double stamp)']]], + ['imufilter_20',['imufilter',['../parameters.html#autotoc_md60',1,'ImuFilter'],['../classrtabmap_1_1IMUFilter.html',1,'rtabmap::IMUFilter']]], + ['imus_21',['imus',['../classrtabmap_1_1Odometry.html#a6c9ed388da42499d2244bb98c8ff0e8d',1,'rtabmap::Odometry']]], + ['imuthread_22',['imuthread',['../classrtabmap_1_1IMUThread.html#a97a2c48c6bb7e29ae64147fc9f032ac3',1,'rtabmap::IMUThread::IMUThread()'],['../classrtabmap_1_1IMUThread.html',1,'rtabmap::IMUThread']]], + ['incrementmapid_23',['incrementMapId',['../classrtabmap_1_1Memory.html#afce9dbf3e5657d65540e33c59e992d83',1,'rtabmap::Memory']]], + ['indexedfeatures_24',['indexedFeatures',['../classrtabmap_1_1FlannIndex.html#a759817fbddaf8c6bdb04ba0a44e9847a',1,'rtabmap::FlannIndex']]], + ['indices_20extraction_25',['Point Cloud Indices Extraction',['../group__ExtractIndices.html',1,'']]], + ['info_26',['info',['../classrtabmap_1_1SensorEvent.html#a89ec0e00ab443a71b4735e392e419331',1,'rtabmap::SensorEvent::info()'],['../classrtabmap_1_1OdometryEvent.html#a9d20ed607b8cc697c8aa5ca725e477a5',1,'rtabmap::OdometryEvent::info()']]], + ['inframe_27',['inFrame',['../classrtabmap_1_1CameraModel.html#aa07cbe07c7893e726c408392cf54d9ca',1,'rtabmap::CameraModel']]], + ['init_28',['init',['../classrtabmap_1_1SensorCapture.html#a1c0cd843969fab53f157cbe0fd333b8a',1,'rtabmap::SensorCapture::init()'],['../classrtabmap_1_1Rtabmap.html#a25bfb157aa3be3bd3c8a1d4200329041',1,'rtabmap::Rtabmap::init(const std::string &configFile="", const std::string &databasePath="", bool loadDatabaseParameters=false)'],['../classrtabmap_1_1Rtabmap.html#a711c479925db2c9f8201aacffe70281b',1,'rtabmap::Rtabmap::init(const ParametersMap &parameters, const std::string &databasePath="", bool loadDatabaseParameters=false)'],['../classrtabmap_1_1Memory.html#aeeabc78648bf7dc14ea1356828cdeddd',1,'rtabmap::Memory::init()'],['../classrtabmap_1_1LidarVLP16.html#a80162804e05013f64c6868084f460ab0',1,'rtabmap::LidarVLP16::init()'],['../classrtabmap_1_1IMUThread.html#aeed84fd5d571a5e9af54c8c3ea16ef9d',1,'rtabmap::IMUThread::init()'],['../classrtabmap_1_1DBReader.html#a31b8ffc3d213da7ab58a85ce89b8055e',1,'rtabmap::DBReader::init()'],['../classrtabmap_1_1CameraVideo.html#a2b20fb67f20ec64e6c43e8d76d5c1f74',1,'rtabmap::CameraVideo::init()'],['../classrtabmap_1_1CameraStereoZedOC.html#a37264abe58baa727bb5ee8d6653fa443',1,'rtabmap::CameraStereoZedOC::init()'],['../classrtabmap_1_1CameraStereoZed.html#a80088853404d1c4e89b5f29933d7b020',1,'rtabmap::CameraStereoZed::init()'],['../classrtabmap_1_1CameraStereoVideo.html#a8bc165fb5c77bb9693203791a0888269',1,'rtabmap::CameraStereoVideo::init()'],['../classrtabmap_1_1CameraStereoImages.html#abc0cb4bfd56314d0003c6ce5d365cbca',1,'rtabmap::CameraStereoImages::init()'],['../classrtabmap_1_1CameraK4A.html#af2c611c697451697f318405469bb23e8',1,'rtabmap::CameraK4A::init()'],['../classrtabmap_1_1CameraK4W2.html#a33aec7e8863ddd2815a983a71e869127',1,'rtabmap::CameraK4W2::init()'],['../classrtabmap_1_1CameraMyntEye.html#a368591c828d3bb5aabfe8cae56d01304',1,'rtabmap::CameraMyntEye::init()'],['../classrtabmap_1_1CameraOpenni.html#aaa00fc3850c747fb261c87d4ad54827f',1,'rtabmap::CameraOpenni::init()'],['../classrtabmap_1_1CameraImages.html#a8f00b6eb8c78a66d3381877825d70206',1,'rtabmap::CameraImages::init()'],['../classrtabmap_1_1CameraFreenect2.html#aab9ed1bf2f64c6b8f6f95e25f94c4a8f',1,'rtabmap::CameraFreenect2::init()'],['../classrtabmap_1_1CameraFreenect.html#aa36a4142ea9e7dab7120690b1d4a7449',1,'rtabmap::CameraFreenect::init()'],['../classrtabmap_1_1CameraDepthAI.html#aeab341a67f8c9ef3a078ef4636f969c1',1,'rtabmap::CameraDepthAI::init()'],['../classrtabmap_1_1CameraStereoTara.html#a3cd79ca07d74d6a3501f3ecd9b31bbef',1,'rtabmap::CameraStereoTara::init()'],['../classrtabmap_1_1CameraOpenNI2.html#a0c0da722b985da3595896fcc6bc72c7b',1,'rtabmap::CameraOpenNI2::init()'],['../classrtabmap_1_1CameraOpenNICV.html#a4d636b36e01de97d35fb0b6bb5fc3b7d',1,'rtabmap::CameraOpenNICV::init()'],['../classrtabmap_1_1CameraOrbbecSDK.html#a3a99d50d119791b9d3a36056aaddf59a',1,'rtabmap::CameraOrbbecSDK::init()'],['../classrtabmap_1_1CameraRealSense.html#a8c94957c92c38eee0d9ebbfd75d35a10',1,'rtabmap::CameraRealSense::init()'],['../classrtabmap_1_1CameraRealSense2.html#a7efbcb280ddd451a9c8fdbdba599c68f',1,'rtabmap::CameraRealSense2::init()'],['../classrtabmap_1_1CameraRGBDImages.html#a21903042693fbbc0bfc1586225efb2dd',1,'rtabmap::CameraRGBDImages::init()'],['../classrtabmap_1_1CameraSeerSense.html#a2fb66c8fa789c747b12c4ce85c8fc874',1,'rtabmap::CameraSeerSense::init()'],['../classrtabmap_1_1CameraStereoDC1394.html#a2cc861b0f7c66b8e21267678f6f5f221',1,'rtabmap::CameraStereoDC1394::init()'],['../classrtabmap_1_1CameraStereoFlyCapture2.html#a46a2477a1c151927c9d5e7eea51d3354',1,'rtabmap::CameraStereoFlyCapture2::init()']]], + ['initrectificationmap_29',['initrectificationmap',['../classrtabmap_1_1CameraModel.html#a5690a86d11b0d84e80961ae5d38b1d25',1,'rtabmap::CameraModel::initRectificationMap()'],['../classrtabmap_1_1StereoCameraModel.html#a544ee7d540dfe57c94863190d87898aa',1,'rtabmap::StereoCameraModel::initRectificationMap()']]], + ['inliers_30',['inliers',['../classrtabmap_1_1RegistrationInfo.html#a9de693920adf2f33eb283018c1e52456',1,'rtabmap::RegistrationInfo']]], + ['inliersdistribution_31',['inliersDistribution',['../classrtabmap_1_1RegistrationInfo.html#a4461db9c85505ed07f6d69b5e0329601',1,'rtabmap::RegistrationInfo']]], + ['inliersids_32',['inliersIDs',['../classrtabmap_1_1RegistrationInfo.html#a3672f48c403ae0d9a309aa7b3a0715b2',1,'rtabmap::RegistrationInfo']]], + ['inliersmeandistance_33',['inliersMeanDistance',['../classrtabmap_1_1RegistrationInfo.html#a9b5a886b0d4a77966820ed5766ff42fc',1,'rtabmap::RegistrationInfo']]], + ['inlierspercam_34',['inliersPerCam',['../classrtabmap_1_1RegistrationInfo.html#a1537d6d65162a8c84cabcae7fba37c26',1,'rtabmap::RegistrationInfo']]], + ['inliersratio_35',['inliersRatio',['../classrtabmap_1_1RegistrationInfo.html#a2ffbcc42740094d7cb5e38bcd03006c8',1,'rtabmap::RegistrationInfo']]], + ['interest_20roi_20computation_36',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['interpolate_37',['interpolate',['../namespacertabmap_1_1util2d.html#afc241016af8396edf5228dbe9e80ee8d',1,'rtabmap::util2d::interpolate()'],['../classrtabmap_1_1Transform.html#af42b1c945a7fee57a26207fb96b7143d',1,'rtabmap::Transform::interpolate()']]], + ['intersectraytriangle_38',['intersectRayTriangle',['../namespacertabmap_1_1util3d.html#ab138227ab6c0511088e846b2276e7afc',1,'rtabmap::util3d']]], + ['interval_39',['interval',['../classrtabmap_1_1OdometryInfo.html#a2c12cf07f29ecbafe6eacfd2e987adb6',1,'rtabmap::OdometryInfo']]], + ['introduction_40',['Introduction',['../group__UtiLite.html#intro',1,'']]], + ['inverse_41',['inverse',['../classrtabmap_1_1Link.html#a0d5dcb7392f6ac89ca8b4de202ca07d3',1,'rtabmap::Link::inverse()'],['../classrtabmap_1_1Transform.html#a71ff72d5731d252a87a19c63e3890e3a',1,'rtabmap::Transform::inverse()']]], + ['is3d_42',['is3D',['../classrtabmap_1_1LocalGrid.html#af4bac3ac9ffd57653dee619b5be2b4f7',1,'rtabmap::LocalGrid']]], + ['is3dof_43',['is3DoF',['../classrtabmap_1_1Transform.html#a61c6a6acf6b149caa67918331d73004a',1,'rtabmap::Transform']]], + ['is4dof_44',['is4DoF',['../classrtabmap_1_1Transform.html#adaa07bac5d863d028d277b84880aeaab',1,'rtabmap::Transform']]], + ['isavailable_45',['isavailable',['../classrtabmap_1_1Feature2D.html#a6020550480c25d36f0b4255629e75ee2',1,'rtabmap::Feature2D::isAvailable()'],['../classrtabmap_1_1Optimizer.html#afe0381a3b42926b7634027e522766eb1',1,'rtabmap::Optimizer::isAvailable()']]], + ['isbadsignature_46',['isBadSignature',['../classrtabmap_1_1Signature.html#a693874de0d6ede4fe5c5d43d6f4d8b55',1,'rtabmap::Signature']]], + ['isbindatakept_47',['isBinDataKept',['../classrtabmap_1_1Memory.html#a18a6e852d545751fbc348d2aae6d7fe0',1,'rtabmap::Memory']]], + ['isbool_48',['isBool',['../classUVariant.html#a1f5b265f0e4569021bd6bc212cae91f7',1,'UVariant']]], + ['isbuilt_49',['isBuilt',['../classrtabmap_1_1FlannIndex.html#a4a5c33446a515bd8f0c2f73a1adaeb23',1,'rtabmap::FlannIndex']]], + ['iscapturing_50',['isCapturing',['../classrtabmap_1_1SensorCaptureThread.html#ab2654b31ebdf06b375045fadbc83731a',1,'rtabmap::SensorCaptureThread']]], + ['ischar_51',['isChar',['../classUVariant.html#a644e3deffa081cacfdadddc1f504e6b6',1,'UVariant']]], + ['ischararray_52',['isCharArray',['../classUVariant.html#ab17409bb37beec9c62defdbe398dfe8b',1,'UVariant']]], + ['iscompressed_53',['isCompressed',['../classrtabmap_1_1LaserScan.html#a25e8e9681240f4a21960977f5c12bcd9',1,'rtabmap::LaserScan']]], + ['isconnected_54',['isConnected',['../classrtabmap_1_1DBDriver.html#a7b1222cf6e75d7365b5b90c37bca2a85',1,'rtabmap::DBDriver']]], + ['iscovarianceignored_55',['isCovarianceIgnored',['../classrtabmap_1_1Optimizer.html#a8bb6372ce4c67fd9b8d54f692ac34238',1,'rtabmap::Optimizer']]], + ['iscreating_56',['isCreating',['../classUThread.html#ac80eff7d48382fd230141ca286370d33',1,'UThread']]], + ['isdouble_57',['isDouble',['../classUVariant.html#a3b9f099698afa0716564960cce359a60',1,'UVariant']]], + ['isdoublearray_58',['isDoubleArray',['../classUVariant.html#aa0a91a91288b102857ebc978767d71c4',1,'UVariant']]], + ['isenabled_59',['isEnabled',['../classrtabmap_1_1Signature.html#a343a565680d03c45cc29dff7392b275e',1,'rtabmap::Signature']]], + ['isfinite_60',['isFinite',['../namespacertabmap_1_1util3d.html#acc048e10b70e3ad3efb299926e575020',1,'rtabmap::util3d']]], + ['isfisheye_61',['isFisheye',['../classrtabmap_1_1CameraModel.html#a3ceb0d36d8786f03b778d1969cb6e839',1,'rtabmap::CameraModel']]], + ['isfloat_62',['isFloat',['../classUVariant.html#a2d5757424cf7e69ede4564b82a7ab95c',1,'UVariant']]], + ['isfloatarray_63',['isFloatArray',['../classUVariant.html#a94c1a6cbd6c39968801cc4116bae3c55',1,'UVariant']]], + ['isgpuavailable_64',['isgpuavailable',['../classrtabmap_1_1ORB.html#a7b5e3e7cc41dd04e517c5332f04d3a0a',1,'rtabmap::ORB::isGpuAvailable()'],['../classrtabmap_1_1Feature2D.html#a8d330b2b7db059f59c257cde6c9b6a99',1,'rtabmap::Feature2D::isGpuAvailable()'],['../classrtabmap_1_1SURF.html#a1150923dbf7e1bfd066dba0c3b22db57',1,'rtabmap::SURF::isGpuAvailable()'],['../classrtabmap_1_1SIFT.html#ad089f68ffc9ef1b42b5a9c2d5a5ecd81',1,'rtabmap::SIFT::isGpuAvailable()'],['../classrtabmap_1_1FAST.html#a1418ac4de2bdf5815df888a4d1f50b2e',1,'rtabmap::FAST::isGpuAvailable()'],['../classrtabmap_1_1GFTT.html#a05151f04cf624576783837dc48ddf744',1,'rtabmap::GFTT::isGpuAvailable()'],['../classrtabmap_1_1SuperPointTorch.html#aee69f6089f657449d3813b440abbaa25',1,'rtabmap::SuperPointTorch::isGpuAvailable()'],['../classrtabmap_1_1SuperPointRpautrat.html#ac041c8738dc391661ba21331bf78d344',1,'rtabmap::SuperPointRpautrat::isGpuAvailable()']]], + ['isgpuenabled_65',['isgpuenabled',['../classrtabmap_1_1Stereo.html#ac1db900d4dbca15de73a81d32f0be179',1,'rtabmap::Stereo::isGpuEnabled()'],['../classrtabmap_1_1StereoOpticalFlow.html#abc4c02bc672566fc2dd3f7331b84944e',1,'rtabmap::StereoOpticalFlow::isGpuEnabled()']]], + ['isgraphreduced_66',['isGraphReduced',['../classrtabmap_1_1Memory.html#a790e24b6cb0fb3ec2ed198121a6211c1',1,'rtabmap::Memory']]], + ['isgridfromdepth_67',['isGridFromDepth',['../classrtabmap_1_1LocalGridMaker.html#a60f571f0fd1e58a1a82eb39bfeafda2a',1,'rtabmap::LocalGridMaker']]], + ['isidentity_68',['isIdentity',['../classrtabmap_1_1Transform.html#ae0636052ce31698d4d45afe4492ffab9',1,'rtabmap::Transform']]], + ['isidle_69',['isIdle',['../classUThread.html#a2c4554ad881c0532239a0930c2ebfe24',1,'UThread']]], + ['isidsgenerated_70',['isidsgenerated',['../classrtabmap_1_1Memory.html#a6d48ff5d4dfcf085123b5dd354fae681',1,'rtabmap::Memory::isIDsGenerated()'],['../classrtabmap_1_1Rtabmap.html#a5e85283c6421dcf9afb6961662e501b8',1,'rtabmap::Rtabmap::isIDsGenerated()']]], + ['isimagerequired_71',['isImageRequired',['../classrtabmap_1_1Registration.html#ae10ae7b6dbf4d5396db66600ebe18228',1,'rtabmap::Registration']]], + ['isincremental_72',['isincremental',['../classrtabmap_1_1Memory.html#a420ddb38a3ffefafc84d22b0dd3b3814',1,'rtabmap::Memory::isIncremental()'],['../classrtabmap_1_1VWDictionary.html#a706e209f6228c02730dd8ea501ab5369',1,'rtabmap::VWDictionary::isIncremental() const']]], + ['isincrementalflann_73',['isIncrementalFlann',['../classrtabmap_1_1VWDictionary.html#a9f016aa45f3b3d5618d104fb799ca998',1,'rtabmap::VWDictionary']]], + ['isinfodatafilled_74',['isInfoDataFilled',['../classrtabmap_1_1Odometry.html#a3276da70261724ceb03df8e410844a8c',1,'rtabmap::Odometry']]], + ['isinltm_75',['isInLTM',['../classrtabmap_1_1Memory.html#a2464a77e0190653e10ce9e60fb919ae9',1,'rtabmap::Memory']]], + ['isinmemory_76',['isinmemory',['../classrtabmap_1_1DBDriver.html#a0ecd6182f404d8e6822b66a54f1d248a',1,'rtabmap::DBDriver::isInMemory()'],['../classrtabmap_1_1DBDriverSqlite3.html#af9cf8fda0fcc032efb44981d908b4e55',1,'rtabmap::DBDriverSqlite3::isInMemory()']]], + ['isinstm_77',['isinstm',['../classrtabmap_1_1Memory.html#a19fe91598153249250ac4870db535e8e',1,'rtabmap::Memory::isInSTM()'],['../classrtabmap_1_1Rtabmap.html#a596ea3fbeb22c90db9530f6752900ecc',1,'rtabmap::Rtabmap::isInSTM()']]], + ['isint_78',['isInt',['../classUVariant.html#a4a22ee60a869140c36f80ff04f90c07b',1,'UVariant']]], + ['isintarray_79',['isIntArray',['../classUVariant.html#aa09528d4c1668a2dff51b0f12b3b1de3',1,'UVariant']]], + ['isinvertible_80',['isInvertible',['../classrtabmap_1_1Transform.html#addc1c06517c7308f00bd54b5744aa959',1,'rtabmap::Transform']]], + ['isinwm_81',['isInWM',['../classrtabmap_1_1Memory.html#a5058d8b44e4f76f1fedb76645087a1ac',1,'rtabmap::Memory']]], + ['iskilled_82',['isKilled',['../classUThread.html#a3a0d0de0f78eab72512941ccd048477b',1,'UThread']]], + ['islinksmodified_83',['isLinksModified',['../classrtabmap_1_1Signature.html#a93dcbd3cffc84808fe5652bf0f542ca9',1,'rtabmap::Signature']]], + ['islocalizationdatasaved_84',['isLocalizationDataSaved',['../classrtabmap_1_1Memory.html#a32ed69b783e53be29fca6102ab198a4e',1,'rtabmap::Memory']]], + ['ismapframeprojection_85',['isMapFrameProjection',['../classrtabmap_1_1LocalGridMaker.html#ae8fcd8ed901bc23bac3f14efb48567a9',1,'rtabmap::LocalGridMaker']]], + ['ismodified_86',['ismodified',['../classrtabmap_1_1Signature.html#ab63ee6d2a0e2cd456748a64d9990f969',1,'rtabmap::Signature::isModified()'],['../classrtabmap_1_1VWDictionary.html#aa0bcdf4002305d36bb072c019d475f13',1,'rtabmap::VWDictionary::isModified()']]], + ['isnodeassembled_87',['isNodeAssembled',['../classrtabmap_1_1GlobalMap.html#a9c853fcade3b4b9bd4f49b6a07025e6d',1,'rtabmap::GlobalMap']]], + ['isnull_88',['isNull',['../classrtabmap_1_1Transform.html#a0d6a1985391a45de4fe208e58c51b9d2',1,'rtabmap::Transform']]], + ['isodomgravityused_89',['isOdomGravityUsed',['../classrtabmap_1_1Memory.html#ab29b6d90e79694d7fdfb56574476141f',1,'rtabmap::Memory']]], + ['ispaused_90',['isPaused',['../classrtabmap_1_1SensorCaptureThread.html#a435f89b6a3186462f6ee860afa88644c',1,'rtabmap::SensorCaptureThread']]], + ['ispointvisiblefromcameras_91',['isPointVisibleFromCameras',['../classrtabmap_1_1SensorData.html#a30f069ee8ffa263ec2c18bc714713e03',1,'rtabmap::SensorData']]], + ['ispredictionsparse_92',['isPredictionSparse',['../classrtabmap_1_1BayesFilter.html#a8d65b71c1a2230fdefae41d90f73c0d5',1,'rtabmap::BayesFilter']]], + ['isreadonly_93',['isReadOnly',['../classrtabmap_1_1Memory.html#ad6d7488b61f8bedf6c9e3f4019a6b7f4',1,'rtabmap::Memory']]], + ['isrectificationmapinitialized_94',['isrectificationmapinitialized',['../classrtabmap_1_1CameraModel.html#a80cacb16d347e89980369cb2e02f3d48',1,'rtabmap::CameraModel::isRectificationMapInitialized()'],['../classrtabmap_1_1StereoCameraModel.html#aa35a73db2fc272f0f33b40220b75fa43',1,'rtabmap::StereoCameraModel::isRectificationMapInitialized()']]], + ['isrgbdmode_95',['isRGBDMode',['../classrtabmap_1_1Rtabmap.html#a691de75b6964ab48d7f1ea53ea40f4c1',1,'rtabmap::Rtabmap']]], + ['isrobust_96',['isRobust',['../classrtabmap_1_1Optimizer.html#a29ba07e1e829ae616d82756977161c9f',1,'rtabmap::Optimizer']]], + ['isrunning_97',['isRunning',['../classUThread.html#a38e2b22f0616ed4128312baff9cfeba9',1,'UThread']]], + ['issaved_98',['issaved',['../classrtabmap_1_1Signature.html#a0d15326165e9d01f0b91b247f5da23ea',1,'rtabmap::Signature::isSaved()'],['../classrtabmap_1_1VisualWord.html#a4a4d316a18741c30c8d2d5db50f3c4e7',1,'rtabmap::VisualWord::isSaved()']]], + ['isscanrequired_99',['isScanRequired',['../classrtabmap_1_1Registration.html#aa0748ad5a576d0919ef0d360137e5ea7',1,'rtabmap::Registration']]], + ['isshort_100',['isShort',['../classUVariant.html#a611898d77468fdb704aeaf20f5ebc5df',1,'UVariant']]], + ['isshortarray_101',['isShortArray',['../classUVariant.html#a671286922d321c4da699d4cebca3ca44',1,'UVariant']]], + ['isslam2d_102',['isSlam2d',['../classrtabmap_1_1Optimizer.html#a51485674608bbf910922ecee43cc13aa',1,'rtabmap::Optimizer']]], + ['isstr_103',['isStr',['../classUVariant.html#af431bdd37ebae79c5b778d66ad08cf50',1,'UVariant']]], + ['isuchar_104',['isUChar',['../classUVariant.html#af94e47d3da5a0ba9d605359ef843e5d4',1,'UVariant']]], + ['isuchararray_105',['isUCharArray',['../classUVariant.html#a66c02a68f48cab8c2952ebae7181b164',1,'UVariant']]], + ['isuint_106',['isUInt',['../classUVariant.html#aed53240d0ec77aca65317988753412dd',1,'UVariant']]], + ['isuintarray_107',['isUIntArray',['../classUVariant.html#af31b8bdca6cb78ebd3f8f6e97e895442',1,'UVariant']]], + ['isundef_108',['isUndef',['../classUVariant.html#aa33dc5850071f73864c280bd1d4e743b',1,'UVariant']]], + ['isuserdatarequired_109',['isUserDataRequired',['../classrtabmap_1_1Registration.html#a3cd064c74588fd13cce178596e188b5d',1,'rtabmap::Registration']]], + ['isushort_110',['isUShort',['../classUVariant.html#a87d098e60871ec85d179528d0a7bdc88',1,'UVariant']]], + ['isushortarray_111',['isUShortArray',['../classUVariant.html#a006cef10aa4c95539d0cd9d574de747d',1,'UVariant']]], + ['isvalid_112',['isvalid',['../classUFile.html#ad0ecde61a088d9fc3d034a513133341d',1,'UFile::isValid()'],['../classUDirectory.html#a8d471f3c9ff7391d25a52eab24255e64',1,'UDirectory::isValid()'],['../classrtabmap_1_1SensorData.html#ad620676ab1a971846ab80ef646aa5882',1,'rtabmap::SensorData::isValid()'],['../classrtabmap_1_1Link.html#a53974a2cea4315106cf12065ace8bb96',1,'rtabmap::Link::isValid()']]], + ['isvalidforprojection_113',['isvalidforprojection',['../classrtabmap_1_1StereoCameraModel.html#a6c16870b83978d286003b166fd6949cf',1,'rtabmap::StereoCameraModel::isValidForProjection()'],['../classrtabmap_1_1CameraModel.html#a7b6db41415e085d52bf363d09d5e6d67',1,'rtabmap::CameraModel::isValidForProjection()']]], + ['isvalidforrectification_114',['isvalidforrectification',['../classrtabmap_1_1StereoCameraModel.html#ac5e22eec7815cb27e436afada2b5769f',1,'rtabmap::StereoCameraModel::isValidForRectification()'],['../classrtabmap_1_1CameraModel.html#a46864eb8de680d45d79777e828dcbb6a',1,'rtabmap::CameraModel::isValidForRectification() const']]], + ['isvalidforreprojection_115',['isValidForReprojection',['../classrtabmap_1_1CameraModel.html#abd4db4f23eb05d531a34ee44f7cdb687',1,'rtabmap::CameraModel']]], + ['iterations_116',['iterations',['../classrtabmap_1_1Stereo.html#abde66966de114cd5649fd22602d27816',1,'rtabmap::Stereo::iterations()'],['../classrtabmap_1_1Optimizer.html#a178bb719b0e22863e29add12c85e14a5',1,'rtabmap::Optimizer::iterations()']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_c.js b/preview/pr-1773/api/latest/search/all_c.js new file mode 100644 index 00000000..5d2c0abc --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['join_0',['join',['../classUThread.html#acf33c0e4b656af76da100e7d4f69ed1d',1,'UThread']]], + ['jointrashthread_1',['joinTrashThread',['../classrtabmap_1_1Memory.html#a2bba8c0aa57778bb441a97728d45a58e',1,'rtabmap::Memory']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_d.js b/preview/pr-1773/api/latest/search/all_d.js new file mode 100644 index 00000000..93ee63c9 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_d.js @@ -0,0 +1,762 @@ +var searchData= +[ + ['k_0',['K',['../classrtabmap_1_1CameraModel.html#a5df2e6c3f361b7084e4d26d7f1846e3d',1,'rtabmap::CameraModel']]], + ['k_5fraw_1',['K_raw',['../classrtabmap_1_1CameraModel.html#ada626650b01d35b494016a5490efb31a',1,'rtabmap::CameraModel']]], + ['kallwithlandmarks_2',['kAllWithLandmarks',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eacc2cbab0ea322149df37addb91cb75ac',1,'rtabmap::Link']]], + ['kallwithoutlandmarks_3',['kAllWithoutLandmarks',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae8ffae7407e28cf7a125f76bea2864a5',1,'rtabmap::Link']]], + ['kambientairpressure_4',['kAmbientAirPressure',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa2659626ccc2aa59e2d83a57f34e400f0',1,'rtabmap::EnvSensor']]], + ['kambientlight_5',['kAmbientLight',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa8eee701051a2603e162a65d4948a64d8',1,'rtabmap::EnvSensor']]], + ['kambientrelativehumidity_6',['kAmbientRelativeHumidity',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa7c238626943b1254027ed1b5454ae101',1,'rtabmap::EnvSensor']]], + ['kambienttemperature_7',['kAmbientTemperature',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa9e348acef07abec64edef43b58ea1b83',1,'rtabmap::EnvSensor']]], + ['kaze_8',['kaze',['../parameters.html#autotoc_md22',1,'KAZE'],['../classrtabmap_1_1KAZE.html',1,'rtabmap::KAZE']]], + ['kbayesfullpredictionupdate_9',['kBayesFullPredictionUpdate',['../classrtabmap_1_1Parameters.html#a08f0a214eb15975386b5d06be56e38b4',1,'rtabmap::Parameters']]], + ['kbayespredictionlc_10',['kBayesPredictionLC',['../classrtabmap_1_1Parameters.html#aabfee3d6757a2269d7bbbbd3ebc20fb1',1,'rtabmap::Parameters']]], + ['kbayessparseprediction_11',['kBayesSparsePrediction',['../classrtabmap_1_1Parameters.html#ae8141b0f2cc33d7e47b8a5f4fc558bc1',1,'rtabmap::Parameters']]], + ['kbayesvirtualplacepriorthr_12',['kBayesVirtualPlacePriorThr',['../classrtabmap_1_1Parameters.html#af5f568511dbc4d9213d21acf1cedd65e',1,'rtabmap::Parameters']]], + ['kbool_13',['kBool',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdac7d8fa7273711e6711880ba9f9d10f62',1,'UVariant']]], + ['kbriefbytes_14',['kBRIEFBytes',['../classrtabmap_1_1Parameters.html#a62ce1ff73ad01bb94bc5c1b19467e140',1,'rtabmap::Parameters']]], + ['kbriskoctaves_15',['kBRISKOctaves',['../classrtabmap_1_1Parameters.html#ad8e01f25d2fd5dbc2460db13f761dddf',1,'rtabmap::Parameters']]], + ['kbriskpatternscale_16',['kBRISKPatternScale',['../classrtabmap_1_1Parameters.html#a44b86ee14e1ed84d429fe58f889854c7',1,'rtabmap::Parameters']]], + ['kbriskthresh_17',['kBRISKThresh',['../classrtabmap_1_1Parameters.html#af0c6a76aca67ca854db89db8cbc17acc',1,'rtabmap::Parameters']]], + ['kchar_18',['kChar',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda117693c00c89461634dc137ee9a219c4',1,'UVariant']]], + ['kchararray_19',['kCharArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdafecb2dc57006c548e5ab0b59f2062c29',1,'UVariant']]], + ['kcmdcancelgoal_20',['kCmdCancelGoal',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a01628ffc80300d04ed04e92e54ec45ae',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdcleandatabuffer_21',['kCmdCleanDataBuffer',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a708e03e12a54f6525365376bc992e15c',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdclose_22',['kCmdClose',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a38f200b1633df5e59891e739f74dfd18',1,'rtabmap::RtabmapEventCmd']]], + ['kcmddumpmemory_23',['kCmdDumpMemory',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ac502abc00c88395400bf9742c91bdf32',1,'rtabmap::RtabmapEventCmd']]], + ['kcmddumpprediction_24',['kCmdDumpPrediction',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801aa0918b6878ef55d0490414c40f4afea6',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdexportposes_25',['kCmdExportPoses',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a464be1b7dcf88f079ed9a7a2c1100fdd',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdgeneratedotgraph_26',['kCmdGenerateDOTGraph',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ab69181c7e5e81a85ec6f3888f995685d',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdgoal_27',['kCmdGoal',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801aeced93a6e04c8115875c8d0fe588250d',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdinit_28',['kCmdInit',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801af03efbff0b297b981f75f077aac49856',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdlabel_29',['kCmdLabel',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a29d3e98121b70d06e0ca342cb3bcda4c',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdpause_30',['kCmdPause',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a29a4641069f4cd19a332982291f63e57',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdpublish3dmap_31',['kCmdPublish3DMap',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a8bdd31ff2a969a5f73c86a14e5192fcc',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdremovelabel_32',['kCmdRemoveLabel',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ad140704bb865de92427860545738bf7f',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdrepublishdata_33',['kCmdRepublishData',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a6c0888430b821a9b6094c66a6f42d9cf',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdresetmemory_34',['kCmdResetMemory',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a02ced1d9f6f5c6210277b19d3b8bcdd9',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdresume_35',['kCmdResume',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801abf715ad034353e5eaeb424c638aff0df',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdtriggernewmap_36',['kCmdTriggerNewMap',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801af522eca014994dec79657ed6efff7fee',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdundef_37',['kCmdUndef',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a45df53bd895e7ae01cc2d5b684068fb2',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdupdateparams_38',['kCmdUpdateParams',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801afc8f39bbe51260a2743dc2b8dfc2b6f3',1,'rtabmap::RtabmapEventCmd']]], + ['kcodedata_39',['kCodeData',['../classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66a96386fbcb6a0fd382113f188c193ed61',1,'rtabmap::SensorEvent']]], + ['kcodenomoreimages_40',['kCodeNoMoreImages',['../classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66a377f61ebd393e5db46b02121270abdf2',1,'rtabmap::SensorEvent']]], + ['kcomplementaryfilter_41',['kComplementaryFilter',['../classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83a13d263540bc4ee0b91102547c8eb1ae2',1,'rtabmap::IMUFilter']]], + ['kcustomsensor1_42',['kCustomSensor1',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa88e60173d5f413f4ab490a99c034453e',1,'rtabmap::EnvSensor']]], + ['kcustomsensor2_43',['kCustomSensor2',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa9bb90358c0c69177bb8a918cd38aee8a',1,'rtabmap::EnvSensor']]], + ['kcustomsensor3_44',['kCustomSensor3',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa7bcfccab26830a87edcf9dbf7d7b166b',1,'rtabmap::EnvSensor']]], + ['kcustomsensor4_45',['kCustomSensor4',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa53762a7b85a4a07845e8c447e0ba19e7',1,'rtabmap::EnvSensor']]], + ['kcustomsensor5_46',['kCustomSensor5',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fafd5342a456a7e150c2d7598a7b297c92',1,'rtabmap::EnvSensor']]], + ['kcustomsensor6_47',['kCustomSensor6',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30faef0358209e8fe8218ab939fa9ab4a693',1,'rtabmap::EnvSensor']]], + ['kcustomsensor7_48',['kCustomSensor7',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30faeb1ce734601c915d6a411c76ff4bb8f8',1,'rtabmap::EnvSensor']]], + ['kcustomsensor8_49',['kCustomSensor8',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa24c103c2769770dd36d87e0567be9140',1,'rtabmap::EnvSensor']]], + ['kcustomsensor9_50',['kCustomSensor9',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa669f9ca8a243a813b981ff2b672b0f89',1,'rtabmap::EnvSensor']]], + ['kdbsqlite3cachesize_51',['kDbSqlite3CacheSize',['../classrtabmap_1_1Parameters.html#a66f7bbca12f9fdf7db68b23e6216ef28',1,'rtabmap::Parameters']]], + ['kdbsqlite3inmemory_52',['kDbSqlite3InMemory',['../classrtabmap_1_1Parameters.html#af89c7aa5e4d7dea98fe2cd05e231346d',1,'rtabmap::Parameters']]], + ['kdbsqlite3journalmode_53',['kDbSqlite3JournalMode',['../classrtabmap_1_1Parameters.html#a8cf0412111ec59d46a4fb109bc3e8ad3',1,'rtabmap::Parameters']]], + ['kdbsqlite3synchronous_54',['kDbSqlite3Synchronous',['../classrtabmap_1_1Parameters.html#a23665c30783f8f7092c145bad3e359dd',1,'rtabmap::Parameters']]], + ['kdbsqlite3tempstore_55',['kDbSqlite3TempStore',['../classrtabmap_1_1Parameters.html#a2ee0c59c976d0fdffc18c690ab7aef73',1,'rtabmap::Parameters']]], + ['kdbtargetversion_56',['kDbTargetVersion',['../classrtabmap_1_1Parameters.html#a4356a08f2a4153665ff049e73000c303',1,'rtabmap::Parameters']]], + ['kdefaultlogfilename_57',['kDefaultLogFileName',['../classULogger.html#ad18593456dbc3c4157ce986f55de6795',1,'ULogger']]], + ['kdouble_58',['kDouble',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2b55c7ccdc00fd1d99247cf4c22283fd',1,'UVariant']]], + ['kdoublearray_59',['kDoubleArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda572a22c911f2d6525d10d6fec2371a7b',1,'UVariant']]], + ['kend_60',['kEnd',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eaa071317c0618d61e3b2cde25e1095c00',1,'rtabmap::Link']]], + ['keyframeadded_61',['keyFrameAdded',['../classrtabmap_1_1OdometryInfo.html#a9e40155a67416dcb420f4164e4aa348a',1,'rtabmap::OdometryInfo']]], + ['keypoints_62',['keypoints',['../classrtabmap_1_1SensorData.html#afdc0db8c8176c4108e78e66df54b7d94',1,'rtabmap::SensorData']]], + ['keypoints3d_63',['keypoints3D',['../classrtabmap_1_1SensorData.html#ab17daf3d7c2cd1253306e6d5991549df',1,'rtabmap::SensorData']]], + ['kfastcv_64',['kFASTCV',['../classrtabmap_1_1Parameters.html#a9868a2aa2ff8894d00088ca7aded75e0',1,'rtabmap::Parameters']]], + ['kfastgpu_65',['kFASTGpu',['../classrtabmap_1_1Parameters.html#ae1c7644f497ae8fe3ea1c31d20fb3e77',1,'rtabmap::Parameters']]], + ['kfastgpukeypointsratio_66',['kFASTGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#ae35a026ec83bca7ee057887a7c61e7aa',1,'rtabmap::Parameters']]], + ['kfastgridcols_67',['kFASTGridCols',['../classrtabmap_1_1Parameters.html#a495b537e66f3b84299ec6ddb4b655db3',1,'rtabmap::Parameters']]], + ['kfastgridrows_68',['kFASTGridRows',['../classrtabmap_1_1Parameters.html#a7baba0d971512a68bd19cd3ab5afce91',1,'rtabmap::Parameters']]], + ['kfastmaxthreshold_69',['kFASTMaxThreshold',['../classrtabmap_1_1Parameters.html#a0f183f29462258ed99a44d174405640a',1,'rtabmap::Parameters']]], + ['kfastminthreshold_70',['kFASTMinThreshold',['../classrtabmap_1_1Parameters.html#aefa8c1c443422ddc86b12b8c39d558c1',1,'rtabmap::Parameters']]], + ['kfastnonmaxsuppression_71',['kFASTNonmaxSuppression',['../classrtabmap_1_1Parameters.html#aa7ec4748a513318585530bdf77e23cb7',1,'rtabmap::Parameters']]], + ['kfastthreshold_72',['kFASTThreshold',['../classrtabmap_1_1Parameters.html#ab0310b05579e241dbf6233f2d90b4d40',1,'rtabmap::Parameters']]], + ['kfloat_73',['kFloat',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdab133726c8e281b1f873b68d28652cbaf',1,'UVariant']]], + ['kfloatarray_74',['kFloatArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda11179285157ee27026c6b7a3a257dec2',1,'UVariant']]], + ['kfreaknoctaves_75',['kFREAKNOctaves',['../classrtabmap_1_1Parameters.html#af48faacb97db49ed8bfdfe5138996c6b',1,'rtabmap::Parameters']]], + ['kfreakorientationnormalized_76',['kFREAKOrientationNormalized',['../classrtabmap_1_1Parameters.html#a415c8e59ec5184ff1a53f11741a23787',1,'rtabmap::Parameters']]], + ['kfreakpatternscale_77',['kFREAKPatternScale',['../classrtabmap_1_1Parameters.html#a3bc68df8d08d383f6659e30e967b97da',1,'rtabmap::Parameters']]], + ['kfreakscalenormalized_78',['kFREAKScaleNormalized',['../classrtabmap_1_1Parameters.html#a9143c60d083a74debb69f96ef0bdd86c',1,'rtabmap::Parameters']]], + ['kg2ooptimizer_79',['kg2oOptimizer',['../classrtabmap_1_1Parameters.html#aef86c8d789e3c0883af2bdcc0bccc95a',1,'rtabmap::Parameters']]], + ['kg2osolver_80',['kg2oSolver',['../classrtabmap_1_1Parameters.html#a1fe7a65c4c54f17e60b55c73ffb94ec7',1,'rtabmap::Parameters']]], + ['kgfttblocksize_81',['kGFTTBlockSize',['../classrtabmap_1_1Parameters.html#ae16b197e0dedd91de692e1f147e3a2c6',1,'rtabmap::Parameters']]], + ['kgfttgpu_82',['kGFTTGpu',['../classrtabmap_1_1Parameters.html#ab29e59a1629d8d113cdf61f27a4b009f',1,'rtabmap::Parameters']]], + ['kgfttk_83',['kGFTTK',['../classrtabmap_1_1Parameters.html#a76531055869daa8a3500b1a2e59087ba',1,'rtabmap::Parameters']]], + ['kgfttmindistance_84',['kGFTTMinDistance',['../classrtabmap_1_1Parameters.html#aa1c20d6d51c8163c76d6d5f3b8776ec1',1,'rtabmap::Parameters']]], + ['kgfttqualitylevel_85',['kGFTTQualityLevel',['../classrtabmap_1_1Parameters.html#a464cba190eaeeeb112ab6c878db2f5f5',1,'rtabmap::Parameters']]], + ['kgfttuseharrisdetector_86',['kGFTTUseHarrisDetector',['../classrtabmap_1_1Parameters.html#ae7d3c6f4065a49a5a6f7f1d54b4bfcb5',1,'rtabmap::Parameters']]], + ['kglobalclosure_87',['kGlobalClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae963042a31afec63e8c0683696ac6791',1,'rtabmap::Link']]], + ['kgmsthresholdfactor_88',['kGMSThresholdFactor',['../classrtabmap_1_1Parameters.html#a4ac2b3550fbbd94f088b7b40a4fb7fe1',1,'rtabmap::Parameters']]], + ['kgmswithrotation_89',['kGMSWithRotation',['../classrtabmap_1_1Parameters.html#ae056f4c45333f9afe44cd2e7bffd7bdf',1,'rtabmap::Parameters']]], + ['kgmswithscale_90',['kGMSWithScale',['../classrtabmap_1_1Parameters.html#a1a6daaf29f6d0b92c036201c256c9644',1,'rtabmap::Parameters']]], + ['kgravity_91',['kGravity',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea37d186f2447908a27d531be74a2f6983',1,'rtabmap::Link']]], + ['kgrid3d_92',['kGrid3D',['../classrtabmap_1_1Parameters.html#a9cc690fcb9e611d424ad844ae825ccfd',1,'rtabmap::Parameters']]], + ['kgridcellsize_93',['kGridCellSize',['../classrtabmap_1_1Parameters.html#a9ba0c8ad336348dd5a031bf858efb2d1',1,'rtabmap::Parameters']]], + ['kgridclusterradius_94',['kGridClusterRadius',['../classrtabmap_1_1Parameters.html#a2a1b1d1ad7b11b884f37e3dc7ecf468e',1,'rtabmap::Parameters']]], + ['kgriddepthdecimation_95',['kGridDepthDecimation',['../classrtabmap_1_1Parameters.html#a91ac51fd2094e2fae2ecfae7cf52e620',1,'rtabmap::Parameters']]], + ['kgriddepthroiratios_96',['kGridDepthRoiRatios',['../classrtabmap_1_1Parameters.html#a79d2fcd0644b3e2bf55b7b1c8b5f8ab1',1,'rtabmap::Parameters']]], + ['kgridflatobstacledetected_97',['kGridFlatObstacleDetected',['../classrtabmap_1_1Parameters.html#a50063c0dfbee1c62c3839575f5542d22',1,'rtabmap::Parameters']]], + ['kgridfootprintheight_98',['kGridFootprintHeight',['../classrtabmap_1_1Parameters.html#a234c4a08cbdf07bf8ffea053dfc6dcfc',1,'rtabmap::Parameters']]], + ['kgridfootprintlength_99',['kGridFootprintLength',['../classrtabmap_1_1Parameters.html#a57fa77623fe59b5c9868f235495e52a7',1,'rtabmap::Parameters']]], + ['kgridfootprintwidth_100',['kGridFootprintWidth',['../classrtabmap_1_1Parameters.html#ad1df593600fd9d68530e8f60bd5471ee',1,'rtabmap::Parameters']]], + ['kgridglobalaltitudedelta_101',['kGridGlobalAltitudeDelta',['../classrtabmap_1_1Parameters.html#aa693e91b029f7280b0a192ddd268ea9b',1,'rtabmap::Parameters']]], + ['kgridglobaleroded_102',['kGridGlobalEroded',['../classrtabmap_1_1Parameters.html#a9769fdbb898ef8fcad4b14a1b3f29526',1,'rtabmap::Parameters']]], + ['kgridglobalfloodfilldepth_103',['kGridGlobalFloodFillDepth',['../classrtabmap_1_1Parameters.html#aa9112f877f9d69592f68df92e72c2105',1,'rtabmap::Parameters']]], + ['kgridglobalfootprintradius_104',['kGridGlobalFootprintRadius',['../classrtabmap_1_1Parameters.html#a7fb452ec90123f1cf1bdad111fae27a1',1,'rtabmap::Parameters']]], + ['kgridglobalmaxnodes_105',['kGridGlobalMaxNodes',['../classrtabmap_1_1Parameters.html#ac201b49f3b57d1227cf46b6710cafde0',1,'rtabmap::Parameters']]], + ['kgridglobalminsize_106',['kGridGlobalMinSize',['../classrtabmap_1_1Parameters.html#a1eb487e17ac8232778ffb2e644777e94',1,'rtabmap::Parameters']]], + ['kgridglobaloccupancythr_107',['kGridGlobalOccupancyThr',['../classrtabmap_1_1Parameters.html#a50033bc725e85c2bff0504790b6b18e5',1,'rtabmap::Parameters']]], + ['kgridglobalprobclampingmax_108',['kGridGlobalProbClampingMax',['../classrtabmap_1_1Parameters.html#a93c2a22289a5eab0620adf1038f8d2f4',1,'rtabmap::Parameters']]], + ['kgridglobalprobclampingmin_109',['kGridGlobalProbClampingMin',['../classrtabmap_1_1Parameters.html#abc950468ca91f57cd90182049922a2a8',1,'rtabmap::Parameters']]], + ['kgridglobalprobhit_110',['kGridGlobalProbHit',['../classrtabmap_1_1Parameters.html#a278ec732e12af354ed4dfb34e4b4957b',1,'rtabmap::Parameters']]], + ['kgridglobalprobmiss_111',['kGridGlobalProbMiss',['../classrtabmap_1_1Parameters.html#affb9a27903cd4b3bee7e3ef9f0635927',1,'rtabmap::Parameters']]], + ['kgridglobalupdateerror_112',['kGridGlobalUpdateError',['../classrtabmap_1_1Parameters.html#ad8552e70b80bf9406fd87c807e6134b9',1,'rtabmap::Parameters']]], + ['kgridgroundisobstacle_113',['kGridGroundIsObstacle',['../classrtabmap_1_1Parameters.html#a0419d0da4d891367e2367e907ee8a68e',1,'rtabmap::Parameters']]], + ['kgridmapframeprojection_114',['kGridMapFrameProjection',['../classrtabmap_1_1Parameters.html#a0326a913a549ff0f891fcdde8fcfa80d',1,'rtabmap::Parameters']]], + ['kgridmaxgroundangle_115',['kGridMaxGroundAngle',['../classrtabmap_1_1Parameters.html#a0de6af7ecde2f2dd63297cd2f4cb2574',1,'rtabmap::Parameters']]], + ['kgridmaxgroundheight_116',['kGridMaxGroundHeight',['../classrtabmap_1_1Parameters.html#a85aa414c16d0b4dd0081358e165d1c90',1,'rtabmap::Parameters']]], + ['kgridmaxobstacleheight_117',['kGridMaxObstacleHeight',['../classrtabmap_1_1Parameters.html#a3537ee9eac938f50656016ab342a4d2a',1,'rtabmap::Parameters']]], + ['kgridminclustersize_118',['kGridMinClusterSize',['../classrtabmap_1_1Parameters.html#a94f89342ff5869a39aa2679de1e19ec5',1,'rtabmap::Parameters']]], + ['kgridmingroundheight_119',['kGridMinGroundHeight',['../classrtabmap_1_1Parameters.html#a5c769b2c45900713f3ebdc0080f47331',1,'rtabmap::Parameters']]], + ['kgridnoisefilteringminneighbors_120',['kGridNoiseFilteringMinNeighbors',['../classrtabmap_1_1Parameters.html#a12e51366977f318533bc867f8ad80281',1,'rtabmap::Parameters']]], + ['kgridnoisefilteringradius_121',['kGridNoiseFilteringRadius',['../classrtabmap_1_1Parameters.html#ab4e846f84fde809aed0f2a372cb4ffce',1,'rtabmap::Parameters']]], + ['kgridnormalk_122',['kGridNormalK',['../classrtabmap_1_1Parameters.html#a5e906ead524e0ea1e79d0e66fb51bb26',1,'rtabmap::Parameters']]], + ['kgridnormalssegmentation_123',['kGridNormalsSegmentation',['../classrtabmap_1_1Parameters.html#a70947485e501b5de0351fef74c55aca9',1,'rtabmap::Parameters']]], + ['kgridprevoxelfiltering_124',['kGridPreVoxelFiltering',['../classrtabmap_1_1Parameters.html#abdd9a3b28dc70ddf545f6f8ae4b9e78a',1,'rtabmap::Parameters']]], + ['kgridrangemax_125',['kGridRangeMax',['../classrtabmap_1_1Parameters.html#a182d6b4adf099ece1c2864ad47402e56',1,'rtabmap::Parameters']]], + ['kgridrangemin_126',['kGridRangeMin',['../classrtabmap_1_1Parameters.html#a98229e97473d896c4bb345e39d591073',1,'rtabmap::Parameters']]], + ['kgridraytracing_127',['kGridRayTracing',['../classrtabmap_1_1Parameters.html#aaf5a23830e3aee217920e18aeada9f00',1,'rtabmap::Parameters']]], + ['kgridscan2dunknownspacefilled_128',['kGridScan2dUnknownSpaceFilled',['../classrtabmap_1_1Parameters.html#aeadfd5e3a3ec56c8e2e3190ac79a6c4f',1,'rtabmap::Parameters']]], + ['kgridscandecimation_129',['kGridScanDecimation',['../classrtabmap_1_1Parameters.html#aaac7e3032b2b561ddfdccac2d4ee0576',1,'rtabmap::Parameters']]], + ['kgridsensor_130',['kGridSensor',['../classrtabmap_1_1Parameters.html#a17fb5272a86d8b1bfed8aac554ca8e98',1,'rtabmap::Parameters']]], + ['kgtsamincrelinearizeskip_131',['kGTSAMIncRelinearizeSkip',['../classrtabmap_1_1Parameters.html#a134ec2e200cdcd6939f5a76c597cddcc',1,'rtabmap::Parameters']]], + ['kgtsamincrelinearizethreshold_132',['kGTSAMIncRelinearizeThreshold',['../classrtabmap_1_1Parameters.html#a7303c20956fa4405ac8b2e7facb5ebed',1,'rtabmap::Parameters']]], + ['kgtsamincremental_133',['kGTSAMIncremental',['../classrtabmap_1_1Parameters.html#a85233821baf884eb986169e4f0d8823a',1,'rtabmap::Parameters']]], + ['kgtsamoptimizer_134',['kGTSAMOptimizer',['../classrtabmap_1_1Parameters.html#a7cc2c9525f9c2299054638a7b678d2db',1,'rtabmap::Parameters']]], + ['kicpcccorelib_135',['kIcpCCCoreLib',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3faba0f8b0cfe29412a3d66af5eb19dd7c0db',1,'rtabmap::RegistrationIcp']]], + ['kicpccfilteroutfarthestpoints_136',['kIcpCCFilterOutFarthestPoints',['../classrtabmap_1_1Parameters.html#a0e461024f2f27269f0091fbeddddfc8b',1,'rtabmap::Parameters']]], + ['kicpccmaxfinalrms_137',['kIcpCCMaxFinalRMS',['../classrtabmap_1_1Parameters.html#a296483386b095ff93c27c7ddd5204d08',1,'rtabmap::Parameters']]], + ['kicpccsamplinglimit_138',['kIcpCCSamplingLimit',['../classrtabmap_1_1Parameters.html#a01d14f1bbd519db7c90def16a326dfc2',1,'rtabmap::Parameters']]], + ['kicpcorrespondenceratio_139',['kIcpCorrespondenceRatio',['../classrtabmap_1_1Parameters.html#ae945b67ac4b76cef103c807d21747d3b',1,'rtabmap::Parameters']]], + ['kicpdebugexportformat_140',['kIcpDebugExportFormat',['../classrtabmap_1_1Parameters.html#a75cedfb0422415f78403b3672b64cff7',1,'rtabmap::Parameters']]], + ['kicpdownsamplingstep_141',['kIcpDownsamplingStep',['../classrtabmap_1_1Parameters.html#a6b63072e02beaec51295bf29de44ded6',1,'rtabmap::Parameters']]], + ['kicpend_142',['kIcpEnd',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabaf6639ca6ae5f75d631dbbf7f61455881',1,'rtabmap::RegistrationIcp']]], + ['kicpepsilon_143',['kIcpEpsilon',['../classrtabmap_1_1Parameters.html#a85af34771b5bafd29c885b84f4b699ef',1,'rtabmap::Parameters']]], + ['kicpfiltersenabled_144',['kIcpFiltersEnabled',['../classrtabmap_1_1Parameters.html#a39e12e0bbb367846ff321ca86058facc',1,'rtabmap::Parameters']]], + ['kicpforce4dof_145',['kIcpForce4DoF',['../classrtabmap_1_1Parameters.html#a4cd0f5d3a7c2b0a41a7675905dc258bf',1,'rtabmap::Parameters']]], + ['kicpiterations_146',['kIcpIterations',['../classrtabmap_1_1Parameters.html#a2361cfb9744c6a9f24f1d5165ea4cdd2',1,'rtabmap::Parameters']]], + ['kicpmaxcorrespondencedistance_147',['kIcpMaxCorrespondenceDistance',['../classrtabmap_1_1Parameters.html#a53b2beff5312e5957a1917451e83eb85',1,'rtabmap::Parameters']]], + ['kicpmaxrotation_148',['kIcpMaxRotation',['../classrtabmap_1_1Parameters.html#a1da2167a4b4d3cbbc8e64ec01a5f86eb',1,'rtabmap::Parameters']]], + ['kicpmaxtranslation_149',['kIcpMaxTranslation',['../classrtabmap_1_1Parameters.html#a37a34d17c3f3fbebcab43ae88dfaaa9b',1,'rtabmap::Parameters']]], + ['kicpoutlierratio_150',['kIcpOutlierRatio',['../classrtabmap_1_1Parameters.html#abed047178caae21cc8ca9c0569bfbdd9',1,'rtabmap::Parameters']]], + ['kicppcl_151',['kIcpPCL',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabafd4289953af3132d6d334fb438f22ace',1,'rtabmap::RegistrationIcp']]], + ['kicppmconfig_152',['kIcpPMConfig',['../classrtabmap_1_1Parameters.html#a0de0df17c7bee790bdccab2d906f0546',1,'rtabmap::Parameters']]], + ['kicppmmatcherepsilon_153',['kIcpPMMatcherEpsilon',['../classrtabmap_1_1Parameters.html#ac28b9e7aaa056625eb4ae150ce9a1cb6',1,'rtabmap::Parameters']]], + ['kicppmmatcherintensity_154',['kIcpPMMatcherIntensity',['../classrtabmap_1_1Parameters.html#a4f75209aa785bb97ad71d1a9eef4491f',1,'rtabmap::Parameters']]], + ['kicppmmatcherknn_155',['kIcpPMMatcherKnn',['../classrtabmap_1_1Parameters.html#aeb32e463df0faa2008ab07c7bce3d485',1,'rtabmap::Parameters']]], + ['kicppointmatcher_156',['kIcpPointMatcher',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabac978d96078e7e0209d4a25894de3c805',1,'rtabmap::RegistrationIcp']]], + ['kicppointtoplane_157',['kIcpPointToPlane',['../classrtabmap_1_1Parameters.html#ae382048d6b918b27df4ab78b63751752',1,'rtabmap::Parameters']]], + ['kicppointtoplanecomplexitycentered_158',['kIcpPointToPlaneComplexityCentered',['../classrtabmap_1_1Parameters.html#ac16600c46a84d055c58e7cb15cc174fd',1,'rtabmap::Parameters']]], + ['kicppointtoplanegroundnormalsup_159',['kIcpPointToPlaneGroundNormalsUp',['../classrtabmap_1_1Parameters.html#a6e7285a03ab276aba71a2eb07abde674',1,'rtabmap::Parameters']]], + ['kicppointtoplanek_160',['kIcpPointToPlaneK',['../classrtabmap_1_1Parameters.html#a67f1161f2fe567b36293f5b904557eac',1,'rtabmap::Parameters']]], + ['kicppointtoplanelowcomplexitystrategy_161',['kIcpPointToPlaneLowComplexityStrategy',['../classrtabmap_1_1Parameters.html#a24700377ca08f50ee4e96025f1e9efcb',1,'rtabmap::Parameters']]], + ['kicppointtoplanemincomplexity_162',['kIcpPointToPlaneMinComplexity',['../classrtabmap_1_1Parameters.html#af64d24ad74a083cec1930f49c2054241',1,'rtabmap::Parameters']]], + ['kicppointtoplaneradius_163',['kIcpPointToPlaneRadius',['../classrtabmap_1_1Parameters.html#a4671c80890369c5e110601577d07b1c9',1,'rtabmap::Parameters']]], + ['kicprangemax_164',['kIcpRangeMax',['../classrtabmap_1_1Parameters.html#a293a9d28b491a70d70a43a8ed6f9bca8',1,'rtabmap::Parameters']]], + ['kicprangemin_165',['kIcpRangeMin',['../classrtabmap_1_1Parameters.html#a2a7c04f4a38407f232cb072632909284',1,'rtabmap::Parameters']]], + ['kicpreciprocalcorrespondences_166',['kIcpReciprocalCorrespondences',['../classrtabmap_1_1Parameters.html#a6b551c66b2f1197470ef64a0ae865a67',1,'rtabmap::Parameters']]], + ['kicpstrategy_167',['kIcpStrategy',['../classrtabmap_1_1Parameters.html#aff92df532af017bd315b6934fcee89dd',1,'rtabmap::Parameters']]], + ['kicpundef_168',['kIcpUndef',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabadebfaf4d0822a35b7b56f37f9c133327',1,'rtabmap::RegistrationIcp']]], + ['kicpvoxelsize_169',['kIcpVoxelSize',['../classrtabmap_1_1Parameters.html#aeaaf33d377ff1bbd3c25bca50360b85c',1,'rtabmap::Parameters']]], + ['kidinvalid_170',['kIdInvalid',['../classrtabmap_1_1Memory.html#ac78b3a9a3394eb63c50650a4b8ada68e',1,'rtabmap::Memory']]], + ['kidstart_171',['kIdStart',['../classrtabmap_1_1Memory.html#a12042e10017298c4dcf6e435c5a2290a',1,'rtabmap::Memory']]], + ['kidvirtual_172',['kIdVirtual',['../classrtabmap_1_1Memory.html#a539ccf650a81905db46dd6d98112f603',1,'rtabmap::Memory']]], + ['kill_173',['kill',['../classUThread.html#a8dfefcfd68b453da08ddba9836f35965',1,'UThread']]], + ['kimufiltercomplementarybiasalpha_174',['kImuFilterComplementaryBiasAlpha',['../classrtabmap_1_1Parameters.html#a91de69282d3a74a375efe38fc98891d0',1,'rtabmap::Parameters']]], + ['kimufiltercomplementarydoadpativegain_175',['kImuFilterComplementaryDoAdpativeGain',['../classrtabmap_1_1Parameters.html#a49ebdfc1ad9b9480ba5ca647d1b5d980',1,'rtabmap::Parameters']]], + ['kimufiltercomplementarydobiasestimation_176',['kImuFilterComplementaryDoBiasEstimation',['../classrtabmap_1_1Parameters.html#ae535970456b8b0ce2e059c2d0f55209f',1,'rtabmap::Parameters']]], + ['kimufiltercomplementarygainacc_177',['kImuFilterComplementaryGainAcc',['../classrtabmap_1_1Parameters.html#a51d2a1d67f97668a89d78831f42fa937',1,'rtabmap::Parameters']]], + ['kimufiltermadgwickgain_178',['kImuFilterMadgwickGain',['../classrtabmap_1_1Parameters.html#a4ede524204bafa288690d1b314361b7e',1,'rtabmap::Parameters']]], + ['kimufiltermadgwickzeta_179',['kImuFilterMadgwickZeta',['../classrtabmap_1_1Parameters.html#a9699961272598a840f9e1e88e352a49f',1,'rtabmap::Parameters']]], + ['kint_180',['kInt',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda85bd9103b3bbb3a0f1f66949fea50952',1,'UVariant']]], + ['kintarray_181',['kIntArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda5e558d8d7cb6b8791c58a0eb3ff46e5c',1,'UVariant']]], + ['kkazediffusivity_182',['kKAZEDiffusivity',['../classrtabmap_1_1Parameters.html#a4038e9285978f2a7ad4eaae4e752de3b',1,'rtabmap::Parameters']]], + ['kkazeextended_183',['kKAZEExtended',['../classrtabmap_1_1Parameters.html#a84368df8fd55a3d2befdbba7ded234bf',1,'rtabmap::Parameters']]], + ['kkazenoctavelayers_184',['kKAZENOctaveLayers',['../classrtabmap_1_1Parameters.html#a90de23b13a9683ce6715fa10c1b6fc34',1,'rtabmap::Parameters']]], + ['kkazenoctaves_185',['kKAZENOctaves',['../classrtabmap_1_1Parameters.html#a47866a6b459883a233dba1bea52c0f7c',1,'rtabmap::Parameters']]], + ['kkazethreshold_186',['kKAZEThreshold',['../classrtabmap_1_1Parameters.html#adcf23394952cc6a8227a9e4110b22364',1,'rtabmap::Parameters']]], + ['kkazeupright_187',['kKAZEUpright',['../classrtabmap_1_1Parameters.html#a29daea80c2af6b3ce6179fdee91fd6b0',1,'rtabmap::Parameters']]], + ['kkpbadsignratio_188',['kKpBadSignRatio',['../classrtabmap_1_1Parameters.html#af636a4ac3e917b46f7bebbe841eec4f6',1,'rtabmap::Parameters']]], + ['kkpbytetofloat_189',['kKpByteToFloat',['../classrtabmap_1_1Parameters.html#a98de5152ce8f3bc8d1f197d20d4e778a',1,'rtabmap::Parameters']]], + ['kkpdetectorstrategy_190',['kKpDetectorStrategy',['../classrtabmap_1_1Parameters.html#ad61392cda3782e740f3023577a4839fc',1,'rtabmap::Parameters']]], + ['kkpdictionarypath_191',['kKpDictionaryPath',['../classrtabmap_1_1Parameters.html#a57e67dc855ce4b059baba6655c2077ef',1,'rtabmap::Parameters']]], + ['kkpflannindexsaved_192',['kKpFlannIndexSaved',['../classrtabmap_1_1Parameters.html#a866886411343233d86d96d574ea1c524',1,'rtabmap::Parameters']]], + ['kkpflannrebalancingfactor_193',['kKpFlannRebalancingFactor',['../classrtabmap_1_1Parameters.html#a17550d1f1b862a621c409d4e12c7696b',1,'rtabmap::Parameters']]], + ['kkpflannthreads_194',['kKpFlannThreads',['../classrtabmap_1_1Parameters.html#abe0297bd38661233f2b0fcf6851b1659',1,'rtabmap::Parameters']]], + ['kkpgridcols_195',['kKpGridCols',['../classrtabmap_1_1Parameters.html#a1a302199e3aa8f82688160732a637f4b',1,'rtabmap::Parameters']]], + ['kkpgridrows_196',['kKpGridRows',['../classrtabmap_1_1Parameters.html#a6e36653d2e375a7e3bfde9c7acc80178',1,'rtabmap::Parameters']]], + ['kkpincrementaldictionary_197',['kKpIncrementalDictionary',['../classrtabmap_1_1Parameters.html#adea90352705c00f23bd3f90d72b7fbdd',1,'rtabmap::Parameters']]], + ['kkpincrementalflann_198',['kKpIncrementalFlann',['../classrtabmap_1_1Parameters.html#a092387f2a424c8db4f2482742b0b0fb9',1,'rtabmap::Parameters']]], + ['kkpmaxdepth_199',['kKpMaxDepth',['../classrtabmap_1_1Parameters.html#acec9d7db5ce8c9b5e0595bf60158fbd0',1,'rtabmap::Parameters']]], + ['kkpmaxfeatures_200',['kKpMaxFeatures',['../classrtabmap_1_1Parameters.html#a6801f48aaaca4448f87ad459e168cd99',1,'rtabmap::Parameters']]], + ['kkpmindepth_201',['kKpMinDepth',['../classrtabmap_1_1Parameters.html#a1eac07ec17481a6a3ba2624ffecc1b73',1,'rtabmap::Parameters']]], + ['kkpnewwordscomparedtogether_202',['kKpNewWordsComparedTogether',['../classrtabmap_1_1Parameters.html#ad4a9e088d01469df176bd6f81e7a8669',1,'rtabmap::Parameters']]], + ['kkpnndrratio_203',['kKpNndrRatio',['../classrtabmap_1_1Parameters.html#a13f4bb57e661d37f80d3af034ee0431b',1,'rtabmap::Parameters']]], + ['kkpnnstrategy_204',['kKpNNStrategy',['../classrtabmap_1_1Parameters.html#a994321ccf32f126b6781aa1925a5fa66',1,'rtabmap::Parameters']]], + ['kkpparallelized_205',['kKpParallelized',['../classrtabmap_1_1Parameters.html#a3fe648463bf0faeb75fec21f2b0592ea',1,'rtabmap::Parameters']]], + ['kkproiratios_206',['kKpRoiRatios',['../classrtabmap_1_1Parameters.html#afe37a6e5b4eb946113b320b16bc39107',1,'rtabmap::Parameters']]], + ['kkpserializewithchecksum_207',['kKpSerializeWithChecksum',['../classrtabmap_1_1Parameters.html#a28ad6d76310026f362eef0296b1552db',1,'rtabmap::Parameters']]], + ['kkpssc_208',['kKpSSC',['../classrtabmap_1_1Parameters.html#a7230153ec64f937a4f431560a8520663',1,'rtabmap::Parameters']]], + ['kkpsubpixeps_209',['kKpSubPixEps',['../classrtabmap_1_1Parameters.html#a6fc9485a168e16fbbefd21f9951a947e',1,'rtabmap::Parameters']]], + ['kkpsubpixiterations_210',['kKpSubPixIterations',['../classrtabmap_1_1Parameters.html#a9560ca4e6065209b305018222c41f788',1,'rtabmap::Parameters']]], + ['kkpsubpixwinsize_211',['kKpSubPixWinSize',['../classrtabmap_1_1Parameters.html#acc06479235e5d65de80de98ea2e505c3',1,'rtabmap::Parameters']]], + ['kkptfidflikelihoodused_212',['kKpTfIdfLikelihoodUsed',['../classrtabmap_1_1Parameters.html#aca77bbee94284ba850b37c236c687b66',1,'rtabmap::Parameters']]], + ['klandmark_213',['kLandmark',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9',1,'rtabmap::Link']]], + ['klocalspaceclosure_214',['kLocalSpaceClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea9195217dc75001841fce507de43fb0db',1,'rtabmap::Link']]], + ['klocaltimeclosure_215',['kLocalTimeClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae0b352e9cbb32d357ce59f09159c09fb',1,'rtabmap::Link']]], + ['kmadgwick_216',['kMadgwick',['../classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83aa1f642678d0846f51590e4f69a585c09',1,'rtabmap::IMUFilter']]], + ['kmarkerapriltagdebug_217',['kMarkerAprilTagDebug',['../classrtabmap_1_1Parameters.html#afa504a77adb75f55aadb411b20b8d045',1,'rtabmap::Parameters']]], + ['kmarkerapriltagdecodesharpening_218',['kMarkerAprilTagDecodeSharpening',['../classrtabmap_1_1Parameters.html#a74415d642cb1d4b315709a3a13cedfc5',1,'rtabmap::Parameters']]], + ['kmarkerapriltagnthreads_219',['kMarkerAprilTagNThreads',['../classrtabmap_1_1Parameters.html#aa3c83e283de96089f746b2fabfde9043',1,'rtabmap::Parameters']]], + ['kmarkerapriltagquaddecimate_220',['kMarkerAprilTagQuadDecimate',['../classrtabmap_1_1Parameters.html#ad970898e86da4015b8f6d4163a4072e6',1,'rtabmap::Parameters']]], + ['kmarkerapriltagquadsigma_221',['kMarkerAprilTagQuadSigma',['../classrtabmap_1_1Parameters.html#a8f0c040aa563a799b6ce754389423928',1,'rtabmap::Parameters']]], + ['kmarkerapriltagrefineedges_222',['kMarkerAprilTagRefineEdges',['../classrtabmap_1_1Parameters.html#a4f5d2e60e056fa202b656df2ff319daa',1,'rtabmap::Parameters']]], + ['kmarkerdictionary_223',['kMarkerDictionary',['../classrtabmap_1_1Parameters.html#adf1ae580fe3e8859f550840b9bc419a9',1,'rtabmap::Parameters']]], + ['kmarkerlength_224',['kMarkerLength',['../classrtabmap_1_1Parameters.html#ae2ca732fba21a575b6da17af7654879f',1,'rtabmap::Parameters']]], + ['kmarkerlengths_225',['kMarkerLengths',['../classrtabmap_1_1Parameters.html#aae0264aeec232dc1567d18ec0054a0d5',1,'rtabmap::Parameters']]], + ['kmarkermaxdeptherror_226',['kMarkerMaxDepthError',['../classrtabmap_1_1Parameters.html#adbb982c507014c608d445bd7092cd8aa',1,'rtabmap::Parameters']]], + ['kmarkermaxrange_227',['kMarkerMaxRange',['../classrtabmap_1_1Parameters.html#a765d58c7021570a38f0ac26ddac6bf6c',1,'rtabmap::Parameters']]], + ['kmarkerminrange_228',['kMarkerMinRange',['../classrtabmap_1_1Parameters.html#a7384c7c242639781743b73874585c864',1,'rtabmap::Parameters']]], + ['kmarkeropencvcornerrefinementmethod_229',['kMarkerOpenCVCornerRefinementMethod',['../classrtabmap_1_1Parameters.html#a9858aa16eb660ea69e0523d30407fe84',1,'rtabmap::Parameters']]], + ['kmarkerpriors_230',['kMarkerPriors',['../classrtabmap_1_1Parameters.html#ad5e03b34213d481ba80d6878f98c7a2a',1,'rtabmap::Parameters']]], + ['kmarkerpriorsvarianceangular_231',['kMarkerPriorsVarianceAngular',['../classrtabmap_1_1Parameters.html#ad7eae2c7445b3cec440feac79c3aa635',1,'rtabmap::Parameters']]], + ['kmarkerpriorsvariancelinear_232',['kMarkerPriorsVarianceLinear',['../classrtabmap_1_1Parameters.html#ad6f8a80869d7886c66a201f39c323a0b',1,'rtabmap::Parameters']]], + ['kmarkerstrategy_233',['kMarkerStrategy',['../classrtabmap_1_1Parameters.html#adab3040e45ae1e39b166e6d5e09b449e',1,'rtabmap::Parameters']]], + ['kmarkervarianceangular_234',['kMarkerVarianceAngular',['../classrtabmap_1_1Parameters.html#a52bc876b7e7aa0e0026cbb52f1c80caf',1,'rtabmap::Parameters']]], + ['kmarkervariancelinear_235',['kMarkerVarianceLinear',['../classrtabmap_1_1Parameters.html#af925249a8ef55540e0145e36b529160b',1,'rtabmap::Parameters']]], + ['kmarkervarianceorientationignored_236',['kMarkerVarianceOrientationIgnored',['../classrtabmap_1_1Parameters.html#a2dee7c32c6693d890b2c8c5cd23af8e5',1,'rtabmap::Parameters']]], + ['kmembadsignaturesignored_237',['kMemBadSignaturesIgnored',['../classrtabmap_1_1Parameters.html#a24abc1ea580d7553742be1da9b175c8e',1,'rtabmap::Parameters']]], + ['kmembindatakept_238',['kMemBinDataKept',['../classrtabmap_1_1Parameters.html#a23b09c6b9123ff098daadfbcb3910547',1,'rtabmap::Parameters']]], + ['kmemcompressionparallelized_239',['kMemCompressionParallelized',['../classrtabmap_1_1Parameters.html#ac4326a6ce26a1e3589103353d96379eb',1,'rtabmap::Parameters']]], + ['kmemcovoffdiagignored_240',['kMemCovOffDiagIgnored',['../classrtabmap_1_1Parameters.html#a18d4f880bb91b668ab13ccee01342901',1,'rtabmap::Parameters']]], + ['kmemdepthasmask_241',['kMemDepthAsMask',['../classrtabmap_1_1Parameters.html#aefa32418f8abf3ed074bfc63ea4b0abc',1,'rtabmap::Parameters']]], + ['kmemdepthcompressionformat_242',['kMemDepthCompressionFormat',['../classrtabmap_1_1Parameters.html#aae33ed5cddc4a5478f73381645791c66',1,'rtabmap::Parameters']]], + ['kmemdepthmaskfloorthr_243',['kMemDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a30cb0472505fb0df71d22bf5152314c0',1,'rtabmap::Parameters']]], + ['kmemgenerateids_244',['kMemGenerateIds',['../classrtabmap_1_1Parameters.html#ab764242425564aa2f46aa6f6b130848c',1,'rtabmap::Parameters']]], + ['kmemglobaldescriptorstrategy_245',['kMemGlobalDescriptorStrategy',['../classrtabmap_1_1Parameters.html#ada839b937aee38aa9f2286fbce94c587',1,'rtabmap::Parameters']]], + ['kmemimagecompressionformat_246',['kMemImageCompressionFormat',['../classrtabmap_1_1Parameters.html#ad9e4e91a5578d8e4331f7137881c7994',1,'rtabmap::Parameters']]], + ['kmemimagekept_247',['kMemImageKept',['../classrtabmap_1_1Parameters.html#a7d0a4460d46e31758947da907a771003',1,'rtabmap::Parameters']]], + ['kmemimagepostdecimation_248',['kMemImagePostDecimation',['../classrtabmap_1_1Parameters.html#a762f5541544dc053ce2da49fb20e5d47',1,'rtabmap::Parameters']]], + ['kmemimagepredecimation_249',['kMemImagePreDecimation',['../classrtabmap_1_1Parameters.html#aa9ec8ff31384d52a1dcb84b7c7f4f47d',1,'rtabmap::Parameters']]], + ['kmemincrementalmemory_250',['kMemIncrementalMemory',['../classrtabmap_1_1Parameters.html#acdc74cd2b096ba28d9c1e00040b69d42',1,'rtabmap::Parameters']]], + ['kmeminitwmwithallnodes_251',['kMemInitWMWithAllNodes',['../classrtabmap_1_1Parameters.html#a3f77423afadcf608c70439a2285c00fe',1,'rtabmap::Parameters']]], + ['kmemintermediatenodedatakept_252',['kMemIntermediateNodeDataKept',['../classrtabmap_1_1Parameters.html#ab92caa11849247f945733c9726331a1e',1,'rtabmap::Parameters']]], + ['kmemlaserscandownsamplestepsize_253',['kMemLaserScanDownsampleStepSize',['../classrtabmap_1_1Parameters.html#a82306640f9636e0383f60c9573decb74',1,'rtabmap::Parameters']]], + ['kmemlaserscannormalk_254',['kMemLaserScanNormalK',['../classrtabmap_1_1Parameters.html#ad6050c26a4552d646d9fa519a830bea1',1,'rtabmap::Parameters']]], + ['kmemlaserscannormalradius_255',['kMemLaserScanNormalRadius',['../classrtabmap_1_1Parameters.html#a0bc25e1e8384bee8e7c2feac80979809',1,'rtabmap::Parameters']]], + ['kmemlaserscanvoxelsize_256',['kMemLaserScanVoxelSize',['../classrtabmap_1_1Parameters.html#a4ba8b0d1eac69cec0b55a48e6e368b4a',1,'rtabmap::Parameters']]], + ['kmemloadvisuallocalfeaturesoninit_257',['kMemLoadVisualLocalFeaturesOnInit',['../classrtabmap_1_1Parameters.html#abc9f4e248d0f4c4013b7fd9f53f394b9',1,'rtabmap::Parameters']]], + ['kmemlocalizationdatasaved_258',['kMemLocalizationDataSaved',['../classrtabmap_1_1Parameters.html#aa5a4f5d2c71072ea2896c7ae2c8dda12',1,'rtabmap::Parameters']]], + ['kmemlocalizationreadonly_259',['kMemLocalizationReadOnly',['../classrtabmap_1_1Parameters.html#a326e79acb5a39f7da481f9771501030c',1,'rtabmap::Parameters']]], + ['kmemmaplabelsadded_260',['kMemMapLabelsAdded',['../classrtabmap_1_1Parameters.html#a4f0f23726bbc332d8b7014e74bc52252',1,'rtabmap::Parameters']]], + ['kmemnotlinkednodeskept_261',['kMemNotLinkedNodesKept',['../classrtabmap_1_1Parameters.html#aa64b9331ee411f41941ca5635da09f81',1,'rtabmap::Parameters']]], + ['kmemrawdescriptorskept_262',['kMemRawDescriptorsKept',['../classrtabmap_1_1Parameters.html#abca9942e65b415db926d23373803b151',1,'rtabmap::Parameters']]], + ['kmemrecentwmratio_263',['kMemRecentWmRatio',['../classrtabmap_1_1Parameters.html#a4459441e2574e19b15fedb9cb0bc3fd9',1,'rtabmap::Parameters']]], + ['kmemreducegraph_264',['kMemReduceGraph',['../classrtabmap_1_1Parameters.html#a5b838d1204f572de9f39904de5e22ed5',1,'rtabmap::Parameters']]], + ['kmemrehearsalidupdatedtonewone_265',['kMemRehearsalIdUpdatedToNewOne',['../classrtabmap_1_1Parameters.html#ac9b2dcf91f6fee0a7d099c65e055a8dc',1,'rtabmap::Parameters']]], + ['kmemrehearsalsimilarity_266',['kMemRehearsalSimilarity',['../classrtabmap_1_1Parameters.html#a634f4790c9c84772935bf406265bc692',1,'rtabmap::Parameters']]], + ['kmemrehearsalweightignoredwhilemoving_267',['kMemRehearsalWeightIgnoredWhileMoving',['../classrtabmap_1_1Parameters.html#af96149d636262363159cebc9c554884a',1,'rtabmap::Parameters']]], + ['kmemrotateimagesupsideup_268',['kMemRotateImagesUpsideUp',['../classrtabmap_1_1Parameters.html#a65474937d0e1e01e02d29dc773363353',1,'rtabmap::Parameters']]], + ['kmemsavedepth16format_269',['kMemSaveDepth16Format',['../classrtabmap_1_1Parameters.html#a528843d4d3b5d53e152e424c91559ab3',1,'rtabmap::Parameters']]], + ['kmemstereofrommotion_270',['kMemStereoFromMotion',['../classrtabmap_1_1Parameters.html#a0eaad81168b2e41ca12bc16210723ea8',1,'rtabmap::Parameters']]], + ['kmemstmsize_271',['kMemSTMSize',['../classrtabmap_1_1Parameters.html#a46dc1a24b02bb00014262f7f4d818a49',1,'rtabmap::Parameters']]], + ['kmemtransfersortingbyweightid_272',['kMemTransferSortingByWeightId',['../classrtabmap_1_1Parameters.html#aea65d81db6cbca6869d7ee1b8e1003a7',1,'rtabmap::Parameters']]], + ['kmemuseodomfeatures_273',['kMemUseOdomFeatures',['../classrtabmap_1_1Parameters.html#a2f9669812fc65ec213e54b97e71ba6fd',1,'rtabmap::Parameters']]], + ['kmemuseodomgravity_274',['kMemUseOdomGravity',['../classrtabmap_1_1Parameters.html#ab53fe6e9b2e23d37c6a7af8f52354848',1,'rtabmap::Parameters']]], + ['kneighbor_275',['kNeighbor',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf',1,'rtabmap::Link']]], + ['kneighbormerged_276',['kNeighborMerged',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db',1,'rtabmap::Link']]], + ['knnbruteforce_277',['kNNBruteForce',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a1745dd334296b8a41cf0c88dcc8a7d5d',1,'rtabmap::VWDictionary']]], + ['knnbruteforcegpu_278',['kNNBruteForceGPU',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a602d99d5bdef453a39339a0b45979451',1,'rtabmap::VWDictionary']]], + ['knnflannkdtree_279',['kNNFlannKdTree',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655aaa1ea80fc9ca8809ad9b959e2e1564c5',1,'rtabmap::VWDictionary']]], + ['knnflannkdtreesingle_280',['kNNFlannKdTreeSingle',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a994442dbb17b48ba9a9315edee24a7a1',1,'rtabmap::VWDictionary']]], + ['knnflannlsh_281',['kNNFlannLSH',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a89ab72d0bccd61bb11abbd1edf1e6992',1,'rtabmap::VWDictionary']]], + ['knnflannnaive_282',['kNNFlannNaive',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655ae4301e202dd36e997bf3298390c667f0',1,'rtabmap::VWDictionary']]], + ['knnnanoflannkdtree_283',['kNNNanoFlannKdTree',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a306c8d555b740267fa80a1ee673ef7c7',1,'rtabmap::VWDictionary']]], + ['knnsearch_284',['knnSearch',['../classrtabmap_1_1FlannIndex.html#aee58e859aa067646b4c6ffd63b593928',1,'rtabmap::FlannIndex']]], + ['knnundef_285',['kNNUndef',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655afeba67ed0aafc39aa35b2a194e147ff9',1,'rtabmap::VWDictionary']]], + ['kodomalignwithground_286',['kOdomAlignWithGround',['../classrtabmap_1_1Parameters.html#af7560d62a725e93669225843403625e5',1,'rtabmap::Parameters']]], + ['kodomcuvslammulticammode_287',['kOdomCuVSLAMMulticamMode',['../classrtabmap_1_1Parameters.html#a27425f8e3e56f5a804d0dd5be78b9788',1,'rtabmap::Parameters']]], + ['kodomdeskewing_288',['kOdomDeskewing',['../classrtabmap_1_1Parameters.html#a5a45711027dd93b66a34e72c20aa2208',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustment_289',['kOdomF2MBundleAdjustment',['../classrtabmap_1_1Parameters.html#a1e100b918823cb30dee7732858159252',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustmentmaxframes_290',['kOdomF2MBundleAdjustmentMaxFrames',['../classrtabmap_1_1Parameters.html#ac7e487bf17bd21dcf04450ecb6f01d22',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustmentmaxkeyframesperfeature_291',['kOdomF2MBundleAdjustmentMaxKeyFramesPerFeature',['../classrtabmap_1_1Parameters.html#aa02e6cbbf40685c86c1795fbc8be24b6',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustmentminmotion_292',['kOdomF2MBundleAdjustmentMinMotion',['../classrtabmap_1_1Parameters.html#ae13b73cac8d3bb01aa48a1c59d33252a',1,'rtabmap::Parameters']]], + ['kodomf2mbundleupdatefeaturemaponallframes_293',['kOdomF2MBundleUpdateFeatureMapOnAllFrames',['../classrtabmap_1_1Parameters.html#aafbd529e88aa7d92dc489dda0ac65b9f',1,'rtabmap::Parameters']]], + ['kodomf2mfloorthreshold_294',['kOdomF2MFloorThreshold',['../classrtabmap_1_1Parameters.html#a8c677b2f3514b5f3837a1ad1948cbe17',1,'rtabmap::Parameters']]], + ['kodomf2minitdepthfactor_295',['kOdomF2MInitDepthFactor',['../classrtabmap_1_1Parameters.html#a66a915924c4f779aab3cda1749822995',1,'rtabmap::Parameters']]], + ['kodomf2mmaxnewfeatures_296',['kOdomF2MMaxNewFeatures',['../classrtabmap_1_1Parameters.html#aaee9367c69f35649b0bafecb87360297',1,'rtabmap::Parameters']]], + ['kodomf2mmaxsize_297',['kOdomF2MMaxSize',['../classrtabmap_1_1Parameters.html#ac2e15108edeaa0a3df35a738d5582412',1,'rtabmap::Parameters']]], + ['kodomf2mscanmaxsize_298',['kOdomF2MScanMaxSize',['../classrtabmap_1_1Parameters.html#a49944814bb280accc31948b3afeb8284',1,'rtabmap::Parameters']]], + ['kodomf2mscanrange_299',['kOdomF2MScanRange',['../classrtabmap_1_1Parameters.html#a9385355ad45a97d99505ad34e8656519',1,'rtabmap::Parameters']]], + ['kodomf2mscansubtractangle_300',['kOdomF2MScanSubtractAngle',['../classrtabmap_1_1Parameters.html#ace6fede03ca5f163f569ae214191c86a',1,'rtabmap::Parameters']]], + ['kodomf2mscansubtractradius_301',['kOdomF2MScanSubtractRadius',['../classrtabmap_1_1Parameters.html#a2c54a0a4f8dd3f9290a122bd1a1bc136',1,'rtabmap::Parameters']]], + ['kodomf2mvaliddepthratio_302',['kOdomF2MValidDepthRatio',['../classrtabmap_1_1Parameters.html#a7effab382c8878014c9f3df2c3c14532',1,'rtabmap::Parameters']]], + ['kodomfillinfodata_303',['kOdomFillInfoData',['../classrtabmap_1_1Parameters.html#a731259601c7919cdea1649d3e2c96b59',1,'rtabmap::Parameters']]], + ['kodomfilteringstrategy_304',['kOdomFilteringStrategy',['../classrtabmap_1_1Parameters.html#a15b57b97754e10867ffb5e8682de5431',1,'rtabmap::Parameters']]], + ['kodomfovisbucketheight_305',['kOdomFovisBucketHeight',['../classrtabmap_1_1Parameters.html#a744da9d3d3f7dc02f81b172ad700cdac',1,'rtabmap::Parameters']]], + ['kodomfovisbucketwidth_306',['kOdomFovisBucketWidth',['../classrtabmap_1_1Parameters.html#a9f10b2dc12a040a9ec11b88b988a08e6',1,'rtabmap::Parameters']]], + ['kodomfoviscliqueinlierthreshold_307',['kOdomFovisCliqueInlierThreshold',['../classrtabmap_1_1Parameters.html#a65eb222b6f5cedf807b5b84d72c635eb',1,'rtabmap::Parameters']]], + ['kodomfovisfastthreshold_308',['kOdomFovisFastThreshold',['../classrtabmap_1_1Parameters.html#ae1cfe589e2ffc8bfde6a7a7093c8e059',1,'rtabmap::Parameters']]], + ['kodomfovisfastthresholdadaptivegain_309',['kOdomFovisFastThresholdAdaptiveGain',['../classrtabmap_1_1Parameters.html#ac40e00e9a3f9304f9fd43289b191374f',1,'rtabmap::Parameters']]], + ['kodomfovisfeaturesearchwindow_310',['kOdomFovisFeatureSearchWindow',['../classrtabmap_1_1Parameters.html#aef81f182c48b63b8e2fadacc44c1d104',1,'rtabmap::Parameters']]], + ['kodomfovisfeaturewindowsize_311',['kOdomFovisFeatureWindowSize',['../classrtabmap_1_1Parameters.html#aad1b5418b5d5b9634e3a1950db187a07',1,'rtabmap::Parameters']]], + ['kodomfovisinliermaxreprojectionerror_312',['kOdomFovisInlierMaxReprojectionError',['../classrtabmap_1_1Parameters.html#a3ae340e3124c4f76ff87aa90b67589ea',1,'rtabmap::Parameters']]], + ['kodomfovismaxkeypointsperbucket_313',['kOdomFovisMaxKeypointsPerBucket',['../classrtabmap_1_1Parameters.html#a20969af48b8ec864ce45867cbf99e4e3',1,'rtabmap::Parameters']]], + ['kodomfovismaxmeanreprojectionerror_314',['kOdomFovisMaxMeanReprojectionError',['../classrtabmap_1_1Parameters.html#a66bf879149f455f630be435984e0d954',1,'rtabmap::Parameters']]], + ['kodomfovismaxpyramidlevel_315',['kOdomFovisMaxPyramidLevel',['../classrtabmap_1_1Parameters.html#a12fa062b2c413fdfd454e93262078b20',1,'rtabmap::Parameters']]], + ['kodomfovisminfeaturesforestimate_316',['kOdomFovisMinFeaturesForEstimate',['../classrtabmap_1_1Parameters.html#a8a5c8f7e914c32a9fcdd406a9d69f4da',1,'rtabmap::Parameters']]], + ['kodomfovisminpyramidlevel_317',['kOdomFovisMinPyramidLevel',['../classrtabmap_1_1Parameters.html#aebe817683724aad1a92c0ed4188559a7',1,'rtabmap::Parameters']]], + ['kodomfovisstereomaxdisparity_318',['kOdomFovisStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a556f56fbb700a484357a85d4617611d5',1,'rtabmap::Parameters']]], + ['kodomfovisstereomaxdistepipolarline_319',['kOdomFovisStereoMaxDistEpipolarLine',['../classrtabmap_1_1Parameters.html#a7fb8ad6bcfcda4a67e6cf65ab66a185f',1,'rtabmap::Parameters']]], + ['kodomfovisstereomaxrefinementdisplacement_320',['kOdomFovisStereoMaxRefinementDisplacement',['../classrtabmap_1_1Parameters.html#aef9e7481720f740ea8724e3d26a2069f',1,'rtabmap::Parameters']]], + ['kodomfovisstereorequiremutualmatch_321',['kOdomFovisStereoRequireMutualMatch',['../classrtabmap_1_1Parameters.html#a2fe2a8419d7d1698b2f12a32c04eeaf8',1,'rtabmap::Parameters']]], + ['kodomfovistargetpixelsperfeature_322',['kOdomFovisTargetPixelsPerFeature',['../classrtabmap_1_1Parameters.html#a13faae85a4a6bb055778f1c665bf1b54',1,'rtabmap::Parameters']]], + ['kodomfovisupdatetargetfeatureswithrefined_323',['kOdomFovisUpdateTargetFeaturesWithRefined',['../classrtabmap_1_1Parameters.html#a90aeeb8779b98ebc6f2ed37ccff65706',1,'rtabmap::Parameters']]], + ['kodomfovisuseadaptivethreshold_324',['kOdomFovisUseAdaptiveThreshold',['../classrtabmap_1_1Parameters.html#a58658c4845925903fcd7648b3eec1b4a',1,'rtabmap::Parameters']]], + ['kodomfovisusebucketing_325',['kOdomFovisUseBucketing',['../classrtabmap_1_1Parameters.html#ae462378abc3d679003488a9ce53b469e',1,'rtabmap::Parameters']]], + ['kodomfovisusehomographyinitialization_326',['kOdomFovisUseHomographyInitialization',['../classrtabmap_1_1Parameters.html#a20fc95398f95398ccc6f05b114f5ca67',1,'rtabmap::Parameters']]], + ['kodomfovisuseimagenormalization_327',['kOdomFovisUseImageNormalization',['../classrtabmap_1_1Parameters.html#aa1be833e830a748beada3b28ec6ac08d',1,'rtabmap::Parameters']]], + ['kodomfovisusesubpixelrefinement_328',['kOdomFovisUseSubpixelRefinement',['../classrtabmap_1_1Parameters.html#aae0a36ddfa53108e0364e78028ff8bb8',1,'rtabmap::Parameters']]], + ['kodomguessmotion_329',['kOdomGuessMotion',['../classrtabmap_1_1Parameters.html#aa8aacc8ff9b434b5a48ab7eabe5c63a6',1,'rtabmap::Parameters']]], + ['kodomguesssmoothingdelay_330',['kOdomGuessSmoothingDelay',['../classrtabmap_1_1Parameters.html#aabd0b7d996517264f6ce43db1aa6ed05',1,'rtabmap::Parameters']]], + ['kodomholonomic_331',['kOdomHolonomic',['../classrtabmap_1_1Parameters.html#ad684e56c2ae46549ad5353856353b1bb',1,'rtabmap::Parameters']]], + ['kodomimagebuffersize_332',['kOdomImageBufferSize',['../classrtabmap_1_1Parameters.html#a30cefe955bb9d7b08c979ad3f952a67f',1,'rtabmap::Parameters']]], + ['kodomimagedecimation_333',['kOdomImageDecimation',['../classrtabmap_1_1Parameters.html#a63ec6b90d6059736eee8892e041c14ac',1,'rtabmap::Parameters']]], + ['kodomkalmanmeasurementnoise_334',['kOdomKalmanMeasurementNoise',['../classrtabmap_1_1Parameters.html#aefc194010c06d28f0cbbcb388b616e36',1,'rtabmap::Parameters']]], + ['kodomkalmanprocessnoise_335',['kOdomKalmanProcessNoise',['../classrtabmap_1_1Parameters.html#a1059215b26f49a5009b0b1282dc26f1d',1,'rtabmap::Parameters']]], + ['kodomkeyframethr_336',['kOdomKeyFrameThr',['../classrtabmap_1_1Parameters.html#a09dc498e4a45882548ee3fd0096437b2',1,'rtabmap::Parameters']]], + ['kodomliosamangvar_337',['kOdomLIOSAMAngVar',['../classrtabmap_1_1Parameters.html#ae28d1bf81e35c7efb5c4ef046f0ed992',1,'rtabmap::Parameters']]], + ['kodomliosamconfigpath_338',['kOdomLIOSAMConfigPath',['../classrtabmap_1_1Parameters.html#ae7ce134a23996f591fd25009c76a35cc',1,'rtabmap::Parameters']]], + ['kodomliosamedgethreshold_339',['kOdomLIOSAMEdgeThreshold',['../classrtabmap_1_1Parameters.html#a2b833e994021defea70616fbf9b2d4a8',1,'rtabmap::Parameters']]], + ['kodomliosamhorizonscan_340',['kOdomLIOSAMHorizonScan',['../classrtabmap_1_1Parameters.html#a5a95908105f5d021a14408d3eec45b6c',1,'rtabmap::Parameters']]], + ['kodomliosamimuaccbiasn_341',['kOdomLIOSAMImuAccBiasN',['../classrtabmap_1_1Parameters.html#aff3db8de86740f9fc32e8fd58d0bf802',1,'rtabmap::Parameters']]], + ['kodomliosamimuaccnoise_342',['kOdomLIOSAMImuAccNoise',['../classrtabmap_1_1Parameters.html#a31c60191b5bc678c79a82ca761ac3a48',1,'rtabmap::Parameters']]], + ['kodomliosamimugravity_343',['kOdomLIOSAMImuGravity',['../classrtabmap_1_1Parameters.html#ad73dc484450f36a7c48b07d1cce44a0d',1,'rtabmap::Parameters']]], + ['kodomliosamimugyrbiasn_344',['kOdomLIOSAMImuGyrBiasN',['../classrtabmap_1_1Parameters.html#a2c3d56f1670bf084c5cbd160a8be8910',1,'rtabmap::Parameters']]], + ['kodomliosamimugyrnoise_345',['kOdomLIOSAMImuGyrNoise',['../classrtabmap_1_1Parameters.html#a036d6db0050b4fc379c2db741d3bfd41',1,'rtabmap::Parameters']]], + ['kodomliosamlinvar_346',['kOdomLIOSAMLinVar',['../classrtabmap_1_1Parameters.html#a11ad24dadfe5dde517b609670f0ebf7b',1,'rtabmap::Parameters']]], + ['kodomliosamnscan_347',['kOdomLIOSAMNScan',['../classrtabmap_1_1Parameters.html#af401123102635a35bc777f490a6e1957',1,'rtabmap::Parameters']]], + ['kodomliosamsensor_348',['kOdomLIOSAMSensor',['../classrtabmap_1_1Parameters.html#a215590b4d2fc18ed0787d28a7e163236',1,'rtabmap::Parameters']]], + ['kodomliosamsurfthreshold_349',['kOdomLIOSAMSurfThreshold',['../classrtabmap_1_1Parameters.html#a9c1e3efc4b39629b870df2740ab197e9',1,'rtabmap::Parameters']]], + ['kodomloamangvar_350',['kOdomLOAMAngVar',['../classrtabmap_1_1Parameters.html#a550ec3874edea033a5b5233749fe25ad',1,'rtabmap::Parameters']]], + ['kodomloamlinvar_351',['kOdomLOAMLinVar',['../classrtabmap_1_1Parameters.html#ade3ae9dbcffaee6ddee578df0b1f195c',1,'rtabmap::Parameters']]], + ['kodomloamlocalmapping_352',['kOdomLOAMLocalMapping',['../classrtabmap_1_1Parameters.html#a1cd4a929870ee08a96751824fa4b6488',1,'rtabmap::Parameters']]], + ['kodomloamresolution_353',['kOdomLOAMResolution',['../classrtabmap_1_1Parameters.html#a1090dbec15707c3b4a4f17bb910cd8f7',1,'rtabmap::Parameters']]], + ['kodomloamscanperiod_354',['kOdomLOAMScanPeriod',['../classrtabmap_1_1Parameters.html#a5376cc7310b2c21fca0bdce08941a088',1,'rtabmap::Parameters']]], + ['kodomloamsensor_355',['kOdomLOAMSensor',['../classrtabmap_1_1Parameters.html#af35265b29bae9493f52b8fa9a0d34173',1,'rtabmap::Parameters']]], + ['kodommonoinitminflow_356',['kOdomMonoInitMinFlow',['../classrtabmap_1_1Parameters.html#a99923433ee8de71ca37647163bb6f85e',1,'rtabmap::Parameters']]], + ['kodommonoinitmintranslation_357',['kOdomMonoInitMinTranslation',['../classrtabmap_1_1Parameters.html#a86423103ab9ba4aec563e963bd72d664',1,'rtabmap::Parameters']]], + ['kodommonomaxvariance_358',['kOdomMonoMaxVariance',['../classrtabmap_1_1Parameters.html#a05fb10e20f11bdb85a45b4f5c6fd6499',1,'rtabmap::Parameters']]], + ['kodommonomintranslation_359',['kOdomMonoMinTranslation',['../classrtabmap_1_1Parameters.html#af152770f40cbebe08c36b3f4d737d113',1,'rtabmap::Parameters']]], + ['kodommsckffastthreshold_360',['kOdomMSCKFFastThreshold',['../classrtabmap_1_1Parameters.html#aaf287c576d2c5adff97ea2ae307cac1c',1,'rtabmap::Parameters']]], + ['kodommsckfgridcol_361',['kOdomMSCKFGridCol',['../classrtabmap_1_1Parameters.html#a73a4a976d34cd5281d1cbaff776cb439',1,'rtabmap::Parameters']]], + ['kodommsckfgridmaxfeaturenum_362',['kOdomMSCKFGridMaxFeatureNum',['../classrtabmap_1_1Parameters.html#aea2f2394e02784418067a3cbb2eba452',1,'rtabmap::Parameters']]], + ['kodommsckfgridminfeaturenum_363',['kOdomMSCKFGridMinFeatureNum',['../classrtabmap_1_1Parameters.html#a40b2d33377e238ec95854ffdceb78ba5',1,'rtabmap::Parameters']]], + ['kodommsckfgridrow_364',['kOdomMSCKFGridRow',['../classrtabmap_1_1Parameters.html#ae0f8a2fff7c230a8e36d336d59faed6f',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovaccbias_365',['kOdomMSCKFInitCovAccBias',['../classrtabmap_1_1Parameters.html#ad71578b33c054acb036326083d35f09c',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovexrot_366',['kOdomMSCKFInitCovExRot',['../classrtabmap_1_1Parameters.html#a4548c5ff88f4d5ca657d0717d4ef74fa',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovextrans_367',['kOdomMSCKFInitCovExTrans',['../classrtabmap_1_1Parameters.html#ae8a214f7a7562f3cd445d2811484ddc2',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovgyrobias_368',['kOdomMSCKFInitCovGyroBias',['../classrtabmap_1_1Parameters.html#a77ae4a5fd18592700240e7344ad0344d',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovvel_369',['kOdomMSCKFInitCovVel',['../classrtabmap_1_1Parameters.html#a2ef3975e17c1e215f0d1dcf5cff20d24',1,'rtabmap::Parameters']]], + ['kodommsckfmaxcamstatesize_370',['kOdomMSCKFMaxCamStateSize',['../classrtabmap_1_1Parameters.html#aaab6359b5620a95b1c967dff2ab72de4',1,'rtabmap::Parameters']]], + ['kodommsckfmaxiteration_371',['kOdomMSCKFMaxIteration',['../classrtabmap_1_1Parameters.html#a2ff10b93d973eb90e37a7afb189f061b',1,'rtabmap::Parameters']]], + ['kodommsckfnoiseacc_372',['kOdomMSCKFNoiseAcc',['../classrtabmap_1_1Parameters.html#acd7337159a241b04e9fac54088d04a1f',1,'rtabmap::Parameters']]], + ['kodommsckfnoiseaccbias_373',['kOdomMSCKFNoiseAccBias',['../classrtabmap_1_1Parameters.html#a9edab849122244f2b11ef4af1ce860b2',1,'rtabmap::Parameters']]], + ['kodommsckfnoisefeature_374',['kOdomMSCKFNoiseFeature',['../classrtabmap_1_1Parameters.html#adea08e24e51fe243942eb8c37b810891',1,'rtabmap::Parameters']]], + ['kodommsckfnoisegyro_375',['kOdomMSCKFNoiseGyro',['../classrtabmap_1_1Parameters.html#a04dc7de74cc871bce963f07828e7e1f3',1,'rtabmap::Parameters']]], + ['kodommsckfnoisegyrobias_376',['kOdomMSCKFNoiseGyroBias',['../classrtabmap_1_1Parameters.html#ac6ef522958c4e243e747791a43c4bd06',1,'rtabmap::Parameters']]], + ['kodommsckfopttranslationthreshold_377',['kOdomMSCKFOptTranslationThreshold',['../classrtabmap_1_1Parameters.html#a3efe4962858f2b19bd3e1fc89becb31f',1,'rtabmap::Parameters']]], + ['kodommsckfpatchsize_378',['kOdomMSCKFPatchSize',['../classrtabmap_1_1Parameters.html#a516a633d52369f909d9d0d73dbbc6ccb',1,'rtabmap::Parameters']]], + ['kodommsckfpositionstdthreshold_379',['kOdomMSCKFPositionStdThreshold',['../classrtabmap_1_1Parameters.html#a3309b0dce94e4543b0044cc9c7412e5e',1,'rtabmap::Parameters']]], + ['kodommsckfpyramidlevels_380',['kOdomMSCKFPyramidLevels',['../classrtabmap_1_1Parameters.html#a2c16ca59dc1c5dd9a57fad95e4bb334c',1,'rtabmap::Parameters']]], + ['kodommsckfransacthreshold_381',['kOdomMSCKFRansacThreshold',['../classrtabmap_1_1Parameters.html#acdd404b323afa2146c0e00d1d13d4fed',1,'rtabmap::Parameters']]], + ['kodommsckfrotationthreshold_382',['kOdomMSCKFRotationThreshold',['../classrtabmap_1_1Parameters.html#aa790d6612eb50a969759099c6f37531b',1,'rtabmap::Parameters']]], + ['kodommsckfstereothreshold_383',['kOdomMSCKFStereoThreshold',['../classrtabmap_1_1Parameters.html#a64faaac653e93fe672e5710066a046d1',1,'rtabmap::Parameters']]], + ['kodommsckftrackingratethreshold_384',['kOdomMSCKFTrackingRateThreshold',['../classrtabmap_1_1Parameters.html#a173c34cdf5d376054a077369c1dc877e',1,'rtabmap::Parameters']]], + ['kodommsckftrackprecision_385',['kOdomMSCKFTrackPrecision',['../classrtabmap_1_1Parameters.html#a5072892ce86ad4335cf120f6b292af65',1,'rtabmap::Parameters']]], + ['kodommsckftranslationthreshold_386',['kOdomMSCKFTranslationThreshold',['../classrtabmap_1_1Parameters.html#a6c1a216b9db3c31f32ce230cd5ef29d4',1,'rtabmap::Parameters']]], + ['kodomokvisconfigpath_387',['kOdomOKVISConfigPath',['../classrtabmap_1_1Parameters.html#acd5cb2b77739ac361d5697054849f34d',1,'rtabmap::Parameters']]], + ['kodomopen3dmaxdepth_388',['kOdomOpen3DMaxDepth',['../classrtabmap_1_1Parameters.html#a9d17a7c4785bb56e78de44991ce084a1',1,'rtabmap::Parameters']]], + ['kodomopen3dmethod_389',['kOdomOpen3DMethod',['../classrtabmap_1_1Parameters.html#ab4468a9f811ecb9d61dc9d9830f6713b',1,'rtabmap::Parameters']]], + ['kodomopenvinsaccelerometernoisedensity_390',['kOdomOpenVINSAccelerometerNoiseDensity',['../classrtabmap_1_1Parameters.html#a03c79ba04e7a6fc99a95e52ef6202e49',1,'rtabmap::Parameters']]], + ['kodomopenvinsaccelerometerrandomwalk_391',['kOdomOpenVINSAccelerometerRandomWalk',['../classrtabmap_1_1Parameters.html#a5b2948cbe311579bf9487fd9d803a7d9',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibcamextrinsics_392',['kOdomOpenVINSCalibCamExtrinsics',['../classrtabmap_1_1Parameters.html#a1d2879fe2d595a561fe24e957c5d8d5b',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibcamintrinsics_393',['kOdomOpenVINSCalibCamIntrinsics',['../classrtabmap_1_1Parameters.html#a8e9fe6dbacb3205e6ec30ba261da2d86',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibcamtimeoffset_394',['kOdomOpenVINSCalibCamTimeoffset',['../classrtabmap_1_1Parameters.html#ab5b3936fac2822d08581807bb156cef8',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibimugsensitivity_395',['kOdomOpenVINSCalibIMUGSensitivity',['../classrtabmap_1_1Parameters.html#a767adc5ac036a3877f03aed0ae409f57',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibimuintrinsics_396',['kOdomOpenVINSCalibIMUIntrinsics',['../classrtabmap_1_1Parameters.html#a35974b70e2316ed21f4b4093d314bde2',1,'rtabmap::Parameters']]], + ['kodomopenvinsconfigpath_397',['kOdomOpenVINSConfigPath',['../classrtabmap_1_1Parameters.html#a02d9ea1d2455ea336d4b9d63f233de55',1,'rtabmap::Parameters']]], + ['kodomopenvinsdtslamdelay_398',['kOdomOpenVINSDtSLAMDelay',['../classrtabmap_1_1Parameters.html#a5ed128310066c0899723f893951fce65',1,'rtabmap::Parameters']]], + ['kodomopenvinsfeatrepmsckf_399',['kOdomOpenVINSFeatRepMSCKF',['../classrtabmap_1_1Parameters.html#a17b098830298626405687884bd2c3c4a',1,'rtabmap::Parameters']]], + ['kodomopenvinsfeatrepslam_400',['kOdomOpenVINSFeatRepSLAM',['../classrtabmap_1_1Parameters.html#a90ef9d8a0991272708468d92dbd18d6a',1,'rtabmap::Parameters']]], + ['kodomopenvinsfimaxbaseline_401',['kOdomOpenVINSFiMaxBaseline',['../classrtabmap_1_1Parameters.html#a7eaf290406c8aa94a1747a35167b7999',1,'rtabmap::Parameters']]], + ['kodomopenvinsfimaxcondnumber_402',['kOdomOpenVINSFiMaxCondNumber',['../classrtabmap_1_1Parameters.html#abc77793e626341417d494b575e91a9ba',1,'rtabmap::Parameters']]], + ['kodomopenvinsfimaxruns_403',['kOdomOpenVINSFiMaxRuns',['../classrtabmap_1_1Parameters.html#a9aa274f0521b23aa11fb4f0e002be04b',1,'rtabmap::Parameters']]], + ['kodomopenvinsfirefinefeatures_404',['kOdomOpenVINSFiRefineFeatures',['../classrtabmap_1_1Parameters.html#a97b1a3b121207f3c8f44fc6952efae02',1,'rtabmap::Parameters']]], + ['kodomopenvinsfitriangulate1d_405',['kOdomOpenVINSFiTriangulate1d',['../classrtabmap_1_1Parameters.html#a7f3109884f7e284e4be84fcbb2f1c602',1,'rtabmap::Parameters']]], + ['kodomopenvinsgravitymag_406',['kOdomOpenVINSGravityMag',['../classrtabmap_1_1Parameters.html#a914137b26df1f4bca974a184dd232f81',1,'rtabmap::Parameters']]], + ['kodomopenvinsgyroscopenoisedensity_407',['kOdomOpenVINSGyroscopeNoiseDensity',['../classrtabmap_1_1Parameters.html#a34a573ddd7efa314fa9db6ffd9674dd0',1,'rtabmap::Parameters']]], + ['kodomopenvinsgyroscoperandomwalk_408',['kOdomOpenVINSGyroscopeRandomWalk',['../classrtabmap_1_1Parameters.html#ac92cb81aca03b6fd017a18d897fe5294',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationba_409',['kOdomOpenVINSInitDynInflationBa',['../classrtabmap_1_1Parameters.html#add075de0b2f9113398bc129531e99f11',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationbg_410',['kOdomOpenVINSInitDynInflationBg',['../classrtabmap_1_1Parameters.html#a262d61c15d9f4767b7dbcd280bd67339',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationori_411',['kOdomOpenVINSInitDynInflationOri',['../classrtabmap_1_1Parameters.html#a14c9c1f9694b8c2f1e68167107a82b93',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationvel_412',['kOdomOpenVINSInitDynInflationVel',['../classrtabmap_1_1Parameters.html#a4de220b423dcd3ab37f339c13dff07ce',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmindeg_413',['kOdomOpenVINSInitDynMinDeg',['../classrtabmap_1_1Parameters.html#a8a536d333787c518517a52c7f7fb3982',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynminreccond_414',['kOdomOpenVINSInitDynMinRecCond',['../classrtabmap_1_1Parameters.html#aad31fe30adc719b24d45e1101ca78d8e',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmlemaxiter_415',['kOdomOpenVINSInitDynMLEMaxIter',['../classrtabmap_1_1Parameters.html#a4521e8dd715d864f7db81b6f338ba116',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmlemaxthreads_416',['kOdomOpenVINSInitDynMLEMaxThreads',['../classrtabmap_1_1Parameters.html#a8823827872d96094c9ae7626590aa3e9',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmlemaxtime_417',['kOdomOpenVINSInitDynMLEMaxTime',['../classrtabmap_1_1Parameters.html#adec78fa253e919225c7088bb15f2e53e',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmleoptcalib_418',['kOdomOpenVINSInitDynMLEOptCalib',['../classrtabmap_1_1Parameters.html#ac34c14ffa84d06cfe386fd5a127f0cfb',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynnumpose_419',['kOdomOpenVINSInitDynNumPose',['../classrtabmap_1_1Parameters.html#a210d5826bfe8a3253cdc106b18eb1d5d',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynuse_420',['kOdomOpenVINSInitDynUse',['../classrtabmap_1_1Parameters.html#a4892f91c6d8962e7ce1215c60c6b6d4b',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitimuthresh_421',['kOdomOpenVINSInitIMUThresh',['../classrtabmap_1_1Parameters.html#a1d4fb25962131a372b385e99643747c1',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitmaxdisparity_422',['kOdomOpenVINSInitMaxDisparity',['../classrtabmap_1_1Parameters.html#ae61270c0977dcbc8b8cbfc5d422f1241',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitmaxfeatures_423',['kOdomOpenVINSInitMaxFeatures',['../classrtabmap_1_1Parameters.html#a4fcad487c009c6c6775a349add123034',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitwindowtime_424',['kOdomOpenVINSInitWindowTime',['../classrtabmap_1_1Parameters.html#ad5203cd2ec8c90722c41d607d7c5fc1b',1,'rtabmap::Parameters']]], + ['kodomopenvinsintegration_425',['kOdomOpenVINSIntegration',['../classrtabmap_1_1Parameters.html#a43aab47c1125f7ef30d7363e2bdb8d17',1,'rtabmap::Parameters']]], + ['kodomopenvinsleftmaskpath_426',['kOdomOpenVINSLeftMaskPath',['../classrtabmap_1_1Parameters.html#a6e2b3d8c7b3d04fe4b0fe466109849ed',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxclones_427',['kOdomOpenVINSMaxClones',['../classrtabmap_1_1Parameters.html#a467f15f0d8574c37d1cbe8ea040dfee6',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxmsckfinupdate_428',['kOdomOpenVINSMaxMSCKFInUpdate',['../classrtabmap_1_1Parameters.html#ab1402f8aa1efe4fe38d975005a9c2189',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxslam_429',['kOdomOpenVINSMaxSLAM',['../classrtabmap_1_1Parameters.html#a296543931af0ad1598fb8d75f6230a8b',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxslaminupdate_430',['kOdomOpenVINSMaxSLAMInUpdate',['../classrtabmap_1_1Parameters.html#a3eba5d0054793999bf5cc9bba92e179c',1,'rtabmap::Parameters']]], + ['kodomopenvinsminpxdist_431',['kOdomOpenVINSMinPxDist',['../classrtabmap_1_1Parameters.html#a505c545574ec997805503e0b905cb93c',1,'rtabmap::Parameters']]], + ['kodomopenvinsnumpts_432',['kOdomOpenVINSNumPts',['../classrtabmap_1_1Parameters.html#ae798271632b8e5b71e037360a85ee625',1,'rtabmap::Parameters']]], + ['kodomopenvinsrightmaskpath_433',['kOdomOpenVINSRightMaskPath',['../classrtabmap_1_1Parameters.html#a426a78bc8d1ed73f440f30ab0c1e8b05',1,'rtabmap::Parameters']]], + ['kodomopenvinstryzupt_434',['kOdomOpenVINSTryZUPT',['../classrtabmap_1_1Parameters.html#a9165fec9a5f395956386056686aa1551',1,'rtabmap::Parameters']]], + ['kodomopenvinsupmsckfchi2multiplier_435',['kOdomOpenVINSUpMSCKFChi2Multiplier',['../classrtabmap_1_1Parameters.html#a413bca9ea8077c3494326085f4e0419f',1,'rtabmap::Parameters']]], + ['kodomopenvinsupmsckfsigmapx_436',['kOdomOpenVINSUpMSCKFSigmaPx',['../classrtabmap_1_1Parameters.html#a4b9220ddafc8076db666e3d651f8a24c',1,'rtabmap::Parameters']]], + ['kodomopenvinsupslamchi2multiplier_437',['kOdomOpenVINSUpSLAMChi2Multiplier',['../classrtabmap_1_1Parameters.html#a85e55e34a7da45dcde5cbde1b352625e',1,'rtabmap::Parameters']]], + ['kodomopenvinsupslamsigmapx_438',['kOdomOpenVINSUpSLAMSigmaPx',['../classrtabmap_1_1Parameters.html#aba423db2b1b21bf3606739f5c620c1d9',1,'rtabmap::Parameters']]], + ['kodomopenvinsusefej_439',['kOdomOpenVINSUseFEJ',['../classrtabmap_1_1Parameters.html#a852273bd55c4c2f46214d4de7abcbf2d',1,'rtabmap::Parameters']]], + ['kodomopenvinsuseklt_440',['kOdomOpenVINSUseKLT',['../classrtabmap_1_1Parameters.html#a396c73201a82e2ec776f239c9aa16ba9',1,'rtabmap::Parameters']]], + ['kodomopenvinsusestereo_441',['kOdomOpenVINSUseStereo',['../classrtabmap_1_1Parameters.html#a42cad5f0579fa899d12bab4684d226db',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptchi2multiplier_442',['kOdomOpenVINSZUPTChi2Multiplier',['../classrtabmap_1_1Parameters.html#a1454692f97497713169349a38127ff03',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptmaxdisparity_443',['kOdomOpenVINSZUPTMaxDisparity',['../classrtabmap_1_1Parameters.html#ad711b7bcb9f9a78ba57af7844b8578f1',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptmaxvelodicy_444',['kOdomOpenVINSZUPTMaxVelodicy',['../classrtabmap_1_1Parameters.html#abe019be98f92dfd61a7a87c70408c2ca',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptnoisemultiplier_445',['kOdomOpenVINSZUPTNoiseMultiplier',['../classrtabmap_1_1Parameters.html#a37ec93a53f7c5c24b5876bddd8b34ced',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptonlyatbeginning_446',['kOdomOpenVINSZUPTOnlyAtBeginning',['../classrtabmap_1_1Parameters.html#a1f5c72075961392d3c011e26faf8b96f',1,'rtabmap::Parameters']]], + ['kodomorbslamaccnoise_447',['kOdomORBSLAMAccNoise',['../classrtabmap_1_1Parameters.html#a0964b424a4f9a7efbddc35c638fcff8c',1,'rtabmap::Parameters']]], + ['kodomorbslamaccwalk_448',['kOdomORBSLAMAccWalk',['../classrtabmap_1_1Parameters.html#a6a33f0e078d6616b6267c291ec78e5b8',1,'rtabmap::Parameters']]], + ['kodomorbslambf_449',['kOdomORBSLAMBf',['../classrtabmap_1_1Parameters.html#aefa4d23029b47e21adb6b594f74fea2d',1,'rtabmap::Parameters']]], + ['kodomorbslamfps_450',['kOdomORBSLAMFps',['../classrtabmap_1_1Parameters.html#a4a1f776765c4b78acc4eee1b32e9342e',1,'rtabmap::Parameters']]], + ['kodomorbslamgyronoise_451',['kOdomORBSLAMGyroNoise',['../classrtabmap_1_1Parameters.html#afcb8ed42c61b74b5e12f6bc95deba078',1,'rtabmap::Parameters']]], + ['kodomorbslamgyrowalk_452',['kOdomORBSLAMGyroWalk',['../classrtabmap_1_1Parameters.html#aa55b0d37ff8c7ac814a4d911d80329d8',1,'rtabmap::Parameters']]], + ['kodomorbslaminertial_453',['kOdomORBSLAMInertial',['../classrtabmap_1_1Parameters.html#a6846d7fb6b2eb02d03e96044e9375c3b',1,'rtabmap::Parameters']]], + ['kodomorbslammapsize_454',['kOdomORBSLAMMapSize',['../classrtabmap_1_1Parameters.html#ad33d1bec811fb6c0f533251f16ecf089',1,'rtabmap::Parameters']]], + ['kodomorbslammaxfeatures_455',['kOdomORBSLAMMaxFeatures',['../classrtabmap_1_1Parameters.html#a914140a86638c393fcd098f0896436fd',1,'rtabmap::Parameters']]], + ['kodomorbslamsamplingrate_456',['kOdomORBSLAMSamplingRate',['../classrtabmap_1_1Parameters.html#afb0188eab89d395209fe258e81b591c1',1,'rtabmap::Parameters']]], + ['kodomorbslamthdepth_457',['kOdomORBSLAMThDepth',['../classrtabmap_1_1Parameters.html#acbfabdf7b28d66cc07e75a62967d458d',1,'rtabmap::Parameters']]], + ['kodomorbslamvocpath_458',['kOdomORBSLAMVocPath',['../classrtabmap_1_1Parameters.html#aa4849b73de6df4f4008147536e7f05d6',1,'rtabmap::Parameters']]], + ['kodomparticlelambdar_459',['kOdomParticleLambdaR',['../classrtabmap_1_1Parameters.html#a8d81c9157fac237bc3383900798feb3f',1,'rtabmap::Parameters']]], + ['kodomparticlelambdat_460',['kOdomParticleLambdaT',['../classrtabmap_1_1Parameters.html#ab4ca374efe8802d596bdf2d1291821fb',1,'rtabmap::Parameters']]], + ['kodomparticlenoiser_461',['kOdomParticleNoiseR',['../classrtabmap_1_1Parameters.html#a4762b235967e01f873be062d75c0b8b7',1,'rtabmap::Parameters']]], + ['kodomparticlenoiset_462',['kOdomParticleNoiseT',['../classrtabmap_1_1Parameters.html#adeed4435e6d7c25de108b92d5062850d',1,'rtabmap::Parameters']]], + ['kodomparticlesize_463',['kOdomParticleSize',['../classrtabmap_1_1Parameters.html#a273fe8ab8fcb79f08f3a41a9b4cf6dce',1,'rtabmap::Parameters']]], + ['kodomresetcountdown_464',['kOdomResetCountdown',['../classrtabmap_1_1Parameters.html#abae6f31914c37fddd2c36ea78d1447fb',1,'rtabmap::Parameters']]], + ['kodomscankeyframethr_465',['kOdomScanKeyFrameThr',['../classrtabmap_1_1Parameters.html#af172b6f629a62b37ea7ab151eee8058b',1,'rtabmap::Parameters']]], + ['kodomstrategy_466',['kOdomStrategy',['../classrtabmap_1_1Parameters.html#abba8d5778f27ab7cdf90a900b71916ad',1,'rtabmap::Parameters']]], + ['kodomvinsfusionconfigpath_467',['kOdomVINSFusionConfigPath',['../classrtabmap_1_1Parameters.html#acf6e02f152acab60ee7e978c41de0bd9',1,'rtabmap::Parameters']]], + ['kodomviskeyframethr_468',['kOdomVisKeyFrameThr',['../classrtabmap_1_1Parameters.html#aa9fcc2aef568b4c3c822bbe9c48b318e',1,'rtabmap::Parameters']]], + ['kodomviso2bucketheight_469',['kOdomViso2BucketHeight',['../classrtabmap_1_1Parameters.html#a5f25f50240e1e3827151e95f4622ec40',1,'rtabmap::Parameters']]], + ['kodomviso2bucketmaxfeatures_470',['kOdomViso2BucketMaxFeatures',['../classrtabmap_1_1Parameters.html#a3b7bc10547f6331f4b29583420247868',1,'rtabmap::Parameters']]], + ['kodomviso2bucketwidth_471',['kOdomViso2BucketWidth',['../classrtabmap_1_1Parameters.html#a1e44368b11befeacd5f2b81f927bc264',1,'rtabmap::Parameters']]], + ['kodomviso2inlierthreshold_472',['kOdomViso2InlierThreshold',['../classrtabmap_1_1Parameters.html#a6df260c6fee4c79204a55cf6414e84f9',1,'rtabmap::Parameters']]], + ['kodomviso2matchbinsize_473',['kOdomViso2MatchBinsize',['../classrtabmap_1_1Parameters.html#afa1fc497e502ddce4e2c944b22ea78b5',1,'rtabmap::Parameters']]], + ['kodomviso2matchdisptolerance_474',['kOdomViso2MatchDispTolerance',['../classrtabmap_1_1Parameters.html#a683676d32c1853924b2fc6be856cc4ec',1,'rtabmap::Parameters']]], + ['kodomviso2matchhalfresolution_475',['kOdomViso2MatchHalfResolution',['../classrtabmap_1_1Parameters.html#a694f3e472c6eb6ded795f787f501c433',1,'rtabmap::Parameters']]], + ['kodomviso2matchmultistage_476',['kOdomViso2MatchMultiStage',['../classrtabmap_1_1Parameters.html#a639f307301271ee14560f6710acd08e3',1,'rtabmap::Parameters']]], + ['kodomviso2matchnmsn_477',['kOdomViso2MatchNmsN',['../classrtabmap_1_1Parameters.html#a267d44faa480f50704240c014178ae5b',1,'rtabmap::Parameters']]], + ['kodomviso2matchnmstau_478',['kOdomViso2MatchNmsTau',['../classrtabmap_1_1Parameters.html#acc7aa8d9e87743cb09d22265238490ef',1,'rtabmap::Parameters']]], + ['kodomviso2matchoutlierdisptolerance_479',['kOdomViso2MatchOutlierDispTolerance',['../classrtabmap_1_1Parameters.html#ae9b2a74aed41955e99f6317f169b0e8e',1,'rtabmap::Parameters']]], + ['kodomviso2matchoutlierflowtolerance_480',['kOdomViso2MatchOutlierFlowTolerance',['../classrtabmap_1_1Parameters.html#ae820a3c499db31e53434bd725c7cdb92',1,'rtabmap::Parameters']]], + ['kodomviso2matchradius_481',['kOdomViso2MatchRadius',['../classrtabmap_1_1Parameters.html#a2548c5378caaa49253138ee8951bbec8',1,'rtabmap::Parameters']]], + ['kodomviso2matchrefinement_482',['kOdomViso2MatchRefinement',['../classrtabmap_1_1Parameters.html#a66a7f99bc201875398d5c7d76cca7a59',1,'rtabmap::Parameters']]], + ['kodomviso2ransaciters_483',['kOdomViso2RansacIters',['../classrtabmap_1_1Parameters.html#a9db27765084194ee50fc8f1055533e2e',1,'rtabmap::Parameters']]], + ['kodomviso2reweighting_484',['kOdomViso2Reweighting',['../classrtabmap_1_1Parameters.html#a82053352b9945b97ecd99d16ae4d7bda',1,'rtabmap::Parameters']]], + ['koptimizerbaseline_485',['kOptimizerBaseline',['../classrtabmap_1_1Parameters.html#aebaeec1482001e2caac613633a73bbba',1,'rtabmap::Parameters']]], + ['koptimizerdisparityvariance_486',['kOptimizerDisparityVariance',['../classrtabmap_1_1Parameters.html#a1a6053a3f56ee705dd2d880e9394542d',1,'rtabmap::Parameters']]], + ['koptimizerepsilon_487',['kOptimizerEpsilon',['../classrtabmap_1_1Parameters.html#a0da495637cf28437df451e3a9befe09c',1,'rtabmap::Parameters']]], + ['koptimizergravitysigma_488',['kOptimizerGravitySigma',['../classrtabmap_1_1Parameters.html#ae30f9e3d2e17c3543801cdd9fa51ffcc',1,'rtabmap::Parameters']]], + ['koptimizeriterations_489',['kOptimizerIterations',['../classrtabmap_1_1Parameters.html#a8be61aae74f02931c8c224d98629dfc1',1,'rtabmap::Parameters']]], + ['koptimizerlandmarksignored_490',['kOptimizerLandmarksIgnored',['../classrtabmap_1_1Parameters.html#a8941f737a9ec74b5a64c6a31d26dc5b1',1,'rtabmap::Parameters']]], + ['koptimizerpixelvariance_491',['kOptimizerPixelVariance',['../classrtabmap_1_1Parameters.html#af8ad0ad86c152e736820805aad2203c7',1,'rtabmap::Parameters']]], + ['koptimizerpriorsignored_492',['kOptimizerPriorsIgnored',['../classrtabmap_1_1Parameters.html#a9a27e63a9a70179573a6898049957d31',1,'rtabmap::Parameters']]], + ['koptimizerrobust_493',['kOptimizerRobust',['../classrtabmap_1_1Parameters.html#a2f90cb87e114d6f10a33e0b3d79c730f',1,'rtabmap::Parameters']]], + ['koptimizerrobustkerneldelta_494',['kOptimizerRobustKernelDelta',['../classrtabmap_1_1Parameters.html#a5900adc0a8a2d5bf42963e4e5bee7855',1,'rtabmap::Parameters']]], + ['koptimizerstrategy_495',['kOptimizerStrategy',['../classrtabmap_1_1Parameters.html#a092fe8cb5454baf939cfb405fbce966f',1,'rtabmap::Parameters']]], + ['koptimizervarianceignored_496',['kOptimizerVarianceIgnored',['../classrtabmap_1_1Parameters.html#a5b7491368ae85dc42f066192a99312a2',1,'rtabmap::Parameters']]], + ['korbedgethreshold_497',['kORBEdgeThreshold',['../classrtabmap_1_1Parameters.html#ae047e8d2f7226ac161863b0ec4620561',1,'rtabmap::Parameters']]], + ['korbfirstlevel_498',['kORBFirstLevel',['../classrtabmap_1_1Parameters.html#a8deaf647a92da914a8b761bfa9891da4',1,'rtabmap::Parameters']]], + ['korbgpu_499',['kORBGpu',['../classrtabmap_1_1Parameters.html#a75ad893a9fb12411d07292be6f3cf151',1,'rtabmap::Parameters']]], + ['korbnlevels_500',['kORBNLevels',['../classrtabmap_1_1Parameters.html#aaf67b8a7e28d72ede90a60a83f50c10b',1,'rtabmap::Parameters']]], + ['korbpatchsize_501',['kORBPatchSize',['../classrtabmap_1_1Parameters.html#a576d49f934e6251be0f1cdb2f666d21e',1,'rtabmap::Parameters']]], + ['korbscalefactor_502',['kORBScaleFactor',['../classrtabmap_1_1Parameters.html#a4ef6ac6e5357d25a907abb87cf5995c9',1,'rtabmap::Parameters']]], + ['korbscoretype_503',['kORBScoreType',['../classrtabmap_1_1Parameters.html#a23a44d5437d484fd74936029301f2f91',1,'rtabmap::Parameters']]], + ['korbwta_5fk_504',['kORBWTA_K',['../classrtabmap_1_1Parameters.html#a413fa34f8410b30423b0321398d7c658',1,'rtabmap::Parameters']]], + ['kp_505',['Kp',['../parameters.html#autotoc_md11',1,'']]], + ['kposeprior_506',['kPosePrior',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea56caa6c8eeab867bb16f763f3ddbd9b1',1,'rtabmap::Link']]], + ['kpt_507',['kpt',['../classrtabmap_1_1FeatureBA.html#a2bea5690d958d81f5edfa6df954d4a8b',1,'rtabmap::FeatureBA']]], + ['kpydescriptordim_508',['kPyDescriptorDim',['../classrtabmap_1_1Parameters.html#aea51e2c74f29d39e1688a592962cf9ad',1,'rtabmap::Parameters']]], + ['kpydescriptorpath_509',['kPyDescriptorPath',['../classrtabmap_1_1Parameters.html#a135caed3c87f8234184d2d72743b98ab',1,'rtabmap::Parameters']]], + ['kpydetectorcuda_510',['kPyDetectorCuda',['../classrtabmap_1_1Parameters.html#afdbdfe89192b8c4b332d457fdd83620a',1,'rtabmap::Parameters']]], + ['kpydetectorpath_511',['kPyDetectorPath',['../classrtabmap_1_1Parameters.html#a84e976161e1a10728be331f9efd31a03',1,'rtabmap::Parameters']]], + ['kpymatchercuda_512',['kPyMatcherCuda',['../classrtabmap_1_1Parameters.html#a0a9773bee6d69350aa362ea8ce9e2d13',1,'rtabmap::Parameters']]], + ['kpymatcheriterations_513',['kPyMatcherIterations',['../classrtabmap_1_1Parameters.html#a4beabce2704fef444c200c84a58af650',1,'rtabmap::Parameters']]], + ['kpymatchermodel_514',['kPyMatcherModel',['../classrtabmap_1_1Parameters.html#a577a5fd2e1bd55f481fb3996237e7c86',1,'rtabmap::Parameters']]], + ['kpymatcherpath_515',['kPyMatcherPath',['../classrtabmap_1_1Parameters.html#aa3ff26394ce7611e63f7b8abdc3d8816',1,'rtabmap::Parameters']]], + ['kpymatcherthreshold_516',['kPyMatcherThreshold',['../classrtabmap_1_1Parameters.html#a0af1276884adf9994e2c664f8aacd9bb',1,'rtabmap::Parameters']]], + ['kregforce3dof_517',['kRegForce3DoF',['../classrtabmap_1_1Parameters.html#adeb11e4b89634351a54bab99b3aeb68c',1,'rtabmap::Parameters']]], + ['kregrepeatonce_518',['kRegRepeatOnce',['../classrtabmap_1_1Parameters.html#ac1d6e5b571fe7348f484f531b3a30814',1,'rtabmap::Parameters']]], + ['kregstrategy_519',['kRegStrategy',['../classrtabmap_1_1Parameters.html#abb01f566041dff1ca1ff47b4a6716b48',1,'rtabmap::Parameters']]], + ['krgbdaggressiveloopthr_520',['kRGBDAggressiveLoopThr',['../classrtabmap_1_1Parameters.html#a93cee2efa1fd89d2757db81c9ed8beb1',1,'rtabmap::Parameters']]], + ['krgbdangularspeedupdate_521',['kRGBDAngularSpeedUpdate',['../classrtabmap_1_1Parameters.html#aacd017b088a3c6f6c552116a21a68216',1,'rtabmap::Parameters']]], + ['krgbdangularupdate_522',['kRGBDAngularUpdate',['../classrtabmap_1_1Parameters.html#a9a7fc32cc99f77446f1918113aa8b5bb',1,'rtabmap::Parameters']]], + ['krgbdcreateoccupancygrid_523',['kRGBDCreateOccupancyGrid',['../classrtabmap_1_1Parameters.html#ad46e3bb3b9e42c989763832a1f7b0f3e',1,'rtabmap::Parameters']]], + ['krgbdenabled_524',['kRGBDEnabled',['../classrtabmap_1_1Parameters.html#a660983e23247cd39034f2ea07cfcd54b',1,'rtabmap::Parameters']]], + ['krgbdforceodom3dof_525',['kRGBDForceOdom3DoF',['../classrtabmap_1_1Parameters.html#a74cbbfcf605e6c6babb199125b2462e3',1,'rtabmap::Parameters']]], + ['krgbdgoalreachedradius_526',['kRGBDGoalReachedRadius',['../classrtabmap_1_1Parameters.html#ad3d06d249bb099a9175c824a6e57e5d4',1,'rtabmap::Parameters']]], + ['krgbdgoalssavedinuserdata_527',['kRGBDGoalsSavedInUserData',['../classrtabmap_1_1Parameters.html#abeaa5d81e6e1f348ddece14f98c52b39',1,'rtabmap::Parameters']]], + ['krgbdinvertedreg_528',['kRGBDInvertedReg',['../classrtabmap_1_1Parameters.html#ab51566bd1519b3fcb23a458e9d99c675',1,'rtabmap::Parameters']]], + ['krgbdlinearspeedupdate_529',['kRGBDLinearSpeedUpdate',['../classrtabmap_1_1Parameters.html#aac12c089f2e5ff8c47768bfba7a1399c',1,'rtabmap::Parameters']]], + ['krgbdlinearupdate_530',['kRGBDLinearUpdate',['../classrtabmap_1_1Parameters.html#a2337801b29bb94ce58ae386c6fbfb1ea',1,'rtabmap::Parameters']]], + ['krgbdlocalbundleonloopclosure_531',['kRGBDLocalBundleOnLoopClosure',['../classrtabmap_1_1Parameters.html#a9213f69de86d869fa81162648865a33c',1,'rtabmap::Parameters']]], + ['krgbdlocalimmunizationratio_532',['kRGBDLocalImmunizationRatio',['../classrtabmap_1_1Parameters.html#a7197e89c24af786042c4f3854c14627f',1,'rtabmap::Parameters']]], + ['krgbdlocalizationpriorerror_533',['kRGBDLocalizationPriorError',['../classrtabmap_1_1Parameters.html#aa8bd1ce286f5afde20a406b573286adb',1,'rtabmap::Parameters']]], + ['krgbdlocalizationsecondtrywithoutproximitylinks_534',['kRGBDLocalizationSecondTryWithoutProximityLinks',['../classrtabmap_1_1Parameters.html#ac4de49ab93465d61d21885e0326a5f9a',1,'rtabmap::Parameters']]], + ['krgbdlocalizationsmoothing_535',['kRGBDLocalizationSmoothing',['../classrtabmap_1_1Parameters.html#a4e5e1c201b237cad64754fca3761d1aa',1,'rtabmap::Parameters']]], + ['krgbdlocalradius_536',['kRGBDLocalRadius',['../classrtabmap_1_1Parameters.html#adaa87cec765f9674a12382392a60a4fe',1,'rtabmap::Parameters']]], + ['krgbdloopclosureidentityguess_537',['kRGBDLoopClosureIdentityGuess',['../classrtabmap_1_1Parameters.html#aa4426569ed21d2e0aebea26e8e3fb2cf',1,'rtabmap::Parameters']]], + ['krgbdloopclosurereextractfeatures_538',['kRGBDLoopClosureReextractFeatures',['../classrtabmap_1_1Parameters.html#a63caa078c0eb4a5ee3710e48fd1f6054',1,'rtabmap::Parameters']]], + ['krgbdloopcovlimited_539',['kRGBDLoopCovLimited',['../classrtabmap_1_1Parameters.html#a2f0e34d58229d94e6368223be2dd4fc6',1,'rtabmap::Parameters']]], + ['krgbdmarkerdetection_540',['kRGBDMarkerDetection',['../classrtabmap_1_1Parameters.html#a35ff1769e99027505db6a8bf33b56ae7',1,'rtabmap::Parameters']]], + ['krgbdmaxlocalretrieved_541',['kRGBDMaxLocalRetrieved',['../classrtabmap_1_1Parameters.html#a0ba27238802e7bbd1a7c0327bbc11d99',1,'rtabmap::Parameters']]], + ['krgbdmaxloopclosuredistance_542',['kRGBDMaxLoopClosureDistance',['../classrtabmap_1_1Parameters.html#a024e42d2f111589492a2c5bbbb40dbec',1,'rtabmap::Parameters']]], + ['krgbdmaxodomcachesize_543',['kRGBDMaxOdomCacheSize',['../classrtabmap_1_1Parameters.html#ab27d52631ccdf0055b55fee66f811cd7',1,'rtabmap::Parameters']]], + ['krgbdneighborlinkrefining_544',['kRGBDNeighborLinkRefining',['../classrtabmap_1_1Parameters.html#a8d13f13e22263d457b9d73df896ddeaa',1,'rtabmap::Parameters']]], + ['krgbdnewmapodomchangedistance_545',['kRGBDNewMapOdomChangeDistance',['../classrtabmap_1_1Parameters.html#a7bdee3f01a127c794ee7bcf7b06e612c',1,'rtabmap::Parameters']]], + ['krgbdoptimizefromgraphend_546',['kRGBDOptimizeFromGraphEnd',['../classrtabmap_1_1Parameters.html#ae0e66e60cda07b9b87b9f5aed3097f18',1,'rtabmap::Parameters']]], + ['krgbdoptimizemaxerror_547',['kRGBDOptimizeMaxError',['../classrtabmap_1_1Parameters.html#a48e9bda458af10a4649c88b92ba7a6fd',1,'rtabmap::Parameters']]], + ['krgbdoptimizemaxerrorrepairradius_548',['kRGBDOptimizeMaxErrorRepairRadius',['../classrtabmap_1_1Parameters.html#aa2135c05c99fdb3b5f257f1162779e31',1,'rtabmap::Parameters']]], + ['krgbdplanangularvelocity_549',['kRGBDPlanAngularVelocity',['../classrtabmap_1_1Parameters.html#a040963ee60367bb11bb9301aea4fba9e',1,'rtabmap::Parameters']]], + ['krgbdplanlinearvelocity_550',['kRGBDPlanLinearVelocity',['../classrtabmap_1_1Parameters.html#aee8b71c6e5d647c818d07d2c70a5d7e8',1,'rtabmap::Parameters']]], + ['krgbdplanstuckiterations_551',['kRGBDPlanStuckIterations',['../classrtabmap_1_1Parameters.html#ab5e4fa31504d61a85113991dfcf8d7bf',1,'rtabmap::Parameters']]], + ['krgbdproximityangle_552',['kRGBDProximityAngle',['../classrtabmap_1_1Parameters.html#a71dead47d5719dd53f1239e597a8c215',1,'rtabmap::Parameters']]], + ['krgbdproximitybyspace_553',['kRGBDProximityBySpace',['../classrtabmap_1_1Parameters.html#a0bf742f8f518f6c63d1bb78a0f009515',1,'rtabmap::Parameters']]], + ['krgbdproximitybytime_554',['kRGBDProximityByTime',['../classrtabmap_1_1Parameters.html#aa91fac5c1ba929f562de205d287d79e3',1,'rtabmap::Parameters']]], + ['krgbdproximityglobalscanmap_555',['kRGBDProximityGlobalScanMap',['../classrtabmap_1_1Parameters.html#a00a7b454f5a1425ed3f51c9c0a3e8fda',1,'rtabmap::Parameters']]], + ['krgbdproximitymaxgraphdepth_556',['kRGBDProximityMaxGraphDepth',['../classrtabmap_1_1Parameters.html#a8522bc32417706aa533c1d2451dd34dd',1,'rtabmap::Parameters']]], + ['krgbdproximitymaxpaths_557',['kRGBDProximityMaxPaths',['../classrtabmap_1_1Parameters.html#ae49216949cfa3aea8e4c77b2870328fc',1,'rtabmap::Parameters']]], + ['krgbdproximitymergedscancovfactor_558',['kRGBDProximityMergedScanCovFactor',['../classrtabmap_1_1Parameters.html#a177ab21121656a2d6bc07a24e3a9b0ad',1,'rtabmap::Parameters']]], + ['krgbdproximityodomguess_559',['kRGBDProximityOdomGuess',['../classrtabmap_1_1Parameters.html#a92e06fe4846c78b0eb6e834f8d0845c4',1,'rtabmap::Parameters']]], + ['krgbdproximitypathfilteringradius_560',['kRGBDProximityPathFilteringRadius',['../classrtabmap_1_1Parameters.html#ab4c35cd16a70d5b929bf28ec5a4dd83d',1,'rtabmap::Parameters']]], + ['krgbdproximitypathmaxneighbors_561',['kRGBDProximityPathMaxNeighbors',['../classrtabmap_1_1Parameters.html#a1a6c82e3762a844dab0cc9db220adb8c',1,'rtabmap::Parameters']]], + ['krgbdproximitypathrawposesused_562',['kRGBDProximityPathRawPosesUsed',['../classrtabmap_1_1Parameters.html#a5d31ff1788e59bcbf0b07fe50f3aae5f',1,'rtabmap::Parameters']]], + ['krgbdscanmatchingidssavedinlinks_563',['kRGBDScanMatchingIdsSavedInLinks',['../classrtabmap_1_1Parameters.html#af39a49c3db927a995eec3540ea3a11c8',1,'rtabmap::Parameters']]], + ['krgbdstartatorigin_564',['kRGBDStartAtOrigin',['../classrtabmap_1_1Parameters.html#afd7b349d5f354c290ef2e37e917182ee',1,'rtabmap::Parameters']]], + ['krtabmapcomputermse_565',['kRtabmapComputeRMSE',['../classrtabmap_1_1Parameters.html#a072d8f6538025610d97af792df533c6c',1,'rtabmap::Parameters']]], + ['krtabmapcreateintermediatenodes_566',['kRtabmapCreateIntermediateNodes',['../classrtabmap_1_1Parameters.html#a563ebee29786f2168b90306ded8ee17c',1,'rtabmap::Parameters']]], + ['krtabmapdetectionrate_567',['kRtabmapDetectionRate',['../classrtabmap_1_1Parameters.html#ab4330bb97358203a6e229a7e7d3b3160',1,'rtabmap::Parameters']]], + ['krtabmapimagebuffersize_568',['kRtabmapImageBufferSize',['../classrtabmap_1_1Parameters.html#ad2924fa9a31709c3cc88e2079e1c9b43',1,'rtabmap::Parameters']]], + ['krtabmapimagesalreadyrectified_569',['kRtabmapImagesAlreadyRectified',['../classrtabmap_1_1Parameters.html#aaa7af43515eedb88d1e7083e82e59bae',1,'rtabmap::Parameters']]], + ['krtabmaploopgps_570',['kRtabmapLoopGPS',['../classrtabmap_1_1Parameters.html#a13b324675d9b2fa2c3cc6fbcc2788a89',1,'rtabmap::Parameters']]], + ['krtabmaploopratio_571',['kRtabmapLoopRatio',['../classrtabmap_1_1Parameters.html#ab7aef90318656235ddd31731110658f5',1,'rtabmap::Parameters']]], + ['krtabmaploopthr_572',['kRtabmapLoopThr',['../classrtabmap_1_1Parameters.html#a423d0878fce30f6ad8a0da41b27f6505',1,'rtabmap::Parameters']]], + ['krtabmapmaxrepublished_573',['kRtabmapMaxRepublished',['../classrtabmap_1_1Parameters.html#aebca6ea8c99890a56702c65a972483dc',1,'rtabmap::Parameters']]], + ['krtabmapmaxretrieved_574',['kRtabmapMaxRetrieved',['../classrtabmap_1_1Parameters.html#ae42b8a843c6830eff62087a9e0df72b1',1,'rtabmap::Parameters']]], + ['krtabmapmemorythr_575',['kRtabmapMemoryThr',['../classrtabmap_1_1Parameters.html#a66882ccd6f0a49f2c23db8718d12a59c',1,'rtabmap::Parameters']]], + ['krtabmappublishlastsignature_576',['kRtabmapPublishLastSignature',['../classrtabmap_1_1Parameters.html#a1476c605d078b36f19b41617159fcc05',1,'rtabmap::Parameters']]], + ['krtabmappublishlikelihood_577',['kRtabmapPublishLikelihood',['../classrtabmap_1_1Parameters.html#a1c6b54c14e6b94d81d75a9c33d3cbc3b',1,'rtabmap::Parameters']]], + ['krtabmappublishpdf_578',['kRtabmapPublishPdf',['../classrtabmap_1_1Parameters.html#aa08a5f492676a2323ca8989ba8e4f963',1,'rtabmap::Parameters']]], + ['krtabmappublishramusage_579',['kRtabmapPublishRAMUsage',['../classrtabmap_1_1Parameters.html#ad3b28ede4e665edf57689abb7e445438',1,'rtabmap::Parameters']]], + ['krtabmappublishstats_580',['kRtabmapPublishStats',['../classrtabmap_1_1Parameters.html#ac946ad95d43dbfaaf3c38e0570cda48c',1,'rtabmap::Parameters']]], + ['krtabmaprectifyonlyfeatures_581',['kRtabmapRectifyOnlyFeatures',['../classrtabmap_1_1Parameters.html#a0e4d7b62ce5960c45d1866c369b1df0e',1,'rtabmap::Parameters']]], + ['krtabmapsavewmstate_582',['kRtabmapSaveWMState',['../classrtabmap_1_1Parameters.html#a53f1ec32cd0d35478671b6d386f16410',1,'rtabmap::Parameters']]], + ['krtabmapstartnewmapongoodsignature_583',['kRtabmapStartNewMapOnGoodSignature',['../classrtabmap_1_1Parameters.html#ab430b5acdd801cfd9f65850c057c2506',1,'rtabmap::Parameters']]], + ['krtabmapstartnewmaponloopclosure_584',['kRtabmapStartNewMapOnLoopClosure',['../classrtabmap_1_1Parameters.html#af3ea91bf60d712c5abf28c42ab259f1b',1,'rtabmap::Parameters']]], + ['krtabmapstatisticlogged_585',['kRtabmapStatisticLogged',['../classrtabmap_1_1Parameters.html#af4e099159b6dd6d923fbf2be0d850f82',1,'rtabmap::Parameters']]], + ['krtabmapstatisticloggedheaders_586',['kRtabmapStatisticLoggedHeaders',['../classrtabmap_1_1Parameters.html#ad96e85af556697640588b98f5ca388a4',1,'rtabmap::Parameters']]], + ['krtabmapstatisticlogsbufferedinram_587',['kRtabmapStatisticLogsBufferedInRAM',['../classrtabmap_1_1Parameters.html#a037720a78af4592c80c8d1bd374fdec5',1,'rtabmap::Parameters']]], + ['krtabmaptimethr_588',['kRtabmapTimeThr',['../classrtabmap_1_1Parameters.html#a8ee7e153cfb26574c7d1c7b427593f8a',1,'rtabmap::Parameters']]], + ['krtabmapvirtualplacelikelihoodratio_589',['kRtabmapVirtualPlaceLikelihoodRatio',['../classrtabmap_1_1Parameters.html#aef900d9efe01dcbfbe5348b131d9ff46',1,'rtabmap::Parameters']]], + ['krtabmapworkingdirectory_590',['kRtabmapWorkingDirectory',['../classrtabmap_1_1Parameters.html#a42233cb8e32e704f7dd79d0208fa9d07',1,'rtabmap::Parameters']]], + ['kselfreflink_591',['kSelfRefLink',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e',1,'rtabmap::Link']]], + ['kshort_592',['kShort',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda310a497e7d9c43297d960e2cd20d1fc0',1,'UVariant']]], + ['kshortarray_593',['kShortArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2e9032fc740ad542d18512b5b0d57a6f',1,'UVariant']]], + ['ksiftcontrastthreshold_594',['kSIFTContrastThreshold',['../classrtabmap_1_1Parameters.html#a7fc158cc35ce7669f8c9ec9cc9414e0b',1,'rtabmap::Parameters']]], + ['ksiftedgethreshold_595',['kSIFTEdgeThreshold',['../classrtabmap_1_1Parameters.html#a3c911352e276c3c47174fdc1f7183625',1,'rtabmap::Parameters']]], + ['ksiftgaussianthreshold_596',['kSIFTGaussianThreshold',['../classrtabmap_1_1Parameters.html#a50531b46ba309446940e19208b286da4',1,'rtabmap::Parameters']]], + ['ksiftgpu_597',['kSIFTGpu',['../classrtabmap_1_1Parameters.html#a467e1aa0c4119a3d5b0f5b03927c7419',1,'rtabmap::Parameters']]], + ['ksiftmaxgaussianthreshold_598',['kSIFTMaxGaussianThreshold',['../classrtabmap_1_1Parameters.html#a6ad8efa6d293b1c38eda1364a4aeda90',1,'rtabmap::Parameters']]], + ['ksiftnoctavelayers_599',['kSIFTNOctaveLayers',['../classrtabmap_1_1Parameters.html#a461bde9b899136a89785c3036d074047',1,'rtabmap::Parameters']]], + ['ksiftpreciseupscale_600',['kSIFTPreciseUpscale',['../classrtabmap_1_1Parameters.html#a7ebbd5a100874ba29e135436714ea465',1,'rtabmap::Parameters']]], + ['ksiftrootsift_601',['kSIFTRootSIFT',['../classrtabmap_1_1Parameters.html#ac3af38f8eb6e60dc1beb9957eaa69ead',1,'rtabmap::Parameters']]], + ['ksiftsigma_602',['kSIFTSigma',['../classrtabmap_1_1Parameters.html#ac1d35339287e0ccd26c25677b010653a',1,'rtabmap::Parameters']]], + ['ksiftupscale_603',['kSIFTUpscale',['../classrtabmap_1_1Parameters.html#a7dd0d575bac18d9db0c3fdb61860f034',1,'rtabmap::Parameters']]], + ['kstatedetecting_604',['kStateDetecting',['../classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5faea733e80c5ec27718bd9551646f99d352c',1,'rtabmap::RtabmapThread']]], + ['kstateprocesscommand_605',['kStateProcessCommand',['../classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5faeab07a30b69b21efdccbb6c040a5208001',1,'rtabmap::RtabmapThread']]], + ['kstereobmblocksize_606',['kStereoBMBlockSize',['../classrtabmap_1_1Parameters.html#a19264fbd2a0f9441c10cc06ffe4023b8',1,'rtabmap::Parameters']]], + ['kstereobmdisp12maxdiff_607',['kStereoBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#adfa753955fde235a1368dd679b75ee56',1,'rtabmap::Parameters']]], + ['kstereobmmindisparity_608',['kStereoBMMinDisparity',['../classrtabmap_1_1Parameters.html#a619cb0a6210079348902c069cc1c614a',1,'rtabmap::Parameters']]], + ['kstereobmnumdisparities_609',['kStereoBMNumDisparities',['../classrtabmap_1_1Parameters.html#ae4d531d7472f534c00fb8b5aae5fc723',1,'rtabmap::Parameters']]], + ['kstereobmprefiltercap_610',['kStereoBMPreFilterCap',['../classrtabmap_1_1Parameters.html#abcf20058345e9e63f2a099348a27447c',1,'rtabmap::Parameters']]], + ['kstereobmprefiltersize_611',['kStereoBMPreFilterSize',['../classrtabmap_1_1Parameters.html#a5c8d75ee0c4f9a4c8eb033e9e47f5fdc',1,'rtabmap::Parameters']]], + ['kstereobmspecklerange_612',['kStereoBMSpeckleRange',['../classrtabmap_1_1Parameters.html#a42ec227016e22c6b05c8f0a5f6bdc4e9',1,'rtabmap::Parameters']]], + ['kstereobmspecklewindowsize_613',['kStereoBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#af47f8797f5a9b3827b9e4115ca7d3fd2',1,'rtabmap::Parameters']]], + ['kstereobmtexturethreshold_614',['kStereoBMTextureThreshold',['../classrtabmap_1_1Parameters.html#a3b18299607c2d3e13b4193eab70981da',1,'rtabmap::Parameters']]], + ['kstereobmuniquenessratio_615',['kStereoBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#aecd9a6f9ae9f1982a24ccfae3173d884',1,'rtabmap::Parameters']]], + ['kstereodensestrategy_616',['kStereoDenseStrategy',['../classrtabmap_1_1Parameters.html#a3d90e8ab6857becd7e2c3bf9e35ab261',1,'rtabmap::Parameters']]], + ['kstereoeps_617',['kStereoEps',['../classrtabmap_1_1Parameters.html#a5690d54cd1982ac7f2a9ad5865749080',1,'rtabmap::Parameters']]], + ['kstereoerrorthreshold_618',['kStereoErrorThreshold',['../classrtabmap_1_1Parameters.html#a65e8f08b8a439432f59325aba7988a54',1,'rtabmap::Parameters']]], + ['kstereogpu_619',['kStereoGpu',['../classrtabmap_1_1Parameters.html#a4c428b3cf9ef87a8a1b7c229abe8f894',1,'rtabmap::Parameters']]], + ['kstereoiterations_620',['kStereoIterations',['../classrtabmap_1_1Parameters.html#a9e9c277fa721913a43a674690c8873aa',1,'rtabmap::Parameters']]], + ['kstereomaxdisparity_621',['kStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a83e72c20844ef412aaebfb76c64a88d4',1,'rtabmap::Parameters']]], + ['kstereomaxlevel_622',['kStereoMaxLevel',['../classrtabmap_1_1Parameters.html#a1dc98c5dceadcdad9b51755f2e3dd8a0',1,'rtabmap::Parameters']]], + ['kstereomindisparity_623',['kStereoMinDisparity',['../classrtabmap_1_1Parameters.html#a7bdfbe42d80d37e4ea46f85e88c8fb7d',1,'rtabmap::Parameters']]], + ['kstereomineigthreshold_624',['kStereoMinEigThreshold',['../classrtabmap_1_1Parameters.html#a1926f50c8e2e40b757cea4a34c6f1b37',1,'rtabmap::Parameters']]], + ['kstereoopticalflow_625',['kStereoOpticalFlow',['../classrtabmap_1_1Parameters.html#ad470670e0402cd380b121ace088af0ce',1,'rtabmap::Parameters']]], + ['kstereosgbmblocksize_626',['kStereoSGBMBlockSize',['../classrtabmap_1_1Parameters.html#af7af5bf00901eb262fcd7c500b3299f5',1,'rtabmap::Parameters']]], + ['kstereosgbmdisp12maxdiff_627',['kStereoSGBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#ab9fe06e3d5154acf8e7f5c8e3060cf5a',1,'rtabmap::Parameters']]], + ['kstereosgbmmindisparity_628',['kStereoSGBMMinDisparity',['../classrtabmap_1_1Parameters.html#a059488258e147cb8e84d0f5c68df9851',1,'rtabmap::Parameters']]], + ['kstereosgbmmode_629',['kStereoSGBMMode',['../classrtabmap_1_1Parameters.html#a838ec79552e7506f983ff71cbd6fb56d',1,'rtabmap::Parameters']]], + ['kstereosgbmnumdisparities_630',['kStereoSGBMNumDisparities',['../classrtabmap_1_1Parameters.html#a858454a74b148915173794e5f1e01dcb',1,'rtabmap::Parameters']]], + ['kstereosgbmp1_631',['kStereoSGBMP1',['../classrtabmap_1_1Parameters.html#a60f76920fd1d7ac7035124fa44728f2d',1,'rtabmap::Parameters']]], + ['kstereosgbmp2_632',['kStereoSGBMP2',['../classrtabmap_1_1Parameters.html#acec8ab4699a7d0a9c771b640f0b94c55',1,'rtabmap::Parameters']]], + ['kstereosgbmprefiltercap_633',['kStereoSGBMPreFilterCap',['../classrtabmap_1_1Parameters.html#aa5fb712638b3512045b5d2ba11cc38d3',1,'rtabmap::Parameters']]], + ['kstereosgbmspecklerange_634',['kStereoSGBMSpeckleRange',['../classrtabmap_1_1Parameters.html#aab23b5c08f1c13c6d213129a2b047d8c',1,'rtabmap::Parameters']]], + ['kstereosgbmspecklewindowsize_635',['kStereoSGBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a94dbc68ba825a4e309065d7d91422c08',1,'rtabmap::Parameters']]], + ['kstereosgbmuniquenessratio_636',['kStereoSGBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a00ce4bb082b7be1e614472d55114ac3c',1,'rtabmap::Parameters']]], + ['kstereossd_637',['kStereoSSD',['../classrtabmap_1_1Parameters.html#a43ba1fe4dc96d2206f2d435faada0faa',1,'rtabmap::Parameters']]], + ['kstereousemineigenvals_638',['kStereoUseMinEigenVals',['../classrtabmap_1_1Parameters.html#afcadfdcc2913f378799b4706017b16df',1,'rtabmap::Parameters']]], + ['kstereowinheight_639',['kStereoWinHeight',['../classrtabmap_1_1Parameters.html#a99b81c7a85099acdbe4607529284c49d',1,'rtabmap::Parameters']]], + ['kstereowinwidth_640',['kStereoWinWidth',['../classrtabmap_1_1Parameters.html#a8e640d7ef0c460cc5a351281a555906d',1,'rtabmap::Parameters']]], + ['kstr_641',['kStr',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdac20f34d5dd5370a8aeb9665c465417dc',1,'UVariant']]], + ['ksuperpointcuda_642',['kSuperPointCuda',['../classrtabmap_1_1Parameters.html#a2b81d483c201d3aa7191b6e4fb5ad7a5',1,'rtabmap::Parameters']]], + ['ksuperpointmodelpath_643',['kSuperPointModelPath',['../classrtabmap_1_1Parameters.html#a8ba47acc58362bcd4345acdb87235da3',1,'rtabmap::Parameters']]], + ['ksuperpointnms_644',['kSuperPointNMS',['../classrtabmap_1_1Parameters.html#adcaf3d26a606f5d4e372f15fe636a527',1,'rtabmap::Parameters']]], + ['ksuperpointnmsradius_645',['kSuperPointNMSRadius',['../classrtabmap_1_1Parameters.html#ade883817139fed2d49cfc474b40278fe',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratcuda_646',['kSuperPointRpautratCuda',['../classrtabmap_1_1Parameters.html#a3f06822bbaedae5abe23a74309a19387',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratmodelpath_647',['kSuperPointRpautratModelPath',['../classrtabmap_1_1Parameters.html#a2eb6b4f6ddb3c45f9e443bb65e1ce703',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratnms_648',['kSuperPointRpautratNMS',['../classrtabmap_1_1Parameters.html#a7d36cf00b709fd1d300c60c6c0dbc533',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratnmsradius_649',['kSuperPointRpautratNMSRadius',['../classrtabmap_1_1Parameters.html#a3ec47a14df4e48ca6db7eac1da5bf4f0',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratthreshold_650',['kSuperPointRpautratThreshold',['../classrtabmap_1_1Parameters.html#af15cbea36a89e00cc95e16b4c1af223b',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratweightspath_651',['kSuperPointRpautratWeightsPath',['../classrtabmap_1_1Parameters.html#a33df36074c92dfed9c1884a9d94e03cb',1,'rtabmap::Parameters']]], + ['ksuperpointthreshold_652',['kSuperPointThreshold',['../classrtabmap_1_1Parameters.html#ac217878ee7574e3251d46f73ce230eb1',1,'rtabmap::Parameters']]], + ['ksurfextended_653',['kSURFExtended',['../classrtabmap_1_1Parameters.html#a009d70ce3f5f64e81dcf3573d8cee6f9',1,'rtabmap::Parameters']]], + ['ksurfgpukeypointsratio_654',['kSURFGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#ac854e7a9427ce1400a3188e939ec0b6e',1,'rtabmap::Parameters']]], + ['ksurfgpuversion_655',['kSURFGpuVersion',['../classrtabmap_1_1Parameters.html#a6a05b7688f0a15226f70989c597884cd',1,'rtabmap::Parameters']]], + ['ksurfhessianthreshold_656',['kSURFHessianThreshold',['../classrtabmap_1_1Parameters.html#adcbb73ba0c4fa8dc205c15a1f3ccc74e',1,'rtabmap::Parameters']]], + ['ksurfoctavelayers_657',['kSURFOctaveLayers',['../classrtabmap_1_1Parameters.html#a7df13d2802282d3c23e30223e129baad',1,'rtabmap::Parameters']]], + ['ksurfoctaves_658',['kSURFOctaves',['../classrtabmap_1_1Parameters.html#af26624a5972134c437d26400401d7381',1,'rtabmap::Parameters']]], + ['ksurfupright_659',['kSURFUpright',['../classrtabmap_1_1Parameters.html#a41f0af4867885d1fb53c89cbd37e7f44',1,'rtabmap::Parameters']]], + ['ktypebm_660',['kTypeBM',['../classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803a393267c04896dd353dc66ade56c8d5f1',1,'rtabmap::StereoDense']]], + ['ktypeceres_661',['kTypeCeres',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a891b6c7cbbe5e149e583ac1fc14fc91d',1,'rtabmap::Optimizer']]], + ['ktypecuvslam_662',['kTypeCuVSLAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849aba6f673ce43f5dfe5c1eecb303f55049',1,'rtabmap::Odometry']]], + ['ktypecvsba_663',['kTypeCVSBA',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a53545e83af9618cb4d39cf0420b3cd54',1,'rtabmap::Optimizer']]], + ['ktypedvo_664',['kTypeDVO',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a7fccdbc59d38d39f4de1253063d79a59',1,'rtabmap::Odometry']]], + ['ktypef2f_665',['kTypeF2F',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a81b73f734f25e9bef50a979ef6d9f662',1,'rtabmap::Odometry']]], + ['ktypef2m_666',['kTypeF2M',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ac585174ece227de554ed25a51835d3d0',1,'rtabmap::Odometry']]], + ['ktypefloam_667',['kTypeFLOAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849abb9a5bbb18e4ab77c1dac6cc2fe73a68',1,'rtabmap::Odometry']]], + ['ktypefovis_668',['kTypeFovis',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849aeb8888885eaa7c907a98537c7a463b8b',1,'rtabmap::Odometry']]], + ['ktypeg2o_669',['kTypeG2O',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16aa4d070fe00ba5e81adbc958bad18d853',1,'rtabmap::Optimizer']]], + ['ktypegtsam_670',['kTypeGTSAM',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16ab71c83617497f5da0607a47ab162630f',1,'rtabmap::Optimizer']]], + ['ktypeicp_671',['kTypeIcp',['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a8638e369c895a337f587e727e1a712ab',1,'rtabmap::Registration']]], + ['ktypeliosam_672',['kTypeLIOSAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ac13bb66a69e4790bfa574c8a0c6c9975',1,'rtabmap::Odometry']]], + ['ktypeloam_673',['kTypeLOAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849abf68726d1b5239c24ce447ceafd221aa',1,'rtabmap::Odometry']]], + ['ktypemsckf_674',['kTypeMSCKF',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a1de4ebe3cb3470d17d615e86ac791225',1,'rtabmap::Odometry']]], + ['ktypeokvis_675',['kTypeOkvis',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a175924a6dd1fdfb2e162093c5a2a867b',1,'rtabmap::Odometry']]], + ['ktypeopen3d_676',['kTypeOpen3D',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ab30949269c652911c3d8c5274ad84041',1,'rtabmap::Odometry']]], + ['ktypeopenvins_677',['kTypeOpenVINS',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a9e760521384d881e2fafcc008193f65a',1,'rtabmap::Odometry']]], + ['ktypeorbslam_678',['kTypeORBSLAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a32b913af77b8df59d89aa226cbdf5e9b',1,'rtabmap::Odometry']]], + ['ktypesgbm_679',['kTypeSGBM',['../classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803abf3465f1ebb12576596dc4b605c1ffae',1,'rtabmap::StereoDense']]], + ['ktypetoro_680',['kTypeTORO',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a6065bdb6e49c0f5ffc98d5f2f6b0d5ab',1,'rtabmap::Optimizer']]], + ['ktypeundef_681',['ktypeundef',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a7e81a250626fd76729fa01fb7b40fde5',1,'rtabmap::Odometry::kTypeUndef'],['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16abae75975865bff7e12e82d2f5295e0db',1,'rtabmap::Optimizer::kTypeUndef'],['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a1e25205ebb65fe2315a0b7050e613c6d',1,'rtabmap::Registration::kTypeUndef']]], + ['ktypevinsfusion_682',['kTypeVINSFusion',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a1e148f21361b3e46d6ea7c83ac35a7a4',1,'rtabmap::Odometry']]], + ['ktypevis_683',['kTypeVis',['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a8e6dbf98a9a843c34d16b8c7e546c724',1,'rtabmap::Registration']]], + ['ktypevisicp_684',['kTypeVisIcp',['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849ad03189dad590b6e2d81adbc7d20bf662',1,'rtabmap::Registration']]], + ['ktypeviso2_685',['kTypeViso2',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ab788cd11e7f6906987e33c0189a5c367',1,'rtabmap::Odometry']]], + ['kuchar_686',['kUChar',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda017bb86f2bbfc9c10fc082890fdd3c9e',1,'UVariant']]], + ['kuchararray_687',['kUCharArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda6ae60f887effac25862b2e70692aabe4',1,'UVariant']]], + ['kuint_688',['kUInt',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda4ea55b31fb308080d00de2437717a13c',1,'UVariant']]], + ['kuintarray_689',['kUIntArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda1b015c8ec9bcab8fca0734749cba4f3d',1,'UVariant']]], + ['kundef_690',['kundef',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4',1,'rtabmap::Link::kUndef'],['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda4592761da391696a37f01f792c65f750',1,'UVariant::kUndef']]], + ['kundefined_691',['kUndefined',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fad06ac95d82e3fceb18e1f3dfd190931a',1,'rtabmap::EnvSensor']]], + ['kunknown_692',['kUnknown',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a068e1caebd3d8c939887dce363abd24d',1,'rtabmap::LaserScan']]], + ['kuserclosure_693',['kUserClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea878009c73fbfa2736f438b748afbc1f6',1,'rtabmap::Link']]], + ['kushort_694',['kUShort',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda558d69cc5a6df93471a3455083bb7c6b',1,'UVariant']]], + ['kushortarray_695',['kUShortArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2c7450a1f1cf76ef9018e86d3d422245',1,'UVariant']]], + ['kvhepenabled_696',['kVhEpEnabled',['../classrtabmap_1_1Parameters.html#ad277beaf60564db0ca51848349bd82f2',1,'rtabmap::Parameters']]], + ['kvhepipolar_697',['kVhEpipolar',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568ca1b458648c7dc4ea000ca53e0e384e3c6',1,'rtabmap::Rtabmap']]], + ['kvhepmatchcountmin_698',['kVhEpMatchCountMin',['../classrtabmap_1_1Parameters.html#a0cee6f016f0b4e58f87aca7ef87d6b4b',1,'rtabmap::Parameters']]], + ['kvhepransacparam1_699',['kVhEpRansacParam1',['../classrtabmap_1_1Parameters.html#a52c5f76beb3fd9365c72578e04eed095',1,'rtabmap::Parameters']]], + ['kvhepransacparam2_700',['kVhEpRansacParam2',['../classrtabmap_1_1Parameters.html#aa8c6e571280a46e6d19996e1e7b23791',1,'rtabmap::Parameters']]], + ['kvhnone_701',['kVhNone',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568caea5e55cc106979d91f695c064a78926b',1,'rtabmap::Rtabmap']]], + ['kvhundef_702',['kVhUndef',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568cab2676e6cebdd6090d3c87a3237c3e83b',1,'rtabmap::Rtabmap']]], + ['kvirtualclosure_703',['kVirtualClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eaf74a4b0552da7509b16f8c4b8baf85c7',1,'rtabmap::Link']]], + ['kvisbundleadjustment_704',['kVisBundleAdjustment',['../classrtabmap_1_1Parameters.html#a0c02ea87b8364cb887d712388c88a8a0',1,'rtabmap::Parameters']]], + ['kviscorfloweps_705',['kVisCorFlowEps',['../classrtabmap_1_1Parameters.html#a1f769da5b63d6ee37a471efeeaff789b',1,'rtabmap::Parameters']]], + ['kviscorflowerrorthreshold_706',['kVisCorFlowErrorThreshold',['../classrtabmap_1_1Parameters.html#a9de08db858c9ce3a39909a16013814b7',1,'rtabmap::Parameters']]], + ['kviscorflowgpu_707',['kVisCorFlowGpu',['../classrtabmap_1_1Parameters.html#a24ff6d44d4c8fd70f900dd0090d7705c',1,'rtabmap::Parameters']]], + ['kviscorflowiterations_708',['kVisCorFlowIterations',['../classrtabmap_1_1Parameters.html#a8163d76bcd24f6b187f7a24c9cd3544b',1,'rtabmap::Parameters']]], + ['kviscorflowmaxlevel_709',['kVisCorFlowMaxLevel',['../classrtabmap_1_1Parameters.html#aa537af7d1d4c8e39c208f60441cff490',1,'rtabmap::Parameters']]], + ['kviscorflowmineigthreshold_710',['kVisCorFlowMinEigThreshold',['../classrtabmap_1_1Parameters.html#aded4ca74c05a8ac42f735fd234621f6c',1,'rtabmap::Parameters']]], + ['kviscorflowusemineigenvals_711',['kVisCorFlowUseMinEigenVals',['../classrtabmap_1_1Parameters.html#aadeaa0f61d4bf779d7b7c344c9d0ca80',1,'rtabmap::Parameters']]], + ['kviscorflowwinsize_712',['kVisCorFlowWinSize',['../classrtabmap_1_1Parameters.html#a28aedde79d78269bea20a84d2a37d046',1,'rtabmap::Parameters']]], + ['kviscorguessmatchtoprojection_713',['kVisCorGuessMatchToProjection',['../classrtabmap_1_1Parameters.html#a90ee2568bb4d9b5410291896adb5bc0b',1,'rtabmap::Parameters']]], + ['kviscorguesswinsize_714',['kVisCorGuessWinSize',['../classrtabmap_1_1Parameters.html#a089fa3defcef304735517d86fcf9b5fc',1,'rtabmap::Parameters']]], + ['kviscornndr_715',['kVisCorNNDR',['../classrtabmap_1_1Parameters.html#a381898b11ddb3d389c76a027f5e49bfd',1,'rtabmap::Parameters']]], + ['kviscornntype_716',['kVisCorNNType',['../classrtabmap_1_1Parameters.html#a341b0c15fe1fba640ad3aee76019a618',1,'rtabmap::Parameters']]], + ['kviscortype_717',['kVisCorType',['../classrtabmap_1_1Parameters.html#a1f1c5f9198da6ec1d43a36621b0e6687',1,'rtabmap::Parameters']]], + ['kvisdepthasmask_718',['kVisDepthAsMask',['../classrtabmap_1_1Parameters.html#af1be1e3b524da425b89b91efab0f90db',1,'rtabmap::Parameters']]], + ['kvisdepthmaskfloorthr_719',['kVisDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#accad66a5c779ac357228bad7dad0143f',1,'rtabmap::Parameters']]], + ['kvisepipolargeometryvar_720',['kVisEpipolarGeometryVar',['../classrtabmap_1_1Parameters.html#a91b4c9475ddaf077087b68693f2acf88',1,'rtabmap::Parameters']]], + ['kvisestimationtype_721',['kVisEstimationType',['../classrtabmap_1_1Parameters.html#af81c62fb25579c744d7d27bf80d5b6f3',1,'rtabmap::Parameters']]], + ['kvisfeaturetype_722',['kVisFeatureType',['../classrtabmap_1_1Parameters.html#a6bfd44775ced2f3dafa7f8c3ba63b528',1,'rtabmap::Parameters']]], + ['kvisgridcols_723',['kVisGridCols',['../classrtabmap_1_1Parameters.html#a472535dcd9c51d8cfd71ab415182336b',1,'rtabmap::Parameters']]], + ['kvisgridrows_724',['kVisGridRows',['../classrtabmap_1_1Parameters.html#a8c85794daf0dac582b11413f5b0ca2ab',1,'rtabmap::Parameters']]], + ['kvisinlierdistance_725',['kVisInlierDistance',['../classrtabmap_1_1Parameters.html#ac5b9348ae7c53f60e31910cef27c6ef5',1,'rtabmap::Parameters']]], + ['kvisiterations_726',['kVisIterations',['../classrtabmap_1_1Parameters.html#afa4bf3250434a53b0bb895bf6f73ad88',1,'rtabmap::Parameters']]], + ['kvismaxdepth_727',['kVisMaxDepth',['../classrtabmap_1_1Parameters.html#a5ccfad9205ccef4725767f6524a449fb',1,'rtabmap::Parameters']]], + ['kvismaxfeatures_728',['kVisMaxFeatures',['../classrtabmap_1_1Parameters.html#ad2414ad633ec13ebafce7b6e9d190db0',1,'rtabmap::Parameters']]], + ['kvismeaninliersdistance_729',['kVisMeanInliersDistance',['../classrtabmap_1_1Parameters.html#a7fe029be1bffc596b64f34f53f69f218',1,'rtabmap::Parameters']]], + ['kvismindepth_730',['kVisMinDepth',['../classrtabmap_1_1Parameters.html#acbf132fe641104533ecad585a1d2aaee',1,'rtabmap::Parameters']]], + ['kvismininliers_731',['kVisMinInliers',['../classrtabmap_1_1Parameters.html#a6f992e44096755469b1d477629b8527f',1,'rtabmap::Parameters']]], + ['kvismininliersdistribution_732',['kVisMinInliersDistribution',['../classrtabmap_1_1Parameters.html#a94ae0eca27e8dbfc87ecda4dce171aa9',1,'rtabmap::Parameters']]], + ['kvispnpflags_733',['kVisPnPFlags',['../classrtabmap_1_1Parameters.html#a3bda76c70b68efac7fe485cbad86a9dd',1,'rtabmap::Parameters']]], + ['kvispnpmaxvariance_734',['kVisPnPMaxVariance',['../classrtabmap_1_1Parameters.html#a854b07b9a076de68f374e62f7905941e',1,'rtabmap::Parameters']]], + ['kvispnprefineiterations_735',['kVisPnPRefineIterations',['../classrtabmap_1_1Parameters.html#a386e793f200057f8eb9240e78508ffd8',1,'rtabmap::Parameters']]], + ['kvispnpreprojerror_736',['kVisPnPReprojError',['../classrtabmap_1_1Parameters.html#a8efa7ffd2cab5d95f14fc632f505107c',1,'rtabmap::Parameters']]], + ['kvispnpsamplingpolicy_737',['kVisPnPSamplingPolicy',['../classrtabmap_1_1Parameters.html#a63f6b24143b35e86f9e75bef4a17b105',1,'rtabmap::Parameters']]], + ['kvispnpsplitlinearcovcomponents_738',['kVisPnPSplitLinearCovComponents',['../classrtabmap_1_1Parameters.html#a36a7df794eedc79a463b04b1160235f8',1,'rtabmap::Parameters']]], + ['kvispnpvariancemedianratio_739',['kVisPnPVarianceMedianRatio',['../classrtabmap_1_1Parameters.html#aacdfd9002b85b4e590e5323362ee741e',1,'rtabmap::Parameters']]], + ['kvisrefineiterations_740',['kVisRefineIterations',['../classrtabmap_1_1Parameters.html#a3e32f401181a1037963744a930bcd8d9',1,'rtabmap::Parameters']]], + ['kvisroiratios_741',['kVisRoiRatios',['../classrtabmap_1_1Parameters.html#abc1805691b776279f46591e95f937a4b',1,'rtabmap::Parameters']]], + ['kvisssc_742',['kVisSSC',['../classrtabmap_1_1Parameters.html#a088ec8f94301ffc89ac88c7843f927c8',1,'rtabmap::Parameters']]], + ['kvissubpixeps_743',['kVisSubPixEps',['../classrtabmap_1_1Parameters.html#a13000af22e8fbe5385a69fe6adc5039b',1,'rtabmap::Parameters']]], + ['kvissubpixiterations_744',['kVisSubPixIterations',['../classrtabmap_1_1Parameters.html#ac46c55c04fd88c8f268b0d583bf84e2c',1,'rtabmap::Parameters']]], + ['kvissubpixwinsize_745',['kVisSubPixWinSize',['../classrtabmap_1_1Parameters.html#ad2564dc0b3a79a40a17338dd0ddccdb6',1,'rtabmap::Parameters']]], + ['kwifisignalstrength_746',['kWifiSignalStrength',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa1bc42ead6237eb515f301b39e162dee2',1,'rtabmap::EnvSensor']]], + ['kxy_747',['kXY',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a4f3e7340e44a01b48ccaf8e1f8dca3e1',1,'rtabmap::LaserScan']]], + ['kxyi_748',['kXYI',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007abb92c193b2eb76045e1a141c2a42cc00',1,'rtabmap::LaserScan']]], + ['kxyinormal_749',['kXYINormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a799064c7e31b99134871b5d7d2906f97',1,'rtabmap::LaserScan']]], + ['kxynormal_750',['kXYNormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ad4c3ec9f057875ade4f21f52901bceb5',1,'rtabmap::LaserScan']]], + ['kxyz_751',['kXYZ',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a0c376810ac499a8a93a02bd0d4a19267',1,'rtabmap::LaserScan']]], + ['kxyzi_752',['kXYZI',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a5efd7fbf18cee72d9eb2daa4ea818e42',1,'rtabmap::LaserScan']]], + ['kxyzinormal_753',['kXYZINormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a3fdc082afb503bb197e2651b6fc565b8',1,'rtabmap::LaserScan']]], + ['kxyzirt_754',['kXYZIRT',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a7df3c8f97dd52461787060befaf7f2d7',1,'rtabmap::LaserScan']]], + ['kxyzit_755',['kXYZIT',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ab169cf98665cb3f33d81240b37cc501c',1,'rtabmap::LaserScan']]], + ['kxyznormal_756',['kXYZNormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a09e67f9495016103a162854b8e852bbc',1,'rtabmap::LaserScan']]], + ['kxyzrgb_757',['kXYZRGB',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a500cf2179e454d8d5a74895b301c0829',1,'rtabmap::LaserScan']]], + ['kxyzrgbnormal_758',['kXYZRGBNormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007af2d5b7ff94aeac818000d840e257ac07',1,'rtabmap::LaserScan']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_e.js b/preview/pr-1773/api/latest/search/all_e.js new file mode 100644 index 00000000..d1c5beb4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_e.js @@ -0,0 +1,85 @@ +var searchData= +[ + ['labellocation_0',['labelLocation',['../classrtabmap_1_1Rtabmap.html#af1fe8ed393237bc9ffa1ea93adf0ec9b',1,'rtabmap::Rtabmap']]], + ['labels_1',['labels',['../classrtabmap_1_1Statistics.html#afeb2fd18d35f6a760ffa46ca0ebe4e49',1,'rtabmap::Statistics']]], + ['labelsignature_2',['labelSignature',['../classrtabmap_1_1Memory.html#abba1fbec2be0cfced6e14d723fc45794',1,'rtabmap::Memory']]], + ['landmark_3',['landmark',['../classrtabmap_1_1Landmark.html',1,'rtabmap::Landmark'],['../classrtabmap_1_1Landmark.html#a92311f7550e395fea804c5438e9085ff',1,'rtabmap::Landmark::Landmark(const int &id, const Transform &pose, const cv::Mat &covariance)'],['../classrtabmap_1_1Landmark.html#a6ba2b53d996e0fa62a8023917e515a06',1,'rtabmap::Landmark::Landmark()'],['../classrtabmap_1_1Landmark.html#a1fda87c27ac931dcf9815921b53c1f19',1,'rtabmap::Landmark::Landmark(const int &id, const float &size, const Transform &pose, const cv::Mat &covariance)']]], + ['landmarks_4',['landmarks',['../namespacertabmap.html#a12bbfd3e37121bf9f68a4047c8b4da86',1,'rtabmap::Landmarks'],['../classrtabmap_1_1SensorData.html#a73ba0bb1cb31a3438b3ffee161b16ff8',1,'rtabmap::SensorData::landmarks()']]], + ['landmarksignored_5',['landmarksIgnored',['../classrtabmap_1_1Optimizer.html#a32f53d408ef0372c5c196ee89ff5ad79',1,'rtabmap::Optimizer']]], + ['laserscan_6',['laserscan',['../classrtabmap_1_1LaserScan.html',1,'rtabmap::LaserScan'],['../classrtabmap_1_1LaserScan.html#aaf554921f866f90c48a6174d5f97a016',1,'rtabmap::LaserScan::LaserScan(const LaserScan &data, Format format, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1LaserScan.html#a0cb5ba7c590cea1b36c81804acdbf302',1,'rtabmap::LaserScan::LaserScan(const LaserScan &data, int maxPoints, float maxRange, Format format, const Transform &localTransform=Transform::getIdentity())'],['../group__LaserScan2dFromPointCloud.html',1,'PCL to 2D LaserScan'],['../group__LaserScanFromPointCloud.html',1,'PCL to 3D LaserScan']]], + ['laserscan_20to_20pcl_7',['LaserScan to PCL',['../group__LaserScanToPointCloud.html',1,'']]], + ['laserscan2dfrompointcloud_8',['laserscan2dfrompointcloud',['../group__LaserScan2dFromPointCloud.html#gac0823dd28e488bef9499faee54ff8a4e',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#ga0354b321c4196232fb1183c3a322b5f8',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#ga6cb623d1b3ce9c244a7d4ef346a721db',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#gae4e7c218a24fb8d5c3fd7143462d3070',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#gac278e2f3f54ed49b5d3a6afa606a466b',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#ga0898d06b1639f58ed92b66f311e786aa',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)']]], + ['laserscancompressed_9',['laserScanCompressed',['../classrtabmap_1_1SensorData.html#a1522af81a95c27b76e316919df95a869',1,'rtabmap::SensorData']]], + ['laserscanfromdepthimage_10',['laserScanFromDepthImage',['../namespacertabmap_1_1util3d.html#a39d4adb63b4bd06592e2c65641a32558',1,'rtabmap::util3d']]], + ['laserscanfromdepthimages_11',['laserScanFromDepthImages',['../namespacertabmap_1_1util3d.html#a07f8a125805ac013039b7fa0ddb623e0',1,'rtabmap::util3d']]], + ['laserscanfrompointcloud_12',['laserscanfrompointcloud',['../group__LaserScanFromPointCloud.html#ga078f5eae0077169e636ec76e03973edc',1,'rtabmap::util3d::laserScanFromPointCloud(const PointCloud2T &cloud, bool filterNaNs=true, bool is2D=false, const Transform &transform=Transform())'],['../group__LaserScanFromPointCloud.html#gafb165d79d23620b42af0653ae045fb91',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga79e460158de1d3934abcd8fad488fb24',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga9344c712c57af92d7612b0af76226f06',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gab2d54043075851c5e23f487001adacb6',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gaf509a7c65e02d8690c971294c43bda47',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga75bf455d6cc912b4ee18785de71c50a5',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga04169bd4b4488350b08709af9581b289',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< rtabmap::PointXYZIRT > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga655a37385c6ca40ec99e76045c04040b',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< rtabmap::PointXYZIRT > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga51c683da166a9fcf7e7bf6c834ca03a4',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gadeb1f66fd39cfcb39c2f152c36b3be62',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gaa98ccb732868f5ab4e91cd6f82602852',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga9933faab17e984b2789926abd2ba0caf',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gad5764a399e3a8a5586b94490e0cd7d15',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga9470f081e8de0a34550e91e2f74bacd5',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointNormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga7a88e45c9bab555c6d1efd64be765c4d',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga75f96d3e3d5d62ce6a9d16a1753c775a',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga16a77d267dc60b14b5bf48ca52547bae',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)']]], + ['laserscanraw_13',['laserScanRaw',['../classrtabmap_1_1SensorData.html#aeebafe56f302f9e8e4f06c5ad750248d',1,'rtabmap::SensorData']]], + ['laserscantopoint_14',['laserScanToPoint',['../group__LaserScanToPointCloud.html#gaeda3b4a673cb96e6421688e6c575e4e5',1,'rtabmap::util3d']]], + ['laserscantopointcloud_15',['laserScanToPointCloud',['../group__LaserScanToPointCloud.html#gac4aef207f79791db5064dc596e25513b',1,'rtabmap::util3d']]], + ['laserscantopointcloud2_16',['laserScanToPointCloud2',['../group__LaserScanToPointCloud.html#ga394ec840a58a1203fac9725d49a0013c',1,'rtabmap::util3d']]], + ['laserscantopointcloudi_17',['laserScanToPointCloudI',['../group__LaserScanToPointCloud.html#ga734628cdc1b15384476dc94d1c3dbb4d',1,'rtabmap::util3d']]], + ['laserscantopointcloudinormal_18',['laserScanToPointCloudINormal',['../group__LaserScanToPointCloud.html#ga8ee678c27ae59e2bb3fac8aeb55f9d92',1,'rtabmap::util3d']]], + ['laserscantopointcloudnormal_19',['laserScanToPointCloudNormal',['../group__LaserScanToPointCloud.html#gafe2b6826178bf0af878be67bddf3c9bd',1,'rtabmap::util3d']]], + ['laserscantopointcloudrgb_20',['laserScanToPointCloudRGB',['../group__LaserScanToPointCloud.html#gaee3e6a7ef23f6e5f9a19a0b033d7522c',1,'rtabmap::util3d']]], + ['laserscantopointcloudrgbnormal_21',['laserScanToPointCloudRGBNormal',['../group__LaserScanToPointCloud.html#ga741bd010511d5284831012194eab99b9',1,'rtabmap::util3d']]], + ['laserscantopointi_22',['laserScanToPointI',['../group__LaserScanToPointCloud.html#ga03b1c3a49aba08fcbc01b5991f25d0cc',1,'rtabmap::util3d']]], + ['laserscantopointinormal_23',['laserScanToPointINormal',['../group__LaserScanToPointCloud.html#gab69062f7ffd0f2192983c6d7afa4a171',1,'rtabmap::util3d']]], + ['laserscantopointnormal_24',['laserScanToPointNormal',['../group__LaserScanToPointCloud.html#ga4412f275d60b69f0f62db56321c5991c',1,'rtabmap::util3d']]], + ['laserscantopointrgb_25',['laserScanToPointRGB',['../group__LaserScanToPointCloud.html#gad0183648eae48143b33bfe969f8cbe43',1,'rtabmap::util3d']]], + ['laserscantopointrgbnormal_26',['laserScanToPointRGBNormal',['../group__LaserScanToPointCloud.html#ga675b84c6a6edde91883e38f49c087f31',1,'rtabmap::util3d']]], + ['latitude_27',['latitude',['../classrtabmap_1_1GPS.html#a9b20f8a5bf2cba909b53ecd83d2b4c08',1,'rtabmap::GPS::latitude()'],['../classrtabmap_1_1GeodeticCoords.html#ac6f662384e5b4ac613d5678307eb95a7',1,'rtabmap::GeodeticCoords::latitude()']]], + ['left_28',['left',['../classrtabmap_1_1StereoCameraModel.html#a064d29601c0ba13fc47584849e26b81b',1,'rtabmap::StereoCameraModel']]], + ['length_29',['length',['../classUFile.html#a0c42f32c914b349d13103d0397c1b3c1',1,'UFile::length()'],['../classUFile.html#ae1415739da256633ad417ac7d5fc2c11',1,'UFile::length(const std::string &filePath)']]], + ['level_30',['Level',['../classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218',1,'ULogger']]], + ['lidar_31',['lidar',['../classrtabmap_1_1SensorCaptureThread.html#aa6e5a6a53d621cda6e0b7f2ff35d33f0',1,'rtabmap::SensorCaptureThread::lidar()'],['../classrtabmap_1_1Lidar.html#a9d14987cd20918960d6b3705b66241ed',1,'rtabmap::Lidar::Lidar()'],['../classrtabmap_1_1Lidar.html',1,'rtabmap::Lidar']]], + ['lidarvlp16_32',['LidarVLP16',['../classrtabmap_1_1LidarVLP16.html',1,'rtabmap']]], + ['likelihood_33',['likelihood',['../classrtabmap_1_1Statistics.html#a4f3492b5cf6ff082d0061c9d7c67536f',1,'rtabmap::Statistics']]], + ['limitkeypoints_34',['limitKeypoints',['../classrtabmap_1_1Feature2D.html#aa5c0258ede589769bc50c6d6071d595c',1,'rtabmap::Feature2D']]], + ['line_20tools_35',['Command-line tools',['../tools.html',1,'']]], + ['linear_36',['linear',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html#a81e053c54198c0c57dba6ef65d1c3a8c',1,'rtabmap::graph::MaxGraphErrors']]], + ['linearacceleration_37',['linearAcceleration',['../classrtabmap_1_1IMU.html#a8fde3445664329d6432b632fca9db17a',1,'rtabmap::IMU']]], + ['linearaccelerationcovariance_38',['linearAccelerationCovariance',['../classrtabmap_1_1IMU.html#a2ee035bffb85f1681ad3525c32ba1243',1,'rtabmap::IMU']]], + ['linearlink_39',['linearLink',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html#ae51dd46bd7d7f6779b681eb906654321',1,'rtabmap::graph::MaxGraphErrors']]], + ['linearratio_40',['linearRatio',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html#a2a49ed004369d9a6670781d7f3b3cae9',1,'rtabmap::graph::MaxGraphErrors']]], + ['link_41',['link',['../classrtabmap_1_1Link.html#a8f624aa84862d7abafae5cfc7175f885',1,'rtabmap::Link::Link(int from, int to, Type type, const Transform &transform, const cv::Mat &infMatrix=cv::Mat::eye(6, 6, CV_64FC1), const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1Link.html#a2dce9c7a3ef04085d51f702002107c7b',1,'rtabmap::Link::Link()'],['../classrtabmap_1_1Link.html',1,'rtabmap::Link']]], + ['list_42',['Deprecated List',['../deprecated.html',1,'']]], + ['load_43',['load',['../classrtabmap_1_1CameraModel.html#a2c2ff6db9029c3ee219642d7e48b04fa',1,'rtabmap::CameraModel::load(const std::string &filePath, bool initRectificationMaps=true)'],['../classrtabmap_1_1CameraModel.html#abe9b3c87c086fd33286c01361e454056',1,'rtabmap::CameraModel::load(const std::string &directory, const std::string &cameraName, bool initRectificationMaps=true)'],['../classrtabmap_1_1StereoCameraModel.html#a9c2d94b9bc335fdec7f5fa4f4c45a07c',1,'rtabmap::StereoCameraModel::load()']]], + ['load2dmap_44',['load2dmap',['../classrtabmap_1_1DBDriver.html#aa3d68850f4bb114e897e37af6b1c858a',1,'rtabmap::DBDriver::load2DMap()'],['../classrtabmap_1_1Memory.html#a9a71f27d0de4f7e6400ca470a82be19d',1,'rtabmap::Memory::load2DMap()']]], + ['loadbincloud_45',['loadbincloud',['../namespacertabmap_1_1util3d.html#ae112015538769a29c920da97096e0d17',1,'rtabmap::util3d::loadBINCloud(const std::string &fileName, int dim)'],['../namespacertabmap_1_1util3d.html#a636c56f4ab6e58044595f95e44f93d06',1,'rtabmap::util3d::loadBINCloud(const std::string &fileName)']]], + ['loadbinscan_46',['loadBINScan',['../namespacertabmap_1_1util3d.html#a5ee08270b4a9e8ad93193721c7c71556',1,'rtabmap::util3d']]], + ['loadcloud_47',['loadCloud',['../namespacertabmap_1_1util3d.html#a86ba029bd916ab76dd5645ba7e1b2ef8',1,'rtabmap::util3d']]], + ['loadindex_48',['loadindex',['../classrtabmap_1_1FlannIndex.html#a826b3a33e22f455f04688df9d0d25b0b',1,'rtabmap::FlannIndex::loadIndex(const std::vector< unsigned char > &indexData, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)'],['../classrtabmap_1_1FlannIndex.html#a028eac4aeef64d62b9edea1f7b38a71e',1,'rtabmap::FlannIndex::loadIndex(const unsigned char *indexData, size_t indexDataSize, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)']]], + ['loadlinks_49',['loadLinks',['../classrtabmap_1_1DBDriver.html#aab00d50127b8b5bb92f8605e35aaca4d',1,'rtabmap::DBDriver']]], + ['loadoptimizedmesh_50',['loadOptimizedMesh',['../classrtabmap_1_1Memory.html#a0827d1d23744b3693f00e518e1b0fda8',1,'rtabmap::Memory']]], + ['loadoptimizedposes_51',['loadoptimizedposes',['../classrtabmap_1_1DBDriver.html#a6ef8c39b350634d21b57b1c07b029e55',1,'rtabmap::DBDriver::loadOptimizedPoses()'],['../classrtabmap_1_1Memory.html#a9e2972a53619456d75ad923fb5e9bc7e',1,'rtabmap::Memory::loadOptimizedPoses()']]], + ['loadpreviewimage_52',['loadpreviewimage',['../classrtabmap_1_1DBDriver.html#aa1423596308a8baf123ecbc7fdfc1e82',1,'rtabmap::DBDriver::loadPreviewImage()'],['../classrtabmap_1_1Memory.html#abd0d7277526f06861df17e03fa13e817',1,'rtabmap::Memory::loadPreviewImage()']]], + ['loadscan_53',['loadScan',['../namespacertabmap_1_1util3d.html#aefffe4f3418377f85659e7546668b190',1,'rtabmap::util3d']]], + ['loadsignature_54',['loadSignature',['../classrtabmap_1_1DBDriver.html#a0a713d7a6dabdcfbb8d733dba2a20120',1,'rtabmap::DBDriver']]], + ['localbundleavginlierdistance_55',['localBundleAvgInlierDistance',['../classrtabmap_1_1OdometryInfo.html#ad0e7d3544c09f38383ec7c130af42b26',1,'rtabmap::OdometryInfo']]], + ['localbundleconstraints_56',['localBundleConstraints',['../classrtabmap_1_1OdometryInfo.html#a4fe896b703671cf7f57573fa109ffa9a',1,'rtabmap::OdometryInfo']]], + ['localbundlemaxkeyframesforinlier_57',['localBundleMaxKeyFramesForInlier',['../classrtabmap_1_1OdometryInfo.html#a78ab082f3310ea5ac8b11e54ba3a3014',1,'rtabmap::OdometryInfo']]], + ['localbundlemodels_58',['localBundleModels',['../classrtabmap_1_1OdometryInfo.html#aaa91ea67105c8c174245a7b192e868e3',1,'rtabmap::OdometryInfo']]], + ['localbundleoutliers_59',['localBundleOutliers',['../classrtabmap_1_1OdometryInfo.html#a9ec2aadde776985736ac9f3ec2b7cb82',1,'rtabmap::OdometryInfo']]], + ['localbundleoutlierspercam_60',['localBundleOutliersPerCam',['../classrtabmap_1_1OdometryInfo.html#ab10aab5c7851215060b3ca9a58543206',1,'rtabmap::OdometryInfo']]], + ['localbundleposes_61',['localBundlePoses',['../classrtabmap_1_1OdometryInfo.html#ac6fbabe2f348c15f87807a928aeda82b',1,'rtabmap::OdometryInfo']]], + ['localbundletime_62',['localBundleTime',['../classrtabmap_1_1OdometryInfo.html#adbfce0f63a7eedd0a0557ecf4420dfd0',1,'rtabmap::OdometryInfo']]], + ['localgrid_63',['localgrid',['../classrtabmap_1_1LocalGrid.html',1,'rtabmap::LocalGrid'],['../classrtabmap_1_1LocalGrid.html#a42d930cf05d39ecbbd2e3678f8d0b47a',1,'rtabmap::LocalGrid::LocalGrid()']]], + ['localgridcache_64',['LocalGridCache',['../classrtabmap_1_1LocalGridCache.html',1,'rtabmap']]], + ['localgridmaker_65',['localgridmaker',['../classrtabmap_1_1LocalGridMaker.html#a70040df32d1949125f24a193581b8183',1,'rtabmap::LocalGridMaker::LocalGridMaker()'],['../classrtabmap_1_1LocalGridMaker.html',1,'rtabmap::LocalGridMaker']]], + ['localizationcovariance_66',['localizationCovariance',['../classrtabmap_1_1Statistics.html#a4c05e2dd7412e875333f3edea70ffbb3',1,'rtabmap::Statistics']]], + ['localkeyframes_67',['localKeyFrames',['../classrtabmap_1_1OdometryInfo.html#a5a6b81745b811070092549a1cfdfebbe',1,'rtabmap::OdometryInfo']]], + ['localmap_68',['localMap',['../classrtabmap_1_1OdometryInfo.html#a2231e7c27db459398b6b51fad108f876',1,'rtabmap::OdometryInfo']]], + ['localmapsize_69',['localMapSize',['../classrtabmap_1_1OdometryInfo.html#a563234c5e3047350ea3694df0ef95b03',1,'rtabmap::OdometryInfo']]], + ['localpath_70',['localPath',['../classrtabmap_1_1Statistics.html#a82f7c8f962fd5fcea9a5d4fc087cb2ce',1,'rtabmap::Statistics']]], + ['localscanmap_71',['localScanMap',['../classrtabmap_1_1OdometryInfo.html#a08ee9e84949857719b76d082559f3cbc',1,'rtabmap::OdometryInfo']]], + ['localscanmapsize_72',['localScanMapSize',['../classrtabmap_1_1OdometryInfo.html#ad0a0b1581cde378c7788e111384d4cfc',1,'rtabmap::OdometryInfo']]], + ['localtransform_73',['localtransform',['../classrtabmap_1_1StereoCameraModel.html#a5257cde3d51bbee7c51c3f36d0c7741f',1,'rtabmap::StereoCameraModel::localTransform()'],['../classrtabmap_1_1IMU.html#a10cfadbe31bbf80822a9ab92c0892b33',1,'rtabmap::IMU::localTransform()'],['../classrtabmap_1_1CameraModel.html#a8a1712ca95bf08c71b2bf2da1d635bc8',1,'rtabmap::CameraModel::localTransform()']]], + ['lock_74',['lock',['../classUMutex.html#af42d27a9379e6872e8cf2e5e171e820c',1,'UMutex']]], + ['locktry_75',['lockTry',['../classUMutex.html#a6237fbb3142023f92c11989b13207c32',1,'UMutex']]], + ['logodds_76',['logodds',['../classrtabmap_1_1GlobalMap.html#aff0b3450ec3db63b9dcb140ff0cbe77a',1,'rtabmap::GlobalMap']]], + ['longitude_77',['longitude',['../classrtabmap_1_1GeodeticCoords.html#a68e16e48c8ede571e20e9889547fd509',1,'rtabmap::GeodeticCoords::longitude()'],['../classrtabmap_1_1GPS.html#ac848af004f6581d42d55568d72332793',1,'rtabmap::GPS::longitude()']]], + ['loopclosureid_78',['loopClosureId',['../classrtabmap_1_1Statistics.html#a6a81189f2327a8b8f05a5f93d68fa3b7',1,'rtabmap::Statistics']]], + ['loopclosuremapid_79',['loopClosureMapId',['../classrtabmap_1_1Statistics.html#a1cf32a26d3ca103c22104015a3de8929',1,'rtabmap::Statistics']]], + ['loopclosuretransform_80',['loopClosureTransform',['../classrtabmap_1_1Statistics.html#a38c88cb8327baa290bf476326d24b54c',1,'rtabmap::Statistics']]], + ['lost_81',['lost',['../classrtabmap_1_1OdometryInfo.html#aa4c3fb893f6dcac1d67eeac6836b4faa',1,'rtabmap::OdometryInfo']]] +]; diff --git a/preview/pr-1773/api/latest/search/all_f.js b/preview/pr-1773/api/latest/search/all_f.js new file mode 100644 index 00000000..542b5aa4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/all_f.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['main_20classes_0',['The main classes',['../index.html#autotoc_md4',1,'']]], + ['mainloop_1',['mainloop',['../classrtabmap_1_1CompressionThread.html#a4948c2a9c84ee4e15699f08c2d4bac22',1,'rtabmap::CompressionThread::mainLoop()'],['../classUEventDispatcher.html#ad1aa4dc2ee29a9bfe5ee0422ad1c97f0',1,'UEventDispatcher::mainLoop()'],['../classUEventsManager.html#a7eec8b7a675e7093064f147a9f62bfb9',1,'UEventsManager::mainLoop()']]], + ['makedir_2',['makeDir',['../classUDirectory.html#a8d84cde6736b614a4396f16113f4d365',1,'UDirectory']]], + ['management_3',['Memory management',['../index.html#autotoc_md2',1,'']]], + ['map_4',['Working with a map',['../tools.html#autotoc_md5',1,'']]], + ['map_20c_20api_5',['RTAB-Map C++ API',['../index.html',1,'']]], + ['mapcorrection_6',['mapCorrection',['../classrtabmap_1_1Statistics.html#a775992631cd8d976a94ea6c1560dad0d',1,'rtabmap::Statistics']]], + ['mapid_7',['mapId',['../classrtabmap_1_1Signature.html#ac6a75872fb4cb64bd088794df6e897bb',1,'rtabmap::Signature']]], + ['marker_8',['Marker',['../parameters.html#autotoc_md57',1,'']]], + ['markerapriltag_9',['MarkerAprilTag',['../parameters.html#autotoc_md58',1,'']]], + ['markerdetector_10',['MarkerDetector',['../classrtabmap_1_1MarkerDetector.html',1,'rtabmap']]], + ['markerinfo_11',['MarkerInfo',['../classrtabmap_1_1MarkerInfo.html',1,'rtabmap']]], + ['markeropencv_12',['MarkerOpenCV',['../parameters.html#autotoc_md59',1,'']]], + ['matches_13',['matches',['../classrtabmap_1_1RegistrationInfo.html#a5dd0548e61c157636449fb607869f3a8',1,'rtabmap::RegistrationInfo']]], + ['matchesids_14',['matchesIDs',['../classrtabmap_1_1RegistrationInfo.html#aa7a148863f31e6556f483b7d932a40dc',1,'rtabmap::RegistrationInfo']]], + ['matchespercam_15',['matchesPerCam',['../classrtabmap_1_1RegistrationInfo.html#ab79de88af655e987d8232d5b86d7ad82',1,'rtabmap::RegistrationInfo']]], + ['mathematic_20operations_16',['Basic mathematic operations',['../group__UtiLite.html#math',1,'']]], + ['maxdisparity_17',['maxDisparity',['../classrtabmap_1_1Stereo.html#a83319186c8c434ad0482d2eb911ecd31',1,'rtabmap::Stereo']]], + ['maxgrapherrors_18',['MaxGraphErrors',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html',1,'rtabmap::graph']]], + ['maxlevel_19',['maxLevel',['../classrtabmap_1_1Stereo.html#a3834923d75c9453e885bea01cb5ecfa5',1,'rtabmap::Stereo']]], + ['mem_20',['Mem',['../parameters.html#autotoc_md10',1,'']]], + ['memory_21',['memory',['../classrtabmap_1_1Memory.html#a24d451cdf46a9cc04cce995142a101d4',1,'rtabmap::Memory::Memory()'],['../classrtabmap_1_1Memory.html',1,'rtabmap::Memory']]], + ['memory_20management_22',['Memory management',['../index.html#autotoc_md2',1,'']]], + ['memorychanged_23',['memoryChanged',['../classrtabmap_1_1Memory.html#a8720df55fa6f8be933827808d364f20a',1,'rtabmap::Memory']]], + ['memoryusage_24',['memoryUsage',['../classrtabmap_1_1OdometryInfo.html#ad7f7beb7810db1912c20b05e94eafdf3',1,'rtabmap::OdometryInfo']]], + ['memoryused_25',['memoryUsed',['../classrtabmap_1_1FlannIndex.html#a5a2eed18fe1216142d09c05243e9d06f',1,'rtabmap::FlannIndex']]], + ['merge_26',['merge',['../classrtabmap_1_1Link.html#a953a029f601d7ca3efbb12ca22da4542',1,'rtabmap::Link']]], + ['mergetextures_27',['mergeTextures',['../namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238',1,'rtabmap::util3d']]], + ['mindisparity_28',['minDisparity',['../classrtabmap_1_1Stereo.html#aaeec1e0e5470b1b1268b4e04bff81742',1,'rtabmap::Stereo']]], + ['multibandtexturing_29',['multiBandTexturing',['../namespacertabmap_1_1util3d.html#a695eb29e9b2679634edb6b8c36a11942',1,'rtabmap::util3d']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_0.js b/preview/pr-1773/api/latest/search/classes_0.js new file mode 100644 index 00000000..eda95fe3 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bayesfilter_0',['BayesFilter',['../classrtabmap_1_1BayesFilter.html',1,'rtabmap']]], + ['brisk_1',['BRISK',['../classrtabmap_1_1BRISK.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_1.js b/preview/pr-1773/api/latest/search/classes_1.js new file mode 100644 index 00000000..052040c4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_1.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['camera_0',['Camera',['../classrtabmap_1_1Camera.html',1,'rtabmap']]], + ['cameradepthai_1',['CameraDepthAI',['../classrtabmap_1_1CameraDepthAI.html',1,'rtabmap']]], + ['camerafreenect_2',['CameraFreenect',['../classrtabmap_1_1CameraFreenect.html',1,'rtabmap']]], + ['camerafreenect2_3',['CameraFreenect2',['../classrtabmap_1_1CameraFreenect2.html',1,'rtabmap']]], + ['cameraimages_4',['CameraImages',['../classrtabmap_1_1CameraImages.html',1,'rtabmap']]], + ['camerak4a_5',['CameraK4A',['../classrtabmap_1_1CameraK4A.html',1,'rtabmap']]], + ['camerak4w2_6',['CameraK4W2',['../classrtabmap_1_1CameraK4W2.html',1,'rtabmap']]], + ['cameramodel_7',['CameraModel',['../classrtabmap_1_1CameraModel.html',1,'rtabmap']]], + ['cameramynteye_8',['CameraMyntEye',['../classrtabmap_1_1CameraMyntEye.html',1,'rtabmap']]], + ['cameraopenni_9',['CameraOpenni',['../classrtabmap_1_1CameraOpenni.html',1,'rtabmap']]], + ['cameraopenni2_10',['CameraOpenNI2',['../classrtabmap_1_1CameraOpenNI2.html',1,'rtabmap']]], + ['cameraopennicv_11',['CameraOpenNICV',['../classrtabmap_1_1CameraOpenNICV.html',1,'rtabmap']]], + ['cameraorbbecsdk_12',['CameraOrbbecSDK',['../classrtabmap_1_1CameraOrbbecSDK.html',1,'rtabmap']]], + ['camerarealsense_13',['CameraRealSense',['../classrtabmap_1_1CameraRealSense.html',1,'rtabmap']]], + ['camerarealsense2_14',['CameraRealSense2',['../classrtabmap_1_1CameraRealSense2.html',1,'rtabmap']]], + ['camerargbdimages_15',['CameraRGBDImages',['../classrtabmap_1_1CameraRGBDImages.html',1,'rtabmap']]], + ['cameraseersense_16',['CameraSeerSense',['../classrtabmap_1_1CameraSeerSense.html',1,'rtabmap']]], + ['camerastereodc1394_17',['CameraStereoDC1394',['../classrtabmap_1_1CameraStereoDC1394.html',1,'rtabmap']]], + ['camerastereoflycapture2_18',['CameraStereoFlyCapture2',['../classrtabmap_1_1CameraStereoFlyCapture2.html',1,'rtabmap']]], + ['camerastereoimages_19',['CameraStereoImages',['../classrtabmap_1_1CameraStereoImages.html',1,'rtabmap']]], + ['camerastereotara_20',['CameraStereoTara',['../classrtabmap_1_1CameraStereoTara.html',1,'rtabmap']]], + ['camerastereovideo_21',['CameraStereoVideo',['../classrtabmap_1_1CameraStereoVideo.html',1,'rtabmap']]], + ['camerastereozed_22',['CameraStereoZed',['../classrtabmap_1_1CameraStereoZed.html',1,'rtabmap']]], + ['camerastereozedoc_23',['CameraStereoZedOC',['../classrtabmap_1_1CameraStereoZedOC.html',1,'rtabmap']]], + ['cameravideo_24',['CameraVideo',['../classrtabmap_1_1CameraVideo.html',1,'rtabmap']]], + ['cloudmap_25',['CloudMap',['../classrtabmap_1_1CloudMap.html',1,'rtabmap']]], + ['compressionthread_26',['CompressionThread',['../classrtabmap_1_1CompressionThread.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_10.js b/preview/pr-1773/api/latest/search/classes_10.js new file mode 100644 index 00000000..9d775aab --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['visualword_0',['VisualWord',['../classrtabmap_1_1VisualWord.html',1,'rtabmap']]], + ['vwdictionary_1',['VWDictionary',['../classrtabmap_1_1VWDictionary.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_2.js b/preview/pr-1773/api/latest/search/classes_2.js new file mode 100644 index 00000000..68ab1b18 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['dbdriver_0',['DBDriver',['../classrtabmap_1_1DBDriver.html',1,'rtabmap']]], + ['dbdriversqlite3_1',['DBDriverSqlite3',['../classrtabmap_1_1DBDriverSqlite3.html',1,'rtabmap']]], + ['dbreader_2',['DBReader',['../classrtabmap_1_1DBReader.html',1,'rtabmap']]], + ['discretedepthdistortionmodel_3',['DiscreteDepthDistortionModel',['../classclams_1_1DiscreteDepthDistortionModel.html',1,'clams']]], + ['discretefrustum_4',['DiscreteFrustum',['../classclams_1_1DiscreteFrustum.html',1,'clams']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_3.js b/preview/pr-1773/api/latest/search/classes_3.js new file mode 100644 index 00000000..883ee849 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['envsensor_0',['EnvSensor',['../classrtabmap_1_1EnvSensor.html',1,'rtabmap']]], + ['epipolargeometry_1',['EpipolarGeometry',['../classrtabmap_1_1EpipolarGeometry.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_4.js b/preview/pr-1773/api/latest/search/classes_4.js new file mode 100644 index 00000000..61af0a3d --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['fast_0',['FAST',['../classrtabmap_1_1FAST.html',1,'rtabmap']]], + ['fast_5fbrief_1',['FAST_BRIEF',['../classrtabmap_1_1FAST__BRIEF.html',1,'rtabmap']]], + ['fast_5ffreak_2',['FAST_FREAK',['../classrtabmap_1_1FAST__FREAK.html',1,'rtabmap']]], + ['feature2d_3',['Feature2D',['../classrtabmap_1_1Feature2D.html',1,'rtabmap']]], + ['featureba_4',['FeatureBA',['../classrtabmap_1_1FeatureBA.html',1,'rtabmap']]], + ['flannindex_5',['FlannIndex',['../classrtabmap_1_1FlannIndex.html',1,'rtabmap']]], + ['frameprojector_6',['FrameProjector',['../classclams_1_1FrameProjector.html',1,'clams']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_5.js b/preview/pr-1773/api/latest/search/classes_5.js new file mode 100644 index 00000000..e4b4d8cb --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_5.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['gaincompensator_0',['GainCompensator',['../classrtabmap_1_1GainCompensator.html',1,'rtabmap']]], + ['geodeticcoords_1',['GeodeticCoords',['../classrtabmap_1_1GeodeticCoords.html',1,'rtabmap']]], + ['gftt_2',['GFTT',['../classrtabmap_1_1GFTT.html',1,'rtabmap']]], + ['gftt_5fbrief_3',['GFTT_BRIEF',['../classrtabmap_1_1GFTT__BRIEF.html',1,'rtabmap']]], + ['gftt_5fdaisy_4',['GFTT_DAISY',['../classrtabmap_1_1GFTT__DAISY.html',1,'rtabmap']]], + ['gftt_5ffreak_5',['GFTT_FREAK',['../classrtabmap_1_1GFTT__FREAK.html',1,'rtabmap']]], + ['gftt_5forb_6',['GFTT_ORB',['../classrtabmap_1_1GFTT__ORB.html',1,'rtabmap']]], + ['globaldescriptor_7',['GlobalDescriptor',['../classrtabmap_1_1GlobalDescriptor.html',1,'rtabmap']]], + ['globaldescriptorextractor_8',['GlobalDescriptorExtractor',['../classrtabmap_1_1GlobalDescriptorExtractor.html',1,'rtabmap']]], + ['globalmap_9',['GlobalMap',['../classrtabmap_1_1GlobalMap.html',1,'rtabmap']]], + ['gps_10',['GPS',['../classrtabmap_1_1GPS.html',1,'rtabmap']]], + ['gridmap_11',['GridMap',['../classrtabmap_1_1GridMap.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_6.js b/preview/pr-1773/api/latest/search/classes_6.js new file mode 100644 index 00000000..7287e318 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['imu_0',['IMU',['../classrtabmap_1_1IMU.html',1,'rtabmap']]], + ['imuevent_1',['IMUEvent',['../classrtabmap_1_1IMUEvent.html',1,'rtabmap']]], + ['imufilter_2',['IMUFilter',['../classrtabmap_1_1IMUFilter.html',1,'rtabmap']]], + ['imuthread_3',['IMUThread',['../classrtabmap_1_1IMUThread.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_7.js b/preview/pr-1773/api/latest/search/classes_7.js new file mode 100644 index 00000000..2d046d19 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kaze_0',['KAZE',['../classrtabmap_1_1KAZE.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_8.js b/preview/pr-1773/api/latest/search/classes_8.js new file mode 100644 index 00000000..69e1b18e --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['landmark_0',['Landmark',['../classrtabmap_1_1Landmark.html',1,'rtabmap']]], + ['laserscan_1',['LaserScan',['../classrtabmap_1_1LaserScan.html',1,'rtabmap']]], + ['lidar_2',['Lidar',['../classrtabmap_1_1Lidar.html',1,'rtabmap']]], + ['lidarvlp16_3',['LidarVLP16',['../classrtabmap_1_1LidarVLP16.html',1,'rtabmap']]], + ['link_4',['Link',['../classrtabmap_1_1Link.html',1,'rtabmap']]], + ['localgrid_5',['LocalGrid',['../classrtabmap_1_1LocalGrid.html',1,'rtabmap']]], + ['localgridcache_6',['LocalGridCache',['../classrtabmap_1_1LocalGridCache.html',1,'rtabmap']]], + ['localgridmaker_7',['LocalGridMaker',['../classrtabmap_1_1LocalGridMaker.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_9.js b/preview/pr-1773/api/latest/search/classes_9.js new file mode 100644 index 00000000..571db85e --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['markerdetector_0',['MarkerDetector',['../classrtabmap_1_1MarkerDetector.html',1,'rtabmap']]], + ['markerinfo_1',['MarkerInfo',['../classrtabmap_1_1MarkerInfo.html',1,'rtabmap']]], + ['maxgrapherrors_2',['MaxGraphErrors',['../structrtabmap_1_1graph_1_1MaxGraphErrors.html',1,'rtabmap::graph']]], + ['memory_3',['Memory',['../classrtabmap_1_1Memory.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_a.js b/preview/pr-1773/api/latest/search/classes_a.js new file mode 100644 index 00000000..deca84d3 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_a.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['occupancygrid_0',['OccupancyGrid',['../classrtabmap_1_1OccupancyGrid.html',1,'rtabmap']]], + ['octomap_1',['OctoMap',['../classrtabmap_1_1OctoMap.html',1,'rtabmap']]], + ['odometry_2',['Odometry',['../classrtabmap_1_1Odometry.html',1,'rtabmap']]], + ['odometrycuvslam_3',['OdometryCuVSLAM',['../classrtabmap_1_1OdometryCuVSLAM.html',1,'rtabmap']]], + ['odometrydvo_4',['OdometryDVO',['../classrtabmap_1_1OdometryDVO.html',1,'rtabmap']]], + ['odometryevent_5',['OdometryEvent',['../classrtabmap_1_1OdometryEvent.html',1,'rtabmap']]], + ['odometryf2f_6',['OdometryF2F',['../classrtabmap_1_1OdometryF2F.html',1,'rtabmap']]], + ['odometryf2m_7',['OdometryF2M',['../classrtabmap_1_1OdometryF2M.html',1,'rtabmap']]], + ['odometryfloam_8',['OdometryFLOAM',['../classrtabmap_1_1OdometryFLOAM.html',1,'rtabmap']]], + ['odometryfovis_9',['OdometryFovis',['../classrtabmap_1_1OdometryFovis.html',1,'rtabmap']]], + ['odometryinfo_10',['OdometryInfo',['../classrtabmap_1_1OdometryInfo.html',1,'rtabmap']]], + ['odometryliosam_11',['OdometryLIOSAM',['../classrtabmap_1_1OdometryLIOSAM.html',1,'rtabmap']]], + ['odometryloam_12',['OdometryLOAM',['../classrtabmap_1_1OdometryLOAM.html',1,'rtabmap']]], + ['odometrymono_13',['OdometryMono',['../classrtabmap_1_1OdometryMono.html',1,'rtabmap']]], + ['odometrymsckf_14',['OdometryMSCKF',['../classrtabmap_1_1OdometryMSCKF.html',1,'rtabmap']]], + ['odometryokvis_15',['OdometryOkvis',['../classrtabmap_1_1OdometryOkvis.html',1,'rtabmap']]], + ['odometryopen3d_16',['OdometryOpen3D',['../classrtabmap_1_1OdometryOpen3D.html',1,'rtabmap']]], + ['odometryopenvins_17',['OdometryOpenVINS',['../classrtabmap_1_1OdometryOpenVINS.html',1,'rtabmap']]], + ['odometryorbslam2_18',['OdometryORBSLAM2',['../classrtabmap_1_1OdometryORBSLAM2.html',1,'rtabmap']]], + ['odometryorbslam3_19',['OdometryORBSLAM3',['../classrtabmap_1_1OdometryORBSLAM3.html',1,'rtabmap']]], + ['odometryresetevent_20',['OdometryResetEvent',['../classrtabmap_1_1OdometryResetEvent.html',1,'rtabmap']]], + ['odometrythread_21',['OdometryThread',['../classrtabmap_1_1OdometryThread.html',1,'rtabmap']]], + ['odometryvinsfusion_22',['OdometryVINSFusion',['../classrtabmap_1_1OdometryVINSFusion.html',1,'rtabmap']]], + ['odometryviso2_23',['OdometryViso2',['../classrtabmap_1_1OdometryViso2.html',1,'rtabmap']]], + ['optimizer_24',['Optimizer',['../classrtabmap_1_1Optimizer.html',1,'rtabmap']]], + ['optimizerceres_25',['OptimizerCeres',['../classrtabmap_1_1OptimizerCeres.html',1,'rtabmap']]], + ['optimizercvsba_26',['OptimizerCVSBA',['../classrtabmap_1_1OptimizerCVSBA.html',1,'rtabmap']]], + ['optimizerg2o_27',['OptimizerG2O',['../classrtabmap_1_1OptimizerG2O.html',1,'rtabmap']]], + ['optimizergtsam_28',['OptimizerGTSAM',['../classrtabmap_1_1OptimizerGTSAM.html',1,'rtabmap']]], + ['optimizertoro_29',['OptimizerTORO',['../classrtabmap_1_1OptimizerTORO.html',1,'rtabmap']]], + ['orb_30',['ORB',['../classrtabmap_1_1ORB.html',1,'rtabmap']]], + ['orboctree_31',['ORBOctree',['../classrtabmap_1_1ORBOctree.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_b.js b/preview/pr-1773/api/latest/search/classes_b.js new file mode 100644 index 00000000..83a8b517 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_b.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['parameters_0',['Parameters',['../classrtabmap_1_1Parameters.html',1,'rtabmap']]], + ['paramevent_1',['ParamEvent',['../classrtabmap_1_1ParamEvent.html',1,'rtabmap']]], + ['particlefilter_2',['ParticleFilter',['../classrtabmap_1_1ParticleFilter.html',1,'rtabmap']]], + ['pointxyzirt_3',['PointXYZIRT',['../structrtabmap_1_1PointXYZIRT.html',1,'rtabmap']]], + ['pointxyzit_4',['PointXYZIT',['../structrtabmap_1_1PointXYZIT.html',1,'rtabmap']]], + ['progressstate_5',['ProgressState',['../classrtabmap_1_1ProgressState.html',1,'rtabmap']]], + ['projectivepoint_6',['ProjectivePoint',['../classclams_1_1ProjectivePoint.html',1,'clams']]], + ['pythoninterface_7',['PythonInterface',['../classrtabmap_1_1PythonInterface.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_c.js b/preview/pr-1773/api/latest/search/classes_c.js new file mode 100644 index 00000000..c355cf43 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_c.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['registration_0',['Registration',['../classrtabmap_1_1Registration.html',1,'rtabmap']]], + ['registrationicp_1',['RegistrationIcp',['../classrtabmap_1_1RegistrationIcp.html',1,'rtabmap']]], + ['registrationinfo_2',['RegistrationInfo',['../classrtabmap_1_1RegistrationInfo.html',1,'rtabmap']]], + ['registrationvis_3',['RegistrationVis',['../classrtabmap_1_1RegistrationVis.html',1,'rtabmap']]], + ['rtabmap_4',['Rtabmap',['../classrtabmap_1_1Rtabmap.html',1,'rtabmap']]], + ['rtabmapcoloroctree_5',['RtabmapColorOcTree',['../classrtabmap_1_1RtabmapColorOcTree.html',1,'rtabmap']]], + ['rtabmapcoloroctreenode_6',['RtabmapColorOcTreeNode',['../classrtabmap_1_1RtabmapColorOcTreeNode.html',1,'rtabmap']]], + ['rtabmapevent_7',['RtabmapEvent',['../classrtabmap_1_1RtabmapEvent.html',1,'rtabmap']]], + ['rtabmapevent3dmap_8',['RtabmapEvent3DMap',['../classrtabmap_1_1RtabmapEvent3DMap.html',1,'rtabmap']]], + ['rtabmapeventcmd_9',['RtabmapEventCmd',['../classrtabmap_1_1RtabmapEventCmd.html',1,'rtabmap']]], + ['rtabmapeventinit_10',['RtabmapEventInit',['../classrtabmap_1_1RtabmapEventInit.html',1,'rtabmap']]], + ['rtabmapglobalpathevent_11',['RtabmapGlobalPathEvent',['../classrtabmap_1_1RtabmapGlobalPathEvent.html',1,'rtabmap']]], + ['rtabmapgoalstatusevent_12',['RtabmapGoalStatusEvent',['../classrtabmap_1_1RtabmapGoalStatusEvent.html',1,'rtabmap']]], + ['rtabmaplabelerrorevent_13',['RtabmapLabelErrorEvent',['../classrtabmap_1_1RtabmapLabelErrorEvent.html',1,'rtabmap']]], + ['rtabmapthread_14',['RtabmapThread',['../classrtabmap_1_1RtabmapThread.html',1,'rtabmap']]], + ['rvlcodec_15',['RvlCodec',['../classrtabmap_1_1RvlCodec.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_d.js b/preview/pr-1773/api/latest/search/classes_d.js new file mode 100644 index 00000000..1ff5851e --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_d.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['sensorcapture_0',['SensorCapture',['../classrtabmap_1_1SensorCapture.html',1,'rtabmap']]], + ['sensorcaptureinfo_1',['SensorCaptureInfo',['../classrtabmap_1_1SensorCaptureInfo.html',1,'rtabmap']]], + ['sensorcapturethread_2',['SensorCaptureThread',['../classrtabmap_1_1SensorCaptureThread.html',1,'rtabmap']]], + ['sensordata_3',['SensorData',['../classrtabmap_1_1SensorData.html',1,'rtabmap']]], + ['sensorevent_4',['SensorEvent',['../classrtabmap_1_1SensorEvent.html',1,'rtabmap']]], + ['sift_5',['SIFT',['../classrtabmap_1_1SIFT.html',1,'rtabmap']]], + ['signature_6',['Signature',['../classrtabmap_1_1Signature.html',1,'rtabmap']]], + ['staticmemberinitializer_7',['StaticMemberInitializer',['../classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html',1,'rtabmap::RtabmapColorOcTree']]], + ['statistics_8',['Statistics',['../classrtabmap_1_1Statistics.html',1,'rtabmap']]], + ['stereo_9',['Stereo',['../classrtabmap_1_1Stereo.html',1,'rtabmap']]], + ['stereobm_10',['StereoBM',['../classrtabmap_1_1StereoBM.html',1,'rtabmap']]], + ['stereocameramodel_11',['StereoCameraModel',['../classrtabmap_1_1StereoCameraModel.html',1,'rtabmap']]], + ['stereodense_12',['StereoDense',['../classrtabmap_1_1StereoDense.html',1,'rtabmap']]], + ['stereoopticalflow_13',['StereoOpticalFlow',['../classrtabmap_1_1StereoOpticalFlow.html',1,'rtabmap']]], + ['stereosgbm_14',['StereoSGBM',['../classrtabmap_1_1StereoSGBM.html',1,'rtabmap']]], + ['superpointrpautrat_15',['SuperPointRpautrat',['../classrtabmap_1_1SuperPointRpautrat.html',1,'rtabmap']]], + ['superpointtorch_16',['SuperPointTorch',['../classrtabmap_1_1SuperPointTorch.html',1,'rtabmap']]], + ['surf_17',['SURF',['../classrtabmap_1_1SURF.html',1,'rtabmap']]], + ['surf_5fdaisy_18',['SURF_DAISY',['../classrtabmap_1_1SURF__DAISY.html',1,'rtabmap']]], + ['surf_5ffreak_19',['SURF_FREAK',['../classrtabmap_1_1SURF__FREAK.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_e.js b/preview/pr-1773/api/latest/search/classes_e.js new file mode 100644 index 00000000..0082b32f --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['transform_0',['Transform',['../classrtabmap_1_1Transform.html',1,'rtabmap']]], + ['transformstamped_1',['TransformStamped',['../classrtabmap_1_1TransformStamped.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/classes_f.js b/preview/pr-1773/api/latest/search/classes_f.js new file mode 100644 index 00000000..f86549d7 --- /dev/null +++ b/preview/pr-1773/api/latest/search/classes_f.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['udestroyer_0',['UDestroyer',['../classUDestroyer.html',1,'']]], + ['udestroyer_3c_20ueventsmanager_20_3e_1',['UDestroyer< UEventsManager >',['../classUDestroyer.html',1,'']]], + ['udestroyer_3c_20ulogger_20_3e_2',['UDestroyer< ULogger >',['../classUDestroyer.html',1,'']]], + ['udirectory_3',['UDirectory',['../classUDirectory.html',1,'']]], + ['uevent_4',['UEvent',['../classUEvent.html',1,'']]], + ['ueventdispatcher_5',['UEventDispatcher',['../classUEventDispatcher.html',1,'']]], + ['ueventshandler_6',['UEventsHandler',['../classUEventsHandler.html',1,'']]], + ['ueventsmanager_7',['UEventsManager',['../classUEventsManager.html',1,'']]], + ['ueventssender_8',['UEventsSender',['../classUEventsSender.html',1,'']]], + ['uexception_9',['UException',['../classUException.html',1,'']]], + ['ufile_10',['UFile',['../classUFile.html',1,'']]], + ['ulogevent_11',['ULogEvent',['../classULogEvent.html',1,'']]], + ['ulogger_12',['ULogger',['../classULogger.html',1,'']]], + ['umutex_13',['UMutex',['../classUMutex.html',1,'']]], + ['uobjdeletedevent_14',['UObjDeletedEvent',['../classUObjDeletedEvent.html',1,'']]], + ['uobjdeletionthread_15',['UObjDeletionThread',['../classUObjDeletionThread.html',1,'']]], + ['uprocessinfo_16',['UProcessInfo',['../classUProcessInfo.html',1,'']]], + ['uscopemutex_17',['UScopeMutex',['../classUScopeMutex.html',1,'']]], + ['usemaphore_18',['USemaphore',['../classUSemaphore.html',1,'']]], + ['userdataevent_19',['UserDataEvent',['../classrtabmap_1_1UserDataEvent.html',1,'rtabmap']]], + ['uthread_20',['UThread',['../classUThread.html',1,'']]], + ['uthreadc_21',['UThreadC',['../classUThreadC.html',1,'']]], + ['uthreadc_3c_20void_20_3e_22',['UThreadC< void >',['../classUThreadC_3_01void_01_4.html',1,'']]], + ['utimer_23',['UTimer',['../classUTimer.html',1,'']]], + ['uvariant_24',['UVariant',['../classUVariant.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/close.svg b/preview/pr-1773/api/latest/search/close.svg new file mode 100644 index 00000000..337d6cc1 --- /dev/null +++ b/preview/pr-1773/api/latest/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/preview/pr-1773/api/latest/search/defines_0.js b/preview/pr-1773/api/latest/search/defines_0.js new file mode 100644 index 00000000..1d271bc3 --- /dev/null +++ b/preview/pr-1773/api/latest/search/defines_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['uassert_0',['UASSERT',['../ULogger_8h.html#ab3436168e27946669bbd4c76e4c4007e',1,'ULogger.h']]], + ['udebug_1',['UDEBUG',['../ULogger_8h.html#a9104cb408bf9019db2a2c4476835db4a',1,'ULogger.h']]], + ['uerror_2',['UERROR',['../ULogger_8h.html#a1249ddbc4c9cc43be53048c08dda129b',1,'ULogger.h']]], + ['ufatal_3',['UFATAL',['../ULogger_8h.html#aabc10368a622911d56a4dd5a4b461385',1,'ULogger.h']]], + ['uinfo_4',['UINFO',['../ULogger_8h.html#a5b63c9a1441181723754c0c6084231a8',1,'ULogger.h']]], + ['uwarn_5',['UWARN',['../ULogger_8h.html#ab5a739ad9340455e46eaa570f8223d9a',1,'ULogger.h']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_0.js b/preview/pr-1773/api/latest/search/enums_0.js new file mode 100644 index 00000000..4e12aa41 --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['cmd_0',['Cmd',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801',1,'rtabmap::RtabmapEventCmd']]], + ['code_1',['Code',['../classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66',1,'rtabmap::SensorEvent']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_1.js b/preview/pr-1773/api/latest/search/enums_1.js new file mode 100644 index 00000000..c6566453 --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['flann_5falgorithm_5ft_0',['flann_algorithm_t',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010',1,'rtabmap::FlannIndex']]], + ['format_1',['Format',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007',1,'rtabmap::LaserScan']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_2.js b/preview/pr-1773/api/latest/search/enums_2.js new file mode 100644 index 00000000..72f2f555 --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['icpstrategy_0',['IcpStrategy',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fab',1,'rtabmap::RegistrationIcp']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_3.js b/preview/pr-1773/api/latest/search/enums_3.js new file mode 100644 index 00000000..e849837a --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['level_0',['Level',['../classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218',1,'ULogger']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_4.js b/preview/pr-1773/api/latest/search/enums_4.js new file mode 100644 index 00000000..61563b73 --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nnstrategy_0',['NNStrategy',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655',1,'rtabmap::VWDictionary']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_5.js b/preview/pr-1773/api/latest/search/enums_5.js new file mode 100644 index 00000000..658079fe --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['priority_0',['Priority',['../classUThread.html#a731ef4dd5a8d15abcc06e7cfa53cd153',1,'UThread']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_6.js b/preview/pr-1773/api/latest/search/enums_6.js new file mode 100644 index 00000000..8dfd1d32 --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['state_0',['State',['../classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5fae',1,'rtabmap::RtabmapThread']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_7.js b/preview/pr-1773/api/latest/search/enums_7.js new file mode 100644 index 00000000..e3854d7f --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['type_0',['type',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30f',1,'rtabmap::EnvSensor::Type'],['../classrtabmap_1_1Feature2D.html#a7453189891e489bbcff1f2c971d04fde',1,'rtabmap::Feature2D::Type'],['../classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83',1,'rtabmap::IMUFilter::Type'],['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91e',1,'rtabmap::Link::Type'],['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849',1,'rtabmap::Odometry::Type'],['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16',1,'rtabmap::Optimizer::Type'],['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849',1,'rtabmap::Registration::Type'],['../classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803',1,'rtabmap::StereoDense::Type'],['../classULogger.html#aab74fc95f6494a3a2137d9094fe100d8',1,'ULogger::Type'],['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bd',1,'UVariant::Type']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_8.js b/preview/pr-1773/api/latest/search/enums_8.js new file mode 100644 index 00000000..0164d77e --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uxmatchmethod_0',['UXMatchMethod',['../UMath_8h.html#ae24d0d5b3a1d44ae8c5e50bb86a15cba',1,'UMath.h']]] +]; diff --git a/preview/pr-1773/api/latest/search/enums_9.js b/preview/pr-1773/api/latest/search/enums_9.js new file mode 100644 index 00000000..87c58992 --- /dev/null +++ b/preview/pr-1773/api/latest/search/enums_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vhstrategy_0',['VhStrategy',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568c',1,'rtabmap::Rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/enumvalues_0.js b/preview/pr-1773/api/latest/search/enumvalues_0.js new file mode 100644 index 00000000..a310c65d --- /dev/null +++ b/preview/pr-1773/api/latest/search/enumvalues_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['flann_5findex_5fkdtree_0',['FLANN_INDEX_KDTREE',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a4e3f4b810ce249000373d41046ab273d',1,'rtabmap::FlannIndex']]], + ['flann_5findex_5fkdtree_5fsingle_1',['FLANN_INDEX_KDTREE_SINGLE',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a519b6d4008708066a792ac2929607081',1,'rtabmap::FlannIndex']]], + ['flann_5findex_5flinear_2',['FLANN_INDEX_LINEAR',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010ad91d542360e077f1f119dca41dcef818',1,'rtabmap::FlannIndex']]], + ['flann_5findex_5flsh_3',['FLANN_INDEX_LSH',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a9f4f22cd092844bde159ebc0b004a5c8',1,'rtabmap::FlannIndex']]] +]; diff --git a/preview/pr-1773/api/latest/search/enumvalues_1.js b/preview/pr-1773/api/latest/search/enumvalues_1.js new file mode 100644 index 00000000..3005fe8a --- /dev/null +++ b/preview/pr-1773/api/latest/search/enumvalues_1.js @@ -0,0 +1,131 @@ +var searchData= +[ + ['kallwithlandmarks_0',['kAllWithLandmarks',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eacc2cbab0ea322149df37addb91cb75ac',1,'rtabmap::Link']]], + ['kallwithoutlandmarks_1',['kAllWithoutLandmarks',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae8ffae7407e28cf7a125f76bea2864a5',1,'rtabmap::Link']]], + ['kambientairpressure_2',['kAmbientAirPressure',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa2659626ccc2aa59e2d83a57f34e400f0',1,'rtabmap::EnvSensor']]], + ['kambientlight_3',['kAmbientLight',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa8eee701051a2603e162a65d4948a64d8',1,'rtabmap::EnvSensor']]], + ['kambientrelativehumidity_4',['kAmbientRelativeHumidity',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa7c238626943b1254027ed1b5454ae101',1,'rtabmap::EnvSensor']]], + ['kambienttemperature_5',['kAmbientTemperature',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa9e348acef07abec64edef43b58ea1b83',1,'rtabmap::EnvSensor']]], + ['kbool_6',['kBool',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdac7d8fa7273711e6711880ba9f9d10f62',1,'UVariant']]], + ['kchar_7',['kChar',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda117693c00c89461634dc137ee9a219c4',1,'UVariant']]], + ['kchararray_8',['kCharArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdafecb2dc57006c548e5ab0b59f2062c29',1,'UVariant']]], + ['kcmdcancelgoal_9',['kCmdCancelGoal',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a01628ffc80300d04ed04e92e54ec45ae',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdcleandatabuffer_10',['kCmdCleanDataBuffer',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a708e03e12a54f6525365376bc992e15c',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdclose_11',['kCmdClose',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a38f200b1633df5e59891e739f74dfd18',1,'rtabmap::RtabmapEventCmd']]], + ['kcmddumpmemory_12',['kCmdDumpMemory',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ac502abc00c88395400bf9742c91bdf32',1,'rtabmap::RtabmapEventCmd']]], + ['kcmddumpprediction_13',['kCmdDumpPrediction',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801aa0918b6878ef55d0490414c40f4afea6',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdexportposes_14',['kCmdExportPoses',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a464be1b7dcf88f079ed9a7a2c1100fdd',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdgeneratedotgraph_15',['kCmdGenerateDOTGraph',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ab69181c7e5e81a85ec6f3888f995685d',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdgoal_16',['kCmdGoal',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801aeced93a6e04c8115875c8d0fe588250d',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdinit_17',['kCmdInit',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801af03efbff0b297b981f75f077aac49856',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdlabel_18',['kCmdLabel',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a29d3e98121b70d06e0ca342cb3bcda4c',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdpause_19',['kCmdPause',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a29a4641069f4cd19a332982291f63e57',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdpublish3dmap_20',['kCmdPublish3DMap',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a8bdd31ff2a969a5f73c86a14e5192fcc',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdremovelabel_21',['kCmdRemoveLabel',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801ad140704bb865de92427860545738bf7f',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdrepublishdata_22',['kCmdRepublishData',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a6c0888430b821a9b6094c66a6f42d9cf',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdresetmemory_23',['kCmdResetMemory',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a02ced1d9f6f5c6210277b19d3b8bcdd9',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdresume_24',['kCmdResume',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801abf715ad034353e5eaeb424c638aff0df',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdtriggernewmap_25',['kCmdTriggerNewMap',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801af522eca014994dec79657ed6efff7fee',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdundef_26',['kCmdUndef',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801a45df53bd895e7ae01cc2d5b684068fb2',1,'rtabmap::RtabmapEventCmd']]], + ['kcmdupdateparams_27',['kCmdUpdateParams',['../classrtabmap_1_1RtabmapEventCmd.html#ae54b1ecc5d6df8b032a89f5b24876801afc8f39bbe51260a2743dc2b8dfc2b6f3',1,'rtabmap::RtabmapEventCmd']]], + ['kcodedata_28',['kCodeData',['../classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66a96386fbcb6a0fd382113f188c193ed61',1,'rtabmap::SensorEvent']]], + ['kcodenomoreimages_29',['kCodeNoMoreImages',['../classrtabmap_1_1SensorEvent.html#a8a1c7b859ae730c1e0ade9fa5e302a66a377f61ebd393e5db46b02121270abdf2',1,'rtabmap::SensorEvent']]], + ['kcomplementaryfilter_30',['kComplementaryFilter',['../classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83a13d263540bc4ee0b91102547c8eb1ae2',1,'rtabmap::IMUFilter']]], + ['kcustomsensor1_31',['kCustomSensor1',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa88e60173d5f413f4ab490a99c034453e',1,'rtabmap::EnvSensor']]], + ['kcustomsensor2_32',['kCustomSensor2',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa9bb90358c0c69177bb8a918cd38aee8a',1,'rtabmap::EnvSensor']]], + ['kcustomsensor3_33',['kCustomSensor3',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa7bcfccab26830a87edcf9dbf7d7b166b',1,'rtabmap::EnvSensor']]], + ['kcustomsensor4_34',['kCustomSensor4',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa53762a7b85a4a07845e8c447e0ba19e7',1,'rtabmap::EnvSensor']]], + ['kcustomsensor5_35',['kCustomSensor5',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fafd5342a456a7e150c2d7598a7b297c92',1,'rtabmap::EnvSensor']]], + ['kcustomsensor6_36',['kCustomSensor6',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30faef0358209e8fe8218ab939fa9ab4a693',1,'rtabmap::EnvSensor']]], + ['kcustomsensor7_37',['kCustomSensor7',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30faeb1ce734601c915d6a411c76ff4bb8f8',1,'rtabmap::EnvSensor']]], + ['kcustomsensor8_38',['kCustomSensor8',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa24c103c2769770dd36d87e0567be9140',1,'rtabmap::EnvSensor']]], + ['kcustomsensor9_39',['kCustomSensor9',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa669f9ca8a243a813b981ff2b672b0f89',1,'rtabmap::EnvSensor']]], + ['kdouble_40',['kDouble',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2b55c7ccdc00fd1d99247cf4c22283fd',1,'UVariant']]], + ['kdoublearray_41',['kDoubleArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda572a22c911f2d6525d10d6fec2371a7b',1,'UVariant']]], + ['kend_42',['kEnd',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eaa071317c0618d61e3b2cde25e1095c00',1,'rtabmap::Link']]], + ['kfloat_43',['kFloat',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdab133726c8e281b1f873b68d28652cbaf',1,'UVariant']]], + ['kfloatarray_44',['kFloatArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda11179285157ee27026c6b7a3a257dec2',1,'UVariant']]], + ['kglobalclosure_45',['kGlobalClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae963042a31afec63e8c0683696ac6791',1,'rtabmap::Link']]], + ['kgravity_46',['kGravity',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea37d186f2447908a27d531be74a2f6983',1,'rtabmap::Link']]], + ['kicpcccorelib_47',['kIcpCCCoreLib',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3faba0f8b0cfe29412a3d66af5eb19dd7c0db',1,'rtabmap::RegistrationIcp']]], + ['kicpend_48',['kIcpEnd',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabaf6639ca6ae5f75d631dbbf7f61455881',1,'rtabmap::RegistrationIcp']]], + ['kicppcl_49',['kIcpPCL',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabafd4289953af3132d6d334fb438f22ace',1,'rtabmap::RegistrationIcp']]], + ['kicppointmatcher_50',['kIcpPointMatcher',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabac978d96078e7e0209d4a25894de3c805',1,'rtabmap::RegistrationIcp']]], + ['kicpundef_51',['kIcpUndef',['../classrtabmap_1_1RegistrationIcp.html#a59f6aec4f68d2f7402253c942bfe3fabadebfaf4d0822a35b7b56f37f9c133327',1,'rtabmap::RegistrationIcp']]], + ['kint_52',['kInt',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda85bd9103b3bbb3a0f1f66949fea50952',1,'UVariant']]], + ['kintarray_53',['kIntArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda5e558d8d7cb6b8791c58a0eb3ff46e5c',1,'UVariant']]], + ['klandmark_54',['kLandmark',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea22912bbbcacce5ee39e61da7ec4640b9',1,'rtabmap::Link']]], + ['klocalspaceclosure_55',['kLocalSpaceClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea9195217dc75001841fce507de43fb0db',1,'rtabmap::Link']]], + ['klocaltimeclosure_56',['kLocalTimeClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eae0b352e9cbb32d357ce59f09159c09fb',1,'rtabmap::Link']]], + ['kmadgwick_57',['kMadgwick',['../classrtabmap_1_1IMUFilter.html#a1332e06cbd6b83c0532e6d71523cdb83aa1f642678d0846f51590e4f69a585c09',1,'rtabmap::IMUFilter']]], + ['kneighbor_58',['kNeighbor',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8f60efd83d5fad3493573bef3d4a8adf',1,'rtabmap::Link']]], + ['kneighbormerged_59',['kNeighborMerged',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8fbb6dbe2d16e19ad8fecb6bac65e9db',1,'rtabmap::Link']]], + ['knnbruteforce_60',['kNNBruteForce',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a1745dd334296b8a41cf0c88dcc8a7d5d',1,'rtabmap::VWDictionary']]], + ['knnbruteforcegpu_61',['kNNBruteForceGPU',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a602d99d5bdef453a39339a0b45979451',1,'rtabmap::VWDictionary']]], + ['knnflannkdtree_62',['kNNFlannKdTree',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655aaa1ea80fc9ca8809ad9b959e2e1564c5',1,'rtabmap::VWDictionary']]], + ['knnflannkdtreesingle_63',['kNNFlannKdTreeSingle',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a994442dbb17b48ba9a9315edee24a7a1',1,'rtabmap::VWDictionary']]], + ['knnflannlsh_64',['kNNFlannLSH',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a89ab72d0bccd61bb11abbd1edf1e6992',1,'rtabmap::VWDictionary']]], + ['knnflannnaive_65',['kNNFlannNaive',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655ae4301e202dd36e997bf3298390c667f0',1,'rtabmap::VWDictionary']]], + ['knnnanoflannkdtree_66',['kNNNanoFlannKdTree',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655a306c8d555b740267fa80a1ee673ef7c7',1,'rtabmap::VWDictionary']]], + ['knnundef_67',['kNNUndef',['../classrtabmap_1_1VWDictionary.html#a9466840dd5ad3dc914543a97421c3655afeba67ed0aafc39aa35b2a194e147ff9',1,'rtabmap::VWDictionary']]], + ['kposeprior_68',['kPosePrior',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea56caa6c8eeab867bb16f763f3ddbd9b1',1,'rtabmap::Link']]], + ['kselfreflink_69',['kSelfRefLink',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ead52adb0176a83a02833e89111f66497e',1,'rtabmap::Link']]], + ['kshort_70',['kShort',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda310a497e7d9c43297d960e2cd20d1fc0',1,'UVariant']]], + ['kshortarray_71',['kShortArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2e9032fc740ad542d18512b5b0d57a6f',1,'UVariant']]], + ['kstatedetecting_72',['kStateDetecting',['../classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5faea733e80c5ec27718bd9551646f99d352c',1,'rtabmap::RtabmapThread']]], + ['kstateprocesscommand_73',['kStateProcessCommand',['../classrtabmap_1_1RtabmapThread.html#a037a7b9aaacca152e0f087920e8a5faeab07a30b69b21efdccbb6c040a5208001',1,'rtabmap::RtabmapThread']]], + ['kstr_74',['kStr',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bdac20f34d5dd5370a8aeb9665c465417dc',1,'UVariant']]], + ['ktypebm_75',['kTypeBM',['../classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803a393267c04896dd353dc66ade56c8d5f1',1,'rtabmap::StereoDense']]], + ['ktypeceres_76',['kTypeCeres',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a891b6c7cbbe5e149e583ac1fc14fc91d',1,'rtabmap::Optimizer']]], + ['ktypecuvslam_77',['kTypeCuVSLAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849aba6f673ce43f5dfe5c1eecb303f55049',1,'rtabmap::Odometry']]], + ['ktypecvsba_78',['kTypeCVSBA',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a53545e83af9618cb4d39cf0420b3cd54',1,'rtabmap::Optimizer']]], + ['ktypedvo_79',['kTypeDVO',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a7fccdbc59d38d39f4de1253063d79a59',1,'rtabmap::Odometry']]], + ['ktypef2f_80',['kTypeF2F',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a81b73f734f25e9bef50a979ef6d9f662',1,'rtabmap::Odometry']]], + ['ktypef2m_81',['kTypeF2M',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ac585174ece227de554ed25a51835d3d0',1,'rtabmap::Odometry']]], + ['ktypefloam_82',['kTypeFLOAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849abb9a5bbb18e4ab77c1dac6cc2fe73a68',1,'rtabmap::Odometry']]], + ['ktypefovis_83',['kTypeFovis',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849aeb8888885eaa7c907a98537c7a463b8b',1,'rtabmap::Odometry']]], + ['ktypeg2o_84',['kTypeG2O',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16aa4d070fe00ba5e81adbc958bad18d853',1,'rtabmap::Optimizer']]], + ['ktypegtsam_85',['kTypeGTSAM',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16ab71c83617497f5da0607a47ab162630f',1,'rtabmap::Optimizer']]], + ['ktypeicp_86',['kTypeIcp',['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a8638e369c895a337f587e727e1a712ab',1,'rtabmap::Registration']]], + ['ktypeliosam_87',['kTypeLIOSAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ac13bb66a69e4790bfa574c8a0c6c9975',1,'rtabmap::Odometry']]], + ['ktypeloam_88',['kTypeLOAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849abf68726d1b5239c24ce447ceafd221aa',1,'rtabmap::Odometry']]], + ['ktypemsckf_89',['kTypeMSCKF',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a1de4ebe3cb3470d17d615e86ac791225',1,'rtabmap::Odometry']]], + ['ktypeokvis_90',['kTypeOkvis',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a175924a6dd1fdfb2e162093c5a2a867b',1,'rtabmap::Odometry']]], + ['ktypeopen3d_91',['kTypeOpen3D',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ab30949269c652911c3d8c5274ad84041',1,'rtabmap::Odometry']]], + ['ktypeopenvins_92',['kTypeOpenVINS',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a9e760521384d881e2fafcc008193f65a',1,'rtabmap::Odometry']]], + ['ktypeorbslam_93',['kTypeORBSLAM',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a32b913af77b8df59d89aa226cbdf5e9b',1,'rtabmap::Odometry']]], + ['ktypesgbm_94',['kTypeSGBM',['../classrtabmap_1_1StereoDense.html#a54329152938c4ca1f259dcb8fa7d8803abf3465f1ebb12576596dc4b605c1ffae',1,'rtabmap::StereoDense']]], + ['ktypetoro_95',['kTypeTORO',['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16a6065bdb6e49c0f5ffc98d5f2f6b0d5ab',1,'rtabmap::Optimizer']]], + ['ktypeundef_96',['ktypeundef',['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a1e25205ebb65fe2315a0b7050e613c6d',1,'rtabmap::Registration::kTypeUndef'],['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a7e81a250626fd76729fa01fb7b40fde5',1,'rtabmap::Odometry::kTypeUndef'],['../classrtabmap_1_1Optimizer.html#a18ae8ac76346d1adc68ab176a5b02d16abae75975865bff7e12e82d2f5295e0db',1,'rtabmap::Optimizer::kTypeUndef']]], + ['ktypevinsfusion_97',['kTypeVINSFusion',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849a1e148f21361b3e46d6ea7c83ac35a7a4',1,'rtabmap::Odometry']]], + ['ktypevis_98',['kTypeVis',['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849a8e6dbf98a9a843c34d16b8c7e546c724',1,'rtabmap::Registration']]], + ['ktypevisicp_99',['kTypeVisIcp',['../classrtabmap_1_1Registration.html#ae693713cd8b7ece4b147eae99880b849ad03189dad590b6e2d81adbc7d20bf662',1,'rtabmap::Registration']]], + ['ktypeviso2_100',['kTypeViso2',['../classrtabmap_1_1Odometry.html#a6427d44c57fd6b7152b62d5b7cca1849ab788cd11e7f6906987e33c0189a5c367',1,'rtabmap::Odometry']]], + ['kuchar_101',['kUChar',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda017bb86f2bbfc9c10fc082890fdd3c9e',1,'UVariant']]], + ['kuchararray_102',['kUCharArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda6ae60f887effac25862b2e70692aabe4',1,'UVariant']]], + ['kuint_103',['kUInt',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda4ea55b31fb308080d00de2437717a13c',1,'UVariant']]], + ['kuintarray_104',['kUIntArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda1b015c8ec9bcab8fca0734749cba4f3d',1,'UVariant']]], + ['kundef_105',['kundef',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea8a720d632258ba1b468af0319ae8e7d4',1,'rtabmap::Link::kUndef'],['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda4592761da391696a37f01f792c65f750',1,'UVariant::kUndef']]], + ['kundefined_106',['kUndefined',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fad06ac95d82e3fceb18e1f3dfd190931a',1,'rtabmap::EnvSensor']]], + ['kunknown_107',['kUnknown',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a068e1caebd3d8c939887dce363abd24d',1,'rtabmap::LaserScan']]], + ['kuserclosure_108',['kUserClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91ea878009c73fbfa2736f438b748afbc1f6',1,'rtabmap::Link']]], + ['kushort_109',['kUShort',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda558d69cc5a6df93471a3455083bb7c6b',1,'UVariant']]], + ['kushortarray_110',['kUShortArray',['../classUVariant.html#a3d5035d3aaf0b7574acc8765825c37bda2c7450a1f1cf76ef9018e86d3d422245',1,'UVariant']]], + ['kvhepipolar_111',['kVhEpipolar',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568ca1b458648c7dc4ea000ca53e0e384e3c6',1,'rtabmap::Rtabmap']]], + ['kvhnone_112',['kVhNone',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568caea5e55cc106979d91f695c064a78926b',1,'rtabmap::Rtabmap']]], + ['kvhundef_113',['kVhUndef',['../classrtabmap_1_1Rtabmap.html#afa134603fb0835b84f269e48e7ab568cab2676e6cebdd6090d3c87a3237c3e83b',1,'rtabmap::Rtabmap']]], + ['kvirtualclosure_114',['kVirtualClosure',['../classrtabmap_1_1Link.html#a925bb7ca93eb95a3a873b0a9e8d5e91eaf74a4b0552da7509b16f8c4b8baf85c7',1,'rtabmap::Link']]], + ['kwifisignalstrength_115',['kWifiSignalStrength',['../classrtabmap_1_1EnvSensor.html#a1ed69864df2cd8e11429358ba817b30fa1bc42ead6237eb515f301b39e162dee2',1,'rtabmap::EnvSensor']]], + ['kxy_116',['kXY',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a4f3e7340e44a01b48ccaf8e1f8dca3e1',1,'rtabmap::LaserScan']]], + ['kxyi_117',['kXYI',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007abb92c193b2eb76045e1a141c2a42cc00',1,'rtabmap::LaserScan']]], + ['kxyinormal_118',['kXYINormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a799064c7e31b99134871b5d7d2906f97',1,'rtabmap::LaserScan']]], + ['kxynormal_119',['kXYNormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ad4c3ec9f057875ade4f21f52901bceb5',1,'rtabmap::LaserScan']]], + ['kxyz_120',['kXYZ',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a0c376810ac499a8a93a02bd0d4a19267',1,'rtabmap::LaserScan']]], + ['kxyzi_121',['kXYZI',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a5efd7fbf18cee72d9eb2daa4ea818e42',1,'rtabmap::LaserScan']]], + ['kxyzinormal_122',['kXYZINormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a3fdc082afb503bb197e2651b6fc565b8',1,'rtabmap::LaserScan']]], + ['kxyzirt_123',['kXYZIRT',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a7df3c8f97dd52461787060befaf7f2d7',1,'rtabmap::LaserScan']]], + ['kxyzit_124',['kXYZIT',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007ab169cf98665cb3f33d81240b37cc501c',1,'rtabmap::LaserScan']]], + ['kxyznormal_125',['kXYZNormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a09e67f9495016103a162854b8e852bbc',1,'rtabmap::LaserScan']]], + ['kxyzrgb_126',['kXYZRGB',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007a500cf2179e454d8d5a74895b301c0829',1,'rtabmap::LaserScan']]], + ['kxyzrgbnormal_127',['kXYZRGBNormal',['../classrtabmap_1_1LaserScan.html#a38f5602d1411c204d54be9b3c7320007af2d5b7ff94aeac818000d840e257ac07',1,'rtabmap::LaserScan']]] +]; diff --git a/preview/pr-1773/api/latest/search/enumvalues_2.js b/preview/pr-1773/api/latest/search/enumvalues_2.js new file mode 100644 index 00000000..edcbd52e --- /dev/null +++ b/preview/pr-1773/api/latest/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['nanoflann_5findex_5fkdtree_5fsingle_0',['NANOFLANN_INDEX_KDTREE_SINGLE',['../classrtabmap_1_1FlannIndex.html#a88ddfe63de9e9f574ac804ade460f010a4132d1ad7d7b3717b83f71aa60fa39e3',1,'rtabmap::FlannIndex']]] +]; diff --git a/preview/pr-1773/api/latest/search/files_0.js b/preview/pr-1773/api/latest/search/files_0.js new file mode 100644 index 00000000..689b613c --- /dev/null +++ b/preview/pr-1773/api/latest/search/files_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['uconversion_2eh_0',['UConversion.h',['../UConversion_8h.html',1,'']]], + ['ulogger_2eh_1',['ULogger.h',['../ULogger_8h.html',1,'']]], + ['umath_2eh_2',['UMath.h',['../UMath_8h.html',1,'']]], + ['uprocessinfo_2eh_3',['UProcessInfo.h',['../UProcessInfo_8h.html',1,'']]], + ['ustl_2eh_4',['UStl.h',['../UStl_8h.html',1,'']]], + ['uthreadnode_2eh_5',['UThreadNode.h',['../UThreadNode_8h.html',1,'']]], + ['uvariant_2eh_6',['UVariant.h',['../UVariant_8h.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_0.js b/preview/pr-1773/api/latest/search/functions_0.js new file mode 100644 index 00000000..385b22eb --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_0.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['accumulate_0',['accumulate',['../classclams_1_1DiscreteDepthDistortionModel.html#ab9b7555fbf710706d7b94dfcb9ed6399',1,'clams::DiscreteDepthDistortionModel']]], + ['acquire_1',['acquire',['../classUSemaphore.html#a1128f81a47324e6de3946a7719c24223',1,'USemaphore']]], + ['acquiretry_2',['acquireTry',['../classUSemaphore.html#a51a925279a04a54aea3583c4399a744b',1,'USemaphore']]], + ['add_3',['add',['../classrtabmap_1_1LocalGridCache.html#a2e83e9c0c11051b5da84bf04b603a99b',1,'rtabmap::LocalGridCache::add(int nodeId, const cv::Mat &ground, const cv::Mat &obstacles, const cv::Mat &empty, float cellSize, const cv::Point3f &viewPoint=cv::Point3f(0, 0, 0))'],['../classrtabmap_1_1LocalGridCache.html#a765142f021aa580bcfdd84545ebc044f',1,'rtabmap::LocalGridCache::add(int nodeId, const LocalGrid &localGrid)']]], + ['addassemblednode_4',['addAssembledNode',['../classrtabmap_1_1GlobalMap.html#a0b95370df2582da48ff0e1e405cccda2',1,'rtabmap::GlobalMap']]], + ['addednodes_5',['addedNodes',['../classrtabmap_1_1GlobalMap.html#a98c2c10030cfa64c1b72d17f046243f4',1,'rtabmap::GlobalMap']]], + ['addenvsensor_6',['addEnvSensor',['../classrtabmap_1_1SensorData.html#a1006dbcfb640b599f0587af3b0ba46ae',1,'rtabmap::SensorData']]], + ['addexample_7',['addExample',['../classclams_1_1DiscreteFrustum.html#aef183fc7d90c0a6ba3245bccf9fbb616',1,'clams::DiscreteFrustum']]], + ['addglobaldescriptor_8',['addGlobalDescriptor',['../classrtabmap_1_1SensorData.html#acc0ac26f01ad9f5185f80f8f09da252e',1,'rtabmap::SensorData']]], + ['addhandler_9',['addHandler',['../classUEventsManager.html#a3bb033062e4a0eb59efdf5f84d170388',1,'UEventsManager']]], + ['addlandmark_10',['addLandmark',['../classrtabmap_1_1Signature.html#a71621ac6411f778342c23fbc4e695a12',1,'rtabmap::Signature']]], + ['addlink_11',['addlink',['../classrtabmap_1_1DBDriver.html#acfb5fed58aad744050c392a8d346926b',1,'rtabmap::DBDriver::addLink()'],['../classrtabmap_1_1Signature.html#a3bb2e6a8de8e615e51385c4113630f93',1,'rtabmap::Signature::addLink()'],['../classrtabmap_1_1Rtabmap.html#aef03c0d6ee1ef5646ba11be5dbe9faa5',1,'rtabmap::Rtabmap::addLink()'],['../classrtabmap_1_1Memory.html#a4140effa4830fbe679a51e975f0021a1',1,'rtabmap::Memory::addLink()']]], + ['addlinks_12',['addlinks',['../classrtabmap_1_1Signature.html#aa8513c4ecb77c38b95610834c66e893e',1,'rtabmap::Signature::addLinks(const std::list< Link > &links)'],['../classrtabmap_1_1Signature.html#af92465ad9cbfab36ffbc6d372781170c',1,'rtabmap::Signature::addLinks(const std::map< int, Link > &links)']]], + ['addnewwords_13',['addNewWords',['../classrtabmap_1_1VWDictionary.html#a2998a6b11e102a2253ac592acf076841',1,'rtabmap::VWDictionary']]], + ['addnodestorepublish_14',['addNodesToRepublish',['../classrtabmap_1_1Rtabmap.html#a0d2caf505525f635bda914e73aa59232',1,'rtabmap::Rtabmap']]], + ['addpoints_15',['addPoints',['../classrtabmap_1_1FlannIndex.html#a8bd8312e92376d6bf2885907f5d93c68',1,'rtabmap::FlannIndex']]], + ['addref_16',['addRef',['../classrtabmap_1_1VisualWord.html#a5826c6a57f9115e6766bb60e2628fe30',1,'rtabmap::VisualWord']]], + ['addsignaturedata_17',['addSignatureData',['../classrtabmap_1_1Statistics.html#a55748a17bc6348a83dc184fb1b2631fd',1,'rtabmap::Statistics']]], + ['addstatistic_18',['addStatistic',['../classrtabmap_1_1Statistics.html#a24d85beaf52fd03ad67c6d9d417efd79',1,'rtabmap::Statistics']]], + ['addstatistics_19',['addStatistics',['../classrtabmap_1_1DBDriver.html#a4dbccd0dabf72da724488692b1713832',1,'rtabmap::DBDriver']]], + ['addword_20',['addWord',['../classrtabmap_1_1VWDictionary.html#ad464ad961b0e4d4cd6dd7895e9ff3d59',1,'rtabmap::VWDictionary']]], + ['addwordref_21',['addWordRef',['../classrtabmap_1_1VWDictionary.html#aea2f0d043d043df37258dc225c62edec',1,'rtabmap::VWDictionary']]], + ['adjustlikelihood_22',['adjustLikelihood',['../classrtabmap_1_1Rtabmap.html#aad648f09bb04b193907528987ccda413',1,'rtabmap::Rtabmap']]], + ['aggregate_23',['aggregate',['../namespacertabmap_1_1util3d.html#acc3c59044fcfdb8cc1fba8a41a0e9eab',1,'rtabmap::util3d']]], + ['allnodesinwm_24',['allNodesInWM',['../classrtabmap_1_1Memory.html#a2098205b805bde66a4a57906a8ca95f5',1,'rtabmap::Memory']]], + ['altitude_25',['altitude',['../classrtabmap_1_1GeodeticCoords.html#a3a0d110deb25400137d4fe552742970a',1,'rtabmap::GeodeticCoords::altitude()'],['../classrtabmap_1_1GPS.html#a50ae4bb38ab5dc1fef49ff367b602adc',1,'rtabmap::GPS::altitude()']]], + ['angularvelocity_26',['angularVelocity',['../classrtabmap_1_1IMU.html#ad0160a803d2005f3f4db27c402e6bceb',1,'rtabmap::IMU']]], + ['angularvelocitycovariance_27',['angularVelocityCovariance',['../classrtabmap_1_1IMU.html#a660c82c641525ff24aefa7e03ebf7d4a',1,'rtabmap::IMU']]], + ['assemble_28',['assemble',['../classrtabmap_1_1CloudMap.html#a58b2f9f2a99fe3ab14ba73603e3d4f68',1,'rtabmap::CloudMap::assemble()'],['../classrtabmap_1_1GridMap.html#a57ad9df30e61345ec23a45bcda0f2e93',1,'rtabmap::GridMap::assemble()'],['../classrtabmap_1_1OccupancyGrid.html#a4e83e17bca353cd46097c14779119ffd',1,'rtabmap::OccupancyGrid::assemble()'],['../classrtabmap_1_1OctoMap.html#ac74a308322f3162307bfe73bfd60c2dd',1,'rtabmap::OctoMap::assemble()'],['../classrtabmap_1_1GlobalMap.html#ae622850e2447bf1cc3e99ee9dcd4b65f',1,'rtabmap::GlobalMap::assemble(const std::list< std::pair< int, Transform > > &newPoses)=0']]], + ['assemblednodes_29',['assembledNodes',['../classrtabmap_1_1GlobalMap.html#a7fc3f43e65401d3842419066242e081d',1,'rtabmap::GlobalMap']]], + ['asyncsave_30',['asyncsave',['../classrtabmap_1_1DBDriver.html#ad1510e157f3ab8df3284528369a6d88f',1,'rtabmap::DBDriver::asyncSave(Signature *s)'],['../classrtabmap_1_1DBDriver.html#a88eee22aa9707a6993f734fe29f6af5d',1,'rtabmap::DBDriver::asyncSave(VisualWord *vw)']]], + ['available_31',['available',['../classrtabmap_1_1RegistrationIcp.html#a892ab46eff4e5b0b16bee7d93fa3ba56',1,'rtabmap::RegistrationIcp']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_1.js b/preview/pr-1773/api/latest/search/functions_1.js new file mode 100644 index 00000000..aa3a3974 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['backwardcompatibility_0',['backwardcompatibility',['../classrtabmap_1_1LaserScan.html#aafea81eab365a2fc2b4f90d8deceafc9',1,'rtabmap::LaserScan::backwardCompatibility(const cv::Mat &oldScanFormat, int maxPoints=0, int maxRange=0, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1LaserScan.html#a61e1fefc6554dd6fc1da3c2e5aeefd0c',1,'rtabmap::LaserScan::backwardCompatibility(const cv::Mat &oldScanFormat, float minRange, float maxRange, float angleMin, float angleMax, float angleInc, const Transform &localTransform=Transform::getIdentity())']]], + ['baseline_1',['baseline',['../classrtabmap_1_1StereoCameraModel.html#a8dc48f95fcf68eb81da96941f778535f',1,'rtabmap::StereoCameraModel']]], + ['bayesfilter_2',['BayesFilter',['../classrtabmap_1_1BayesFilter.html#a2955edc4b79110b5bd1bd03f1616056e',1,'rtabmap::BayesFilter']]], + ['bearing_3',['bearing',['../classrtabmap_1_1GPS.html#a9285c1d2e97f83dc0b8df3666b912169',1,'rtabmap::GPS']]], + ['brightnessandcontrastauto_4',['brightnessAndContrastAuto',['../namespacertabmap_1_1util2d.html#a89ec90b2659c764ba22b5c36d729c8f8',1,'rtabmap::util2d']]], + ['buildindex_5',['buildIndex',['../classrtabmap_1_1FlannIndex.html#aad2f29314c6b021d1c53217a7a041521',1,'rtabmap::FlannIndex']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_10.js b/preview/pr-1773/api/latest/search/functions_10.js new file mode 100644 index 00000000..e2f6b4e0 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_10.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['r_0',['r',['../classrtabmap_1_1StereoCameraModel.html#a7afd347afb3909a2039f154b3a048035',1,'rtabmap::StereoCameraModel::R()'],['../classrtabmap_1_1CameraModel.html#ad763246258ddf02c27873c2536901781',1,'rtabmap::CameraModel::R()']]], + ['r11_1',['r11',['../classrtabmap_1_1Transform.html#a1ea4c945ccf717677606fc7fe0331ccf',1,'rtabmap::Transform']]], + ['radiusfiltering_2',['radiusfiltering',['../group__RadiusFiltering.html#ga9e4ddb084f4c00934f65f30d8b466047',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga4a5c1b3dd17782eed6ff342a27ab9dde',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga3b3ef1e4b2893810542c6c2be871fa16',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gaa1328e1ba793b44a450fe90e4e99fa35',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga4f7bd9bc6922f17815109375fc11367b',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga21f5957a6c6b8dd2ca7e559ed8a82d08',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gae6562a12f695af7fc210043c85afeebc',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gaa6e6e945a27057824168aa287670d641',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gadc01992dd4ebc7fe77f40e423ba83f95',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gafba9a36653f1314aa968966f5e8f8df6',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#gada185029395a374e08162d2b357406a8',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)'],['../group__RadiusFiltering.html#ga8fde7163c8ede34584e464909f8410cd',1,'rtabmap::util3d::radiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float radiusSearch, int minNeighborsInRadius)']]], + ['radiusposesclustering_3',['radiusPosesClustering',['../namespacertabmap_1_1graph.html#acaf3e4ffcfc830747c3c3cb02a8ea155',1,'rtabmap::graph']]], + ['radiusposesfiltering_4',['radiusPosesFiltering',['../namespacertabmap_1_1graph.html#a1906b8b4ad4b7ffc955d22c4996b1506',1,'rtabmap::graph']]], + ['radiussearch_5',['radiusSearch',['../classrtabmap_1_1FlannIndex.html#a28052e827934cfbc6a9ce14f8b5714df',1,'rtabmap::FlannIndex']]], + ['randomsampling_6',['randomsampling',['../group__RandomSampling.html#ga7738134d7dec8f178a927dfe69fcb15a',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#ga8dadcd7fb9beedc839b54079c6e84701',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#gaf323d2f6db341f7dd83893297b1f9693',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#gac4f1ee370a918987a847d5d604601837',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#gad6269088b589b735fd87e07d11bf2547',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int samples)'],['../group__RandomSampling.html#ga5e31a5d57029fddd20e5d57ecdfb1184',1,'rtabmap::util3d::randomSampling(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int samples)']]], + ['rangefiltering_7',['rangefiltering',['../namespacertabmap_1_1util3d.html#ae33bcf90896fbedc448097bed3bde0ae',1,'rtabmap::util3d::rangeFiltering(const LaserScan &scan, float rangeMin, float rangeMax)'],['../group__PointCloudRangeFiltering.html#gaf1867021c847f77f561a96e4823a16bd',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)'],['../group__PointCloudRangeFiltering.html#gaeff3b4153a78703ce5be9c64f8243596',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)'],['../group__PointCloudRangeFiltering.html#ga2a2226e27b4203d04293f84bf8032e3f',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)'],['../group__PointCloudRangeFiltering.html#ga954c38903497ffa168e9d58afc47078e',1,'rtabmap::util3d::rangeFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float rangeMin, float rangeMax)']]], + ['rangesplitfiltering_8',['rangesplitfiltering',['../group__PointCloudSplitRangeFiltering.html#ga843adb51ad7882fc8c6b8d00f4663c3b',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)'],['../group__PointCloudSplitRangeFiltering.html#ga2dfe5eefc31a50912297f6341eae4446',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)'],['../group__PointCloudSplitRangeFiltering.html#gac9564b3cf8c8be2f80a20655f70af4f0',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)'],['../group__PointCloudSplitRangeFiltering.html#ga99d6429ac043d37bdef871158739557e',1,'rtabmap::util3d::rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)']]], + ['ransacdeterministicseedenabled_9',['ransacDeterministicSeedEnabled',['../namespacertabmap_1_1util3d.html#ad918f390fa8b4d331561d5a00d61ea7b',1,'rtabmap::util3d']]], + ['rawlikelihood_10',['rawLikelihood',['../classrtabmap_1_1Statistics.html#a472f50deace411e1fbbef95f4fb698de',1,'rtabmap::Statistics']]], + ['raytrace_11',['rayTrace',['../namespacertabmap_1_1util3d.html#a281695150f5c02e6222d050f488a9d6b',1,'rtabmap::util3d']]], + ['reactivatesignatures_12',['reactivateSignatures',['../classrtabmap_1_1Memory.html#aa244b8581684b85e35d2056cf972e377',1,'rtabmap::Memory']]], + ['rectifydepth_13',['rectifyDepth',['../classrtabmap_1_1CameraModel.html#a22cf7f5b49ef0cd8be08755010f6acb5',1,'rtabmap::CameraModel']]], + ['rectifyimage_14',['rectifyImage',['../classrtabmap_1_1CameraModel.html#a17219cf5cf82d224f2a7ed5af01fa236',1,'rtabmap::CameraModel']]], + ['reducedids_15',['reducedIds',['../classrtabmap_1_1Statistics.html#a8c1e9a5c04232909f62447656d6bcbce',1,'rtabmap::Statistics']]], + ['reducegraph_16',['reduceGraph',['../namespacertabmap_1_1graph.html#aabda884597e6b8df053d04ee56cfaf6f',1,'rtabmap::graph']]], + ['reducenode_17',['reduceNode',['../classrtabmap_1_1Memory.html#ac9e6bfaf161d4bd1a9f99d2352492a1d',1,'rtabmap::Memory']]], + ['refimageid_18',['refImageId',['../classrtabmap_1_1Statistics.html#a4ba41e262e2af21bfb2c9d1b6e493d6d',1,'rtabmap::Statistics']]], + ['refimagemapid_19',['refImageMapId',['../classrtabmap_1_1Statistics.html#a45abfdd8f164e0c457d64b80919d5052',1,'rtabmap::Statistics']]], + ['refinelinks_20',['refineLinks',['../classrtabmap_1_1Rtabmap.html#a6650c241bd6a89f66718ce7a227dfe10',1,'rtabmap::Rtabmap']]], + ['registercurrentthread_21',['registerCurrentThread',['../classULogger.html#a9e0fa0a0e32b03f89d08668e7c0b4664',1,'ULogger']]], + ['registerdepth_22',['registerDepth',['../namespacertabmap_1_1util2d.html#a48a7e15282f392e77561dd96ed3320f9',1,'rtabmap::util2d']]], + ['registration_23',['Registration',['../classrtabmap_1_1Registration.html#a7d0ff4149da7f5839308ff543932b067',1,'rtabmap::Registration']]], + ['registrationvis_24',['RegistrationVis',['../classrtabmap_1_1RegistrationVis.html#aa845f7fbbfc8fc340dba96a2a6550d03',1,'rtabmap::RegistrationVis']]], + ['rejectlastloopclosure_25',['rejectLastLoopClosure',['../classrtabmap_1_1Rtabmap.html#ab04bd616db9107a705faf5b3395a73d3',1,'rtabmap::Rtabmap']]], + ['release_26',['release',['../classrtabmap_1_1FlannIndex.html#a6eb4692afb561932aa6a20f7ebdee6c4',1,'rtabmap::FlannIndex::release()'],['../classUSemaphore.html#a693b35a08fd5363b14f3a220081814b5',1,'USemaphore::release()']]], + ['removeallref_27',['removeAllRef',['../classrtabmap_1_1VisualWord.html#a63364292bdd9921668187b16c2e0457e',1,'rtabmap::VisualWord']]], + ['removeallvirtuallinks_28',['removeAllVirtualLinks',['../classrtabmap_1_1Memory.html#a838b48bb9c2e6ccfe4f916ea2b2d00fd',1,'rtabmap::Memory']]], + ['removeallwordref_29',['removeAllWordRef',['../classrtabmap_1_1VWDictionary.html#ac4a70358ca2db8e63c67a30383a1d34b',1,'rtabmap::VWDictionary']]], + ['removeallwords_30',['removeAllWords',['../classrtabmap_1_1Signature.html#aac24301e6aff593fdcd679485b2c0e0e',1,'rtabmap::Signature']]], + ['removedir_31',['removeDir',['../classUDirectory.html#a78d8896627c8675a19b0c6fe6d9e274a',1,'UDirectory']]], + ['removehandler_32',['removeHandler',['../classUEventsManager.html#a10d4b359f630aa9387e77f8baefcc07c',1,'UEventsManager']]], + ['removelandmark_33',['removeLandmark',['../classrtabmap_1_1Signature.html#a6fe5edded7922a34c3f52e71e8be458d',1,'rtabmap::Signature']]], + ['removelandmarks_34',['removeLandmarks',['../classrtabmap_1_1Signature.html#aa482e98fb247d40368a9aaa838fe3a5a',1,'rtabmap::Signature']]], + ['removelink_35',['removelink',['../classrtabmap_1_1DBDriver.html#a7c3c7536423a956e74d3f609ee814717',1,'rtabmap::DBDriver::removeLink()'],['../classrtabmap_1_1Memory.html#a3fcaa79a33d63f7e383d05868b1316e3',1,'rtabmap::Memory::removeLink()'],['../classrtabmap_1_1Signature.html#abbd9806c2b20182217d2269c7398541e',1,'rtabmap::Signature::removeLink(int idTo)']]], + ['removelinks_36',['removeLinks',['../classrtabmap_1_1Signature.html#a8d3e01853af1365fce62dd460dea816f',1,'rtabmap::Signature']]], + ['removenanfrompointcloud_37',['removenanfrompointcloud',['../group__RemoveNaNFromPointCloud.html#ga307cddc4476370cc25e5f67fd13af865',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud)'],['../group__RemoveNaNFromPointCloud.html#ga30ecdbed3fd26b750dcb0e63ea8c68b1',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud)'],['../group__RemoveNaNFromPointCloud.html#gab8b441e9acbafb0f36a0f4567e9535d6',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PCLPointCloud2::Ptr &cloud)'],['../group__RemoveNaNFromPointCloud.html#ga2c98d8e54fff76606352c87edc378c31',1,'rtabmap::util3d::removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud)']]], + ['removenannormalsfrompointcloud_38',['removenannormalsfrompointcloud',['../group__RemoveNaNNormalsFromPointCloud.html#ga3813dba7a0841937f37d9ecdaf526748',1,'rtabmap::util3d::removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud)'],['../group__RemoveNaNNormalsFromPointCloud.html#gafeeebb45de9c3cb8ac353f3cf867bc41',1,'rtabmap::util3d::removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud)'],['../group__RemoveNaNNormalsFromPointCloud.html#ga42b9cf0558f56e1b00bd9ab1e2f1d0e6',1,'rtabmap::util3d::removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud)']]], + ['removepoint_39',['removePoint',['../classrtabmap_1_1FlannIndex.html#a7d78d049ac4afb9f90fc0705506a6ce0',1,'rtabmap::FlannIndex']]], + ['removerawdata_40',['removeRawData',['../classrtabmap_1_1Memory.html#acab72b1076370287ac28a1d464d480f0',1,'rtabmap::Memory']]], + ['removevirtuallinks_41',['removevirtuallinks',['../classrtabmap_1_1Memory.html#aa77fb0f90185a274b3e9d0c609ce14ed',1,'rtabmap::Memory::removeVirtualLinks()'],['../classrtabmap_1_1Signature.html#a328419f90f9dd8113dee4e38c9e30367',1,'rtabmap::Signature::removeVirtualLinks()']]], + ['removewords_42',['removeWords',['../classrtabmap_1_1VWDictionary.html#a7a506e15bf83d16cc98aaa34057216f4',1,'rtabmap::VWDictionary']]], + ['rename_43',['rename',['../classUFile.html#a4918a111f92f2fdb7406fbd1661a1587',1,'UFile::rename(const std::string &newName)'],['../classUFile.html#a725e2edf4b5f603bfc688e96c76858d4',1,'UFile::rename(const std::string &oldFilePath, const std::string &newFilePath)']]], + ['repeatonce_44',['repeatOnce',['../classrtabmap_1_1Registration.html#a7a9163259eaebff421953e194a623864',1,'rtabmap::Registration']]], + ['reproject_45',['reproject',['../classrtabmap_1_1CameraModel.html#a637a730717e42939449cd9f09e20db26',1,'rtabmap::CameraModel::reproject(float x, float y, float z, float &u, float &v) const'],['../classrtabmap_1_1CameraModel.html#a99204ef1a884478cf45b1503432b235b',1,'rtabmap::CameraModel::reproject(float x, float y, float z, int &u, int &v) const'],['../classrtabmap_1_1StereoCameraModel.html#a084e3e40c8b0caf66269d508a8fcffbc',1,'rtabmap::StereoCameraModel::reproject(float x, float y, float z, float &uLeft, float &vLeft, float &uRight, float &vRight) const'],['../classrtabmap_1_1StereoCameraModel.html#a626b8f54940ebc77ec504921004dda3a',1,'rtabmap::StereoCameraModel::reproject(float x, float y, float z, int &uLeft, int &vLeft, int &uRight, int &vRight) const']]], + ['reset_46',['reset',['../classrtabmap_1_1OdometryORBSLAM3.html#a57626265fa4c23fab95140ca9c1f8f93',1,'rtabmap::OdometryORBSLAM3::reset()'],['../classrtabmap_1_1OdometryViso2.html#ad442b8186b72e220feace5fb0b0fec5c',1,'rtabmap::OdometryViso2::reset()'],['../classrtabmap_1_1OdometryCuVSLAM.html#a4cb0a09fc8eb184b2e0d915980b02742',1,'rtabmap::OdometryCuVSLAM::reset()'],['../classrtabmap_1_1OdometryDVO.html#aa20fb31a7bf255caa1f13b0b69b2ee65',1,'rtabmap::OdometryDVO::reset()'],['../classrtabmap_1_1OdometryF2F.html#a7fb0eb46ed5b40e15299bc40b5cd4eb5',1,'rtabmap::OdometryF2F::reset()'],['../classrtabmap_1_1OdometryF2M.html#a7a4b7219e339bbea7761601027f192d2',1,'rtabmap::OdometryF2M::reset()'],['../classrtabmap_1_1OdometryFLOAM.html#a85105e691f68317b2816566cb7440e46',1,'rtabmap::OdometryFLOAM::reset()'],['../classrtabmap_1_1OdometryFovis.html#a0175e1e923673028f1d647aaa185447c',1,'rtabmap::OdometryFovis::reset()'],['../classrtabmap_1_1OdometryLIOSAM.html#a7f72dbc28081ae774303dbf2d8cb5535',1,'rtabmap::OdometryLIOSAM::reset()'],['../classrtabmap_1_1OdometryLOAM.html#a6acc7b4f164a8915ada550ba7c23ac0e',1,'rtabmap::OdometryLOAM::reset()'],['../classrtabmap_1_1OdometryMono.html#a9574ccc748b5c4f664c059d460742457',1,'rtabmap::OdometryMono::reset()'],['../classrtabmap_1_1OdometryMSCKF.html#a3be4ada7eebf234c87a3127a85988d97',1,'rtabmap::OdometryMSCKF::reset()'],['../classrtabmap_1_1OdometryOkvis.html#a81f51ca0b6f3b48f9e6a6e0e2d7b7118',1,'rtabmap::OdometryOkvis::reset()'],['../classrtabmap_1_1OdometryOpen3D.html#a21fecb34185676d02d92c7ad18f13970',1,'rtabmap::OdometryOpen3D::reset()'],['../classrtabmap_1_1OdometryOpenVINS.html#abbf8f6be20990f3e39ad23325d72b41b',1,'rtabmap::OdometryOpenVINS::reset()'],['../classrtabmap_1_1OdometryORBSLAM2.html#ab127fac7aae296a68a9bf68ab02ffbbc',1,'rtabmap::OdometryORBSLAM2::reset()'],['../classrtabmap_1_1OdometryVINSFusion.html#aa2fdb97067ad27d76c6315125a513ed3',1,'rtabmap::OdometryVINSFusion::reset()'],['../classULogger.html#a007b617547d616325e58003eb4352a19',1,'ULogger::reset()'],['../classrtabmap_1_1Odometry.html#a0ea20c39ae597a21e896b706662bb31c',1,'rtabmap::Odometry::reset()'],['../classrtabmap_1_1IMUFilter.html#a45b68e2127fc5a687ef6b7920bf9b39b',1,'rtabmap::IMUFilter::reset()'],['../classrtabmap_1_1BayesFilter.html#ad415ee334d31eebc3685e61862f32573',1,'rtabmap::BayesFilter::reset()']]], + ['resetmemory_47',['resetMemory',['../classrtabmap_1_1Rtabmap.html#af12ae46226f33adf8c4cafbe1bcf544c',1,'rtabmap::Rtabmap']]], + ['resettimer_48',['resetTimer',['../classrtabmap_1_1SensorCapture.html#afa9923bb4a3b88e6dbf4c8ae7f060437',1,'rtabmap::SensorCapture']]], + ['restart_49',['restart',['../classUTimer.html#aa4db57cf682a403fba8ddf95d268d2a6',1,'UTimer']]], + ['rewind_50',['rewind',['../classUDirectory.html#aba596118c893215cf1a2981196864dca',1,'UDirectory']]], + ['rgbdfromcloud_51',['rgbdFromCloud',['../namespacertabmap_1_1util3d.html#a5ec62aa90ceb52a032e7e49c22e0fd76',1,'rtabmap::util3d']]], + ['rgbfromcloud_52',['rgbFromCloud',['../namespacertabmap_1_1util3d.html#a3366d0a9c24960ee3f5b720945e12b1b',1,'rtabmap::util3d']]], + ['right_53',['right',['../classrtabmap_1_1StereoCameraModel.html#ab8061141407d8cc55d7f83211708af85',1,'rtabmap::StereoCameraModel']]], + ['rightraw_54',['rightRaw',['../classrtabmap_1_1SensorData.html#aaa7408cb13ea2cbe33438e007b80de30',1,'rtabmap::SensorData']]], + ['roi_55',['roi',['../classrtabmap_1_1CameraModel.html#a2ff3290299c36b64ee880db2386f898f',1,'rtabmap::CameraModel::roi()'],['../classrtabmap_1_1StereoCameraModel.html#ac2fb1c489ae60bd7e4c104515db3c3a9',1,'rtabmap::StereoCameraModel::roi()']]], + ['rotateimagesupsideupifnecessary_56',['rotateImagesUpsideUpIfNecessary',['../namespacertabmap_1_1util2d.html#a1577494ad9730181d5b768ca8237d5dd',1,'rtabmap::util2d']]], + ['rotation_57',['rotation',['../classrtabmap_1_1Transform.html#aeed78122de7f78a13641802b964d9631',1,'rtabmap::Transform']]], + ['rotationmatrix_58',['rotationMatrix',['../classrtabmap_1_1Transform.html#a23dfabecb7b2ad9c6a7fdcde08d900ab',1,'rtabmap::Transform']]], + ['rotvariance_59',['rotVariance',['../classrtabmap_1_1Link.html#a00cecebc9adf3ee5afb66d6ad63871e4',1,'rtabmap::Link']]], + ['rtabmap_5ft_5fopengl_60',['rtabmap_T_opengl',['../classrtabmap_1_1Transform.html#aa58ff702a149c05c930195d1ce42012e',1,'rtabmap::Transform']]], + ['rtabmapcoloroctree_61',['RtabmapColorOcTree',['../classrtabmap_1_1RtabmapColorOcTree.html#a357d9dd5513df9a4185d84f97c1d5a3f',1,'rtabmap::RtabmapColorOcTree']]], + ['rtabmapthread_62',['RtabmapThread',['../classrtabmap_1_1RtabmapThread.html#a5c5752b0b0a0e05e8e97308c74f9b955',1,'rtabmap::RtabmapThread']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_11.js b/preview/pr-1773/api/latest/search/functions_11.js new file mode 100644 index 00000000..0716980d --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_11.js @@ -0,0 +1,163 @@ +var searchData= +[ + ['sad_0',['sad',['../namespacertabmap_1_1util2d.html#a4cd865b8edc489f950b0c1b5e1a0c992',1,'rtabmap::util2d']]], + ['save_1',['save',['../classrtabmap_1_1StereoCameraModel.html#abfafd0a24795186f3bf623082663b4cd',1,'rtabmap::StereoCameraModel::save()'],['../classrtabmap_1_1CameraModel.html#ab5ec6010459c4e642e162dc8914bccb9',1,'rtabmap::CameraModel::save()']]], + ['save2dmap_2',['save2dmap',['../classrtabmap_1_1DBDriver.html#a5bed0d1f92c1cc864dedf99b99a44037',1,'rtabmap::DBDriver::save2DMap()'],['../classrtabmap_1_1Memory.html#ac96fffe9fde99f7c74a06bbc5727be6b',1,'rtabmap::Memory::save2DMap()']]], + ['saveflannindex_3',['saveFlannIndex',['../classrtabmap_1_1DBDriver.html#a33c2abff50e61f35efbbdbe530963fea',1,'rtabmap::DBDriver']]], + ['savelasfile_4',['savelasfile',['../namespacertabmap.html#ad59cb4c65fba713c1a622904c5229198',1,'rtabmap::saveLASFile(const std::string &filePath, const pcl::PointCloud< pcl::PointXYZI > &cloud, const std::vector< int > &cameraIds=std::vector< int >())'],['../namespacertabmap.html#af174f507bee7dde4f9d45044d7bee8ea',1,'rtabmap::saveLASFile(const std::string &filePath, const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const std::vector< int > &cameraIds=std::vector< int >(), const std::vector< float > &intensities=std::vector< float >())'],['../namespacertabmap.html#a264208396318e0ecfe2af8f3aafe0374',1,'rtabmap::saveLASFile(const std::string &filePath, const pcl::PointCloud< pcl::PointXYZ > &cloud, const std::vector< int > &cameraIds=std::vector< int >())']]], + ['savelocationdata_5',['saveLocationData',['../classrtabmap_1_1Memory.html#a93119d10342db4a55c77b180cb249453',1,'rtabmap::Memory']]], + ['saveoptimizedmesh_6',['saveoptimizedmesh',['../classrtabmap_1_1Memory.html#a7e16d27512d0daf17b9dbb17aab3b201',1,'rtabmap::Memory::saveOptimizedMesh()'],['../classrtabmap_1_1DBDriver.html#a22d5643353b8d49bcc94c5a4abbc9a39',1,'rtabmap::DBDriver::saveOptimizedMesh(const cv::Mat &cloud, const std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > > &polygons=std::vector< std::vector< std::vector< RTABMAP_PCL_INDEX > > >(), const std::vector< std::vector< Eigen::Vector2f > > &texCoords=std::vector< std::vector< Eigen::Vector2f > >(), const cv::Mat &textures=cv::Mat()) const']]], + ['saveoptimizedposes_7',['saveoptimizedposes',['../classrtabmap_1_1DBDriver.html#ab91ad40e4273485e5f0951fac32c22e4',1,'rtabmap::DBDriver::saveOptimizedPoses()'],['../classrtabmap_1_1Memory.html#ab7a2da56bb12845f0370a20a9497dfe0',1,'rtabmap::Memory::saveOptimizedPoses()']]], + ['savepcdwords_8',['savepcdwords',['../namespacertabmap_1_1util3d.html#abf6955904a45f28187e73aa1f4c409e0',1,'rtabmap::util3d::savePCDWords(const std::string &fileName, const std::multimap< int, cv::Point3f > &words, const Transform &transform=Transform::getIdentity())'],['../namespacertabmap_1_1util3d.html#a4e297ff4baacb0c658d7481eef5201a6',1,'rtabmap::util3d::savePCDWords(const std::string &fileName, const std::multimap< int, pcl::PointXYZ > &words, const Transform &transform=Transform::getIdentity())']]], + ['savepreviewimage_9',['savepreviewimage',['../classrtabmap_1_1Memory.html#affdd654e385b61306a2ac2ea91d13b85',1,'rtabmap::Memory::savePreviewImage()'],['../classrtabmap_1_1DBDriver.html#a8323a53d20e4ade6b1c7b268c473a170',1,'rtabmap::DBDriver::savePreviewImage()']]], + ['savestatistics_10',['saveStatistics',['../classrtabmap_1_1Memory.html#afbcfc92dc9bbc344ab106d2f21d93aaf',1,'rtabmap::Memory']]], + ['savestereotransform_11',['saveStereoTransform',['../classrtabmap_1_1StereoCameraModel.html#a1d016f499dbcce889ce7b7062c83b660',1,'rtabmap::StereoCameraModel']]], + ['scale_12',['scale',['../classrtabmap_1_1StereoCameraModel.html#a264d57ca1e0f6b41d03ffe1d89afc382',1,'rtabmap::StereoCameraModel']]], + ['scaled_13',['scaled',['../classrtabmap_1_1CameraModel.html#aecf2e87f260558dbf631e4803e1ed986',1,'rtabmap::CameraModel']]], + ['segmentcloud_14',['segmentCloud',['../classrtabmap_1_1LocalGridMaker.html#ad54b92f6d04b76a550483a7a68f45bda',1,'rtabmap::LocalGridMaker']]], + ['segmentobstaclesfromground_15',['segmentobstaclesfromground',['../namespacertabmap_1_1util3d.html#a58ee399b0bca3a8af41e74d0eced5f84',1,'rtabmap::util3d::segmentObstaclesFromGround(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)'],['../namespacertabmap_1_1util3d.html#a72b271fa98352180241614517ef3b21e',1,'rtabmap::util3d::segmentObstaclesFromGround(const typename pcl::PointCloud< PointT >::Ptr &cloud, pcl::IndicesPtr &ground, pcl::IndicesPtr &obstacles, int normalKSearch, float groundNormalAngle, float clusterRadius, int minClusterSize, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f, pcl::IndicesPtr *flatObstacles=0, const Eigen::Vector4f &viewPoint=Eigen::Vector4f(0, 0, 100, 0), float groundNormalsUp=0)']]], + ['sensorcapture_16',['SensorCapture',['../classrtabmap_1_1SensorCapture.html#adf4b1dfd8e5b45b8eecf938a92dbae94',1,'rtabmap::SensorCapture']]], + ['sensorcaptureinfo_17',['SensorCaptureInfo',['../classrtabmap_1_1SensorCaptureInfo.html#a8f315fb6fe3a16b77e3252d66088db09',1,'rtabmap::SensorCaptureInfo']]], + ['sensorcapturethread_18',['sensorcapturethread',['../classrtabmap_1_1SensorCaptureThread.html#a9cf0e883ace51a2a656395327beb74e5',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, Camera *camera, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#a2a64df180f19d0a2ea9a8d66ea58fc42',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#a590aee9497d8a3b6e14b68e1e17f9c6a',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, SensorCapture *odomSensor, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#a834d1e5c389e7ef8eb23bf1361916ae2',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Lidar *lidar, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#a76ad33a55009b7a7f7ec51acccbe0492',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Camera *camera, SensorCapture *odomSensor, const Transform &extrinsics, double poseTimeOffset=0.0, float poseScaleFactor=1.0f, double poseWaitTime=0.1, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1SensorCaptureThread.html#acae15b44b2fb05da9421dc88ff0be75c',1,'rtabmap::SensorCaptureThread::SensorCaptureThread(Camera *camera, const ParametersMap &parameters=ParametersMap())']]], + ['sensordata_19',['sensordata',['../classrtabmap_1_1SensorData.html#abdd07b6e248e165959468bb31897bc20',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a25efb0e7904a3daa7f4ee7cd814a24ff',1,'rtabmap::SensorData::SensorData(const IMU &imu, int id=0, double stamp=0.0)'],['../classrtabmap_1_1SensorData.html#ad34a0a4ca3eac4a1c91fb7fb5068fb04',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a6ccaccf892f950b0caa03c07de3eab98',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< StereoCameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a1534d36fee45c3df70679438ec9d00a3',1,'rtabmap::SensorData::SensorData(const cv::Mat &left, const cv::Mat &right, const StereoCameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ada69a11125b0b3072add73a3a2f1b5f2',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ac06b8207850c5412cc52f5f0e0e4ba7b',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a87424cc9915dababe9aa3bc418e85197',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depth_confidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#aead598774e0cb15375828a2965b3ab80',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a14f7a5c64b5d27842cb654e247d1fd20',1,'rtabmap::SensorData::SensorData(const cv::Mat &image, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ab6201ea27482207308f000bd4cc90081',1,'rtabmap::SensorData::SensorData(const cv::Mat &image, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a941f907890fe9e0e9becec0a665581cd',1,'rtabmap::SensorData::SensorData()'],['../classrtabmap_1_1Signature.html#a0e7b1874613a7438ec1b2d9aa2634da8',1,'rtabmap::Signature::sensorData() const'],['../classrtabmap_1_1Signature.html#a24c257c2ff3fe156910ac82c41de8738',1,'rtabmap::Signature::sensorData()'],['../classrtabmap_1_1SensorData.html#ae0370b88671bb41812c2d39fd0cfc3ce',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a52b215e8d320bbcbd464e3b7181a077b',1,'rtabmap::SensorData::SensorData(const LaserScan &laserScan, const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const CameraModel &cameraModel, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#ae4498a6d017e83202dfe86618e91fa57',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1SensorData.html#a72a0250435fc194b1189241d4a47254d',1,'rtabmap::SensorData::SensorData(const cv::Mat &rgb, const cv::Mat &depth, const cv::Mat &depthConfidence, const std::vector< CameraModel > &cameraModels, int id=0, double stamp=0.0, const cv::Mat &userData=cv::Mat())']]], + ['sensorevent_20',['sensorevent',['../classrtabmap_1_1SensorEvent.html#a1e35f9e5433d00628dd51876bc74fec5',1,'rtabmap::SensorEvent::SensorEvent(const SensorData &data, const SensorCaptureInfo &sensorCaptureInfo)'],['../classrtabmap_1_1SensorEvent.html#a1a47910aed70809eabfc195ca2515f85',1,'rtabmap::SensorEvent::SensorEvent(const SensorData &data, const std::string &cameraName)'],['../classrtabmap_1_1SensorEvent.html#a6e120cf7c4aea9201462c9cbb224b787',1,'rtabmap::SensorEvent::SensorEvent(const SensorData &data)'],['../classrtabmap_1_1SensorEvent.html#aef6624e43c3f7f29684072782a377e20',1,'rtabmap::SensorEvent::SensorEvent()'],['../classrtabmap_1_1SensorEvent.html#aa6c0584b85a70fe240f745c759948591',1,'rtabmap::SensorEvent::SensorEvent(const cv::Mat &image, int seq=0, double stamp=0.0, const std::string &cameraName=std::string())']]], + ['separator_21',['separator',['../classUDirectory.html#a66750846a899e436808d4eadbcafced0',1,'UDirectory']]], + ['serialize_22',['serialize',['../classrtabmap_1_1CameraModel.html#a5724619c7ac8c796fd8c63660e398082',1,'rtabmap::CameraModel::serialize()'],['../classrtabmap_1_1StereoCameraModel.html#a4eab6254ef808719ca2d0543c89e0722',1,'rtabmap::StereoCameraModel::serialize()']]], + ['serializedata_23',['serializeData',['../classrtabmap_1_1Statistics.html#ab34cfba17216b060f57e106d7c169685',1,'rtabmap::Statistics']]], + ['serializeindex_24',['serializeindex',['../classrtabmap_1_1FlannIndex.html#a1f2bf8718a75aa0b5dded8c287293c23',1,'rtabmap::FlannIndex::serializeIndex()'],['../classrtabmap_1_1VWDictionary.html#a2864c406b3792dbfb7c8c334b6e44d41',1,'rtabmap::VWDictionary::serializeIndex()']]], + ['setaffinity_25',['setAffinity',['../classUThread.html#aabcf31acae6ca5b8503ec320acbc11f8',1,'UThread']]], + ['setaltitude_26',['setAltitude',['../classrtabmap_1_1GeodeticCoords.html#afe3c631b5f01246840f8591fc8dc834e',1,'rtabmap::GeodeticCoords']]], + ['setbuffered_27',['setBuffered',['../classULogger.html#ab981daf077b8afbf49c7bd185aa3b273',1,'ULogger']]], + ['setcachesize_28',['setCacheSize',['../classrtabmap_1_1DBDriverSqlite3.html#afc148e17cf8cc6ed4565c5519b06fc5c',1,'rtabmap::DBDriverSqlite3']]], + ['setcameramodel_29',['setCameraModel',['../classrtabmap_1_1SensorData.html#ad8ae172220b7bfffeb09bb1eac60f28f',1,'rtabmap::SensorData']]], + ['setcameramodels_30',['setCameraModels',['../classrtabmap_1_1SensorData.html#af841bbc9ea6de17124f8c871fa5d0719',1,'rtabmap::SensorData']]], + ['setchildregistration_31',['setChildRegistration',['../classrtabmap_1_1Registration.html#ac105402feeb2ec6551235296604145aa',1,'rtabmap::Registration']]], + ['setcoloronly_32',['setColorOnly',['../classrtabmap_1_1SensorCaptureThread.html#a6308c79599bd90b77d243febff024a15',1,'rtabmap::SensorCaptureThread']]], + ['setconstraints_33',['setConstraints',['../classrtabmap_1_1Statistics.html#ac4761222db6faee6c34c53c1d4d00ec2',1,'rtabmap::Statistics']]], + ['setcurrentgoalid_34',['setCurrentGoalId',['../classrtabmap_1_1Statistics.html#a845a35143a149c9670fb46938594fcb9',1,'rtabmap::Statistics']]], + ['setdatabuffersize_35',['setDataBufferSize',['../classrtabmap_1_1RtabmapThread.html#ab9b4e64c65264f12bfeb1814aff59cbe',1,'rtabmap::RtabmapThread']]], + ['setdbinmemory_36',['setDbInMemory',['../classrtabmap_1_1DBDriverSqlite3.html#a0722fcddc772af1cc03a7fe8b410d137',1,'rtabmap::DBDriverSqlite3']]], + ['setdetectorrate_37',['setDetectorRate',['../classrtabmap_1_1RtabmapThread.html#a8ff95633544be0d87c1dc977cb52a064',1,'rtabmap::RtabmapThread']]], + ['setdistortionmodel_38',['setDistortionModel',['../classrtabmap_1_1SensorCaptureThread.html#aa7f6dcffcd6646994c2a87d8b888edcc',1,'rtabmap::SensorCaptureThread']]], + ['setdoomed_39',['setDoomed',['../classUDestroyer.html#aa3f030225d28ac7ad7059b9b64bde837',1,'UDestroyer']]], + ['setdualmode_40',['setDualMode',['../classrtabmap_1_1CameraRealSense2.html#ad9a5218ed20bad24c020a18e2ed0b12c',1,'rtabmap::CameraRealSense2']]], + ['setdummydictionary_41',['setdummydictionary',['../classrtabmap_1_1Rtabmap.html#a4d351e3f5ef809460afbb5a7702a500d',1,'rtabmap::Rtabmap::setDummyDictionary()'],['../classrtabmap_1_1Memory.html#a655f123daec9e4e50e322db9f3bbd6db',1,'rtabmap::Memory::setDummyDictionary()']]], + ['setenabled_42',['setEnabled',['../classrtabmap_1_1Signature.html#a51a08cbabd87eb0fd5045ffdb4cb3c00',1,'rtabmap::Signature']]], + ['setenvsensors_43',['setEnvSensors',['../classrtabmap_1_1SensorData.html#ab3a5ebf180d5f2f106877b78aee6d1d1',1,'rtabmap::SensorData']]], + ['seteventlevel_44',['setEventLevel',['../classULogger.html#ac0705dc7bc5da07ce27351eb6519e942',1,'ULogger']]], + ['setextended_45',['setExtended',['../classrtabmap_1_1Statistics.html#a938202c5836ba75d8eb06b0317712d06',1,'rtabmap::Statistics']]], + ['setfeatures_46',['setFeatures',['../classrtabmap_1_1SensorData.html#ad083f0a1e7769ff62183a0fa47279ae3',1,'rtabmap::SensorData']]], + ['setfixeddictionary_47',['setFixedDictionary',['../classrtabmap_1_1VWDictionary.html#a5f3712744b9f7beb5da186a842f7d74a',1,'rtabmap::VWDictionary']]], + ['setframerate_48',['setframerate',['../classrtabmap_1_1SensorCapture.html#a1e195970f52334094174783c5fd06456',1,'rtabmap::SensorCapture::setFrameRate()'],['../classrtabmap_1_1SensorCaptureThread.html#a416f1596701d6b9dbd8512cd1c617788',1,'rtabmap::SensorCaptureThread::setFrameRate()']]], + ['setglobaldescriptors_49',['setGlobalDescriptors',['../classrtabmap_1_1SensorData.html#ab6f18f2eb0340c8f6e800a695424bbbe',1,'rtabmap::SensorData']]], + ['setglobalpose_50',['setGlobalPose',['../classrtabmap_1_1SensorData.html#a72f0ce5a2989f478149f5cf2d5a36556',1,'rtabmap::SensorData']]], + ['setgps_51',['setGPS',['../classrtabmap_1_1SensorData.html#ad09e3e0fc1f60d233d81288a4cf8f56a',1,'rtabmap::SensorData']]], + ['setgroundtruth_52',['setGroundTruth',['../classrtabmap_1_1SensorData.html#a7051ea8c13bafd7eaffb5f5a93064808',1,'rtabmap::SensorData']]], + ['setgroundtruthpose_53',['setGroundTruthPose',['../classrtabmap_1_1Signature.html#aa8be86850b1277ce7c5eb4a5998e35e9',1,'rtabmap::Signature']]], + ['sethistogrammethod_54',['setHistogramMethod',['../classrtabmap_1_1SensorCaptureThread.html#a3e55c70032141f75802b2339c102c063',1,'rtabmap::SensorCaptureThread']]], + ['setid_55',['setId',['../classrtabmap_1_1SensorData.html#a4d0f4615a747eaef142b51a1ab1e5527',1,'rtabmap::SensorData']]], + ['setidentity_56',['setIdentity',['../classrtabmap_1_1Transform.html#afe833cfcd56f2f147091e7d309dadb36',1,'rtabmap::Transform']]], + ['setimagedecimation_57',['setImageDecimation',['../classrtabmap_1_1SensorCaptureThread.html#a74383f4e31ed642520511eb822ed1d89',1,'rtabmap::SensorCaptureThread']]], + ['setimagerate_58',['setImageRate',['../classrtabmap_1_1SensorCaptureThread.html#a2a40e01eb8e61aae54feeb1458efb88e',1,'rtabmap::SensorCaptureThread']]], + ['setimagesize_59',['setimagesize',['../classrtabmap_1_1StereoCameraModel.html#a898c2eff7bfc4977703f8edb86ca1187',1,'rtabmap::StereoCameraModel::setImageSize()'],['../classrtabmap_1_1CameraModel.html#a43fd48b917ca145876024859f8565931',1,'rtabmap::CameraModel::setImageSize()']]], + ['setimu_60',['setIMU',['../classrtabmap_1_1SensorData.html#a2297bfc9d81c077852d8f832231ba139',1,'rtabmap::SensorData']]], + ['setincrementaldictionary_61',['setIncrementalDictionary',['../classrtabmap_1_1VWDictionary.html#ab14ef6e8fb979dce23f9a40a1faf8dff',1,'rtabmap::VWDictionary']]], + ['setinfmatrix_62',['setInfMatrix',['../classrtabmap_1_1Link.html#a3a82104ae4195beff134811a3a19d939',1,'rtabmap::Link']]], + ['setinitialpose_63',['setInitialPose',['../classrtabmap_1_1Rtabmap.html#a9a9321531773f37cd5d7740495ede47f',1,'rtabmap::Rtabmap']]], + ['setjournalmode_64',['setJournalMode',['../classrtabmap_1_1DBDriverSqlite3.html#ae3c445bedd62088bb20e76eda6cfe64d',1,'rtabmap::DBDriverSqlite3']]], + ['setlabel_65',['setLabel',['../classrtabmap_1_1Signature.html#aa6dc3ad065ae2fd29afbbe69429f3a7b',1,'rtabmap::Signature']]], + ['setlabels_66',['setLabels',['../classrtabmap_1_1Statistics.html#aaa519c598aa7a56eda73653ab34d6b48',1,'rtabmap::Statistics']]], + ['setlandmarks_67',['setLandmarks',['../classrtabmap_1_1SensorData.html#af0873bbd79209dca371792e94e020e14',1,'rtabmap::SensorData']]], + ['setlaserscan_68',['setLaserScan',['../classrtabmap_1_1SensorData.html#a8fc1c848518793a1fe65c47a3ff729b0',1,'rtabmap::SensorData']]], + ['setlastsignaturedata_69',['setLastSignatureData',['../classrtabmap_1_1Statistics.html#ae5de0aae15a10ed18cc30c2656bd4d6a',1,'rtabmap::Statistics']]], + ['setlastwordid_70',['setLastWordId',['../classrtabmap_1_1VWDictionary.html#af0b676e13c7dba437147520335289e97',1,'rtabmap::VWDictionary']]], + ['setlatitude_71',['setLatitude',['../classrtabmap_1_1GeodeticCoords.html#a9113dd2d169f83e68b1dd0b12f8f24da',1,'rtabmap::GeodeticCoords']]], + ['setlevel_72',['setLevel',['../classULogger.html#ad8589bdaabddc1e9a260b890b1cf312e',1,'ULogger']]], + ['setlikelihood_73',['setLikelihood',['../classrtabmap_1_1Statistics.html#a8988eb66288df6a4d676b3cbd7b3a7ff',1,'rtabmap::Statistics']]], + ['setlocalizationcovariance_74',['setLocalizationCovariance',['../classrtabmap_1_1Statistics.html#a747aee7cd90f8318de6d0b82bedcd971',1,'rtabmap::Statistics']]], + ['setlocalpath_75',['setLocalPath',['../classrtabmap_1_1Statistics.html#a3c80bf518d943d9b86e5088a9269b455',1,'rtabmap::Statistics']]], + ['setlocaltransform_76',['setlocaltransform',['../classrtabmap_1_1SensorCapture.html#a0ea4e217047c234bcfcb9866e36ea7c0',1,'rtabmap::SensorCapture::setLocalTransform()'],['../classrtabmap_1_1StereoCameraModel.html#aee77882ceca428a560f5fd3713a330fb',1,'rtabmap::StereoCameraModel::setLocalTransform()'],['../classrtabmap_1_1CameraModel.html#aa1325c971f17d371553c3f75be7aeece',1,'rtabmap::CameraModel::setLocalTransform()']]], + ['setlongitude_77',['setLongitude',['../classrtabmap_1_1GeodeticCoords.html#aac1f8d7bcf0aff48aa8c7aefa91c72d3',1,'rtabmap::GeodeticCoords']]], + ['setloopclosureid_78',['setLoopClosureId',['../classrtabmap_1_1Statistics.html#a19272faba1c28279bb565464afa84645',1,'rtabmap::Statistics']]], + ['setloopclosuremapid_79',['setLoopClosureMapId',['../classrtabmap_1_1Statistics.html#a3b92ac9f165c77b2cc92f3fc6d7242cd',1,'rtabmap::Statistics']]], + ['setloopclosuretransform_80',['setLoopClosureTransform',['../classrtabmap_1_1Statistics.html#ac323334656165fd230cbe396836c6939',1,'rtabmap::Statistics']]], + ['setmapcorrection_81',['setMapCorrection',['../classrtabmap_1_1Statistics.html#a6a70e49f42639395a89edbde4659bf88',1,'rtabmap::Statistics']]], + ['setmemorythreshold_82',['setMemoryThreshold',['../classrtabmap_1_1Rtabmap.html#a6915ee0137b949837addcb5d3ac1646c',1,'rtabmap::Rtabmap']]], + ['setmirroringenabled_83',['setMirroringEnabled',['../classrtabmap_1_1SensorCaptureThread.html#a1cfabc2a5451ffe913f5691b80de514d',1,'rtabmap::SensorCaptureThread']]], + ['setmodified_84',['setModified',['../classrtabmap_1_1Signature.html#a245c8af68f7adec3813e3b062395769f',1,'rtabmap::Signature']]], + ['setname_85',['setname',['../classrtabmap_1_1StereoCameraModel.html#adc404f0be63eedd0e0a9d6d5b5b36a94',1,'rtabmap::StereoCameraModel::setName()'],['../classrtabmap_1_1CameraModel.html#a402a407fa2bca721087a6deda24cc10d',1,'rtabmap::CameraModel::setName()']]], + ['setnnstrategy_86',['setNNStrategy',['../classrtabmap_1_1VWDictionary.html#af60e271facb40ff668c4bc24cff1b9cc',1,'rtabmap::VWDictionary']]], + ['setnull_87',['setNull',['../classrtabmap_1_1Transform.html#af0020cf4093b8b1a3d1f68ee657b3662',1,'rtabmap::Transform']]], + ['setobj_88',['setObj',['../classUObjDeletionThread.html#a3a54e762b9f21750fe724bf78b48c653',1,'UObjDeletionThread']]], + ['setoccupancygrid_89',['setOccupancyGrid',['../classrtabmap_1_1SensorData.html#a5c12949c62c65281bade9ffcc681462b',1,'rtabmap::SensorData']]], + ['setodomasgroundtruth_90',['setOdomAsGroundTruth',['../classrtabmap_1_1SensorCaptureThread.html#a5a6a9ad20c75150f86ef479fe74ae6f7',1,'rtabmap::SensorCaptureThread']]], + ['setodomcacheconstraints_91',['setOdomCacheConstraints',['../classrtabmap_1_1Statistics.html#ae3d58759c1cc237b2e297c2c5f608725',1,'rtabmap::Statistics']]], + ['setodomcacheposes_92',['setOdomCachePoses',['../classrtabmap_1_1Statistics.html#a6032903dc163f7bc5d36c0520ccdfcef',1,'rtabmap::Statistics']]], + ['setoptimizedposes_93',['setOptimizedPoses',['../classrtabmap_1_1Rtabmap.html#a7a841702b925777620714fce7b41fd69',1,'rtabmap::Rtabmap']]], + ['setpath_94',['setPath',['../classUDirectory.html#aadfc0f6dfedc74bb6ef67dc87d6441f4',1,'UDirectory']]], + ['setpose_95',['setPose',['../classrtabmap_1_1Signature.html#aca4bf5db794637f0780f6eb2139a16f0',1,'rtabmap::Signature']]], + ['setposes_96',['setPoses',['../classrtabmap_1_1Statistics.html#acf7df1c7a8958a24988239fc40ece1ea',1,'rtabmap::Statistics']]], + ['setposterior_97',['setPosterior',['../classrtabmap_1_1Statistics.html#a915bb9bd90193a92f565f56024d61586',1,'rtabmap::Statistics']]], + ['setpredictionlc_98',['setPredictionLC',['../classrtabmap_1_1BayesFilter.html#a3255a54c1d2fc5b9a6db91fb38d591ae',1,'rtabmap::BayesFilter']]], + ['setprintcolored_99',['setPrintColored',['../classULogger.html#a773d95354adfe1fd1296f3b2f09668d3',1,'ULogger']]], + ['setprintendline_100',['setPrintEndline',['../classULogger.html#aa7cd59599601cdb214c6cb4df103dca0',1,'ULogger']]], + ['setprintlevel_101',['setPrintLevel',['../classULogger.html#a4a97457a98a02f60580e6f3c93f83d7a',1,'ULogger']]], + ['setprintthreadid_102',['setPrintThreadId',['../classULogger.html#a071b4484d0020a87760bbe282175724a',1,'ULogger']]], + ['setprinttime_103',['setPrintTime',['../classULogger.html#a2142b47257ecf1f2561afa8353eae411',1,'ULogger']]], + ['setprintwhere_104',['setPrintWhere',['../classULogger.html#af5a2e0f11770fcb457c1859c9f8b5ec3',1,'ULogger']]], + ['setprintwherefullpath_105',['setPrintWhereFullPath',['../classULogger.html#a2784b7a88339964e2a1c2b3436245bfc',1,'ULogger']]], + ['setpriority_106',['setPriority',['../classUThread.html#a80418be3a80a01ddd05a863b58787b43',1,'UThread']]], + ['setproximitydetectionid_107',['setProximityDetectionId',['../classrtabmap_1_1Statistics.html#a25b8a9b50054a80dc09423b6fe9f68ff',1,'rtabmap::Statistics']]], + ['setproximitydetectionmapid_108',['setProximityDetectionMapId',['../classrtabmap_1_1Statistics.html#a5e6df533a3c7a70d0391f7fe129e5eef',1,'rtabmap::Statistics']]], + ['setransacdeterministicseed_109',['setRansacDeterministicSeed',['../namespacertabmap_1_1util3d.html#a5f95aa913b08b0d0f12e9fc02b087692',1,'rtabmap::util3d']]], + ['setrate_110',['setRate',['../classrtabmap_1_1IMUThread.html#a3b646ffce1964e2ab6bc314dc4b27deb',1,'rtabmap::IMUThread']]], + ['setrawlikelihood_111',['setRawLikelihood',['../classrtabmap_1_1Statistics.html#a20a3634b3fbd36d86b1803f7427b105f',1,'rtabmap::Statistics']]], + ['setreducedids_112',['setReducedIds',['../classrtabmap_1_1Statistics.html#abf88d8f411f811549d91d29a5b78d308',1,'rtabmap::Statistics']]], + ['setrefimageid_113',['setRefImageId',['../classrtabmap_1_1Statistics.html#a4fa0c5aafea26effea2ed63d5bf3a31f',1,'rtabmap::Statistics']]], + ['setrefimagemapid_114',['setRefImageMapId',['../classrtabmap_1_1Statistics.html#a39895f500676995e2cc830169b80c7ca',1,'rtabmap::Statistics']]], + ['setresolution_115',['setResolution',['../classrtabmap_1_1CameraVideo.html#a7c8c8e9d343f78fdd17aad2db34dbecb',1,'rtabmap::CameraVideo']]], + ['setrgbdimage_116',['setRGBDImage',['../classrtabmap_1_1SensorData.html#a203770ef217dfdc67b98ca593b2cab24',1,'rtabmap::SensorData']]], + ['setsaved_117',['setsaved',['../classrtabmap_1_1VisualWord.html#a58f7ff50ca24f1586bf3fdf5999d6184',1,'rtabmap::VisualWord::setSaved()'],['../classrtabmap_1_1Signature.html#a02c5d305492e3534e3799b8b7c78d912',1,'rtabmap::Signature::setSaved()']]], + ['setscanparameters_118',['setscanparameters',['../classrtabmap_1_1SensorCaptureThread.html#a00a7a0e4f5277f6c6ed53bf832624c00',1,'rtabmap::SensorCaptureThread::setScanParameters(bool fromDepth, int downsampleStep=1, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalsK=0, float normalsRadius=0.0f, float groundNormalsUp=0.0f, bool deskewing=false)'],['../classrtabmap_1_1SensorCaptureThread.html#a40f1016ea142c6117ffb080f64b4a854',1,'rtabmap::SensorCaptureThread::setScanParameters(bool fromDepth, int downsampleStep, float rangeMin, float rangeMax, float voxelSize, int normalsK, float normalsRadius, bool forceGroundNormalsUp, bool deskewing)']]], + ['setsignaturesdata_119',['setSignaturesData',['../classrtabmap_1_1Statistics.html#ad23568ea07d4ad167fcbd83a9083a2ef',1,'rtabmap::Statistics']]], + ['setstamp_120',['setstamp',['../classrtabmap_1_1SensorData.html#a5c0844e94d3fff50a8bfec2decf2f94c',1,'rtabmap::SensorData::setStamp()'],['../classrtabmap_1_1Statistics.html#a12bfc3ce8eb232a6ac3942af504bedef',1,'rtabmap::Statistics::setStamp()']]], + ['setstereocameramodel_121',['setStereoCameraModel',['../classrtabmap_1_1SensorData.html#ab2f74509af5e3f56d1c4d5e31c0c6003',1,'rtabmap::SensorData']]], + ['setstereocameramodels_122',['setStereoCameraModels',['../classrtabmap_1_1SensorData.html#ab4e6b5d917155b94d8b4b6242fe56c6e',1,'rtabmap::SensorData']]], + ['setstereoexposurecompensation_123',['setStereoExposureCompensation',['../classrtabmap_1_1SensorCaptureThread.html#a2c43f41518d914f2a3ae6959abcde989',1,'rtabmap::SensorCaptureThread']]], + ['setstereotodepth_124',['setStereoToDepth',['../classrtabmap_1_1SensorCaptureThread.html#ae0658121bc03f0eafd469ee114bc61f8',1,'rtabmap::SensorCaptureThread']]], + ['setsynchronous_125',['setSynchronous',['../classrtabmap_1_1DBDriverSqlite3.html#a187e2bbb52ae7f32a0fc79540f0f104b',1,'rtabmap::DBDriverSqlite3']]], + ['settempstore_126',['setTempStore',['../classrtabmap_1_1DBDriverSqlite3.html#a8f4adea749a2d30340715002056f9062',1,'rtabmap::DBDriverSqlite3']]], + ['settimethreshold_127',['setTimeThreshold',['../classrtabmap_1_1Rtabmap.html#a80add8fadd488d0c7781c249abea0d5d',1,'rtabmap::Rtabmap']]], + ['settreadidfilter_128',['setTreadIdFilter',['../classULogger.html#ada44d4afa869f1f9eab174a28c8a1acd',1,'ULogger']]], + ['settype_129',['setType',['../classULogger.html#a0fe73ce7c193ff399bca16b8d4d4cabb',1,'ULogger']]], + ['setuserdata_130',['setuserdata',['../classrtabmap_1_1SensorData.html#accb5f254667af3074993a073a4e1f072',1,'rtabmap::SensorData::setUserData()'],['../classrtabmap_1_1Rtabmap.html#a037ddb5d737e0466d7610b88d8429bd6',1,'rtabmap::Rtabmap::setUserData()'],['../classrtabmap_1_1Memory.html#aff18f08be0a7951f508276e341759f5c',1,'rtabmap::Memory::setUserData()']]], + ['setvelocity_131',['setVelocity',['../classrtabmap_1_1Signature.html#a1e48a2cde44ad1ecc2daaf5e8245e86a',1,'rtabmap::Signature']]], + ['setweight_132',['setWeight',['../classrtabmap_1_1Signature.html#a28cc9f0c8d553a24ef9e5227be1c99fe',1,'rtabmap::Signature']]], + ['setweights_133',['setWeights',['../classrtabmap_1_1Statistics.html#a918d447083cfcea3ab040e985461ae45',1,'rtabmap::Statistics']]], + ['setwmstate_134',['setWmState',['../classrtabmap_1_1Statistics.html#aa43870ba13369f23c122bff62f6654c8',1,'rtabmap::Statistics']]], + ['setwords_135',['setWords',['../classrtabmap_1_1Signature.html#a6fb8d04c4c2c8ee6f82d1eb65fd750a4',1,'rtabmap::Signature']]], + ['setwordsdescriptors_136',['setWordsDescriptors',['../classrtabmap_1_1Signature.html#a80565e1439be473d9c783d5c624b1a02',1,'rtabmap::Signature']]], + ['setworkingdirectory_137',['setWorkingDirectory',['../classrtabmap_1_1Rtabmap.html#a25028c3e8d8018c03f47f06150d76eab',1,'rtabmap::Rtabmap']]], + ['shareto_138',['shareTo',['../classrtabmap_1_1LocalGridCache.html#a6350523acd5ce71be45cd653071837fc',1,'rtabmap::LocalGridCache']]], + ['signature_139',['signature',['../classrtabmap_1_1Signature.html#a8e079b11910a45639a792158c40693ad',1,'rtabmap::Signature::Signature()'],['../classrtabmap_1_1Signature.html#aa3367bba5b890341238d93e642f847a7',1,'rtabmap::Signature::Signature(int id, int mapId=-1, int weight=0, double stamp=0.0, const std::string &label=std::string(), const Transform &pose=Transform(), const Transform &groundTruthPose=Transform(), const SensorData &sensorData=SensorData())'],['../classrtabmap_1_1Signature.html#af106b6a37909c236e22f5cac6150ce62',1,'rtabmap::Signature::Signature(const SensorData &data)']]], + ['size_140',['size',['../classrtabmap_1_1Landmark.html#acba351c01c619a0d78e52e7bfca94111',1,'rtabmap::Landmark::size()'],['../classrtabmap_1_1Transform.html#a2cdd55b67e206a287e7bf4d248fb5256',1,'rtabmap::Transform::size()']]], + ['solvepnpransac_141',['solvePnPRansac',['../namespacertabmap_1_1util3d.html#ad426e396a196d6f69a004bb55982f9f7',1,'rtabmap::util3d']]], + ['ssc_142',['SSC',['../namespacertabmap_1_1util2d.html#aa6957971e17f27bb066efe036d80fd46',1,'rtabmap::util2d']]], + ['ssd_143',['ssd',['../namespacertabmap_1_1util2d.html#a179e07ca5bc9581ff4782ae8f9d33521',1,'rtabmap::util2d']]], + ['stamp_144',['stamp',['../classrtabmap_1_1EnvSensor.html#a1bbcf9a834523dd2e91ef1ab8d31d5e4',1,'rtabmap::EnvSensor::stamp()'],['../classrtabmap_1_1GPS.html#a8620d60c593c641eb3be44ae41bec799',1,'rtabmap::GPS::stamp()'],['../classrtabmap_1_1SensorData.html#a566e5600bc0369f2f88ff0c597cefcfb',1,'rtabmap::SensorData::stamp()'],['../classrtabmap_1_1Statistics.html#a24a86b496c06f7d027ebb803b0ce70dd',1,'rtabmap::Statistics::stamp()']]], + ['start_145',['start',['../classUTimer.html#a10f628d8be04474d13c04b07c0426200',1,'UTimer::start()'],['../classUThread.html#a051e9adcf24f92b9c8e31acd06bad88c',1,'UThread::start()']]], + ['startdeletion_146',['startDeletion',['../classUObjDeletionThread.html#a2b4e12d9f11684b1378bb77a1a3c54b3',1,'UObjDeletionThread']]], + ['statistics_147',['statistics',['../classrtabmap_1_1Statistics.html#a5f5bf8e57410944ec46be25a5bf8ab46',1,'rtabmap::Statistics::Statistics()'],['../classrtabmap_1_1OdometryInfo.html#a3353258f68ec539287dcc60cc08f3da7',1,'rtabmap::OdometryInfo::statistics()']]], + ['stereo_148',['Stereo',['../classrtabmap_1_1Stereo.html#a1031c68f4e66690da216718382af0ab3',1,'rtabmap::Stereo']]], + ['stereobm_149',['stereobm',['../classrtabmap_1_1StereoBM.html#a33ff25f4afacce93201f509b78e5ca6f',1,'rtabmap::StereoBM::StereoBM(int blockSize, int numDisparities)'],['../classrtabmap_1_1StereoBM.html#a74970c7517eec90828dd03510c3e3db0',1,'rtabmap::StereoBM::StereoBM(const ParametersMap &parameters=ParametersMap())']]], + ['stereocameramodel_150',['stereocameramodel',['../classrtabmap_1_1StereoCameraModel.html#a8e3a5c32e13727545f2d22dda05c96b0',1,'rtabmap::StereoCameraModel::StereoCameraModel(const std::string &name, double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))'],['../classrtabmap_1_1StereoCameraModel.html#a0bdbbaa6e3ab315b0c5fce03247cea6c',1,'rtabmap::StereoCameraModel::StereoCameraModel(double fx, double fy, double cx, double cy, double baseline, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0), const cv::Size &imageSize=cv::Size(0, 0))'],['../classrtabmap_1_1StereoCameraModel.html#a76bab07a51033de989fc522064ede024',1,'rtabmap::StereoCameraModel::StereoCameraModel(const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const Transform &extrinsics)'],['../classrtabmap_1_1StereoCameraModel.html#ae91c2717319f3cd7b6f40768e5adbb9f',1,'rtabmap::StereoCameraModel::StereoCameraModel(const std::string &name, const CameraModel &leftCameraModel, const CameraModel &rightCameraModel, const cv::Mat &R=cv::Mat(), const cv::Mat &T=cv::Mat(), const cv::Mat &E=cv::Mat(), const cv::Mat &F=cv::Mat())'],['../classrtabmap_1_1StereoCameraModel.html#a1887639053ef5c09c3f650b5a7f280d8',1,'rtabmap::StereoCameraModel::StereoCameraModel(const std::string &name, const cv::Size &imageSize1, const cv::Mat &K1, const cv::Mat &D1, const cv::Mat &R1, const cv::Mat &P1, const cv::Size &imageSize2, const cv::Mat &K2, const cv::Mat &D2, const cv::Mat &R2, const cv::Mat &P2, const cv::Mat &R, const cv::Mat &T, const cv::Mat &E, const cv::Mat &F, const Transform &localTransform=Transform(0, 0, 1, 0, -1, 0, 0, 0, 0,-1, 0, 0))'],['../classrtabmap_1_1StereoCameraModel.html#a179ffcbc49ff3a281ef33cb4381e061c',1,'rtabmap::StereoCameraModel::StereoCameraModel()']]], + ['stereocameramodels_151',['stereoCameraModels',['../classrtabmap_1_1SensorData.html#ab02d686ac7ef8b389655e913768b4d87',1,'rtabmap::SensorData']]], + ['stereodense_152',['StereoDense',['../classrtabmap_1_1StereoDense.html#a57f0c431678a2c9db1b5f7dd46cbf49f',1,'rtabmap::StereoDense']]], + ['stereoopticalflow_153',['StereoOpticalFlow',['../classrtabmap_1_1StereoOpticalFlow.html#a85173879ab911862112710fa1c94d8c5',1,'rtabmap::StereoOpticalFlow']]], + ['stereosgbm_154',['StereoSGBM',['../classrtabmap_1_1StereoSGBM.html#ab7f04d815235b6ab8178e8572602dcd1',1,'rtabmap::StereoSGBM']]], + ['stereotransform_155',['stereoTransform',['../classrtabmap_1_1StereoCameraModel.html#a506f83654d7f772a3743d24869c05742',1,'rtabmap::StereoCameraModel']]], + ['stop_156',['stop',['../classUTimer.html#a6a517d6f5f6e6c28b9392d04be22a320',1,'UTimer']]], + ['strategyname_157',['strategyName',['../classrtabmap_1_1RegistrationIcp.html#aef9238a37e0b70c9368b2e20cfe7df12',1,'rtabmap::RegistrationIcp']]], + ['subtractadaptivefiltering_158',['subtractadaptivefiltering',['../namespacertabmap_1_1util3d.html#a2d730d57c10b9ef235388c8e6bd49132',1,'rtabmap::util3d::subtractAdaptiveFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))'],['../namespacertabmap_1_1util3d.html#aa82dd73da48128b88a6aaf20c625814d',1,'rtabmap::util3d::subtractAdaptiveFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))']]], + ['subtractfiltering_159',['subtractfiltering',['../group__SubtractFiltering.html#ga69fb3ae457d192fd2c12631b0b5adf60',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga74d28899131bcb449b4d243a556c53aa',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gad92c79e9320d8eae62053d01bb8ba9df',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga49d4f22e20984d271bb4c3240018eeed',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga1879c56f82037789aed799c484fb883a',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gae14131d7ab09a650fb1411a8252e5526',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gad2840d4057963b7cb29c02ee15fca895',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, float radiusSearch, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#ga68cd453fcda96d2dba733650879f5d54',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gaafd6fae4cac4f182d79e4507226165ef',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)'],['../group__SubtractFiltering.html#gaf2bca73b4dc564bb6b2b7b779c718373',1,'rtabmap::util3d::subtractFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &subtractCloud, float radiusSearch, float maxAngle=M_PI/4.0f, int minNeighborsInRadius=1)']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_12.js b/preview/pr-1773/api/latest/search/functions_12.js new file mode 100644 index 00000000..2b31c0d0 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_12.js @@ -0,0 +1,660 @@ +var searchData= +[ + ['t_0',['T',['../classrtabmap_1_1StereoCameraModel.html#a82d60ddca8d0cdbe939b043ed02334b6',1,'rtabmap::StereoCameraModel']]], + ['takedata_1',['takeData',['../classrtabmap_1_1SensorCapture.html#aca06c645212a7501a246ea593406bcaf',1,'rtabmap::SensorCapture']]], + ['theta_2',['theta',['../classrtabmap_1_1Transform.html#acc7f19107da9b048a43497f93dd39582',1,'rtabmap::Transform']]], + ['to_3',['to',['../classrtabmap_1_1Link.html#a8d534b311c37d789276dd58bd7dc89e4',1,'rtabmap::Link']]], + ['to3dof_4',['to3DoF',['../classrtabmap_1_1Transform.html#a3a1b7b3d9f2db760b8eff9f3f90cd405',1,'rtabmap::Transform']]], + ['to4dof_5',['to4DoF',['../classrtabmap_1_1Transform.html#a9b0c23cbc2d0938b8da638930cb109de',1,'rtabmap::Transform']]], + ['tobool_6',['toBool',['../classUVariant.html#aef09280be48b33bcc066de2a636be31f',1,'UVariant']]], + ['tochar_7',['toChar',['../classUVariant.html#aa2efe71a7dbf953c26134281c815c489',1,'UVariant']]], + ['tochararray_8',['toCharArray',['../classUVariant.html#ae51189767aa02abd8a538b183f95f993',1,'UVariant']]], + ['todouble_9',['toDouble',['../classUVariant.html#a4c4ce1241a89ab635c0cdb04b3f3b0e9',1,'UVariant']]], + ['todoublearray_10',['toDoubleArray',['../classUVariant.html#a2b36afe6bf8f22f4e46d31596a2bbf74',1,'UVariant']]], + ['toenu_5fwgs84_11',['toENU_WGS84',['../classrtabmap_1_1GeodeticCoords.html#aedf48d8bfb2c8c181b1382919bf7b44c',1,'rtabmap::GeodeticCoords']]], + ['tofloat_12',['toFloat',['../classUVariant.html#a193ad2132d39551e780f813f38b174f1',1,'UVariant']]], + ['tofloatarray_13',['toFloatArray',['../classUVariant.html#acf89922efcc2fc0bea692623c8de4f8c',1,'UVariant']]], + ['togeocentric_5fwgs84_14',['toGeocentric_WGS84',['../classrtabmap_1_1GeodeticCoords.html#ae92c7ff2c0b5c5a41902bdfd589d5c10',1,'rtabmap::GeodeticCoords']]], + ['togeodeticcoords_15',['toGeodeticCoords',['../classrtabmap_1_1GPS.html#a2eeb2607721870789914f12688cbc375',1,'rtabmap::GPS']]], + ['toint_16',['toInt',['../classUVariant.html#aad652810c6faa5e0497049157b5b2a10',1,'UVariant']]], + ['tointarray_17',['toIntArray',['../classUVariant.html#a8ee57d98adc4f8c2798c3ba1b86f54b1',1,'UVariant']]], + ['toshort_18',['toShort',['../classUVariant.html#acd84cd8b255640810073c10331cf13b6',1,'UVariant']]], + ['toshortarray_19',['toShortArray',['../classUVariant.html#abae96c1d3abc90aea321a460d63250cb',1,'UVariant']]], + ['tostr_20',['toStr',['../classUVariant.html#a67cc47b07b28108ae018790073541438',1,'UVariant']]], + ['touchar_21',['toUChar',['../classUVariant.html#a1791fbefb946a8803f87f5049135eea7',1,'UVariant']]], + ['touchararray_22',['toUCharArray',['../classUVariant.html#ab7346a22ad30fb42e3b0e1750f6ba8e6',1,'UVariant']]], + ['touint_23',['toUInt',['../classUVariant.html#aa129ebd6447838c1584145e843e6c4e8',1,'UVariant']]], + ['touintarray_24',['toUIntArray',['../classUVariant.html#ad0aa83f26922b59194e69312ee771173',1,'UVariant']]], + ['toushort_25',['toUShort',['../classUVariant.html#a5e6282c19acb4de5a29f55143d451f60',1,'UVariant']]], + ['toushortarray_26',['toUShortArray',['../classUVariant.html#a40b1bccc560ab55190d3608ea0115bb2',1,'UVariant']]], + ['transform_27',['transform',['../classrtabmap_1_1Transform.html#ac3654d3f6802d4b0c17b6110d1eda71a',1,'rtabmap::Transform::Transform()'],['../classrtabmap_1_1Transform.html#af434ccbc426920a1b35ecbf4eec226e7',1,'rtabmap::Transform::Transform(float x, float y, float theta)'],['../classrtabmap_1_1Transform.html#af471c17a5e411db55813b766727830f4',1,'rtabmap::Transform::Transform(float x, float y, float z, float qx, float qy, float qz, float qw)'],['../classrtabmap_1_1Transform.html#a1023adcd1e5d65647e6eda50160c3474',1,'rtabmap::Transform::Transform(float x, float y, float z, float roll, float pitch, float yaw)'],['../classrtabmap_1_1Transform.html#a9b89b8bbe9cd75986bcb1ba6ceb5b9cd',1,'rtabmap::Transform::Transform(float r11, float r12, float r13, float o14, float r21, float r22, float r23, float o24, float r31, float r32, float r33, float o34)'],['../classrtabmap_1_1Transform.html#a82b851897ce2ca729d62fb92dcc48b9f',1,'rtabmap::Transform::Transform(const cv::Mat &transformationMatrix)'],['../classrtabmap_1_1Link.html#a49186880bde84ca3dd43c2d95449fbfb',1,'rtabmap::Link::transform()']]], + ['transformfromxyzcorrespondences_28',['transformFromXYZCorrespondences',['../namespacertabmap_1_1util3d.html#aab3ff771d2b43075bb8e7ca6e730c37c',1,'rtabmap::util3d']]], + ['transformfromxyzcorrespondencessvd_29',['transformFromXYZCorrespondencesSVD',['../namespacertabmap_1_1util3d.html#a56797352c7d47f815c694bc4ccb1faea',1,'rtabmap::util3d']]], + ['transformlaserscan_30',['transformLaserScan',['../namespacertabmap_1_1util3d.html#abf12a46cc48ee93e6575ea624377fb42',1,'rtabmap::util3d']]], + ['transformpoint_31',['transformpoint',['../group__TransformPoint.html#ga88b4f827a105254bf08bdae73cebdbe9',1,'rtabmap::util3d::transformPoint(const cv::Point3f &pt, const Transform &transform)'],['../group__TransformPoint.html#ga4910f2b937d405bd529772c33d477ca4',1,'rtabmap::util3d::transformPoint(const cv::Point3d &pt, const Transform &transform)'],['../group__TransformPoint.html#ga2ad96e68847f315e6d5df18d3219f308',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZ &pt, const Transform &transform)'],['../group__TransformPoint.html#ga7bfb9d7e10b81cd3b5e3f164081388be',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZI &pt, const Transform &transform)'],['../group__TransformPoint.html#ga90e6ffecb159bdff5afc75e16ab1fe19',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZRGB &pt, const Transform &transform)'],['../group__TransformPoint.html#gad98c1e7ba04edb9a57c5557d88360afd',1,'rtabmap::util3d::transformPoint(const pcl::PointNormal &point, const Transform &transform)'],['../group__TransformPoint.html#ga8cf51597b74c589365d2e0e2272bea70',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZRGBNormal &point, const Transform &transform)'],['../group__TransformPoint.html#gae272348c0353fe96683680b981a6b0fa',1,'rtabmap::util3d::transformPoint(const pcl::PointXYZINormal &point, const Transform &transform)']]], + ['transformpointcloud_32',['transformpointcloud',['../group__TransformPointcloud.html#ga47713c64205eb83460cfeec9a7bb6659',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#gac7c95eba604afe62ab897df62d862220',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga46b86abad0f4aa2ba7f191da0e07ba69',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga7a573f91887b29ec4ff2ef6355df4473',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga18eb2c9ec062b5453bf7c97128d89018',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga310e525344813377f2d470d47b7c4d51',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga1387b7a1d5280ed3596331f93fc56484',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#gac60701fa37d61f3cbe6f462da7576e73',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Transform &transform)'],['../group__TransformPointcloud.html#ga59e54f906ba844eb8780946e57b0e271',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga2a621fc8ab625cd4003b4f26e0ce3b52',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga797f466a165622e08dda14cdaccb5df6',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)'],['../group__TransformPointcloud.html#ga00514f671b8dbcc343ff481aa7c36367',1,'rtabmap::util3d::transformPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &transform)']]], + ['translation_33',['translation',['../classrtabmap_1_1Transform.html#aeeb0bbe0e84a9e46f63086c3ff4d4e0e',1,'rtabmap::Transform']]], + ['translationmatrix_34',['translationMatrix',['../classrtabmap_1_1Transform.html#a6a7bb81847554509d1128238860c047e',1,'rtabmap::Transform']]], + ['transvariance_35',['transVariance',['../classrtabmap_1_1Link.html#a3c4344c01b4f32a8b4a957b979fea84e',1,'rtabmap::Link']]], + ['triggernewmap_36',['triggerNewMap',['../classrtabmap_1_1Rtabmap.html#a4ab6de2be120bbda75577911d52346d4',1,'rtabmap::Rtabmap']]], + ['tx_37',['Tx',['../classrtabmap_1_1CameraModel.html#a6f6dc18af13a777e89a75725ef3e8ab4',1,'rtabmap::CameraModel']]], + ['type_38',['type',['../classrtabmap_1_1IMUFilter.html#ab6dc95a6f031745a33599646e75ff9f6',1,'rtabmap::IMUFilter::type()'],['../classUVariant.html#a4fa9e6607b2d99ba03d09bd39f42da4f',1,'UVariant::type()'],['../classrtabmap_1_1OptimizerTORO.html#a965efb877ac5edd3b6cda43983096a64',1,'rtabmap::OptimizerTORO::type()'],['../classrtabmap_1_1OptimizerGTSAM.html#a422fe2960e4b71832e2108d5ab2aee46',1,'rtabmap::OptimizerGTSAM::type()'],['../classrtabmap_1_1OptimizerG2O.html#af69edaad65a7f7f936fa99f8c617e10b',1,'rtabmap::OptimizerG2O::type()'],['../classrtabmap_1_1OptimizerCVSBA.html#afbf58e60900671630e0974a13e49b2b0',1,'rtabmap::OptimizerCVSBA::type()'],['../classrtabmap_1_1OptimizerCeres.html#ad6d6c0a0cdbea0ee5082d3aaa94d8e7a',1,'rtabmap::OptimizerCeres::type()'],['../classrtabmap_1_1Optimizer.html#aa2be82e1f986b1beae103148be7cd520',1,'rtabmap::Optimizer::type()'],['../classrtabmap_1_1Link.html#a17ea666cb54c4f7cce1c80bc2e1950c3',1,'rtabmap::Link::type()'],['../classrtabmap_1_1EnvSensor.html#abae79475fe7e568269a4b4ef4c5a7d24',1,'rtabmap::EnvSensor::type()']]], + ['typebayesfullpredictionupdate_39',['typeBayesFullPredictionUpdate',['../classrtabmap_1_1Parameters.html#a1b03bdfcb282bf6fa5e8a0e31e9a8525',1,'rtabmap::Parameters']]], + ['typebayespredictionlc_40',['typeBayesPredictionLC',['../classrtabmap_1_1Parameters.html#acea3564948945be8a1d5d3627b33bcb0',1,'rtabmap::Parameters']]], + ['typebayessparseprediction_41',['typeBayesSparsePrediction',['../classrtabmap_1_1Parameters.html#a9b2a59f274fd02f76ef97f52b98abf2b',1,'rtabmap::Parameters']]], + ['typebayesvirtualplacepriorthr_42',['typeBayesVirtualPlacePriorThr',['../classrtabmap_1_1Parameters.html#adf0155fc5e015ad6504d3772243f325b',1,'rtabmap::Parameters']]], + ['typebriefbytes_43',['typeBRIEFBytes',['../classrtabmap_1_1Parameters.html#aaf12f1bf5dac3d8471b215c296cc8861',1,'rtabmap::Parameters']]], + ['typebriskoctaves_44',['typeBRISKOctaves',['../classrtabmap_1_1Parameters.html#a32090c806b45a54559ef748c2b6efa7f',1,'rtabmap::Parameters']]], + ['typebriskpatternscale_45',['typeBRISKPatternScale',['../classrtabmap_1_1Parameters.html#a6b92c13841b0414e22b4548f9256ec18',1,'rtabmap::Parameters']]], + ['typebriskthresh_46',['typeBRISKThresh',['../classrtabmap_1_1Parameters.html#a2cbca0a14867ca55a8a69cbaedc6dc34',1,'rtabmap::Parameters']]], + ['typedbsqlite3cachesize_47',['typeDbSqlite3CacheSize',['../classrtabmap_1_1Parameters.html#adc6b1d1e169b30b7f19cd21c36024560',1,'rtabmap::Parameters']]], + ['typedbsqlite3inmemory_48',['typeDbSqlite3InMemory',['../classrtabmap_1_1Parameters.html#aa6e22f8aff3859fe1bf721003f119d12',1,'rtabmap::Parameters']]], + ['typedbsqlite3journalmode_49',['typeDbSqlite3JournalMode',['../classrtabmap_1_1Parameters.html#a66461d34ae9403d1894fd2ebab9a0362',1,'rtabmap::Parameters']]], + ['typedbsqlite3synchronous_50',['typeDbSqlite3Synchronous',['../classrtabmap_1_1Parameters.html#a5efc8cba8299a871fe1bfcc84813235b',1,'rtabmap::Parameters']]], + ['typedbsqlite3tempstore_51',['typeDbSqlite3TempStore',['../classrtabmap_1_1Parameters.html#a034464f74ed924e4fdd01bdc831a1351',1,'rtabmap::Parameters']]], + ['typedbtargetversion_52',['typeDbTargetVersion',['../classrtabmap_1_1Parameters.html#aa820cbcc77ed4110aaf31ca3c28dc825',1,'rtabmap::Parameters']]], + ['typefastcv_53',['typeFASTCV',['../classrtabmap_1_1Parameters.html#a5901a44519f83ee0c3dac11708c5000b',1,'rtabmap::Parameters']]], + ['typefastgpu_54',['typeFASTGpu',['../classrtabmap_1_1Parameters.html#aaa19b88f37d0b22742b30d56693db136',1,'rtabmap::Parameters']]], + ['typefastgpukeypointsratio_55',['typeFASTGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#a160d80af5cb01967f4273c73bd5f0941',1,'rtabmap::Parameters']]], + ['typefastgridcols_56',['typeFASTGridCols',['../classrtabmap_1_1Parameters.html#af56f2be335a5b506a6ea0cf372a12f05',1,'rtabmap::Parameters']]], + ['typefastgridrows_57',['typeFASTGridRows',['../classrtabmap_1_1Parameters.html#a2cfe8ce563fab9a6ca1ba068e0198eb3',1,'rtabmap::Parameters']]], + ['typefastmaxthreshold_58',['typeFASTMaxThreshold',['../classrtabmap_1_1Parameters.html#a05d39093fbede5866a0206b6e1f9740f',1,'rtabmap::Parameters']]], + ['typefastminthreshold_59',['typeFASTMinThreshold',['../classrtabmap_1_1Parameters.html#ab411fa51c0d1f98219fca770c9437aeb',1,'rtabmap::Parameters']]], + ['typefastnonmaxsuppression_60',['typeFASTNonmaxSuppression',['../classrtabmap_1_1Parameters.html#ae0ad8d42c727252b27f28cbba18c2dd8',1,'rtabmap::Parameters']]], + ['typefastthreshold_61',['typeFASTThreshold',['../classrtabmap_1_1Parameters.html#a34974bddc4ad79368deec6750bdf3a96',1,'rtabmap::Parameters']]], + ['typefreaknoctaves_62',['typeFREAKNOctaves',['../classrtabmap_1_1Parameters.html#a0020d3d78993cc9cc0c95431b40b5a59',1,'rtabmap::Parameters']]], + ['typefreakorientationnormalized_63',['typeFREAKOrientationNormalized',['../classrtabmap_1_1Parameters.html#a3fbceb8a9cc7ff9cf6c6c527ed869fcb',1,'rtabmap::Parameters']]], + ['typefreakpatternscale_64',['typeFREAKPatternScale',['../classrtabmap_1_1Parameters.html#a189a8a5f4a9c38e9447264317cd3eb84',1,'rtabmap::Parameters']]], + ['typefreakscalenormalized_65',['typeFREAKScaleNormalized',['../classrtabmap_1_1Parameters.html#a91777f019f78d25534a66d6175d4f72e',1,'rtabmap::Parameters']]], + ['typeg2ooptimizer_66',['typeg2oOptimizer',['../classrtabmap_1_1Parameters.html#a64492762bbb365c5b47c0129e810a05d',1,'rtabmap::Parameters']]], + ['typeg2osolver_67',['typeg2oSolver',['../classrtabmap_1_1Parameters.html#a9e22737f0f42ad706c6f596eb091123e',1,'rtabmap::Parameters']]], + ['typegfttblocksize_68',['typeGFTTBlockSize',['../classrtabmap_1_1Parameters.html#a8719a4e4a489e75827afb2d608c32d1a',1,'rtabmap::Parameters']]], + ['typegfttgpu_69',['typeGFTTGpu',['../classrtabmap_1_1Parameters.html#ac6d6728368b853ac0d99392df65886ba',1,'rtabmap::Parameters']]], + ['typegfttk_70',['typeGFTTK',['../classrtabmap_1_1Parameters.html#ab2eb6a1b538b7436acf902cf9adff619',1,'rtabmap::Parameters']]], + ['typegfttmindistance_71',['typeGFTTMinDistance',['../classrtabmap_1_1Parameters.html#ab07df1d353e8790f93c6061b7ef94950',1,'rtabmap::Parameters']]], + ['typegfttqualitylevel_72',['typeGFTTQualityLevel',['../classrtabmap_1_1Parameters.html#ad53c1300170a847bbf7be05a2e74b1bd',1,'rtabmap::Parameters']]], + ['typegfttuseharrisdetector_73',['typeGFTTUseHarrisDetector',['../classrtabmap_1_1Parameters.html#a0f940f605245ae18431809f675306fad',1,'rtabmap::Parameters']]], + ['typegmsthresholdfactor_74',['typeGMSThresholdFactor',['../classrtabmap_1_1Parameters.html#a2458c36b8bbaad6f63d6117e5d170d9f',1,'rtabmap::Parameters']]], + ['typegmswithrotation_75',['typeGMSWithRotation',['../classrtabmap_1_1Parameters.html#a3acf4701ca3d526ded2e529a2a9552b9',1,'rtabmap::Parameters']]], + ['typegmswithscale_76',['typeGMSWithScale',['../classrtabmap_1_1Parameters.html#a67eff6bc0809423e87206a24a4a2cbc3',1,'rtabmap::Parameters']]], + ['typegrid3d_77',['typeGrid3D',['../classrtabmap_1_1Parameters.html#acfef8bef24a69b28e98a6ea4a444ac94',1,'rtabmap::Parameters']]], + ['typegridcellsize_78',['typeGridCellSize',['../classrtabmap_1_1Parameters.html#aed3ded9d914622851725fb1dfea5ba27',1,'rtabmap::Parameters']]], + ['typegridclusterradius_79',['typeGridClusterRadius',['../classrtabmap_1_1Parameters.html#aae34ac78547641bccc3e99b45573c1ad',1,'rtabmap::Parameters']]], + ['typegriddepthdecimation_80',['typeGridDepthDecimation',['../classrtabmap_1_1Parameters.html#a173b5c0470421b57a77fa8a4fcfef71e',1,'rtabmap::Parameters']]], + ['typegriddepthroiratios_81',['typeGridDepthRoiRatios',['../classrtabmap_1_1Parameters.html#a58176c67d4275b5d8351aae9c6171cea',1,'rtabmap::Parameters']]], + ['typegridflatobstacledetected_82',['typeGridFlatObstacleDetected',['../classrtabmap_1_1Parameters.html#aecd539a71b6553272f0f292a820696b0',1,'rtabmap::Parameters']]], + ['typegridfootprintheight_83',['typeGridFootprintHeight',['../classrtabmap_1_1Parameters.html#aabe4b27b1768583dddda328bc70cde2d',1,'rtabmap::Parameters']]], + ['typegridfootprintlength_84',['typeGridFootprintLength',['../classrtabmap_1_1Parameters.html#a432c6050b500b67ad43290d0b57ec54a',1,'rtabmap::Parameters']]], + ['typegridfootprintwidth_85',['typeGridFootprintWidth',['../classrtabmap_1_1Parameters.html#a9744022c80e913e2e98bcd0028c3ec0a',1,'rtabmap::Parameters']]], + ['typegridglobalaltitudedelta_86',['typeGridGlobalAltitudeDelta',['../classrtabmap_1_1Parameters.html#a1b40a55f3d52e26edb2158a9724f742e',1,'rtabmap::Parameters']]], + ['typegridglobaleroded_87',['typeGridGlobalEroded',['../classrtabmap_1_1Parameters.html#a8148b8e333ac42319222327ce64be8d3',1,'rtabmap::Parameters']]], + ['typegridglobalfloodfilldepth_88',['typeGridGlobalFloodFillDepth',['../classrtabmap_1_1Parameters.html#a3043a76b3ab8d56808303acf5af91565',1,'rtabmap::Parameters']]], + ['typegridglobalfootprintradius_89',['typeGridGlobalFootprintRadius',['../classrtabmap_1_1Parameters.html#ac04e58ce51c7aef4dd2d1360ab89e98b',1,'rtabmap::Parameters']]], + ['typegridglobalmaxnodes_90',['typeGridGlobalMaxNodes',['../classrtabmap_1_1Parameters.html#a629f404911e9fea1e286a201247971b5',1,'rtabmap::Parameters']]], + ['typegridglobalminsize_91',['typeGridGlobalMinSize',['../classrtabmap_1_1Parameters.html#af86df131ee1ae31f34f21d0df17420c9',1,'rtabmap::Parameters']]], + ['typegridglobaloccupancythr_92',['typeGridGlobalOccupancyThr',['../classrtabmap_1_1Parameters.html#a0596b35d810c49b112b991e9a95976e6',1,'rtabmap::Parameters']]], + ['typegridglobalprobclampingmax_93',['typeGridGlobalProbClampingMax',['../classrtabmap_1_1Parameters.html#a71ccc2786718467fb8e316cef1ff5cfb',1,'rtabmap::Parameters']]], + ['typegridglobalprobclampingmin_94',['typeGridGlobalProbClampingMin',['../classrtabmap_1_1Parameters.html#a9343f83510ea7d71f74b8afa89801e80',1,'rtabmap::Parameters']]], + ['typegridglobalprobhit_95',['typeGridGlobalProbHit',['../classrtabmap_1_1Parameters.html#af49bb1ad7d692af846ffdea81fee7112',1,'rtabmap::Parameters']]], + ['typegridglobalprobmiss_96',['typeGridGlobalProbMiss',['../classrtabmap_1_1Parameters.html#ad411cd53072e045e4c16769fe9911db8',1,'rtabmap::Parameters']]], + ['typegridglobalupdateerror_97',['typeGridGlobalUpdateError',['../classrtabmap_1_1Parameters.html#a8b11452582f9a589f3f3f7b6f95e4b3f',1,'rtabmap::Parameters']]], + ['typegridgroundisobstacle_98',['typeGridGroundIsObstacle',['../classrtabmap_1_1Parameters.html#ab09d3e03e8446019a7ee6519b89ac5d3',1,'rtabmap::Parameters']]], + ['typegridmapframeprojection_99',['typeGridMapFrameProjection',['../classrtabmap_1_1Parameters.html#a422516d13bbd63c4a3a4af5d26809111',1,'rtabmap::Parameters']]], + ['typegridmaxgroundangle_100',['typeGridMaxGroundAngle',['../classrtabmap_1_1Parameters.html#a3ef2ad89200198b6df481d8e48488d52',1,'rtabmap::Parameters']]], + ['typegridmaxgroundheight_101',['typeGridMaxGroundHeight',['../classrtabmap_1_1Parameters.html#a7a8caafd0dece0ff8292b697f523b3b6',1,'rtabmap::Parameters']]], + ['typegridmaxobstacleheight_102',['typeGridMaxObstacleHeight',['../classrtabmap_1_1Parameters.html#a3e7b08928550a7e14de4988b80397c4a',1,'rtabmap::Parameters']]], + ['typegridminclustersize_103',['typeGridMinClusterSize',['../classrtabmap_1_1Parameters.html#afe2590b76da5d7cc6b8c61900cc35cd4',1,'rtabmap::Parameters']]], + ['typegridmingroundheight_104',['typeGridMinGroundHeight',['../classrtabmap_1_1Parameters.html#a1afa99d4494551529582c14da661c8a4',1,'rtabmap::Parameters']]], + ['typegridnoisefilteringminneighbors_105',['typeGridNoiseFilteringMinNeighbors',['../classrtabmap_1_1Parameters.html#a93e701588a77aaf96e43405aa77a4b35',1,'rtabmap::Parameters']]], + ['typegridnoisefilteringradius_106',['typeGridNoiseFilteringRadius',['../classrtabmap_1_1Parameters.html#acfdf775db0077e0675513cce701f37d8',1,'rtabmap::Parameters']]], + ['typegridnormalk_107',['typeGridNormalK',['../classrtabmap_1_1Parameters.html#a6ee8a3e2e174cfc93bd8a7840f967db0',1,'rtabmap::Parameters']]], + ['typegridnormalssegmentation_108',['typeGridNormalsSegmentation',['../classrtabmap_1_1Parameters.html#a8067e61eb92760f0a90076c8113c5401',1,'rtabmap::Parameters']]], + ['typegridprevoxelfiltering_109',['typeGridPreVoxelFiltering',['../classrtabmap_1_1Parameters.html#ae21fcb1b367f5972bf2cbdeea2d537e8',1,'rtabmap::Parameters']]], + ['typegridrangemax_110',['typeGridRangeMax',['../classrtabmap_1_1Parameters.html#a4e0a732f231b882e3729b425c80670f2',1,'rtabmap::Parameters']]], + ['typegridrangemin_111',['typeGridRangeMin',['../classrtabmap_1_1Parameters.html#a177a966ab594edce9e22683958442583',1,'rtabmap::Parameters']]], + ['typegridraytracing_112',['typeGridRayTracing',['../classrtabmap_1_1Parameters.html#ad644778787dff1183e046b90cb46f69e',1,'rtabmap::Parameters']]], + ['typegridscan2dunknownspacefilled_113',['typeGridScan2dUnknownSpaceFilled',['../classrtabmap_1_1Parameters.html#ae325c33fdb5800678de79a2f49765ee8',1,'rtabmap::Parameters']]], + ['typegridscandecimation_114',['typeGridScanDecimation',['../classrtabmap_1_1Parameters.html#a73945d56176f18ee077889804ec5c537',1,'rtabmap::Parameters']]], + ['typegridsensor_115',['typeGridSensor',['../classrtabmap_1_1Parameters.html#afcf2594351dbf47ea3f9d9a7da3e89dc',1,'rtabmap::Parameters']]], + ['typegtsamincrelinearizeskip_116',['typeGTSAMIncRelinearizeSkip',['../classrtabmap_1_1Parameters.html#a8ee2863fd434e312a1490f0f5b4049f6',1,'rtabmap::Parameters']]], + ['typegtsamincrelinearizethreshold_117',['typeGTSAMIncRelinearizeThreshold',['../classrtabmap_1_1Parameters.html#aef415399883e6b05fada7c8716d34724',1,'rtabmap::Parameters']]], + ['typegtsamincremental_118',['typeGTSAMIncremental',['../classrtabmap_1_1Parameters.html#a9feb54c6952c1fb2c1b844525ef3aa4d',1,'rtabmap::Parameters']]], + ['typegtsamoptimizer_119',['typeGTSAMOptimizer',['../classrtabmap_1_1Parameters.html#a375341fa0df47305ec99aab58cbb73b6',1,'rtabmap::Parameters']]], + ['typeicpccfilteroutfarthestpoints_120',['typeIcpCCFilterOutFarthestPoints',['../classrtabmap_1_1Parameters.html#aeed536dfe2d99ea6420fff28d81f3af2',1,'rtabmap::Parameters']]], + ['typeicpccmaxfinalrms_121',['typeIcpCCMaxFinalRMS',['../classrtabmap_1_1Parameters.html#a4c8c571e459a5062ac4633ee0d571ab9',1,'rtabmap::Parameters']]], + ['typeicpccsamplinglimit_122',['typeIcpCCSamplingLimit',['../classrtabmap_1_1Parameters.html#a07e11e9c55bc51fbf74258f4e0cabefd',1,'rtabmap::Parameters']]], + ['typeicpcorrespondenceratio_123',['typeIcpCorrespondenceRatio',['../classrtabmap_1_1Parameters.html#a972fbf2c1c68be6533aa90c98dc0da92',1,'rtabmap::Parameters']]], + ['typeicpdebugexportformat_124',['typeIcpDebugExportFormat',['../classrtabmap_1_1Parameters.html#a9bd9d8ce401e5386c1b8228095bf12ca',1,'rtabmap::Parameters']]], + ['typeicpdownsamplingstep_125',['typeIcpDownsamplingStep',['../classrtabmap_1_1Parameters.html#a43c7d3d01b20d25c17309efb3f894823',1,'rtabmap::Parameters']]], + ['typeicpepsilon_126',['typeIcpEpsilon',['../classrtabmap_1_1Parameters.html#ae4c440b8248b29713b2e889116c03999',1,'rtabmap::Parameters']]], + ['typeicpfiltersenabled_127',['typeIcpFiltersEnabled',['../classrtabmap_1_1Parameters.html#ae03e8c92b7b13de46d6a1587b81926ea',1,'rtabmap::Parameters']]], + ['typeicpforce4dof_128',['typeIcpForce4DoF',['../classrtabmap_1_1Parameters.html#ae22720ec9cd3da1cca383cef56660abc',1,'rtabmap::Parameters']]], + ['typeicpiterations_129',['typeIcpIterations',['../classrtabmap_1_1Parameters.html#a875403342c4693485af540ea07e461ea',1,'rtabmap::Parameters']]], + ['typeicpmaxcorrespondencedistance_130',['typeIcpMaxCorrespondenceDistance',['../classrtabmap_1_1Parameters.html#a19f0966d72fa8ef0b74df5b8aa8a08ce',1,'rtabmap::Parameters']]], + ['typeicpmaxrotation_131',['typeIcpMaxRotation',['../classrtabmap_1_1Parameters.html#a9b7a83861545b6a98c2ade14e8a42995',1,'rtabmap::Parameters']]], + ['typeicpmaxtranslation_132',['typeIcpMaxTranslation',['../classrtabmap_1_1Parameters.html#a2709ee512ccb6ea971d43cee84e2d8da',1,'rtabmap::Parameters']]], + ['typeicpoutlierratio_133',['typeIcpOutlierRatio',['../classrtabmap_1_1Parameters.html#ae4cf03fa5e431ece1faffe1dae240b17',1,'rtabmap::Parameters']]], + ['typeicppmconfig_134',['typeIcpPMConfig',['../classrtabmap_1_1Parameters.html#a17b85f7e68c7f326a1e7a4c9c515c2f1',1,'rtabmap::Parameters']]], + ['typeicppmmatcherepsilon_135',['typeIcpPMMatcherEpsilon',['../classrtabmap_1_1Parameters.html#ae9f87556071d4c6f9988c971e6e1ba67',1,'rtabmap::Parameters']]], + ['typeicppmmatcherintensity_136',['typeIcpPMMatcherIntensity',['../classrtabmap_1_1Parameters.html#a1099ed6d01a602500a35d6faa83c894d',1,'rtabmap::Parameters']]], + ['typeicppmmatcherknn_137',['typeIcpPMMatcherKnn',['../classrtabmap_1_1Parameters.html#a814e53a741c673e2fac9021fcee2cd9c',1,'rtabmap::Parameters']]], + ['typeicppointtoplane_138',['typeIcpPointToPlane',['../classrtabmap_1_1Parameters.html#ae533b7daed89ca3eb045eb9ddc30fe5c',1,'rtabmap::Parameters']]], + ['typeicppointtoplanecomplexitycentered_139',['typeIcpPointToPlaneComplexityCentered',['../classrtabmap_1_1Parameters.html#a3602f6786a3f6c2650248498b8b9f764',1,'rtabmap::Parameters']]], + ['typeicppointtoplanegroundnormalsup_140',['typeIcpPointToPlaneGroundNormalsUp',['../classrtabmap_1_1Parameters.html#a8066cf29da04bcd22a2885e43056742e',1,'rtabmap::Parameters']]], + ['typeicppointtoplanek_141',['typeIcpPointToPlaneK',['../classrtabmap_1_1Parameters.html#aa7c2516af27a3d655a9ffc6da1059408',1,'rtabmap::Parameters']]], + ['typeicppointtoplanelowcomplexitystrategy_142',['typeIcpPointToPlaneLowComplexityStrategy',['../classrtabmap_1_1Parameters.html#a0cc2c9a2b84389e1400e0c09b47a208e',1,'rtabmap::Parameters']]], + ['typeicppointtoplanemincomplexity_143',['typeIcpPointToPlaneMinComplexity',['../classrtabmap_1_1Parameters.html#aebb803402d88681b9cf29056a2bf8d6f',1,'rtabmap::Parameters']]], + ['typeicppointtoplaneradius_144',['typeIcpPointToPlaneRadius',['../classrtabmap_1_1Parameters.html#a9ec283805e806797300d74fc26511efe',1,'rtabmap::Parameters']]], + ['typeicprangemax_145',['typeIcpRangeMax',['../classrtabmap_1_1Parameters.html#a73a2646d5dc5e1cbb3733fd1f2abdf01',1,'rtabmap::Parameters']]], + ['typeicprangemin_146',['typeIcpRangeMin',['../classrtabmap_1_1Parameters.html#ae30c8014b29760b42849e362134dba95',1,'rtabmap::Parameters']]], + ['typeicpreciprocalcorrespondences_147',['typeIcpReciprocalCorrespondences',['../classrtabmap_1_1Parameters.html#a89b84c65a4e3dcbe4c53611630c1f68f',1,'rtabmap::Parameters']]], + ['typeicpstrategy_148',['typeIcpStrategy',['../classrtabmap_1_1Parameters.html#a85fcdb80537a890e52e4929d312cda88',1,'rtabmap::Parameters']]], + ['typeicpvoxelsize_149',['typeIcpVoxelSize',['../classrtabmap_1_1Parameters.html#a272fb297de54c23a97845ce41a54b898',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarybiasalpha_150',['typeImuFilterComplementaryBiasAlpha',['../classrtabmap_1_1Parameters.html#a8ccdcf04fb56a30f197f85099236309d',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarydoadpativegain_151',['typeImuFilterComplementaryDoAdpativeGain',['../classrtabmap_1_1Parameters.html#ac08606dfc64fc264574b8287d75f61f0',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarydobiasestimation_152',['typeImuFilterComplementaryDoBiasEstimation',['../classrtabmap_1_1Parameters.html#a83f0f617c8dd29bde8226d0ffc0523bb',1,'rtabmap::Parameters']]], + ['typeimufiltercomplementarygainacc_153',['typeImuFilterComplementaryGainAcc',['../classrtabmap_1_1Parameters.html#a75c23c0b11993d00da895572ab0a0f0b',1,'rtabmap::Parameters']]], + ['typeimufiltermadgwickgain_154',['typeImuFilterMadgwickGain',['../classrtabmap_1_1Parameters.html#a1ccedb25705469d51abcedc600c3c2d4',1,'rtabmap::Parameters']]], + ['typeimufiltermadgwickzeta_155',['typeImuFilterMadgwickZeta',['../classrtabmap_1_1Parameters.html#a09768fb0ae3a2562e47b4f5c656026d8',1,'rtabmap::Parameters']]], + ['typekazediffusivity_156',['typeKAZEDiffusivity',['../classrtabmap_1_1Parameters.html#adfc74dd952cb5ce98545c357c8a534ea',1,'rtabmap::Parameters']]], + ['typekazeextended_157',['typeKAZEExtended',['../classrtabmap_1_1Parameters.html#aaca1ec79fee5805d341b0ef8532f25ee',1,'rtabmap::Parameters']]], + ['typekazenoctavelayers_158',['typeKAZENOctaveLayers',['../classrtabmap_1_1Parameters.html#a0d66a519c701ef199a0ef48cbab1637d',1,'rtabmap::Parameters']]], + ['typekazenoctaves_159',['typeKAZENOctaves',['../classrtabmap_1_1Parameters.html#a56abe76b8fbe7790929afca3f68a3b74',1,'rtabmap::Parameters']]], + ['typekazethreshold_160',['typeKAZEThreshold',['../classrtabmap_1_1Parameters.html#acb4d10a8891db56c9d59cc6039076295',1,'rtabmap::Parameters']]], + ['typekazeupright_161',['typeKAZEUpright',['../classrtabmap_1_1Parameters.html#a73426ed644b8553972574eeee5602bd0',1,'rtabmap::Parameters']]], + ['typekpbadsignratio_162',['typeKpBadSignRatio',['../classrtabmap_1_1Parameters.html#a33d4a3980258fe746b91dc7867466eb4',1,'rtabmap::Parameters']]], + ['typekpbytetofloat_163',['typeKpByteToFloat',['../classrtabmap_1_1Parameters.html#a69324c9cc65ef0784b904c9cebf6cd85',1,'rtabmap::Parameters']]], + ['typekpdetectorstrategy_164',['typeKpDetectorStrategy',['../classrtabmap_1_1Parameters.html#a04b44cacb290e222a42848c0819fd35b',1,'rtabmap::Parameters']]], + ['typekpdictionarypath_165',['typeKpDictionaryPath',['../classrtabmap_1_1Parameters.html#aeb4e199cdffe91b56414543331897db8',1,'rtabmap::Parameters']]], + ['typekpflannindexsaved_166',['typeKpFlannIndexSaved',['../classrtabmap_1_1Parameters.html#a86fb17ee43b69729689cfe23ffabb9a2',1,'rtabmap::Parameters']]], + ['typekpflannrebalancingfactor_167',['typeKpFlannRebalancingFactor',['../classrtabmap_1_1Parameters.html#a31c98171e623d2d00ced8d5ee75aed20',1,'rtabmap::Parameters']]], + ['typekpflannthreads_168',['typeKpFlannThreads',['../classrtabmap_1_1Parameters.html#a417815f8d26c4ea32d3288c682679d2e',1,'rtabmap::Parameters']]], + ['typekpgridcols_169',['typeKpGridCols',['../classrtabmap_1_1Parameters.html#ab15d8e2de8d86b8b3d8597108533c677',1,'rtabmap::Parameters']]], + ['typekpgridrows_170',['typeKpGridRows',['../classrtabmap_1_1Parameters.html#ac11323ce2c03736482599f25126046fc',1,'rtabmap::Parameters']]], + ['typekpincrementaldictionary_171',['typeKpIncrementalDictionary',['../classrtabmap_1_1Parameters.html#a9aa02c3425918b1b506575caa9346c90',1,'rtabmap::Parameters']]], + ['typekpincrementalflann_172',['typeKpIncrementalFlann',['../classrtabmap_1_1Parameters.html#ab209736974cc9fcf74a1159e25f103a6',1,'rtabmap::Parameters']]], + ['typekpmaxdepth_173',['typeKpMaxDepth',['../classrtabmap_1_1Parameters.html#a78a9785220d4e1490ef49f1ca87f62d5',1,'rtabmap::Parameters']]], + ['typekpmaxfeatures_174',['typeKpMaxFeatures',['../classrtabmap_1_1Parameters.html#a637ab8a330eeb3c82afd9b22b53f1a57',1,'rtabmap::Parameters']]], + ['typekpmindepth_175',['typeKpMinDepth',['../classrtabmap_1_1Parameters.html#a5f3e8453ecbccb91d2102f85ea91226c',1,'rtabmap::Parameters']]], + ['typekpnewwordscomparedtogether_176',['typeKpNewWordsComparedTogether',['../classrtabmap_1_1Parameters.html#a2809f2e9b38bcae2c716e4cdf490c677',1,'rtabmap::Parameters']]], + ['typekpnndrratio_177',['typeKpNndrRatio',['../classrtabmap_1_1Parameters.html#a37b973218eaa4146f3c00b6b695b8bce',1,'rtabmap::Parameters']]], + ['typekpnnstrategy_178',['typeKpNNStrategy',['../classrtabmap_1_1Parameters.html#a63fc215ad56533c7aee24c79743643d3',1,'rtabmap::Parameters']]], + ['typekpparallelized_179',['typeKpParallelized',['../classrtabmap_1_1Parameters.html#ac0ae0d6d43877d470c634ee3cfe49393',1,'rtabmap::Parameters']]], + ['typekproiratios_180',['typeKpRoiRatios',['../classrtabmap_1_1Parameters.html#a6c84e9d5e13494c706f74e5532762b1d',1,'rtabmap::Parameters']]], + ['typekpserializewithchecksum_181',['typeKpSerializeWithChecksum',['../classrtabmap_1_1Parameters.html#ad23b7f54a9a91e3a3f79962e882b33e9',1,'rtabmap::Parameters']]], + ['typekpssc_182',['typeKpSSC',['../classrtabmap_1_1Parameters.html#aace0cd716e66db35854acda53104f48e',1,'rtabmap::Parameters']]], + ['typekpsubpixeps_183',['typeKpSubPixEps',['../classrtabmap_1_1Parameters.html#a9d1c3a16523e1f65b972e73a712b6532',1,'rtabmap::Parameters']]], + ['typekpsubpixiterations_184',['typeKpSubPixIterations',['../classrtabmap_1_1Parameters.html#a43ed8c3dbfd978a26d3cbc2b9f77db4a',1,'rtabmap::Parameters']]], + ['typekpsubpixwinsize_185',['typeKpSubPixWinSize',['../classrtabmap_1_1Parameters.html#a41645652ca7ba161d4d7f722e24d898d',1,'rtabmap::Parameters']]], + ['typekptfidflikelihoodused_186',['typeKpTfIdfLikelihoodUsed',['../classrtabmap_1_1Parameters.html#ac26fd2fc7a63eccf665d4d59a9c63509',1,'rtabmap::Parameters']]], + ['typemarkerapriltagdebug_187',['typeMarkerAprilTagDebug',['../classrtabmap_1_1Parameters.html#ada95dc82c517b99a9db54f982d73437c',1,'rtabmap::Parameters']]], + ['typemarkerapriltagdecodesharpening_188',['typeMarkerAprilTagDecodeSharpening',['../classrtabmap_1_1Parameters.html#a1affe5e560ccd8319c57460aaa584204',1,'rtabmap::Parameters']]], + ['typemarkerapriltagnthreads_189',['typeMarkerAprilTagNThreads',['../classrtabmap_1_1Parameters.html#a0f0ea057f6177784f48d7a56dadbba9b',1,'rtabmap::Parameters']]], + ['typemarkerapriltagquaddecimate_190',['typeMarkerAprilTagQuadDecimate',['../classrtabmap_1_1Parameters.html#aead4f644d78f977214b2fc93b6eb7284',1,'rtabmap::Parameters']]], + ['typemarkerapriltagquadsigma_191',['typeMarkerAprilTagQuadSigma',['../classrtabmap_1_1Parameters.html#a6f7e3b447891a7677191722361ca0a4d',1,'rtabmap::Parameters']]], + ['typemarkerapriltagrefineedges_192',['typeMarkerAprilTagRefineEdges',['../classrtabmap_1_1Parameters.html#a3d913545a02c1bf4a03d8f12b5e0e4bf',1,'rtabmap::Parameters']]], + ['typemarkerdictionary_193',['typeMarkerDictionary',['../classrtabmap_1_1Parameters.html#a04b3e76549b11a781162514557b78efd',1,'rtabmap::Parameters']]], + ['typemarkerlength_194',['typeMarkerLength',['../classrtabmap_1_1Parameters.html#a557b5579523a69f3b231140eb9c3421d',1,'rtabmap::Parameters']]], + ['typemarkerlengths_195',['typeMarkerLengths',['../classrtabmap_1_1Parameters.html#aff6eeea4dda39751c25d0521893f440e',1,'rtabmap::Parameters']]], + ['typemarkermaxdeptherror_196',['typeMarkerMaxDepthError',['../classrtabmap_1_1Parameters.html#a8581fb55c3c7eddf144b47a5c481ae08',1,'rtabmap::Parameters']]], + ['typemarkermaxrange_197',['typeMarkerMaxRange',['../classrtabmap_1_1Parameters.html#ae444c8c794c7f0b795cb7e8c15740277',1,'rtabmap::Parameters']]], + ['typemarkerminrange_198',['typeMarkerMinRange',['../classrtabmap_1_1Parameters.html#a02c66100cc1422be456c558be385fa6f',1,'rtabmap::Parameters']]], + ['typemarkeropencvcornerrefinementmethod_199',['typeMarkerOpenCVCornerRefinementMethod',['../classrtabmap_1_1Parameters.html#a3955def5fabc65b1eccb4c7feb58d140',1,'rtabmap::Parameters']]], + ['typemarkerpriors_200',['typeMarkerPriors',['../classrtabmap_1_1Parameters.html#af4d2ba6bb907c46c8f44185839e0ae15',1,'rtabmap::Parameters']]], + ['typemarkerpriorsvarianceangular_201',['typeMarkerPriorsVarianceAngular',['../classrtabmap_1_1Parameters.html#a7cb599a3478d0ef2e603361f71f6d535',1,'rtabmap::Parameters']]], + ['typemarkerpriorsvariancelinear_202',['typeMarkerPriorsVarianceLinear',['../classrtabmap_1_1Parameters.html#ad6032ec3358894c2a37df8d353f4f9e8',1,'rtabmap::Parameters']]], + ['typemarkerstrategy_203',['typeMarkerStrategy',['../classrtabmap_1_1Parameters.html#a70135230602d38b445c27856f98d01fc',1,'rtabmap::Parameters']]], + ['typemarkervarianceangular_204',['typeMarkerVarianceAngular',['../classrtabmap_1_1Parameters.html#ac64a26887e9a6a3bceb35478be31914a',1,'rtabmap::Parameters']]], + ['typemarkervariancelinear_205',['typeMarkerVarianceLinear',['../classrtabmap_1_1Parameters.html#a4b33a202551204376719fbe3c62b7cab',1,'rtabmap::Parameters']]], + ['typemarkervarianceorientationignored_206',['typeMarkerVarianceOrientationIgnored',['../classrtabmap_1_1Parameters.html#a80d840ef3648cdf88536cab67d60dc04',1,'rtabmap::Parameters']]], + ['typemembadsignaturesignored_207',['typeMemBadSignaturesIgnored',['../classrtabmap_1_1Parameters.html#a11d97c5d18e8f4345c8c15498ec9e5cb',1,'rtabmap::Parameters']]], + ['typemembindatakept_208',['typeMemBinDataKept',['../classrtabmap_1_1Parameters.html#ae86a7db1b3bb1e0692e1d3fcab606f4d',1,'rtabmap::Parameters']]], + ['typememcompressionparallelized_209',['typeMemCompressionParallelized',['../classrtabmap_1_1Parameters.html#aa8ade5f80f8b60b6f5e0dce47e782770',1,'rtabmap::Parameters']]], + ['typememcovoffdiagignored_210',['typeMemCovOffDiagIgnored',['../classrtabmap_1_1Parameters.html#aad8e1f69392fecdfdc9922ce2f3a2ba2',1,'rtabmap::Parameters']]], + ['typememdepthasmask_211',['typeMemDepthAsMask',['../classrtabmap_1_1Parameters.html#a8c0a8963f09a26c7f034a535340b6ec8',1,'rtabmap::Parameters']]], + ['typememdepthcompressionformat_212',['typeMemDepthCompressionFormat',['../classrtabmap_1_1Parameters.html#a826ca84929b4349800eaa822d38b9c5b',1,'rtabmap::Parameters']]], + ['typememdepthmaskfloorthr_213',['typeMemDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a7de2ff260c9aaec15166f85bf069f1d7',1,'rtabmap::Parameters']]], + ['typememgenerateids_214',['typeMemGenerateIds',['../classrtabmap_1_1Parameters.html#a5d49affbac2a2aed04cd0fa3fc77df2b',1,'rtabmap::Parameters']]], + ['typememglobaldescriptorstrategy_215',['typeMemGlobalDescriptorStrategy',['../classrtabmap_1_1Parameters.html#a16778220211bb4aa548cfd3cbcdb11bb',1,'rtabmap::Parameters']]], + ['typememimagecompressionformat_216',['typeMemImageCompressionFormat',['../classrtabmap_1_1Parameters.html#a87345250b6e908110f2196ae032ed0aa',1,'rtabmap::Parameters']]], + ['typememimagekept_217',['typeMemImageKept',['../classrtabmap_1_1Parameters.html#accaf0b981aa6999017757e1876ff1bc3',1,'rtabmap::Parameters']]], + ['typememimagepostdecimation_218',['typeMemImagePostDecimation',['../classrtabmap_1_1Parameters.html#aae5dccdbe4e0a6195040e168969b4ab3',1,'rtabmap::Parameters']]], + ['typememimagepredecimation_219',['typeMemImagePreDecimation',['../classrtabmap_1_1Parameters.html#a11950117b36523d8d38841173fc794e6',1,'rtabmap::Parameters']]], + ['typememincrementalmemory_220',['typeMemIncrementalMemory',['../classrtabmap_1_1Parameters.html#a21800896fff4f05946e81c2857d1e5fe',1,'rtabmap::Parameters']]], + ['typememinitwmwithallnodes_221',['typeMemInitWMWithAllNodes',['../classrtabmap_1_1Parameters.html#ae4638e9d59896ddb2b30cb82c385c13a',1,'rtabmap::Parameters']]], + ['typememintermediatenodedatakept_222',['typeMemIntermediateNodeDataKept',['../classrtabmap_1_1Parameters.html#a0fc867ad79f1ab92977213243339033d',1,'rtabmap::Parameters']]], + ['typememlaserscandownsamplestepsize_223',['typeMemLaserScanDownsampleStepSize',['../classrtabmap_1_1Parameters.html#a48eb5e534148f63ec1cd801b2b3c9738',1,'rtabmap::Parameters']]], + ['typememlaserscannormalk_224',['typeMemLaserScanNormalK',['../classrtabmap_1_1Parameters.html#ae08d01baf78070ee3752d6e1bf1593f7',1,'rtabmap::Parameters']]], + ['typememlaserscannormalradius_225',['typeMemLaserScanNormalRadius',['../classrtabmap_1_1Parameters.html#a3339347a6eef9e513b533729fe95cf27',1,'rtabmap::Parameters']]], + ['typememlaserscanvoxelsize_226',['typeMemLaserScanVoxelSize',['../classrtabmap_1_1Parameters.html#aebbac8aae4396068cd1a1c52071f7fb6',1,'rtabmap::Parameters']]], + ['typememloadvisuallocalfeaturesoninit_227',['typeMemLoadVisualLocalFeaturesOnInit',['../classrtabmap_1_1Parameters.html#abb2fb99f6fc573f773b69c9b85a78bd0',1,'rtabmap::Parameters']]], + ['typememlocalizationdatasaved_228',['typeMemLocalizationDataSaved',['../classrtabmap_1_1Parameters.html#a53c153d36ead57eb9420a14404b5e8f7',1,'rtabmap::Parameters']]], + ['typememlocalizationreadonly_229',['typeMemLocalizationReadOnly',['../classrtabmap_1_1Parameters.html#ab725e8cc7a5c0062ef1bdb9b1c540a53',1,'rtabmap::Parameters']]], + ['typememmaplabelsadded_230',['typeMemMapLabelsAdded',['../classrtabmap_1_1Parameters.html#a5665751154e4222b4b6922016ce1af0a',1,'rtabmap::Parameters']]], + ['typememnotlinkednodeskept_231',['typeMemNotLinkedNodesKept',['../classrtabmap_1_1Parameters.html#ac4c67bce0990201987d1b1c5170ac961',1,'rtabmap::Parameters']]], + ['typememrawdescriptorskept_232',['typeMemRawDescriptorsKept',['../classrtabmap_1_1Parameters.html#a3f2298ad837e39a486510a39a7ab578d',1,'rtabmap::Parameters']]], + ['typememrecentwmratio_233',['typeMemRecentWmRatio',['../classrtabmap_1_1Parameters.html#a3be8ceb8f478841307da018e7be8ff25',1,'rtabmap::Parameters']]], + ['typememreducegraph_234',['typeMemReduceGraph',['../classrtabmap_1_1Parameters.html#a54efd448718011d844d4a77438a4e11f',1,'rtabmap::Parameters']]], + ['typememrehearsalidupdatedtonewone_235',['typeMemRehearsalIdUpdatedToNewOne',['../classrtabmap_1_1Parameters.html#ab0e2ed39b1476db12c1baa9cd005c758',1,'rtabmap::Parameters']]], + ['typememrehearsalsimilarity_236',['typeMemRehearsalSimilarity',['../classrtabmap_1_1Parameters.html#a69cf38f0e449f3bc385db4ab00579f43',1,'rtabmap::Parameters']]], + ['typememrehearsalweightignoredwhilemoving_237',['typeMemRehearsalWeightIgnoredWhileMoving',['../classrtabmap_1_1Parameters.html#a08d842bdb32c10c88f7c3a5fc5c6b0fd',1,'rtabmap::Parameters']]], + ['typememrotateimagesupsideup_238',['typeMemRotateImagesUpsideUp',['../classrtabmap_1_1Parameters.html#aa01d5fdd8fd13161fffbccd2418d4985',1,'rtabmap::Parameters']]], + ['typememsavedepth16format_239',['typeMemSaveDepth16Format',['../classrtabmap_1_1Parameters.html#af3e0b3f68a3af714d1dbc56198a66c3c',1,'rtabmap::Parameters']]], + ['typememstereofrommotion_240',['typeMemStereoFromMotion',['../classrtabmap_1_1Parameters.html#aeb6d9c6dbabd4907cc2c166aa54d93f0',1,'rtabmap::Parameters']]], + ['typememstmsize_241',['typeMemSTMSize',['../classrtabmap_1_1Parameters.html#a0a0f9f34f0d51197248915892b5cd53d',1,'rtabmap::Parameters']]], + ['typememtransfersortingbyweightid_242',['typeMemTransferSortingByWeightId',['../classrtabmap_1_1Parameters.html#a0ec4baac4ca53ed008c1c47080bd6c46',1,'rtabmap::Parameters']]], + ['typememuseodomfeatures_243',['typeMemUseOdomFeatures',['../classrtabmap_1_1Parameters.html#a2de0eba9aff21b9eb0279492e1bcad51',1,'rtabmap::Parameters']]], + ['typememuseodomgravity_244',['typeMemUseOdomGravity',['../classrtabmap_1_1Parameters.html#a8f160b278891d9e345f95ca03a6189c2',1,'rtabmap::Parameters']]], + ['typename_245',['typename',['../classrtabmap_1_1Feature2D.html#a98050ef4da598e5b35bc32317bc58b84',1,'rtabmap::Feature2D::typeName()'],['../classrtabmap_1_1Link.html#a1fb9569f6435b5a1c800a935b08f0159',1,'rtabmap::Link::typeName()']]], + ['typeodomalignwithground_246',['typeOdomAlignWithGround',['../classrtabmap_1_1Parameters.html#aa4fae465d9dbe30d6dc967021db3ea5a',1,'rtabmap::Parameters']]], + ['typeodomcuvslammulticammode_247',['typeOdomCuVSLAMMulticamMode',['../classrtabmap_1_1Parameters.html#ab1cce5c7e04a20d4f4988a0c6bb6c7c7',1,'rtabmap::Parameters']]], + ['typeodomdeskewing_248',['typeOdomDeskewing',['../classrtabmap_1_1Parameters.html#a24a61030f642d9296c9aaaec41470f57',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustment_249',['typeOdomF2MBundleAdjustment',['../classrtabmap_1_1Parameters.html#a7940226a66f10a230be868d63cc0e306',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustmentmaxframes_250',['typeOdomF2MBundleAdjustmentMaxFrames',['../classrtabmap_1_1Parameters.html#a513adb9014624d6f4c49f5eefc420db7',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustmentmaxkeyframesperfeature_251',['typeOdomF2MBundleAdjustmentMaxKeyFramesPerFeature',['../classrtabmap_1_1Parameters.html#a8326a4fad1bc31d42ecd767e6692c975',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleadjustmentminmotion_252',['typeOdomF2MBundleAdjustmentMinMotion',['../classrtabmap_1_1Parameters.html#aab4730eef02b5915576edcf918ec1b1e',1,'rtabmap::Parameters']]], + ['typeodomf2mbundleupdatefeaturemaponallframes_253',['typeOdomF2MBundleUpdateFeatureMapOnAllFrames',['../classrtabmap_1_1Parameters.html#ae41684697f301c0fa79bf340cd0ab7fe',1,'rtabmap::Parameters']]], + ['typeodomf2mfloorthreshold_254',['typeOdomF2MFloorThreshold',['../classrtabmap_1_1Parameters.html#a5823019915a254581754302a8aefb319',1,'rtabmap::Parameters']]], + ['typeodomf2minitdepthfactor_255',['typeOdomF2MInitDepthFactor',['../classrtabmap_1_1Parameters.html#a124c81a90992da95bed189ecf65a8f7d',1,'rtabmap::Parameters']]], + ['typeodomf2mmaxnewfeatures_256',['typeOdomF2MMaxNewFeatures',['../classrtabmap_1_1Parameters.html#a76cbf9173df5e30155309657fa547309',1,'rtabmap::Parameters']]], + ['typeodomf2mmaxsize_257',['typeOdomF2MMaxSize',['../classrtabmap_1_1Parameters.html#aa7bef931c378cb662a5d321d61cf8628',1,'rtabmap::Parameters']]], + ['typeodomf2mscanmaxsize_258',['typeOdomF2MScanMaxSize',['../classrtabmap_1_1Parameters.html#af826e13666acc3f07eefda7d05afed80',1,'rtabmap::Parameters']]], + ['typeodomf2mscanrange_259',['typeOdomF2MScanRange',['../classrtabmap_1_1Parameters.html#a9fc3d80380823eb7d710172a665dd29a',1,'rtabmap::Parameters']]], + ['typeodomf2mscansubtractangle_260',['typeOdomF2MScanSubtractAngle',['../classrtabmap_1_1Parameters.html#a0d95c40fafccf72cffcdc4467a8156dd',1,'rtabmap::Parameters']]], + ['typeodomf2mscansubtractradius_261',['typeOdomF2MScanSubtractRadius',['../classrtabmap_1_1Parameters.html#a29c20a1dc4ab963a8c25ad8dcfdde5ca',1,'rtabmap::Parameters']]], + ['typeodomf2mvaliddepthratio_262',['typeOdomF2MValidDepthRatio',['../classrtabmap_1_1Parameters.html#a02883812982806e6b52e782608b6132d',1,'rtabmap::Parameters']]], + ['typeodomfillinfodata_263',['typeOdomFillInfoData',['../classrtabmap_1_1Parameters.html#ac23e41b4917d587e6cad518a887886ed',1,'rtabmap::Parameters']]], + ['typeodomfilteringstrategy_264',['typeOdomFilteringStrategy',['../classrtabmap_1_1Parameters.html#ad148fb299385c0a6ce9333628ce333aa',1,'rtabmap::Parameters']]], + ['typeodomfovisbucketheight_265',['typeOdomFovisBucketHeight',['../classrtabmap_1_1Parameters.html#ad87da710366f779d776285a6e309a139',1,'rtabmap::Parameters']]], + ['typeodomfovisbucketwidth_266',['typeOdomFovisBucketWidth',['../classrtabmap_1_1Parameters.html#a8eaa218d3bde0fb13fa74c37a0e9b2c2',1,'rtabmap::Parameters']]], + ['typeodomfoviscliqueinlierthreshold_267',['typeOdomFovisCliqueInlierThreshold',['../classrtabmap_1_1Parameters.html#af36e3ccf2b97c1202fc418d63db8187e',1,'rtabmap::Parameters']]], + ['typeodomfovisfastthreshold_268',['typeOdomFovisFastThreshold',['../classrtabmap_1_1Parameters.html#a7ff45cb8fe09a92a59ee43901a85b8ec',1,'rtabmap::Parameters']]], + ['typeodomfovisfastthresholdadaptivegain_269',['typeOdomFovisFastThresholdAdaptiveGain',['../classrtabmap_1_1Parameters.html#a00d0958f390dcf59d4743f70dec6c1f8',1,'rtabmap::Parameters']]], + ['typeodomfovisfeaturesearchwindow_270',['typeOdomFovisFeatureSearchWindow',['../classrtabmap_1_1Parameters.html#ae24495e10a7506a3a9f6ef163d61cbfa',1,'rtabmap::Parameters']]], + ['typeodomfovisfeaturewindowsize_271',['typeOdomFovisFeatureWindowSize',['../classrtabmap_1_1Parameters.html#a86eb0b72f6783c5d49951d5d5817d38c',1,'rtabmap::Parameters']]], + ['typeodomfovisinliermaxreprojectionerror_272',['typeOdomFovisInlierMaxReprojectionError',['../classrtabmap_1_1Parameters.html#ae8684ea68dd41488be1e763978604acc',1,'rtabmap::Parameters']]], + ['typeodomfovismaxkeypointsperbucket_273',['typeOdomFovisMaxKeypointsPerBucket',['../classrtabmap_1_1Parameters.html#a5c30f82d944f6da59b0cab15bb1351d0',1,'rtabmap::Parameters']]], + ['typeodomfovismaxmeanreprojectionerror_274',['typeOdomFovisMaxMeanReprojectionError',['../classrtabmap_1_1Parameters.html#a6bef1a3db95a9af8ab74b1cf62a81912',1,'rtabmap::Parameters']]], + ['typeodomfovismaxpyramidlevel_275',['typeOdomFovisMaxPyramidLevel',['../classrtabmap_1_1Parameters.html#a100cddcd80954c8f8e714d8a66d2c82a',1,'rtabmap::Parameters']]], + ['typeodomfovisminfeaturesforestimate_276',['typeOdomFovisMinFeaturesForEstimate',['../classrtabmap_1_1Parameters.html#ac9a8dddb3f706198317639c9e03a2ac1',1,'rtabmap::Parameters']]], + ['typeodomfovisminpyramidlevel_277',['typeOdomFovisMinPyramidLevel',['../classrtabmap_1_1Parameters.html#a3dd41b995d6c5ca5935c59d66de010bc',1,'rtabmap::Parameters']]], + ['typeodomfovisstereomaxdisparity_278',['typeOdomFovisStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a03383035535f2bb8036e93cc8eee5d8e',1,'rtabmap::Parameters']]], + ['typeodomfovisstereomaxdistepipolarline_279',['typeOdomFovisStereoMaxDistEpipolarLine',['../classrtabmap_1_1Parameters.html#a6a06d1dc9b26a3f257ef6e67e4b900a1',1,'rtabmap::Parameters']]], + ['typeodomfovisstereomaxrefinementdisplacement_280',['typeOdomFovisStereoMaxRefinementDisplacement',['../classrtabmap_1_1Parameters.html#a3c7478a1cbb19b6f543695810293d669',1,'rtabmap::Parameters']]], + ['typeodomfovisstereorequiremutualmatch_281',['typeOdomFovisStereoRequireMutualMatch',['../classrtabmap_1_1Parameters.html#a56253ab98d2ee917598582e868c01352',1,'rtabmap::Parameters']]], + ['typeodomfovistargetpixelsperfeature_282',['typeOdomFovisTargetPixelsPerFeature',['../classrtabmap_1_1Parameters.html#ae953b550d350af0a99323dc261d1e132',1,'rtabmap::Parameters']]], + ['typeodomfovisupdatetargetfeatureswithrefined_283',['typeOdomFovisUpdateTargetFeaturesWithRefined',['../classrtabmap_1_1Parameters.html#a20832aeb498fcdd2f2a6353c55d981e1',1,'rtabmap::Parameters']]], + ['typeodomfovisuseadaptivethreshold_284',['typeOdomFovisUseAdaptiveThreshold',['../classrtabmap_1_1Parameters.html#a7a7e58f941f6b3f501b061a2cf556e57',1,'rtabmap::Parameters']]], + ['typeodomfovisusebucketing_285',['typeOdomFovisUseBucketing',['../classrtabmap_1_1Parameters.html#ad2c40984ca2add5d8ba17963ca017b57',1,'rtabmap::Parameters']]], + ['typeodomfovisusehomographyinitialization_286',['typeOdomFovisUseHomographyInitialization',['../classrtabmap_1_1Parameters.html#a2cf1743eb1bb0170609131d1ef4ee689',1,'rtabmap::Parameters']]], + ['typeodomfovisuseimagenormalization_287',['typeOdomFovisUseImageNormalization',['../classrtabmap_1_1Parameters.html#abe94da7d58b326c9303d2c655c6e4baf',1,'rtabmap::Parameters']]], + ['typeodomfovisusesubpixelrefinement_288',['typeOdomFovisUseSubpixelRefinement',['../classrtabmap_1_1Parameters.html#a08e1889164d38cd5cb2fb40e5d18378e',1,'rtabmap::Parameters']]], + ['typeodomguessmotion_289',['typeOdomGuessMotion',['../classrtabmap_1_1Parameters.html#a25f8b0caf74b406a8ee38c4bfa6fc83f',1,'rtabmap::Parameters']]], + ['typeodomguesssmoothingdelay_290',['typeOdomGuessSmoothingDelay',['../classrtabmap_1_1Parameters.html#a1bebe2f829f9dd38f4f5f58ef3d10848',1,'rtabmap::Parameters']]], + ['typeodomholonomic_291',['typeOdomHolonomic',['../classrtabmap_1_1Parameters.html#a13747994edaae12d2cddc3413a14594a',1,'rtabmap::Parameters']]], + ['typeodomimagebuffersize_292',['typeOdomImageBufferSize',['../classrtabmap_1_1Parameters.html#adbcc200b4e893be1c5bcb69be2b05db3',1,'rtabmap::Parameters']]], + ['typeodomimagedecimation_293',['typeOdomImageDecimation',['../classrtabmap_1_1Parameters.html#a49edae0887c2ea2b54950040bc064d5d',1,'rtabmap::Parameters']]], + ['typeodomkalmanmeasurementnoise_294',['typeOdomKalmanMeasurementNoise',['../classrtabmap_1_1Parameters.html#a103f1d8f4d49ad50390f4e712ef4e4db',1,'rtabmap::Parameters']]], + ['typeodomkalmanprocessnoise_295',['typeOdomKalmanProcessNoise',['../classrtabmap_1_1Parameters.html#a887ec5442e03003807acf20292402664',1,'rtabmap::Parameters']]], + ['typeodomkeyframethr_296',['typeOdomKeyFrameThr',['../classrtabmap_1_1Parameters.html#acd625c0a7cd9759310de5bd8cd19698d',1,'rtabmap::Parameters']]], + ['typeodomliosamangvar_297',['typeOdomLIOSAMAngVar',['../classrtabmap_1_1Parameters.html#a3fbf9e93d158a5889504826fdccce7f5',1,'rtabmap::Parameters']]], + ['typeodomliosamconfigpath_298',['typeOdomLIOSAMConfigPath',['../classrtabmap_1_1Parameters.html#abdfd1208f2c4fe97b0aeda82509cfa0e',1,'rtabmap::Parameters']]], + ['typeodomliosamedgethreshold_299',['typeOdomLIOSAMEdgeThreshold',['../classrtabmap_1_1Parameters.html#a8e8bef1b13b87ee5604890e956bf209e',1,'rtabmap::Parameters']]], + ['typeodomliosamhorizonscan_300',['typeOdomLIOSAMHorizonScan',['../classrtabmap_1_1Parameters.html#af110b729255631d7631107fc2e58660a',1,'rtabmap::Parameters']]], + ['typeodomliosamimuaccbiasn_301',['typeOdomLIOSAMImuAccBiasN',['../classrtabmap_1_1Parameters.html#adcd79d54c9a906a2f499b2e4c0e2e1ba',1,'rtabmap::Parameters']]], + ['typeodomliosamimuaccnoise_302',['typeOdomLIOSAMImuAccNoise',['../classrtabmap_1_1Parameters.html#acdc5f652218c6f8aad88c1dca1f8985c',1,'rtabmap::Parameters']]], + ['typeodomliosamimugravity_303',['typeOdomLIOSAMImuGravity',['../classrtabmap_1_1Parameters.html#a1ad5d8d38104c30b1af77afe80de0fb7',1,'rtabmap::Parameters']]], + ['typeodomliosamimugyrbiasn_304',['typeOdomLIOSAMImuGyrBiasN',['../classrtabmap_1_1Parameters.html#a1c787aecbc49182c35a6e2c1261f0e90',1,'rtabmap::Parameters']]], + ['typeodomliosamimugyrnoise_305',['typeOdomLIOSAMImuGyrNoise',['../classrtabmap_1_1Parameters.html#afd7af5ac4d33ee71c160572b2c851bf7',1,'rtabmap::Parameters']]], + ['typeodomliosamlinvar_306',['typeOdomLIOSAMLinVar',['../classrtabmap_1_1Parameters.html#a8d2a8426c248982d8ecafdb6cd657658',1,'rtabmap::Parameters']]], + ['typeodomliosamnscan_307',['typeOdomLIOSAMNScan',['../classrtabmap_1_1Parameters.html#ac68c06fbc0201e61373bcae649ae72a7',1,'rtabmap::Parameters']]], + ['typeodomliosamsensor_308',['typeOdomLIOSAMSensor',['../classrtabmap_1_1Parameters.html#aae38e57d0aeffac295c4889683373934',1,'rtabmap::Parameters']]], + ['typeodomliosamsurfthreshold_309',['typeOdomLIOSAMSurfThreshold',['../classrtabmap_1_1Parameters.html#a5ae21075bebd080c0d6b9d8bf48ecd2c',1,'rtabmap::Parameters']]], + ['typeodomloamangvar_310',['typeOdomLOAMAngVar',['../classrtabmap_1_1Parameters.html#a1539403cce7fd260693987dd88a6e105',1,'rtabmap::Parameters']]], + ['typeodomloamlinvar_311',['typeOdomLOAMLinVar',['../classrtabmap_1_1Parameters.html#a66cea8a537cdeb0c4a7e98aac23bf8de',1,'rtabmap::Parameters']]], + ['typeodomloamlocalmapping_312',['typeOdomLOAMLocalMapping',['../classrtabmap_1_1Parameters.html#a56474e36950608ea97c9adebdf62a2e5',1,'rtabmap::Parameters']]], + ['typeodomloamresolution_313',['typeOdomLOAMResolution',['../classrtabmap_1_1Parameters.html#a33dbaf2d70ea68db0267db8fe4b73779',1,'rtabmap::Parameters']]], + ['typeodomloamscanperiod_314',['typeOdomLOAMScanPeriod',['../classrtabmap_1_1Parameters.html#aff60eab1c95885f90c7c28d5a0ad3f18',1,'rtabmap::Parameters']]], + ['typeodomloamsensor_315',['typeOdomLOAMSensor',['../classrtabmap_1_1Parameters.html#acedafb9d83acd2112a3bb482ba084fc2',1,'rtabmap::Parameters']]], + ['typeodommonoinitminflow_316',['typeOdomMonoInitMinFlow',['../classrtabmap_1_1Parameters.html#a46e27d1c93ba406bf564d2cf59849790',1,'rtabmap::Parameters']]], + ['typeodommonoinitmintranslation_317',['typeOdomMonoInitMinTranslation',['../classrtabmap_1_1Parameters.html#a12ea6b887781afba0c6ce767f56476db',1,'rtabmap::Parameters']]], + ['typeodommonomaxvariance_318',['typeOdomMonoMaxVariance',['../classrtabmap_1_1Parameters.html#a3d5f9bceaa2de4089156042d5c139341',1,'rtabmap::Parameters']]], + ['typeodommonomintranslation_319',['typeOdomMonoMinTranslation',['../classrtabmap_1_1Parameters.html#a9f84413a4461686310b674bf96ffb076',1,'rtabmap::Parameters']]], + ['typeodommsckffastthreshold_320',['typeOdomMSCKFFastThreshold',['../classrtabmap_1_1Parameters.html#ac0a064072a4edbf18d2cd6665ccba9f8',1,'rtabmap::Parameters']]], + ['typeodommsckfgridcol_321',['typeOdomMSCKFGridCol',['../classrtabmap_1_1Parameters.html#adb9427831843f86e9e3a50e146133af2',1,'rtabmap::Parameters']]], + ['typeodommsckfgridmaxfeaturenum_322',['typeOdomMSCKFGridMaxFeatureNum',['../classrtabmap_1_1Parameters.html#abd6305d4b6053d2e3e388e17162e0f8c',1,'rtabmap::Parameters']]], + ['typeodommsckfgridminfeaturenum_323',['typeOdomMSCKFGridMinFeatureNum',['../classrtabmap_1_1Parameters.html#a0ea5916c9a62528ac9a2ae73bf77a5f9',1,'rtabmap::Parameters']]], + ['typeodommsckfgridrow_324',['typeOdomMSCKFGridRow',['../classrtabmap_1_1Parameters.html#a8c996df43e9f9b06c3bb4479a9c9e1f1',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovaccbias_325',['typeOdomMSCKFInitCovAccBias',['../classrtabmap_1_1Parameters.html#a20284ede406bfbd27af0c5ae7030a3c5',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovexrot_326',['typeOdomMSCKFInitCovExRot',['../classrtabmap_1_1Parameters.html#a7c8b25c8c1c44a3012616802e1f39014',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovextrans_327',['typeOdomMSCKFInitCovExTrans',['../classrtabmap_1_1Parameters.html#a9edd2e8c4a752bb622f679201cf0d094',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovgyrobias_328',['typeOdomMSCKFInitCovGyroBias',['../classrtabmap_1_1Parameters.html#ace3efd614609c0b43f073f2f345839b5',1,'rtabmap::Parameters']]], + ['typeodommsckfinitcovvel_329',['typeOdomMSCKFInitCovVel',['../classrtabmap_1_1Parameters.html#ac26d5dbb4e7ac5d91a40e195106de483',1,'rtabmap::Parameters']]], + ['typeodommsckfmaxcamstatesize_330',['typeOdomMSCKFMaxCamStateSize',['../classrtabmap_1_1Parameters.html#a3d1200c3c2803df3e654c680dbba5a1e',1,'rtabmap::Parameters']]], + ['typeodommsckfmaxiteration_331',['typeOdomMSCKFMaxIteration',['../classrtabmap_1_1Parameters.html#aae780f7f5b7d1c3cc1f0163afa2f5664',1,'rtabmap::Parameters']]], + ['typeodommsckfnoiseacc_332',['typeOdomMSCKFNoiseAcc',['../classrtabmap_1_1Parameters.html#a8fb3b56ba7c229fad422ceb3ddd4ba96',1,'rtabmap::Parameters']]], + ['typeodommsckfnoiseaccbias_333',['typeOdomMSCKFNoiseAccBias',['../classrtabmap_1_1Parameters.html#a042be2834ef1757137b2fec01f781665',1,'rtabmap::Parameters']]], + ['typeodommsckfnoisefeature_334',['typeOdomMSCKFNoiseFeature',['../classrtabmap_1_1Parameters.html#a812493fe5c1d261322daba2db8c3fa3e',1,'rtabmap::Parameters']]], + ['typeodommsckfnoisegyro_335',['typeOdomMSCKFNoiseGyro',['../classrtabmap_1_1Parameters.html#a4ac7431ac364a5b712f1bcd8b8ddee5f',1,'rtabmap::Parameters']]], + ['typeodommsckfnoisegyrobias_336',['typeOdomMSCKFNoiseGyroBias',['../classrtabmap_1_1Parameters.html#a57c51e8e7863637ccb25920a2e5bc7b8',1,'rtabmap::Parameters']]], + ['typeodommsckfopttranslationthreshold_337',['typeOdomMSCKFOptTranslationThreshold',['../classrtabmap_1_1Parameters.html#a14103693c5a9a6f814a6d742e4b74c94',1,'rtabmap::Parameters']]], + ['typeodommsckfpatchsize_338',['typeOdomMSCKFPatchSize',['../classrtabmap_1_1Parameters.html#ae87506064b60b13540981c3879932be1',1,'rtabmap::Parameters']]], + ['typeodommsckfpositionstdthreshold_339',['typeOdomMSCKFPositionStdThreshold',['../classrtabmap_1_1Parameters.html#aadd62751748155ef15f4946acda4a398',1,'rtabmap::Parameters']]], + ['typeodommsckfpyramidlevels_340',['typeOdomMSCKFPyramidLevels',['../classrtabmap_1_1Parameters.html#ad49ab83fa9f7a7c0882fbdde3c04d335',1,'rtabmap::Parameters']]], + ['typeodommsckfransacthreshold_341',['typeOdomMSCKFRansacThreshold',['../classrtabmap_1_1Parameters.html#ab85cb336373c0403c18763da5af7260d',1,'rtabmap::Parameters']]], + ['typeodommsckfrotationthreshold_342',['typeOdomMSCKFRotationThreshold',['../classrtabmap_1_1Parameters.html#abc211a696417833bd7b8ed7fb48b47aa',1,'rtabmap::Parameters']]], + ['typeodommsckfstereothreshold_343',['typeOdomMSCKFStereoThreshold',['../classrtabmap_1_1Parameters.html#ac2f90c0b1f7130f1118b83265be3145d',1,'rtabmap::Parameters']]], + ['typeodommsckftrackingratethreshold_344',['typeOdomMSCKFTrackingRateThreshold',['../classrtabmap_1_1Parameters.html#ae7787e86c6ad3c4877eeb0a884c30644',1,'rtabmap::Parameters']]], + ['typeodommsckftrackprecision_345',['typeOdomMSCKFTrackPrecision',['../classrtabmap_1_1Parameters.html#a617125034739c9330abce25b06d93c4f',1,'rtabmap::Parameters']]], + ['typeodommsckftranslationthreshold_346',['typeOdomMSCKFTranslationThreshold',['../classrtabmap_1_1Parameters.html#a94df87203b9f3b5ff62c5ba29c5822ab',1,'rtabmap::Parameters']]], + ['typeodomokvisconfigpath_347',['typeOdomOKVISConfigPath',['../classrtabmap_1_1Parameters.html#a78ac298b3ababa6115fcf7fed8c09288',1,'rtabmap::Parameters']]], + ['typeodomopen3dmaxdepth_348',['typeOdomOpen3DMaxDepth',['../classrtabmap_1_1Parameters.html#a990bddd4b65f2eaf6a6d536f73168af0',1,'rtabmap::Parameters']]], + ['typeodomopen3dmethod_349',['typeOdomOpen3DMethod',['../classrtabmap_1_1Parameters.html#a53f319032810dccf546bc716b27bbde9',1,'rtabmap::Parameters']]], + ['typeodomopenvinsaccelerometernoisedensity_350',['typeOdomOpenVINSAccelerometerNoiseDensity',['../classrtabmap_1_1Parameters.html#a8b3a2bbf6e902dd371c27a3027073d52',1,'rtabmap::Parameters']]], + ['typeodomopenvinsaccelerometerrandomwalk_351',['typeOdomOpenVINSAccelerometerRandomWalk',['../classrtabmap_1_1Parameters.html#a3b280d249420c8a080d59a59776cd991',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibcamextrinsics_352',['typeOdomOpenVINSCalibCamExtrinsics',['../classrtabmap_1_1Parameters.html#a08d487f62bba202923e711f7c2bc5767',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibcamintrinsics_353',['typeOdomOpenVINSCalibCamIntrinsics',['../classrtabmap_1_1Parameters.html#af9fa267c7acf319c084444091734045b',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibcamtimeoffset_354',['typeOdomOpenVINSCalibCamTimeoffset',['../classrtabmap_1_1Parameters.html#a40947e5eba109b23d5e058456a085267',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibimugsensitivity_355',['typeOdomOpenVINSCalibIMUGSensitivity',['../classrtabmap_1_1Parameters.html#a0eaa7a87fbeeac68687edd7c2599a020',1,'rtabmap::Parameters']]], + ['typeodomopenvinscalibimuintrinsics_356',['typeOdomOpenVINSCalibIMUIntrinsics',['../classrtabmap_1_1Parameters.html#a8897c528049baa925ad5ec611c78b428',1,'rtabmap::Parameters']]], + ['typeodomopenvinsconfigpath_357',['typeOdomOpenVINSConfigPath',['../classrtabmap_1_1Parameters.html#ad77710cf460c6b55b0914ffed739dacd',1,'rtabmap::Parameters']]], + ['typeodomopenvinsdtslamdelay_358',['typeOdomOpenVINSDtSLAMDelay',['../classrtabmap_1_1Parameters.html#abfebab9eec3ff20d5dbecb0dac2e340f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfeatrepmsckf_359',['typeOdomOpenVINSFeatRepMSCKF',['../classrtabmap_1_1Parameters.html#a012d1437fb55743c5f7d1c29cd66fe84',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfeatrepslam_360',['typeOdomOpenVINSFeatRepSLAM',['../classrtabmap_1_1Parameters.html#ab6a4a67b483c541b9d4fd7241ab4b4f1',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfimaxbaseline_361',['typeOdomOpenVINSFiMaxBaseline',['../classrtabmap_1_1Parameters.html#a1131889d1b1a6ea127e27dc3f034206e',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfimaxcondnumber_362',['typeOdomOpenVINSFiMaxCondNumber',['../classrtabmap_1_1Parameters.html#a8f34d1861fc2cc6d537934667a04f80d',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfimaxruns_363',['typeOdomOpenVINSFiMaxRuns',['../classrtabmap_1_1Parameters.html#a4f9e7478b39453eec54f9bedf6337dab',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfirefinefeatures_364',['typeOdomOpenVINSFiRefineFeatures',['../classrtabmap_1_1Parameters.html#aed1840a5caa27539b13469e241dd991a',1,'rtabmap::Parameters']]], + ['typeodomopenvinsfitriangulate1d_365',['typeOdomOpenVINSFiTriangulate1d',['../classrtabmap_1_1Parameters.html#a1fa4befb095a3afddad9c93b2746b7fc',1,'rtabmap::Parameters']]], + ['typeodomopenvinsgravitymag_366',['typeOdomOpenVINSGravityMag',['../classrtabmap_1_1Parameters.html#aca75e8fd07fb5048aad4ed6c649c363f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsgyroscopenoisedensity_367',['typeOdomOpenVINSGyroscopeNoiseDensity',['../classrtabmap_1_1Parameters.html#af12aca81c1f84af90a9978a79514f2ef',1,'rtabmap::Parameters']]], + ['typeodomopenvinsgyroscoperandomwalk_368',['typeOdomOpenVINSGyroscopeRandomWalk',['../classrtabmap_1_1Parameters.html#a1ecfcc933390e003a6eec73b3182bab0',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationba_369',['typeOdomOpenVINSInitDynInflationBa',['../classrtabmap_1_1Parameters.html#a10d312194811f83a08d9846197c47f58',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationbg_370',['typeOdomOpenVINSInitDynInflationBg',['../classrtabmap_1_1Parameters.html#a25faee80fdd2e9fed884404eef3797b9',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationori_371',['typeOdomOpenVINSInitDynInflationOri',['../classrtabmap_1_1Parameters.html#ac5f1c743b50b34683234103ffc7378c9',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdyninflationvel_372',['typeOdomOpenVINSInitDynInflationVel',['../classrtabmap_1_1Parameters.html#a2dfbf7ba2fb2e69c58c7867494cfe47f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmindeg_373',['typeOdomOpenVINSInitDynMinDeg',['../classrtabmap_1_1Parameters.html#ad04048c8d08c0f27b04b143b1db13e11',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynminreccond_374',['typeOdomOpenVINSInitDynMinRecCond',['../classrtabmap_1_1Parameters.html#aa53359d70bb49dae236c6a461b7e004f',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmlemaxiter_375',['typeOdomOpenVINSInitDynMLEMaxIter',['../classrtabmap_1_1Parameters.html#a15ee149130f2f749e93371f0be75465e',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmlemaxthreads_376',['typeOdomOpenVINSInitDynMLEMaxThreads',['../classrtabmap_1_1Parameters.html#a87f3ff011f642964fab3a60d21e0f032',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmlemaxtime_377',['typeOdomOpenVINSInitDynMLEMaxTime',['../classrtabmap_1_1Parameters.html#ab0fd3c8a82769905328cafae39a03ed0',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynmleoptcalib_378',['typeOdomOpenVINSInitDynMLEOptCalib',['../classrtabmap_1_1Parameters.html#a40ef74942faa53ac4c85c0017c45b0d5',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynnumpose_379',['typeOdomOpenVINSInitDynNumPose',['../classrtabmap_1_1Parameters.html#a5e6d172f58db1e7d703915ba44b32ea2',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitdynuse_380',['typeOdomOpenVINSInitDynUse',['../classrtabmap_1_1Parameters.html#ad61520368c7cf6373e3a4d8f3d907cbf',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitimuthresh_381',['typeOdomOpenVINSInitIMUThresh',['../classrtabmap_1_1Parameters.html#a94935b46d384dfda94694516159e3531',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitmaxdisparity_382',['typeOdomOpenVINSInitMaxDisparity',['../classrtabmap_1_1Parameters.html#a026cb65c6e014ca8d85fcacf31b99bbc',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitmaxfeatures_383',['typeOdomOpenVINSInitMaxFeatures',['../classrtabmap_1_1Parameters.html#a30b830ac6908544fc9b2e6445ab6b217',1,'rtabmap::Parameters']]], + ['typeodomopenvinsinitwindowtime_384',['typeOdomOpenVINSInitWindowTime',['../classrtabmap_1_1Parameters.html#acec7b60d059e3d90a48ccdcaf3bfe309',1,'rtabmap::Parameters']]], + ['typeodomopenvinsintegration_385',['typeOdomOpenVINSIntegration',['../classrtabmap_1_1Parameters.html#a9dc6ad5575ceea690928a051ab399fdc',1,'rtabmap::Parameters']]], + ['typeodomopenvinsleftmaskpath_386',['typeOdomOpenVINSLeftMaskPath',['../classrtabmap_1_1Parameters.html#a2c5e1d6b1033f729c854087db81dad68',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxclones_387',['typeOdomOpenVINSMaxClones',['../classrtabmap_1_1Parameters.html#aa057072a59f3bb16562772e1f0e26bd7',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxmsckfinupdate_388',['typeOdomOpenVINSMaxMSCKFInUpdate',['../classrtabmap_1_1Parameters.html#acb3fffb0c879d07b57f18ab93b058203',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxslam_389',['typeOdomOpenVINSMaxSLAM',['../classrtabmap_1_1Parameters.html#a3811f46c4ce22069f48630bceff8f654',1,'rtabmap::Parameters']]], + ['typeodomopenvinsmaxslaminupdate_390',['typeOdomOpenVINSMaxSLAMInUpdate',['../classrtabmap_1_1Parameters.html#a3e14ede354edef5f26dcd89c6eaf098d',1,'rtabmap::Parameters']]], + ['typeodomopenvinsminpxdist_391',['typeOdomOpenVINSMinPxDist',['../classrtabmap_1_1Parameters.html#af05bdd52bb01fe2434ec612bd7de4f17',1,'rtabmap::Parameters']]], + ['typeodomopenvinsnumpts_392',['typeOdomOpenVINSNumPts',['../classrtabmap_1_1Parameters.html#a713e1f17179b8bb541a5bd27b738911d',1,'rtabmap::Parameters']]], + ['typeodomopenvinsrightmaskpath_393',['typeOdomOpenVINSRightMaskPath',['../classrtabmap_1_1Parameters.html#a40800e0b5e2ae0892d2b6535f315fc1a',1,'rtabmap::Parameters']]], + ['typeodomopenvinstryzupt_394',['typeOdomOpenVINSTryZUPT',['../classrtabmap_1_1Parameters.html#aaabdcb6c03b9fcfd3fbd88b4d4a385e7',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupmsckfchi2multiplier_395',['typeOdomOpenVINSUpMSCKFChi2Multiplier',['../classrtabmap_1_1Parameters.html#af1256a1f21717214b6f383315a153d10',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupmsckfsigmapx_396',['typeOdomOpenVINSUpMSCKFSigmaPx',['../classrtabmap_1_1Parameters.html#ad130383a0ca21e36358467b30c28d984',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupslamchi2multiplier_397',['typeOdomOpenVINSUpSLAMChi2Multiplier',['../classrtabmap_1_1Parameters.html#a52b219cb4e733647378a6d2c2515074e',1,'rtabmap::Parameters']]], + ['typeodomopenvinsupslamsigmapx_398',['typeOdomOpenVINSUpSLAMSigmaPx',['../classrtabmap_1_1Parameters.html#a389a02393de33cf952c8deaf8e19b878',1,'rtabmap::Parameters']]], + ['typeodomopenvinsusefej_399',['typeOdomOpenVINSUseFEJ',['../classrtabmap_1_1Parameters.html#a0f364aa2c16132c36263e24d85e13db3',1,'rtabmap::Parameters']]], + ['typeodomopenvinsuseklt_400',['typeOdomOpenVINSUseKLT',['../classrtabmap_1_1Parameters.html#a7ea160bd2748b464e796cc61557e3f6b',1,'rtabmap::Parameters']]], + ['typeodomopenvinsusestereo_401',['typeOdomOpenVINSUseStereo',['../classrtabmap_1_1Parameters.html#a698cf0129e39a2e97cccc67e941f037a',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptchi2multiplier_402',['typeOdomOpenVINSZUPTChi2Multiplier',['../classrtabmap_1_1Parameters.html#ae4d768e375a4be72d15a65a8a4ae0edb',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptmaxdisparity_403',['typeOdomOpenVINSZUPTMaxDisparity',['../classrtabmap_1_1Parameters.html#ac9291484582bf15778951fb6d3cd10b5',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptmaxvelodicy_404',['typeOdomOpenVINSZUPTMaxVelodicy',['../classrtabmap_1_1Parameters.html#a5f9028593fed78f816a7c3ffdfae2dd3',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptnoisemultiplier_405',['typeOdomOpenVINSZUPTNoiseMultiplier',['../classrtabmap_1_1Parameters.html#a56ef2e866ef6a218b4a96a9c581816f3',1,'rtabmap::Parameters']]], + ['typeodomopenvinszuptonlyatbeginning_406',['typeOdomOpenVINSZUPTOnlyAtBeginning',['../classrtabmap_1_1Parameters.html#a299978ac5b7f5b14a157a9bc6077966e',1,'rtabmap::Parameters']]], + ['typeodomorbslamaccnoise_407',['typeOdomORBSLAMAccNoise',['../classrtabmap_1_1Parameters.html#a6a8dd7520b22e07956ba9e617e868ad6',1,'rtabmap::Parameters']]], + ['typeodomorbslamaccwalk_408',['typeOdomORBSLAMAccWalk',['../classrtabmap_1_1Parameters.html#a79def634a3f8c7e4955b605047808217',1,'rtabmap::Parameters']]], + ['typeodomorbslambf_409',['typeOdomORBSLAMBf',['../classrtabmap_1_1Parameters.html#a84c6337148c74cb998335066be2791c1',1,'rtabmap::Parameters']]], + ['typeodomorbslamfps_410',['typeOdomORBSLAMFps',['../classrtabmap_1_1Parameters.html#ad7b537335ffc8849773bc3e82965528c',1,'rtabmap::Parameters']]], + ['typeodomorbslamgyronoise_411',['typeOdomORBSLAMGyroNoise',['../classrtabmap_1_1Parameters.html#a260d54c9e71e9d97ffd8e305bc1b2fe8',1,'rtabmap::Parameters']]], + ['typeodomorbslamgyrowalk_412',['typeOdomORBSLAMGyroWalk',['../classrtabmap_1_1Parameters.html#ae368f4a863d467a0e6ab105bf96aad0a',1,'rtabmap::Parameters']]], + ['typeodomorbslaminertial_413',['typeOdomORBSLAMInertial',['../classrtabmap_1_1Parameters.html#ad2b70e4ff4020f62f822492718563b20',1,'rtabmap::Parameters']]], + ['typeodomorbslammapsize_414',['typeOdomORBSLAMMapSize',['../classrtabmap_1_1Parameters.html#addfc8fa35369b7dae617a41c47218684',1,'rtabmap::Parameters']]], + ['typeodomorbslammaxfeatures_415',['typeOdomORBSLAMMaxFeatures',['../classrtabmap_1_1Parameters.html#a565a2a76e76eb35b1520069fe82f305c',1,'rtabmap::Parameters']]], + ['typeodomorbslamsamplingrate_416',['typeOdomORBSLAMSamplingRate',['../classrtabmap_1_1Parameters.html#ae6ae9297334dd88396fba172df077579',1,'rtabmap::Parameters']]], + ['typeodomorbslamthdepth_417',['typeOdomORBSLAMThDepth',['../classrtabmap_1_1Parameters.html#aede6ea5d6e9c6629227675c865cbf3cf',1,'rtabmap::Parameters']]], + ['typeodomorbslamvocpath_418',['typeOdomORBSLAMVocPath',['../classrtabmap_1_1Parameters.html#aaa10f768a39a3d9afc9bec47d81c0633',1,'rtabmap::Parameters']]], + ['typeodomparticlelambdar_419',['typeOdomParticleLambdaR',['../classrtabmap_1_1Parameters.html#ad44d4bc1d8df92a3e0fd16e0a42fa84f',1,'rtabmap::Parameters']]], + ['typeodomparticlelambdat_420',['typeOdomParticleLambdaT',['../classrtabmap_1_1Parameters.html#a1197e83786586b8dcf2bf720b6df3138',1,'rtabmap::Parameters']]], + ['typeodomparticlenoiser_421',['typeOdomParticleNoiseR',['../classrtabmap_1_1Parameters.html#a65070c0a369125748f19f17b900c010e',1,'rtabmap::Parameters']]], + ['typeodomparticlenoiset_422',['typeOdomParticleNoiseT',['../classrtabmap_1_1Parameters.html#a92f4d4bfd4a26cf6786f971fe85807d9',1,'rtabmap::Parameters']]], + ['typeodomparticlesize_423',['typeOdomParticleSize',['../classrtabmap_1_1Parameters.html#ad4ed7bcac9990eb0b27fb07aada3b1ea',1,'rtabmap::Parameters']]], + ['typeodomresetcountdown_424',['typeOdomResetCountdown',['../classrtabmap_1_1Parameters.html#a64f378d65d780fee0dc96353af05bd0b',1,'rtabmap::Parameters']]], + ['typeodomscankeyframethr_425',['typeOdomScanKeyFrameThr',['../classrtabmap_1_1Parameters.html#a869c94e833b568ec909e7de92c0bc2f3',1,'rtabmap::Parameters']]], + ['typeodomstrategy_426',['typeOdomStrategy',['../classrtabmap_1_1Parameters.html#ad84515268c8c54fa4be9a4e870e422d7',1,'rtabmap::Parameters']]], + ['typeodomvinsfusionconfigpath_427',['typeOdomVINSFusionConfigPath',['../classrtabmap_1_1Parameters.html#ae4943907302ab3eab412ca7adcc16ee2',1,'rtabmap::Parameters']]], + ['typeodomviskeyframethr_428',['typeOdomVisKeyFrameThr',['../classrtabmap_1_1Parameters.html#aef7912215e1d5f0f868a71bfa9228f99',1,'rtabmap::Parameters']]], + ['typeodomviso2bucketheight_429',['typeOdomViso2BucketHeight',['../classrtabmap_1_1Parameters.html#a766723cbdec25cc02a8691507316af9b',1,'rtabmap::Parameters']]], + ['typeodomviso2bucketmaxfeatures_430',['typeOdomViso2BucketMaxFeatures',['../classrtabmap_1_1Parameters.html#ae74077c67894128372c35608eb5f4002',1,'rtabmap::Parameters']]], + ['typeodomviso2bucketwidth_431',['typeOdomViso2BucketWidth',['../classrtabmap_1_1Parameters.html#ad37fbb01b3e1d9e4cc3bd542f7b2a14c',1,'rtabmap::Parameters']]], + ['typeodomviso2inlierthreshold_432',['typeOdomViso2InlierThreshold',['../classrtabmap_1_1Parameters.html#ac9743257a6036a37caa744d253ecaff1',1,'rtabmap::Parameters']]], + ['typeodomviso2matchbinsize_433',['typeOdomViso2MatchBinsize',['../classrtabmap_1_1Parameters.html#a9ed5dc5c6c0557ac31e1f414388fbb11',1,'rtabmap::Parameters']]], + ['typeodomviso2matchdisptolerance_434',['typeOdomViso2MatchDispTolerance',['../classrtabmap_1_1Parameters.html#a51280d63a737dbaa723a7f45c6b510a9',1,'rtabmap::Parameters']]], + ['typeodomviso2matchhalfresolution_435',['typeOdomViso2MatchHalfResolution',['../classrtabmap_1_1Parameters.html#abd28d31e1005fdcac73e0fdbebed179a',1,'rtabmap::Parameters']]], + ['typeodomviso2matchmultistage_436',['typeOdomViso2MatchMultiStage',['../classrtabmap_1_1Parameters.html#a27cb88fbbd3f3b2581b24af3fa7a7c50',1,'rtabmap::Parameters']]], + ['typeodomviso2matchnmsn_437',['typeOdomViso2MatchNmsN',['../classrtabmap_1_1Parameters.html#aef0c888af0ce614aac6ea73ce0afc5b8',1,'rtabmap::Parameters']]], + ['typeodomviso2matchnmstau_438',['typeOdomViso2MatchNmsTau',['../classrtabmap_1_1Parameters.html#af24a67da4f8768f856212185ae6c0327',1,'rtabmap::Parameters']]], + ['typeodomviso2matchoutlierdisptolerance_439',['typeOdomViso2MatchOutlierDispTolerance',['../classrtabmap_1_1Parameters.html#af5bd33f6ad26de33dab7e9aade35c7b2',1,'rtabmap::Parameters']]], + ['typeodomviso2matchoutlierflowtolerance_440',['typeOdomViso2MatchOutlierFlowTolerance',['../classrtabmap_1_1Parameters.html#a621b75cd213a8aabf2699846f5da5722',1,'rtabmap::Parameters']]], + ['typeodomviso2matchradius_441',['typeOdomViso2MatchRadius',['../classrtabmap_1_1Parameters.html#a8653a6ba7fe830506dfa154bb2e7e3c7',1,'rtabmap::Parameters']]], + ['typeodomviso2matchrefinement_442',['typeOdomViso2MatchRefinement',['../classrtabmap_1_1Parameters.html#af190c6a5f3f441f37a69a0dbc9cf47e1',1,'rtabmap::Parameters']]], + ['typeodomviso2ransaciters_443',['typeOdomViso2RansacIters',['../classrtabmap_1_1Parameters.html#ad1d5a80a8eeae0cda5777d4f1f6b8009',1,'rtabmap::Parameters']]], + ['typeodomviso2reweighting_444',['typeOdomViso2Reweighting',['../classrtabmap_1_1Parameters.html#ab1d0b7fcf84396b427bbeda915e77285',1,'rtabmap::Parameters']]], + ['typeoptimizerbaseline_445',['typeOptimizerBaseline',['../classrtabmap_1_1Parameters.html#a45b4940de5211ac0c9cc154d457d6005',1,'rtabmap::Parameters']]], + ['typeoptimizerdisparityvariance_446',['typeOptimizerDisparityVariance',['../classrtabmap_1_1Parameters.html#ab47216abbd6f583a59d4cbf29b195be5',1,'rtabmap::Parameters']]], + ['typeoptimizerepsilon_447',['typeOptimizerEpsilon',['../classrtabmap_1_1Parameters.html#ad5c694598c06f93beba5cd9402eb75d0',1,'rtabmap::Parameters']]], + ['typeoptimizergravitysigma_448',['typeOptimizerGravitySigma',['../classrtabmap_1_1Parameters.html#a6590f0a398ae69723972d6c4cb23c9a6',1,'rtabmap::Parameters']]], + ['typeoptimizeriterations_449',['typeOptimizerIterations',['../classrtabmap_1_1Parameters.html#a718c4ad1d42e091077455bd2af984bcb',1,'rtabmap::Parameters']]], + ['typeoptimizerlandmarksignored_450',['typeOptimizerLandmarksIgnored',['../classrtabmap_1_1Parameters.html#a062aec7622e2bd79bf05b54a1e9c33d0',1,'rtabmap::Parameters']]], + ['typeoptimizerpixelvariance_451',['typeOptimizerPixelVariance',['../classrtabmap_1_1Parameters.html#acf07e9b146003000fd39ea09472e0418',1,'rtabmap::Parameters']]], + ['typeoptimizerpriorsignored_452',['typeOptimizerPriorsIgnored',['../classrtabmap_1_1Parameters.html#afaefce4e43b514d53d654bf2217cd70f',1,'rtabmap::Parameters']]], + ['typeoptimizerrobust_453',['typeOptimizerRobust',['../classrtabmap_1_1Parameters.html#ae6a01c8d00cccfda50db7594e5eec644',1,'rtabmap::Parameters']]], + ['typeoptimizerrobustkerneldelta_454',['typeOptimizerRobustKernelDelta',['../classrtabmap_1_1Parameters.html#a736fb01f8844d0445668b3c0ed30b716',1,'rtabmap::Parameters']]], + ['typeoptimizerstrategy_455',['typeOptimizerStrategy',['../classrtabmap_1_1Parameters.html#af463e8084ab89180e19ceafdc8d30251',1,'rtabmap::Parameters']]], + ['typeoptimizervarianceignored_456',['typeOptimizerVarianceIgnored',['../classrtabmap_1_1Parameters.html#a426416d3efa0da4fd647526918e3b92f',1,'rtabmap::Parameters']]], + ['typeorbedgethreshold_457',['typeORBEdgeThreshold',['../classrtabmap_1_1Parameters.html#a51faba893deec24a516e47c4028b4400',1,'rtabmap::Parameters']]], + ['typeorbfirstlevel_458',['typeORBFirstLevel',['../classrtabmap_1_1Parameters.html#a31feaef58fa0ec481166236af57dbd7e',1,'rtabmap::Parameters']]], + ['typeorbgpu_459',['typeORBGpu',['../classrtabmap_1_1Parameters.html#a6b8db5bf9a719d5a410c7a2ed6d05782',1,'rtabmap::Parameters']]], + ['typeorbnlevels_460',['typeORBNLevels',['../classrtabmap_1_1Parameters.html#a74e75b2722cfc0e157568f7271d239c0',1,'rtabmap::Parameters']]], + ['typeorbpatchsize_461',['typeORBPatchSize',['../classrtabmap_1_1Parameters.html#a22a509b8e8411d3580dac0d30967c4c4',1,'rtabmap::Parameters']]], + ['typeorbscalefactor_462',['typeORBScaleFactor',['../classrtabmap_1_1Parameters.html#a9717a76d3bf69125553a364e6338ed58',1,'rtabmap::Parameters']]], + ['typeorbscoretype_463',['typeORBScoreType',['../classrtabmap_1_1Parameters.html#abbebfe361da6ce5c5fa5974567b03ab1',1,'rtabmap::Parameters']]], + ['typeorbwta_5fk_464',['typeORBWTA_K',['../classrtabmap_1_1Parameters.html#a0c84839b5c32e2d86535c2b186be434f',1,'rtabmap::Parameters']]], + ['typepydescriptordim_465',['typePyDescriptorDim',['../classrtabmap_1_1Parameters.html#ab65a9191b084d81d6f6bd0459fd46895',1,'rtabmap::Parameters']]], + ['typepydescriptorpath_466',['typePyDescriptorPath',['../classrtabmap_1_1Parameters.html#a97a035608c1dbf76a82e425ec1207c46',1,'rtabmap::Parameters']]], + ['typepydetectorcuda_467',['typePyDetectorCuda',['../classrtabmap_1_1Parameters.html#a58467f64e3f813ffda07c35edcfd63b7',1,'rtabmap::Parameters']]], + ['typepydetectorpath_468',['typePyDetectorPath',['../classrtabmap_1_1Parameters.html#acc3e73731912f5a4fe861b29a7a51c57',1,'rtabmap::Parameters']]], + ['typepymatchercuda_469',['typePyMatcherCuda',['../classrtabmap_1_1Parameters.html#a81862a75eba735f5a4d3d0d7fbd7aa40',1,'rtabmap::Parameters']]], + ['typepymatcheriterations_470',['typePyMatcherIterations',['../classrtabmap_1_1Parameters.html#addcced88955989bb7fbdbd4371df0247',1,'rtabmap::Parameters']]], + ['typepymatchermodel_471',['typePyMatcherModel',['../classrtabmap_1_1Parameters.html#a5c8541a98beaf561646f3c7f6d721b95',1,'rtabmap::Parameters']]], + ['typepymatcherpath_472',['typePyMatcherPath',['../classrtabmap_1_1Parameters.html#a59a39aa018841ffd740e9cea42197914',1,'rtabmap::Parameters']]], + ['typepymatcherthreshold_473',['typePyMatcherThreshold',['../classrtabmap_1_1Parameters.html#a1b5ae6ade24092ab7ac58afcf4e56784',1,'rtabmap::Parameters']]], + ['typeregforce3dof_474',['typeRegForce3DoF',['../classrtabmap_1_1Parameters.html#a74f330050b68b3f032b580d568fcbda8',1,'rtabmap::Parameters']]], + ['typeregrepeatonce_475',['typeRegRepeatOnce',['../classrtabmap_1_1Parameters.html#a96a29fa93e1b37af4a693fe51dc0eb7c',1,'rtabmap::Parameters']]], + ['typeregstrategy_476',['typeRegStrategy',['../classrtabmap_1_1Parameters.html#ac65bbfb17e091fd60279dc71c00832c8',1,'rtabmap::Parameters']]], + ['typergbdaggressiveloopthr_477',['typeRGBDAggressiveLoopThr',['../classrtabmap_1_1Parameters.html#a8d5fe24ab51accb9b16a0eedc6eee95d',1,'rtabmap::Parameters']]], + ['typergbdangularspeedupdate_478',['typeRGBDAngularSpeedUpdate',['../classrtabmap_1_1Parameters.html#ac1e1ea827894561af807fb49486e9e75',1,'rtabmap::Parameters']]], + ['typergbdangularupdate_479',['typeRGBDAngularUpdate',['../classrtabmap_1_1Parameters.html#aec44c938840f9be3f79250edebeda119',1,'rtabmap::Parameters']]], + ['typergbdcreateoccupancygrid_480',['typeRGBDCreateOccupancyGrid',['../classrtabmap_1_1Parameters.html#a35a0be2772343e731bc78465318094b2',1,'rtabmap::Parameters']]], + ['typergbdenabled_481',['typeRGBDEnabled',['../classrtabmap_1_1Parameters.html#a174420b0c91cd62219a72d6cd6806923',1,'rtabmap::Parameters']]], + ['typergbdforceodom3dof_482',['typeRGBDForceOdom3DoF',['../classrtabmap_1_1Parameters.html#a9af9d941a0a6e21e4515177fb2c50be9',1,'rtabmap::Parameters']]], + ['typergbdgoalreachedradius_483',['typeRGBDGoalReachedRadius',['../classrtabmap_1_1Parameters.html#ad488c349038427ae5bdb4c9e6b4c9bfe',1,'rtabmap::Parameters']]], + ['typergbdgoalssavedinuserdata_484',['typeRGBDGoalsSavedInUserData',['../classrtabmap_1_1Parameters.html#a1cc40697e3bcdd7c870ef123bffe95f4',1,'rtabmap::Parameters']]], + ['typergbdinvertedreg_485',['typeRGBDInvertedReg',['../classrtabmap_1_1Parameters.html#a6fab3821409953c1aeffbb6de3cdd560',1,'rtabmap::Parameters']]], + ['typergbdlinearspeedupdate_486',['typeRGBDLinearSpeedUpdate',['../classrtabmap_1_1Parameters.html#aa55b548988b0b3ad148984a6f8b26ba3',1,'rtabmap::Parameters']]], + ['typergbdlinearupdate_487',['typeRGBDLinearUpdate',['../classrtabmap_1_1Parameters.html#a66dc8bb30e1aeceb7042d526c6580a8c',1,'rtabmap::Parameters']]], + ['typergbdlocalbundleonloopclosure_488',['typeRGBDLocalBundleOnLoopClosure',['../classrtabmap_1_1Parameters.html#aab1c01d2ce455a48c9525a7e45d23725',1,'rtabmap::Parameters']]], + ['typergbdlocalimmunizationratio_489',['typeRGBDLocalImmunizationRatio',['../classrtabmap_1_1Parameters.html#a8c00fd0ac865e26c69a73253d5c05c34',1,'rtabmap::Parameters']]], + ['typergbdlocalizationpriorerror_490',['typeRGBDLocalizationPriorError',['../classrtabmap_1_1Parameters.html#ab1e16e1a98ea8f6f4ed4f732f3788671',1,'rtabmap::Parameters']]], + ['typergbdlocalizationsecondtrywithoutproximitylinks_491',['typeRGBDLocalizationSecondTryWithoutProximityLinks',['../classrtabmap_1_1Parameters.html#a6e1cdb5ccd7002ad196da4678cc20e31',1,'rtabmap::Parameters']]], + ['typergbdlocalizationsmoothing_492',['typeRGBDLocalizationSmoothing',['../classrtabmap_1_1Parameters.html#aff12043a8470bd6bf04ff12038c1b20a',1,'rtabmap::Parameters']]], + ['typergbdlocalradius_493',['typeRGBDLocalRadius',['../classrtabmap_1_1Parameters.html#a22f26e525e4293ccc6817a70c7253504',1,'rtabmap::Parameters']]], + ['typergbdloopclosureidentityguess_494',['typeRGBDLoopClosureIdentityGuess',['../classrtabmap_1_1Parameters.html#a4ed6752e394a1f30c58a17a885eb2b36',1,'rtabmap::Parameters']]], + ['typergbdloopclosurereextractfeatures_495',['typeRGBDLoopClosureReextractFeatures',['../classrtabmap_1_1Parameters.html#a04bc91d8e01453fc9c0438a3477a276d',1,'rtabmap::Parameters']]], + ['typergbdloopcovlimited_496',['typeRGBDLoopCovLimited',['../classrtabmap_1_1Parameters.html#a3ce014ca32a4ee19b789b648bca253ab',1,'rtabmap::Parameters']]], + ['typergbdmarkerdetection_497',['typeRGBDMarkerDetection',['../classrtabmap_1_1Parameters.html#a0df374326b9d9e6a332283a26aafb2ab',1,'rtabmap::Parameters']]], + ['typergbdmaxlocalretrieved_498',['typeRGBDMaxLocalRetrieved',['../classrtabmap_1_1Parameters.html#a722c95d51c7e6c5530d46e838df56c5d',1,'rtabmap::Parameters']]], + ['typergbdmaxloopclosuredistance_499',['typeRGBDMaxLoopClosureDistance',['../classrtabmap_1_1Parameters.html#a5ea740cd8c1e119a4c25d1f2acf46e88',1,'rtabmap::Parameters']]], + ['typergbdmaxodomcachesize_500',['typeRGBDMaxOdomCacheSize',['../classrtabmap_1_1Parameters.html#ac5b534f0bd67a933ef0edf82c65e6114',1,'rtabmap::Parameters']]], + ['typergbdneighborlinkrefining_501',['typeRGBDNeighborLinkRefining',['../classrtabmap_1_1Parameters.html#a830a2c344ef3d97a33240c8f52cd37df',1,'rtabmap::Parameters']]], + ['typergbdnewmapodomchangedistance_502',['typeRGBDNewMapOdomChangeDistance',['../classrtabmap_1_1Parameters.html#a0f43c2f7e280b684a86d19d5a912d684',1,'rtabmap::Parameters']]], + ['typergbdoptimizefromgraphend_503',['typeRGBDOptimizeFromGraphEnd',['../classrtabmap_1_1Parameters.html#aee4db229dcebb45d7f6b818514b8bf38',1,'rtabmap::Parameters']]], + ['typergbdoptimizemaxerror_504',['typeRGBDOptimizeMaxError',['../classrtabmap_1_1Parameters.html#a509911145eeaf65eaa8b019fb726d758',1,'rtabmap::Parameters']]], + ['typergbdoptimizemaxerrorrepairradius_505',['typeRGBDOptimizeMaxErrorRepairRadius',['../classrtabmap_1_1Parameters.html#aaeea6cc17147bb5041637fd9baaf8f1b',1,'rtabmap::Parameters']]], + ['typergbdplanangularvelocity_506',['typeRGBDPlanAngularVelocity',['../classrtabmap_1_1Parameters.html#a9df1cbc7766c4b249019008f10c8f9b9',1,'rtabmap::Parameters']]], + ['typergbdplanlinearvelocity_507',['typeRGBDPlanLinearVelocity',['../classrtabmap_1_1Parameters.html#a813ec4e9f690783cae232e95bf17653b',1,'rtabmap::Parameters']]], + ['typergbdplanstuckiterations_508',['typeRGBDPlanStuckIterations',['../classrtabmap_1_1Parameters.html#a9c2b5d2195db689267f0855d029e3ada',1,'rtabmap::Parameters']]], + ['typergbdproximityangle_509',['typeRGBDProximityAngle',['../classrtabmap_1_1Parameters.html#ade244bd8fa9faeeae7bd7cd7c89e64d3',1,'rtabmap::Parameters']]], + ['typergbdproximitybyspace_510',['typeRGBDProximityBySpace',['../classrtabmap_1_1Parameters.html#a0ba618638e3c570a9c6e1894ec19b482',1,'rtabmap::Parameters']]], + ['typergbdproximitybytime_511',['typeRGBDProximityByTime',['../classrtabmap_1_1Parameters.html#a09d397775a4663983c108215778fa448',1,'rtabmap::Parameters']]], + ['typergbdproximityglobalscanmap_512',['typeRGBDProximityGlobalScanMap',['../classrtabmap_1_1Parameters.html#aea72e57f053552d64f255b2417d43fa7',1,'rtabmap::Parameters']]], + ['typergbdproximitymaxgraphdepth_513',['typeRGBDProximityMaxGraphDepth',['../classrtabmap_1_1Parameters.html#a42ba6b5ab39fbd1579dc2ee7f74386aa',1,'rtabmap::Parameters']]], + ['typergbdproximitymaxpaths_514',['typeRGBDProximityMaxPaths',['../classrtabmap_1_1Parameters.html#a5564167482d44d43c719b668777364c7',1,'rtabmap::Parameters']]], + ['typergbdproximitymergedscancovfactor_515',['typeRGBDProximityMergedScanCovFactor',['../classrtabmap_1_1Parameters.html#a2cb39857e877736211c84016d083d37f',1,'rtabmap::Parameters']]], + ['typergbdproximityodomguess_516',['typeRGBDProximityOdomGuess',['../classrtabmap_1_1Parameters.html#a2e36fe57df0992214632e821fc40cd17',1,'rtabmap::Parameters']]], + ['typergbdproximitypathfilteringradius_517',['typeRGBDProximityPathFilteringRadius',['../classrtabmap_1_1Parameters.html#aa1813e291696e90fffecb09c4c135819',1,'rtabmap::Parameters']]], + ['typergbdproximitypathmaxneighbors_518',['typeRGBDProximityPathMaxNeighbors',['../classrtabmap_1_1Parameters.html#ab628642d14eee51afdf7fa52d361b754',1,'rtabmap::Parameters']]], + ['typergbdproximitypathrawposesused_519',['typeRGBDProximityPathRawPosesUsed',['../classrtabmap_1_1Parameters.html#aba7dd29595da46d299399ea0c35189fe',1,'rtabmap::Parameters']]], + ['typergbdscanmatchingidssavedinlinks_520',['typeRGBDScanMatchingIdsSavedInLinks',['../classrtabmap_1_1Parameters.html#ad07f636ab373c24b88a3cc0ec20a5a55',1,'rtabmap::Parameters']]], + ['typergbdstartatorigin_521',['typeRGBDStartAtOrigin',['../classrtabmap_1_1Parameters.html#a00c3b516a7e20ddcfccdb9512f531687',1,'rtabmap::Parameters']]], + ['typertabmapcomputermse_522',['typeRtabmapComputeRMSE',['../classrtabmap_1_1Parameters.html#a0f11bba22df4688163c7c8815e202dbf',1,'rtabmap::Parameters']]], + ['typertabmapcreateintermediatenodes_523',['typeRtabmapCreateIntermediateNodes',['../classrtabmap_1_1Parameters.html#a4803c63cf7b4e0721d064c66196b8388',1,'rtabmap::Parameters']]], + ['typertabmapdetectionrate_524',['typeRtabmapDetectionRate',['../classrtabmap_1_1Parameters.html#af9e94ad7631bc97c9f47852cda3e1fe0',1,'rtabmap::Parameters']]], + ['typertabmapimagebuffersize_525',['typeRtabmapImageBufferSize',['../classrtabmap_1_1Parameters.html#a74b01ea391ec5da9319f720e76afc263',1,'rtabmap::Parameters']]], + ['typertabmapimagesalreadyrectified_526',['typeRtabmapImagesAlreadyRectified',['../classrtabmap_1_1Parameters.html#a72550d6640954c831920ef090eaec0bc',1,'rtabmap::Parameters']]], + ['typertabmaploopgps_527',['typeRtabmapLoopGPS',['../classrtabmap_1_1Parameters.html#a591a2a3d69c05e9d8629b4e044257c30',1,'rtabmap::Parameters']]], + ['typertabmaploopratio_528',['typeRtabmapLoopRatio',['../classrtabmap_1_1Parameters.html#a41b48fb69d2ebdbdb29d8861af0b904e',1,'rtabmap::Parameters']]], + ['typertabmaploopthr_529',['typeRtabmapLoopThr',['../classrtabmap_1_1Parameters.html#a9534b7cd0eaddb9ea84b4714775eee9a',1,'rtabmap::Parameters']]], + ['typertabmapmaxrepublished_530',['typeRtabmapMaxRepublished',['../classrtabmap_1_1Parameters.html#a16460b246833fd819d8e3383a164cc22',1,'rtabmap::Parameters']]], + ['typertabmapmaxretrieved_531',['typeRtabmapMaxRetrieved',['../classrtabmap_1_1Parameters.html#a862e70372bf7110c1f0d48624b70d316',1,'rtabmap::Parameters']]], + ['typertabmapmemorythr_532',['typeRtabmapMemoryThr',['../classrtabmap_1_1Parameters.html#a4b0f3e8dc9fbc3cffed8a33eb8b6adcc',1,'rtabmap::Parameters']]], + ['typertabmappublishlastsignature_533',['typeRtabmapPublishLastSignature',['../classrtabmap_1_1Parameters.html#a6a3bc4925be596849aa8041505917753',1,'rtabmap::Parameters']]], + ['typertabmappublishlikelihood_534',['typeRtabmapPublishLikelihood',['../classrtabmap_1_1Parameters.html#a42269e621eae1242f9b387f639148b38',1,'rtabmap::Parameters']]], + ['typertabmappublishpdf_535',['typeRtabmapPublishPdf',['../classrtabmap_1_1Parameters.html#ada48624ba0e31f9f4cd7d94f311ab550',1,'rtabmap::Parameters']]], + ['typertabmappublishramusage_536',['typeRtabmapPublishRAMUsage',['../classrtabmap_1_1Parameters.html#aa3a0bcf2c55a80dbac6c05670a040412',1,'rtabmap::Parameters']]], + ['typertabmappublishstats_537',['typeRtabmapPublishStats',['../classrtabmap_1_1Parameters.html#ac0cc4c5d2d642ef41929f88d1ccd6e0f',1,'rtabmap::Parameters']]], + ['typertabmaprectifyonlyfeatures_538',['typeRtabmapRectifyOnlyFeatures',['../classrtabmap_1_1Parameters.html#a2a351dbfbbc05d7a2cd6af901af8807e',1,'rtabmap::Parameters']]], + ['typertabmapsavewmstate_539',['typeRtabmapSaveWMState',['../classrtabmap_1_1Parameters.html#a228491df07cf89fb19ce222fee74a1f8',1,'rtabmap::Parameters']]], + ['typertabmapstartnewmapongoodsignature_540',['typeRtabmapStartNewMapOnGoodSignature',['../classrtabmap_1_1Parameters.html#ace5f344b49a5eb0fa276aa37436ba3d6',1,'rtabmap::Parameters']]], + ['typertabmapstartnewmaponloopclosure_541',['typeRtabmapStartNewMapOnLoopClosure',['../classrtabmap_1_1Parameters.html#a982f83cda4e3c602d1ccc105dc8ee3b1',1,'rtabmap::Parameters']]], + ['typertabmapstatisticlogged_542',['typeRtabmapStatisticLogged',['../classrtabmap_1_1Parameters.html#a86a6d5a1495d23415257b2caf7c402c5',1,'rtabmap::Parameters']]], + ['typertabmapstatisticloggedheaders_543',['typeRtabmapStatisticLoggedHeaders',['../classrtabmap_1_1Parameters.html#aa523f4400e6262c74e1a4a69c48d6eeb',1,'rtabmap::Parameters']]], + ['typertabmapstatisticlogsbufferedinram_544',['typeRtabmapStatisticLogsBufferedInRAM',['../classrtabmap_1_1Parameters.html#a4f8e2035304f0300a086a6430e8a78e4',1,'rtabmap::Parameters']]], + ['typertabmaptimethr_545',['typeRtabmapTimeThr',['../classrtabmap_1_1Parameters.html#ada7ff11630e4707236015fb0df7634b4',1,'rtabmap::Parameters']]], + ['typertabmapvirtualplacelikelihoodratio_546',['typeRtabmapVirtualPlaceLikelihoodRatio',['../classrtabmap_1_1Parameters.html#ac9189a4a40b800aef4a2ca79f5bacddd',1,'rtabmap::Parameters']]], + ['typertabmapworkingdirectory_547',['typeRtabmapWorkingDirectory',['../classrtabmap_1_1Parameters.html#a9bbaf23b9eaaff14661eb6810605fcdd',1,'rtabmap::Parameters']]], + ['typesiftcontrastthreshold_548',['typeSIFTContrastThreshold',['../classrtabmap_1_1Parameters.html#aa7a98dbdd25030ba8b3c3d6d25812275',1,'rtabmap::Parameters']]], + ['typesiftedgethreshold_549',['typeSIFTEdgeThreshold',['../classrtabmap_1_1Parameters.html#a9636e4360feb3900a60cb1cd1fc37e2f',1,'rtabmap::Parameters']]], + ['typesiftgaussianthreshold_550',['typeSIFTGaussianThreshold',['../classrtabmap_1_1Parameters.html#a07a5c3bce8f4e6eed3a1b9e9f2bcbd9d',1,'rtabmap::Parameters']]], + ['typesiftgpu_551',['typeSIFTGpu',['../classrtabmap_1_1Parameters.html#a198ea2c15832ae881070e3b16bd8e13b',1,'rtabmap::Parameters']]], + ['typesiftmaxgaussianthreshold_552',['typeSIFTMaxGaussianThreshold',['../classrtabmap_1_1Parameters.html#a4db8aa7ce1e0751580d013b0d1602eb6',1,'rtabmap::Parameters']]], + ['typesiftnoctavelayers_553',['typeSIFTNOctaveLayers',['../classrtabmap_1_1Parameters.html#adfdf8e6c82c818f1cf49b3b11db4e347',1,'rtabmap::Parameters']]], + ['typesiftpreciseupscale_554',['typeSIFTPreciseUpscale',['../classrtabmap_1_1Parameters.html#a9d0234486de6b8c799f94c7fce0cd37a',1,'rtabmap::Parameters']]], + ['typesiftrootsift_555',['typeSIFTRootSIFT',['../classrtabmap_1_1Parameters.html#a58a95cc5556485f1cc682096a02c5588',1,'rtabmap::Parameters']]], + ['typesiftsigma_556',['typeSIFTSigma',['../classrtabmap_1_1Parameters.html#a13c6f2775f440c0aea8e634e26fb2448',1,'rtabmap::Parameters']]], + ['typesiftupscale_557',['typeSIFTUpscale',['../classrtabmap_1_1Parameters.html#a7db2dedbb67a45cc343ba3475b1dcbab',1,'rtabmap::Parameters']]], + ['typestereobmblocksize_558',['typeStereoBMBlockSize',['../classrtabmap_1_1Parameters.html#a48bc5c292436183fa862de176c1df5f8',1,'rtabmap::Parameters']]], + ['typestereobmdisp12maxdiff_559',['typeStereoBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#aba3fc42fdcbae919a36f6c7255ab93a3',1,'rtabmap::Parameters']]], + ['typestereobmmindisparity_560',['typeStereoBMMinDisparity',['../classrtabmap_1_1Parameters.html#ae90fb4bf0b7ffbae4520c0c89881d1b1',1,'rtabmap::Parameters']]], + ['typestereobmnumdisparities_561',['typeStereoBMNumDisparities',['../classrtabmap_1_1Parameters.html#a2cf8294df88ade9e82a5e963e7dc3210',1,'rtabmap::Parameters']]], + ['typestereobmprefiltercap_562',['typeStereoBMPreFilterCap',['../classrtabmap_1_1Parameters.html#a10f581ffcf29e5d3dcb6b30b6743b8eb',1,'rtabmap::Parameters']]], + ['typestereobmprefiltersize_563',['typeStereoBMPreFilterSize',['../classrtabmap_1_1Parameters.html#aba6a719fbcd506b8e9ab98b3cdfc8c3e',1,'rtabmap::Parameters']]], + ['typestereobmspecklerange_564',['typeStereoBMSpeckleRange',['../classrtabmap_1_1Parameters.html#ad5d00152782f38c4cd1e80486d628b77',1,'rtabmap::Parameters']]], + ['typestereobmspecklewindowsize_565',['typeStereoBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a302ee45f964d646291a17b993597d014',1,'rtabmap::Parameters']]], + ['typestereobmtexturethreshold_566',['typeStereoBMTextureThreshold',['../classrtabmap_1_1Parameters.html#a9f78ec14109ebc332b425f8ad5044269',1,'rtabmap::Parameters']]], + ['typestereobmuniquenessratio_567',['typeStereoBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a27985f2275ebd0b5a50b173053f3b138',1,'rtabmap::Parameters']]], + ['typestereodensestrategy_568',['typeStereoDenseStrategy',['../classrtabmap_1_1Parameters.html#a2b54866595dc7af49acac908636da5df',1,'rtabmap::Parameters']]], + ['typestereoeps_569',['typeStereoEps',['../classrtabmap_1_1Parameters.html#aeaf7733b3f3724ddd4e2538241a56561',1,'rtabmap::Parameters']]], + ['typestereoerrorthreshold_570',['typeStereoErrorThreshold',['../classrtabmap_1_1Parameters.html#a95a26d753c59bf313d4021d357bdcf93',1,'rtabmap::Parameters']]], + ['typestereogpu_571',['typeStereoGpu',['../classrtabmap_1_1Parameters.html#a0292888838d2a512d75de42d6c7c184a',1,'rtabmap::Parameters']]], + ['typestereoiterations_572',['typeStereoIterations',['../classrtabmap_1_1Parameters.html#a399c381fc8caba6232b6ee29e73706ad',1,'rtabmap::Parameters']]], + ['typestereomaxdisparity_573',['typeStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a8c30835c1015e5f78ce99623259ed3ee',1,'rtabmap::Parameters']]], + ['typestereomaxlevel_574',['typeStereoMaxLevel',['../classrtabmap_1_1Parameters.html#aa80559bdb41b7a0697627ad04285243b',1,'rtabmap::Parameters']]], + ['typestereomindisparity_575',['typeStereoMinDisparity',['../classrtabmap_1_1Parameters.html#a468fef745d0a2a958fbe36122e111b05',1,'rtabmap::Parameters']]], + ['typestereomineigthreshold_576',['typeStereoMinEigThreshold',['../classrtabmap_1_1Parameters.html#a503aabffc06a0e3b3fae522980632024',1,'rtabmap::Parameters']]], + ['typestereoopticalflow_577',['typeStereoOpticalFlow',['../classrtabmap_1_1Parameters.html#ae3c1fcbb8b2d445398ed53e267c813ce',1,'rtabmap::Parameters']]], + ['typestereosgbmblocksize_578',['typeStereoSGBMBlockSize',['../classrtabmap_1_1Parameters.html#a6af2a87327bce4ac38c01502583a6255',1,'rtabmap::Parameters']]], + ['typestereosgbmdisp12maxdiff_579',['typeStereoSGBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#a9d571e4e20d4ff0bafd5102a3bf7a5f6',1,'rtabmap::Parameters']]], + ['typestereosgbmmindisparity_580',['typeStereoSGBMMinDisparity',['../classrtabmap_1_1Parameters.html#a88740b2ef2608641016accbbf9a28159',1,'rtabmap::Parameters']]], + ['typestereosgbmmode_581',['typeStereoSGBMMode',['../classrtabmap_1_1Parameters.html#ac542ea37dd0d7f5b148dedd864503999',1,'rtabmap::Parameters']]], + ['typestereosgbmnumdisparities_582',['typeStereoSGBMNumDisparities',['../classrtabmap_1_1Parameters.html#a5164dbdc9bbb69eae2b20a357930b762',1,'rtabmap::Parameters']]], + ['typestereosgbmp1_583',['typeStereoSGBMP1',['../classrtabmap_1_1Parameters.html#a80eed0b14092dcf3b93ef978bfb050f4',1,'rtabmap::Parameters']]], + ['typestereosgbmp2_584',['typeStereoSGBMP2',['../classrtabmap_1_1Parameters.html#aea5ba05b7433995e199fe487098e78f2',1,'rtabmap::Parameters']]], + ['typestereosgbmprefiltercap_585',['typeStereoSGBMPreFilterCap',['../classrtabmap_1_1Parameters.html#ae673e7f1692020ca91feac58e82e0545',1,'rtabmap::Parameters']]], + ['typestereosgbmspecklerange_586',['typeStereoSGBMSpeckleRange',['../classrtabmap_1_1Parameters.html#a7fa907e0b73a2056ac4f1c29e5c21b2f',1,'rtabmap::Parameters']]], + ['typestereosgbmspecklewindowsize_587',['typeStereoSGBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a3254410281c8568e9fd3909c81055d06',1,'rtabmap::Parameters']]], + ['typestereosgbmuniquenessratio_588',['typeStereoSGBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a973df6e74c11676196d42eb3f7d2f0bd',1,'rtabmap::Parameters']]], + ['typestereossd_589',['typeStereoSSD',['../classrtabmap_1_1Parameters.html#a2bb5e1fe4e6553af4c2f128819731dc4',1,'rtabmap::Parameters']]], + ['typestereousemineigenvals_590',['typeStereoUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a1132cf5f32ab646211ce97be627e5e05',1,'rtabmap::Parameters']]], + ['typestereowinheight_591',['typeStereoWinHeight',['../classrtabmap_1_1Parameters.html#a109dfe2ec4ce4f6fd9e5e604132f9384',1,'rtabmap::Parameters']]], + ['typestereowinwidth_592',['typeStereoWinWidth',['../classrtabmap_1_1Parameters.html#a14dff1c389952c00b46f5eb3db7fbd10',1,'rtabmap::Parameters']]], + ['typesuperpointcuda_593',['typeSuperPointCuda',['../classrtabmap_1_1Parameters.html#adee8f6cf02eb2847634cc80731b19bd4',1,'rtabmap::Parameters']]], + ['typesuperpointmodelpath_594',['typeSuperPointModelPath',['../classrtabmap_1_1Parameters.html#a62cc5be943135dba6be488e90e6f4f7c',1,'rtabmap::Parameters']]], + ['typesuperpointnms_595',['typeSuperPointNMS',['../classrtabmap_1_1Parameters.html#a01bf5616115fec7b0b058737a643747a',1,'rtabmap::Parameters']]], + ['typesuperpointnmsradius_596',['typeSuperPointNMSRadius',['../classrtabmap_1_1Parameters.html#aea7a193bc8442a9201baa156687c628c',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratcuda_597',['typeSuperPointRpautratCuda',['../classrtabmap_1_1Parameters.html#af605a840b6d28e32d9d11c68397b4ea5',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratmodelpath_598',['typeSuperPointRpautratModelPath',['../classrtabmap_1_1Parameters.html#ab3994d044cca0dd7c14a3aa24828fc02',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratnms_599',['typeSuperPointRpautratNMS',['../classrtabmap_1_1Parameters.html#a8ada63659a253f1041d00525925e5d73',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratnmsradius_600',['typeSuperPointRpautratNMSRadius',['../classrtabmap_1_1Parameters.html#aa87d4180ddff240390cb986d0565c2fd',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratthreshold_601',['typeSuperPointRpautratThreshold',['../classrtabmap_1_1Parameters.html#a91ce80b7e7bbbc6f23b5a2650dc1a22e',1,'rtabmap::Parameters']]], + ['typesuperpointrpautratweightspath_602',['typeSuperPointRpautratWeightsPath',['../classrtabmap_1_1Parameters.html#aa0ef3314136920784e7145cfa929cde3',1,'rtabmap::Parameters']]], + ['typesuperpointthreshold_603',['typeSuperPointThreshold',['../classrtabmap_1_1Parameters.html#aa1343a9eab40844ef0d01fac2ba3a184',1,'rtabmap::Parameters']]], + ['typesurfextended_604',['typeSURFExtended',['../classrtabmap_1_1Parameters.html#a5e3e46065fa2c315c3ae3b82cb09f35b',1,'rtabmap::Parameters']]], + ['typesurfgpukeypointsratio_605',['typeSURFGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#a7bb24603080bfae840ebae4bff33c9f3',1,'rtabmap::Parameters']]], + ['typesurfgpuversion_606',['typeSURFGpuVersion',['../classrtabmap_1_1Parameters.html#a4b1f389822634478dcc845abec572f35',1,'rtabmap::Parameters']]], + ['typesurfhessianthreshold_607',['typeSURFHessianThreshold',['../classrtabmap_1_1Parameters.html#a7c585786b350c728906049f2c5f7c6ca',1,'rtabmap::Parameters']]], + ['typesurfoctavelayers_608',['typeSURFOctaveLayers',['../classrtabmap_1_1Parameters.html#ad9fdaa794833059d1faf0fa69912df15',1,'rtabmap::Parameters']]], + ['typesurfoctaves_609',['typeSURFOctaves',['../classrtabmap_1_1Parameters.html#a565feb999eee25079507ad89386e264e',1,'rtabmap::Parameters']]], + ['typesurfupright_610',['typeSURFUpright',['../classrtabmap_1_1Parameters.html#a9783a526bedffde71c4e1c370f727466',1,'rtabmap::Parameters']]], + ['typevhepenabled_611',['typeVhEpEnabled',['../classrtabmap_1_1Parameters.html#a9563b53396f4c91ebade46e661685151',1,'rtabmap::Parameters']]], + ['typevhepmatchcountmin_612',['typeVhEpMatchCountMin',['../classrtabmap_1_1Parameters.html#a5ef8a0019e9a20106c0f40df0e675e74',1,'rtabmap::Parameters']]], + ['typevhepransacparam1_613',['typeVhEpRansacParam1',['../classrtabmap_1_1Parameters.html#a0aeb5e0de32338d8486d77e90a14b84c',1,'rtabmap::Parameters']]], + ['typevhepransacparam2_614',['typeVhEpRansacParam2',['../classrtabmap_1_1Parameters.html#add6bdcc4a9160da114da3e20e7243243',1,'rtabmap::Parameters']]], + ['typevisbundleadjustment_615',['typeVisBundleAdjustment',['../classrtabmap_1_1Parameters.html#a47fa393c25c4e714c69c45e513142f41',1,'rtabmap::Parameters']]], + ['typeviscorfloweps_616',['typeVisCorFlowEps',['../classrtabmap_1_1Parameters.html#a596a58ef9dd6acb1ccb88cc0338ab604',1,'rtabmap::Parameters']]], + ['typeviscorflowerrorthreshold_617',['typeVisCorFlowErrorThreshold',['../classrtabmap_1_1Parameters.html#a76d8900b0ab4606c26e99dc88d56457a',1,'rtabmap::Parameters']]], + ['typeviscorflowgpu_618',['typeVisCorFlowGpu',['../classrtabmap_1_1Parameters.html#a0116c54852452f561f7c5060cfc0e0ae',1,'rtabmap::Parameters']]], + ['typeviscorflowiterations_619',['typeVisCorFlowIterations',['../classrtabmap_1_1Parameters.html#a2d29bd6a8fcc526c2c6592b143d85137',1,'rtabmap::Parameters']]], + ['typeviscorflowmaxlevel_620',['typeVisCorFlowMaxLevel',['../classrtabmap_1_1Parameters.html#a40bfd2894ef640bda4792dee318c9ae2',1,'rtabmap::Parameters']]], + ['typeviscorflowmineigthreshold_621',['typeVisCorFlowMinEigThreshold',['../classrtabmap_1_1Parameters.html#a311fee8964d0c9a359e50427d46cc35b',1,'rtabmap::Parameters']]], + ['typeviscorflowusemineigenvals_622',['typeVisCorFlowUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a49472980c07dc829da826548b6d54424',1,'rtabmap::Parameters']]], + ['typeviscorflowwinsize_623',['typeVisCorFlowWinSize',['../classrtabmap_1_1Parameters.html#a38ba60f85961b66beeb2b1321e02ff2a',1,'rtabmap::Parameters']]], + ['typeviscorguessmatchtoprojection_624',['typeVisCorGuessMatchToProjection',['../classrtabmap_1_1Parameters.html#a758d070a20c7758c8fa6f27c79923ab9',1,'rtabmap::Parameters']]], + ['typeviscorguesswinsize_625',['typeVisCorGuessWinSize',['../classrtabmap_1_1Parameters.html#a9eb30a50919660f2ec5b760b97488c1a',1,'rtabmap::Parameters']]], + ['typeviscornndr_626',['typeVisCorNNDR',['../classrtabmap_1_1Parameters.html#ac3915d3b373e2af95502c1fa5a679c28',1,'rtabmap::Parameters']]], + ['typeviscornntype_627',['typeVisCorNNType',['../classrtabmap_1_1Parameters.html#a2163ffa2863aba050a6b7558f6418fd6',1,'rtabmap::Parameters']]], + ['typeviscortype_628',['typeVisCorType',['../classrtabmap_1_1Parameters.html#a32e8334e07d7959d8d14ef93954d4e91',1,'rtabmap::Parameters']]], + ['typevisdepthasmask_629',['typeVisDepthAsMask',['../classrtabmap_1_1Parameters.html#a863653c7e572c6b22e38b68d29651295',1,'rtabmap::Parameters']]], + ['typevisdepthmaskfloorthr_630',['typeVisDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a0bf299687815004eb6e664fb69233c2c',1,'rtabmap::Parameters']]], + ['typevisepipolargeometryvar_631',['typeVisEpipolarGeometryVar',['../classrtabmap_1_1Parameters.html#ab2e425074920b63eff72ab32147c4704',1,'rtabmap::Parameters']]], + ['typevisestimationtype_632',['typeVisEstimationType',['../classrtabmap_1_1Parameters.html#a98e1bdd263de6f9a9f6dd475c35f74f4',1,'rtabmap::Parameters']]], + ['typevisfeaturetype_633',['typeVisFeatureType',['../classrtabmap_1_1Parameters.html#ad7ea635d31857ef770e5671b3808d22b',1,'rtabmap::Parameters']]], + ['typevisgridcols_634',['typeVisGridCols',['../classrtabmap_1_1Parameters.html#ac6799038c5b087f5827feeeb8836e5cb',1,'rtabmap::Parameters']]], + ['typevisgridrows_635',['typeVisGridRows',['../classrtabmap_1_1Parameters.html#a4295683e5c351301bd21fa1c9227bca1',1,'rtabmap::Parameters']]], + ['typevisinlierdistance_636',['typeVisInlierDistance',['../classrtabmap_1_1Parameters.html#a6d9e4406d8104edd36c8fec3be27848f',1,'rtabmap::Parameters']]], + ['typevisiterations_637',['typeVisIterations',['../classrtabmap_1_1Parameters.html#ac009b5c2473c3f91cd94581f90963b3d',1,'rtabmap::Parameters']]], + ['typevismaxdepth_638',['typeVisMaxDepth',['../classrtabmap_1_1Parameters.html#adb5de0d9decde11579af125305e5e671',1,'rtabmap::Parameters']]], + ['typevismaxfeatures_639',['typeVisMaxFeatures',['../classrtabmap_1_1Parameters.html#a269fdc0e34ef352ce466bc91dbbea967',1,'rtabmap::Parameters']]], + ['typevismeaninliersdistance_640',['typeVisMeanInliersDistance',['../classrtabmap_1_1Parameters.html#a8bba63e7d2ad79d596c6a42114ff4aef',1,'rtabmap::Parameters']]], + ['typevismindepth_641',['typeVisMinDepth',['../classrtabmap_1_1Parameters.html#a3150216bf6d1f105c61f5a0e6f848da1',1,'rtabmap::Parameters']]], + ['typevismininliers_642',['typeVisMinInliers',['../classrtabmap_1_1Parameters.html#a02498f3bf42366baa525ea4ca2a7a279',1,'rtabmap::Parameters']]], + ['typevismininliersdistribution_643',['typeVisMinInliersDistribution',['../classrtabmap_1_1Parameters.html#a4fdde7f5a28c7fa97a915075fe4593c0',1,'rtabmap::Parameters']]], + ['typevispnpflags_644',['typeVisPnPFlags',['../classrtabmap_1_1Parameters.html#a5bcb76d9b5d8d1c96e09bfc0f639a11a',1,'rtabmap::Parameters']]], + ['typevispnpmaxvariance_645',['typeVisPnPMaxVariance',['../classrtabmap_1_1Parameters.html#adb98bdd2574ee7b151ef2749a01187fa',1,'rtabmap::Parameters']]], + ['typevispnprefineiterations_646',['typeVisPnPRefineIterations',['../classrtabmap_1_1Parameters.html#a7cece48fcdc6839ce795ff2fffc21e5d',1,'rtabmap::Parameters']]], + ['typevispnpreprojerror_647',['typeVisPnPReprojError',['../classrtabmap_1_1Parameters.html#a1b52d225d51a3f8bbed1f801c107cef2',1,'rtabmap::Parameters']]], + ['typevispnpsamplingpolicy_648',['typeVisPnPSamplingPolicy',['../classrtabmap_1_1Parameters.html#a48d42e977c6b1127f3a18329139d3026',1,'rtabmap::Parameters']]], + ['typevispnpsplitlinearcovcomponents_649',['typeVisPnPSplitLinearCovComponents',['../classrtabmap_1_1Parameters.html#ad238a288872094b71341dce0a75e7c8f',1,'rtabmap::Parameters']]], + ['typevispnpvariancemedianratio_650',['typeVisPnPVarianceMedianRatio',['../classrtabmap_1_1Parameters.html#a426329ebf4d3d6eebc7bf9ac4757dad2',1,'rtabmap::Parameters']]], + ['typevisrefineiterations_651',['typeVisRefineIterations',['../classrtabmap_1_1Parameters.html#a6b07555e3abea92b0a6ba4e7f1e4cc06',1,'rtabmap::Parameters']]], + ['typevisroiratios_652',['typeVisRoiRatios',['../classrtabmap_1_1Parameters.html#abb76550923a002229ac77a1bfaf7dd8d',1,'rtabmap::Parameters']]], + ['typevisssc_653',['typeVisSSC',['../classrtabmap_1_1Parameters.html#a5bbff1e088706471e130318de9e5d32e',1,'rtabmap::Parameters']]], + ['typevissubpixeps_654',['typeVisSubPixEps',['../classrtabmap_1_1Parameters.html#aeb842a5739e0b558bff66cf1c46766a8',1,'rtabmap::Parameters']]], + ['typevissubpixiterations_655',['typeVisSubPixIterations',['../classrtabmap_1_1Parameters.html#a576ebf2d0d010b7d5185933d09d32279',1,'rtabmap::Parameters']]], + ['typevissubpixwinsize_656',['typeVisSubPixWinSize',['../classrtabmap_1_1Parameters.html#a7fdf8755260c27895ae903b491975e66',1,'rtabmap::Parameters']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_13.js b/preview/pr-1773/api/latest/search/functions_13.js new file mode 100644 index 00000000..b4375c83 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_13.js @@ -0,0 +1,95 @@ +var searchData= +[ + ['uappend_0',['uAppend',['../UStl_8h.html#a472c2e123cd6eb04165b2d3461a634d3',1,'UStl.h']]], + ['uascii2hex_1',['uAscii2Hex',['../UConversion_8h.html#a6c8b49faa5c59294f350dda7152f66a4',1,'UConversion.h']]], + ['ubool2str_2',['uBool2Str',['../UConversion_8h.html#ad80132c4fed005af5c96b39fca453ce6',1,'UConversion.h']]], + ['ubytes2hex_3',['uBytes2Hex',['../UConversion_8h.html#a51c595b50bcb99186160a9e18df13c60',1,'UConversion.h']]], + ['ubytes2str_4',['uBytes2Str',['../UConversion_8h.html#a00c1115896f3da7c7c025ccbe651c0a3',1,'UConversion.h']]], + ['ucontains_5',['ucontains',['../UStl_8h.html#a4cad7064de642559152c873f2ca9a471',1,'uContains(const std::list< V > &list, const V &value): UStl.h'],['../UStl_8h.html#a601d3abba756f3a7a666d463080d159c',1,'uContains(const std::map< K, V > &map, const K &key): UStl.h'],['../UStl_8h.html#a078a72c8c7cf5821d67140f3d38f27e0',1,'uContains(const std::multimap< K, V > &map, const K &key): UStl.h']]], + ['udestroyer_6',['UDestroyer',['../classUDestroyer.html#abbc66cb8c688f1c93e87ea9aa46e58ee',1,'UDestroyer']]], + ['udirectory_7',['UDirectory',['../classUDirectory.html#ac2063a33161b07a0c9e841cc1ee5fcaf',1,'UDirectory']]], + ['uevent_8',['UEvent',['../classUEvent.html#a662b610c2e9ebaae5e91ed5ea1dcef34',1,'UEvent']]], + ['ueventshandler_9',['UEventsHandler',['../classUEventsHandler.html#abfe2ba3d1fb92e59aff1978cbc21d134',1,'UEventsHandler']]], + ['ufile_10',['UFile',['../classUFile.html#a19572c749b383b5fc15aca3615cdc682',1,'UFile']]], + ['uformat_11',['uFormat',['../UConversion_8h.html#a59ad5e2b3368d3dd19d73a24159388ce',1,'UConversion.h']]], + ['uformatv_12',['uFormatv',['../UConversion_8h.html#a9b62bc055b0d262a21af6b9e00b6db5f',1,'UConversion.h']]], + ['uhamming_13',['uHamming',['../UMath_8h.html#add815f68a7ad0f18c667311826a85a52',1,'UMath.h']]], + ['uhex2ascii_14',['uHex2Ascii',['../UConversion_8h.html#a03dfb0596b84e5673061561a1388b4ee',1,'UConversion.h']]], + ['uhex2bytes_15',['uhex2bytes',['../UConversion_8h.html#ab4e6aa72e322c619e4bbaf5b98dba9d3',1,'uHex2Bytes(const char *hex, int hexLen): UConversion.h'],['../UConversion_8h.html#aafb2c6939780df0241eb35ab4fc8b91b',1,'uHex2Bytes(const std::string &hex): UConversion.h']]], + ['uhex2str_16',['uHex2Str',['../UConversion_8h.html#a6d66453336bccd040539ac9905a9c409',1,'UConversion.h']]], + ['uindexof_17',['uIndexOf',['../UStl_8h.html#ad3918a32500de71ba8bb7aab99dccf46',1,'UStl.h']]], + ['uinsert_18',['uinsert',['../UStl_8h.html#af516369e4f6b3977e543dfadbc50dc31',1,'uInsert(std::map< K, V > &map, const std::map< K, V > &items): UStl.h'],['../UStl_8h.html#ac9c9d1520c7facb601ae56cab3762b41',1,'uInsert(std::map< K, V > &map, const std::pair< K, V > &pair): UStl.h']]], + ['uisdigit_19',['uIsDigit',['../UStl_8h.html#ad24f845084c84b60614bb789e0d1966a',1,'UStl.h']]], + ['uisfinite_20',['uIsFinite',['../UMath_8h.html#abc9c1a676bf1b33a7d2bc0452a04fed3',1,'UMath.h']]], + ['uisinteger_21',['uIsInteger',['../UStl_8h.html#afa021f46be20f6e6c2e5210eced0ae0e',1,'UStl.h']]], + ['uisnan_22',['uIsNan',['../UMath_8h.html#a0ce262f6e3a80f7efafc73052600d309',1,'UMath.h']]], + ['uisnumber_23',['uIsNumber',['../UStl_8h.html#a5ed24437c4b893ed09886ea64ea33ba0',1,'UStl.h']]], + ['uiteratorat_24',['uiteratorat',['../UStl_8h.html#aee9c8ca5f61ce7b0d778a092e4dd7d16',1,'uIteratorAt(std::vector< V > &v, const unsigned int &pos): UStl.h'],['../UStl_8h.html#aa8bd447989a2ac6dbd4537cabdb9b8a2',1,'uIteratorAt(std::list< V > &list, const unsigned int &pos): UStl.h'],['../UStl_8h.html#a89bf42f074b0882296f02e7b7e7f03ce',1,'uIteratorAt(const std::list< V > &list, const unsigned int &pos): UStl.h'],['../UStl_8h.html#a14d41e1a496b95a083f98d1b6c3d829b',1,'uIteratorAt(std::set< V > &set, const unsigned int &pos): UStl.h'],['../UStl_8h.html#a06a98a13ef2041e0553e6c8a61c81b9e',1,'uIteratorAt(const std::set< V > &set, const unsigned int &pos): UStl.h'],['../UStl_8h.html#aca319f475b50c21cd5a1ad7e13b45d68',1,'uIteratorAt(const std::vector< V > &v, const unsigned int &pos): UStl.h']]], + ['ujoin_25',['uJoin',['../UStl_8h.html#a2a1ab992e6cc8d3057000847eea5b2e0',1,'UStl.h']]], + ['ukeys_26',['ukeys',['../UStl_8h.html#aa67c880cc8f27c9270c7bd4bdce62ca7',1,'uKeys(const std::multimap< K, V > &mm): UStl.h'],['../UStl_8h.html#a1f58dc31a71daf05032ea06518098021',1,'uKeys(const std::map< K, V > &m): UStl.h']]], + ['ukeyslist_27',['ukeyslist',['../UStl_8h.html#a07de105144c60cbf3d96725c2587ab61',1,'uKeysList(const std::map< K, V > &m): UStl.h'],['../UStl_8h.html#ae6db6e3e229492a7d62f310705eda986',1,'uKeysList(const std::multimap< K, V > &mm): UStl.h']]], + ['ukeysset_28',['uKeysSet',['../UStl_8h.html#adc7941aec77b49687c0cb79be23eb539',1,'UStl.h']]], + ['ulisttovector_29',['uListToVector',['../UStl_8h.html#a85cf086e57dd289775cf2fd7c82a6ffe',1,'UStl.h']]], + ['ulocalmaxima_30',['ulocalmaxima',['../UMath_8h.html#a2feb416e779b88c4a6a849d609222c99',1,'uLocalMaxima(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#a321ec84227fff8bf26aa85b0d3be5bb7',1,'uLocalMaxima(const std::vector< T > &v): UMath.h']]], + ['ulogevent_31',['ULogEvent',['../classULogEvent.html#aa403fb381a5bfd2986f08c10f0b1b24e',1,'ULogEvent']]], + ['umax_32',['umax',['../UMath_8h.html#a1362990d0ce7f09ef735292cc480fa23',1,'uMax(const T *v, unsigned int size, unsigned int &index): UMath.h'],['../UMath_8h.html#a429cc62f1ca3c7a00e0062301ae60bcc',1,'uMax(const std::vector< T > &v, unsigned int &index): UMath.h'],['../UMath_8h.html#a387b43468da220548d025010be075476',1,'uMax(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#a0aef304a0891fafcef581dcfbf3ac792',1,'uMax(const std::vector< T > &v): UMath.h']]], + ['umax3_33',['uMax3',['../UMath_8h.html#a601a7e18acb1512a60cd8ef248271c85',1,'UMath.h']]], + ['umean_34',['umean',['../UMath_8h.html#a8c8cd8ce7b3d8f32847bb57e9f73a625',1,'uMean(const std::vector< T > &v): UMath.h'],['../UMath_8h.html#aa4e1e6cf3df49d68d95bbe9981d1600e',1,'uMean(const std::list< T > &list): UMath.h'],['../UMath_8h.html#a7376638ab6047306c66a357153a47196',1,'uMean(const T *v, unsigned int size): UMath.h']]], + ['umeansquarederror_35',['umeansquarederror',['../UMath_8h.html#a319bcffddfeab66d5cbb729fa56dd361',1,'uMeanSquaredError(const std::vector< T > &x, const std::vector< T > &y): UMath.h'],['../UMath_8h.html#a28770817787def2a9165ed070fa17a54',1,'uMeanSquaredError(const T *x, unsigned int sizeX, const T *y, unsigned int sizeY): UMath.h']]], + ['umin_36',['umin',['../UMath_8h.html#aeb0652d64e72d115d751f8186ac9016e',1,'uMin(const std::vector< T > &v): UMath.h'],['../UMath_8h.html#a68e11ea992520b98d4e688f8853b5dc4',1,'uMin(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#a99bd3bc365630c1760432cf810ea5831',1,'uMin(const std::vector< T > &v, unsigned int &index): UMath.h'],['../UMath_8h.html#aa37a66d04825a8834648dbe931bd57e6',1,'uMin(const T *v, unsigned int size, unsigned int &index): UMath.h']]], + ['umin3_37',['uMin3',['../UMath_8h.html#ad653f26bbf08ce113b5a69a49bb4e41d',1,'UMath.h']]], + ['uminmax_38',['uminmax',['../UMath_8h.html#af5f7ebda9d440043cd3c57037e81318b',1,'uMinMax(const std::vector< T > &v, T &min, T &max): UMath.h'],['../UMath_8h.html#a9cc051a73d402e69919d8fcea51c3098',1,'uMinMax(const T *v, unsigned int size, T &min, T &max): UMath.h'],['../UMath_8h.html#a23b93249fbe3eebc9d95104f4f8cafff',1,'uMinMax(const std::vector< T > &v, T &min, T &max, unsigned int &indexMin, unsigned int &indexMax): UMath.h'],['../UMath_8h.html#af9bfdafb6da16f9c6f4691a6d951538b',1,'uMinMax(const T *v, unsigned int size, T &min, T &max, unsigned int &indexMin, unsigned int &indexMax): UMath.h']]], + ['umultimaptomap_39',['uMultimapToMap',['../UStl_8h.html#af9a778651477107bcba607087c3e02ea',1,'UStl.h']]], + ['umultimaptomapunique_40',['uMultimapToMapUnique',['../UStl_8h.html#ac65e613c42858a01f5d4f29446f53cd6',1,'UStl.h']]], + ['umutex_41',['UMutex',['../classUMutex.html#a292198fffdbd7d0d5a550946f156f70e',1,'UMutex']]], + ['uncompressdata_42',['uncompressdata',['../namespacertabmap.html#aa15a9e946d6571254fc3c808b624e6cd',1,'rtabmap::uncompressData(const std::vector< unsigned char > &bytes)'],['../namespacertabmap.html#a5b02b6a5cd3c620aff7e76c05f78b20f',1,'rtabmap::uncompressData(const unsigned char *bytes, unsigned long size)'],['../namespacertabmap.html#a696fffaafe542bfb49fc9ab0da2c66b9',1,'rtabmap::uncompressData(const cv::Mat &bytes)'],['../classrtabmap_1_1SensorData.html#aa356c9d5e9e7ea55ccdbe99c215bcb52',1,'rtabmap::SensorData::uncompressData()'],['../classrtabmap_1_1SensorData.html#a8c3364f43f7c0a57261720408a088158',1,'rtabmap::SensorData::uncompressData(cv::Mat *imageRaw, cv::Mat *depthOrRightRaw, LaserScan *laserScanRaw=0, cv::Mat *userDataRaw=0, cv::Mat *groundCellsRaw=0, cv::Mat *obstacleCellsRaw=0, cv::Mat *emptyCellsRaw=0, cv::Mat *depthConfidenceRaw=0)']]], + ['uncompressdataconst_43',['uncompressDataConst',['../classrtabmap_1_1SensorData.html#a2e0be45871fa8dbce1c3cf727953358f',1,'rtabmap::SensorData']]], + ['uncompressimage_44',['uncompressimage',['../namespacertabmap.html#a462f181a147c9f5315f70b0cd89210e5',1,'rtabmap::uncompressImage(const cv::Mat &bytes)'],['../namespacertabmap.html#af56ea8b86f7a873959588d35a7ede187',1,'rtabmap::uncompressImage(const std::vector< unsigned char > &bytes)']]], + ['uncompressstring_45',['uncompressString',['../namespacertabmap.html#a811701fc1452e49e82fcab8d4476832f',1,'rtabmap']]], + ['uncompressuserdata_46',['uncompressUserData',['../classrtabmap_1_1Link.html#adb075101cafb535fc4a9b74f7afae521',1,'rtabmap::Link']]], + ['uncompressuserdataconst_47',['uncompressUserDataConst',['../classrtabmap_1_1Link.html#ac425a90800494da64512011315c47e62',1,'rtabmap::Link']]], + ['uniformsampling_48',['uniformsampling',['../namespacertabmap_1_1util3d.html#a858e0a5338f348eb1033d6a85c3db926',1,'rtabmap::util3d::uniformSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)'],['../namespacertabmap_1_1util3d.html#a8dfd7d808fa94e809b4a1a1fba6b8226',1,'rtabmap::util3d::uniformSampling(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)'],['../namespacertabmap_1_1util3d.html#af526f72e838659de76ac45447d3860ae',1,'rtabmap::util3d::uniformSampling(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)']]], + ['unlock_49',['unlock',['../classUMutex.html#a4c5b4e04ad4e2f0eda2e8d4325d45d38',1,'UMutex']]], + ['unorm_50',['unorm',['../UMath_8h.html#ab5e611c29307d8733cfaebc68bed1ac6',1,'uNorm(const std::vector< T > &v): UMath.h'],['../UMath_8h.html#a6b6fbb2032ce05eeacdb1b0bc87627e8',1,'uNorm(const T &x1, const T &x2, const T &x3): UMath.h'],['../UMath_8h.html#abe92bd5cba3860759c40c322ab1ac995',1,'uNorm(const T &x1, const T &x2): UMath.h']]], + ['unormalize_51',['uNormalize',['../UMath_8h.html#a2f843f6f6bf0bd59b527aaa8c4731612',1,'UMath.h']]], + ['unormsquared_52',['unormsquared',['../UMath_8h.html#a0a3b6871504f5a745f8769492f45871c',1,'uNormSquared(const T &x1, const T &x2, const T &x3): UMath.h'],['../UMath_8h.html#aea5fd5d0bd9afdb11c765584c89a5f8f',1,'uNormSquared(const T &x1, const T &x2): UMath.h'],['../UMath_8h.html#aeed14782b35224f70db6b5435dce06a1',1,'uNormSquared(const std::vector< T > &v): UMath.h']]], + ['unumber2str_53',['unumber2str',['../UConversion_8h.html#a863753727325d89d62a941b1e28ec080',1,'uNumber2Str(double number, int precision=6, bool fixed=false): UConversion.h'],['../UConversion_8h.html#a7d269614a35d90f2ee7eb1204bca0856',1,'uNumber2Str(float number, int precision=6, bool fixed=false): UConversion.h'],['../UConversion_8h.html#ab3a674443d1d17328488398497380eb0',1,'uNumber2Str(int number): UConversion.h'],['../UConversion_8h.html#aa2bbc65658f335e92631e9f1d091a698',1,'uNumber2Str(unsigned int number): UConversion.h']]], + ['uobjdeletionthread_54',['UObjDeletionThread',['../classUObjDeletionThread.html#a860499bd0467d2cc0fb467b124d085e0',1,'UObjDeletionThread']]], + ['update_55',['update',['../classrtabmap_1_1GlobalMap.html#aa21a1e3baba94ded5663a8057a3b8cd6',1,'rtabmap::GlobalMap::update()'],['../classrtabmap_1_1IMUFilter.html#ab02c81af3543cfb1d53b4a0b064a0363',1,'rtabmap::IMUFilter::update()'],['../classrtabmap_1_1Memory.html#a3c029b2788f3b599480d5150120a6bee',1,'rtabmap::Memory::update(const SensorData &data, Statistics *stats=0)'],['../classrtabmap_1_1Memory.html#aae43fd080c6bc9773fa58f1c36e6684f',1,'rtabmap::Memory::update(const SensorData &data, const Transform &pose, const cv::Mat &covariance, const std::vector< float > &velocity=std::vector< float >(), Statistics *stats=0)'],['../classrtabmap_1_1VWDictionary.html#a844ae27eb6d1f0674c8f7777451812c5',1,'rtabmap::VWDictionary::update()'],['../classUDirectory.html#ab738cea12207aea77c7a0581c57d6008',1,'UDirectory::update()']]], + ['updateage_56',['updateAge',['../classrtabmap_1_1Memory.html#a76fd8c93220c16fac5843ccc2c0bec3c',1,'rtabmap::Memory']]], + ['updatecalibration_57',['updateCalibration',['../classrtabmap_1_1DBDriver.html#a6d59931a9496cf1b23568f79fc421cc1',1,'rtabmap::DBDriver']]], + ['updatedepthimage_58',['updateDepthImage',['../classrtabmap_1_1DBDriver.html#a3a02d595356e2dd0ed8b8933a6c4e811',1,'rtabmap::DBDriver']]], + ['updatelaserscan_59',['updateLaserScan',['../classrtabmap_1_1DBDriver.html#a7d167e53d447d77dd3fe35665f8a661b',1,'rtabmap::DBDriver']]], + ['updatelink_60',['updatelink',['../classrtabmap_1_1Memory.html#a7c7f80937a35204cb5b44faec8e99736',1,'rtabmap::Memory::updateLink()'],['../classrtabmap_1_1DBDriver.html#a94eb69c07a44343c008654b1401dce80',1,'rtabmap::DBDriver::updateLink(const Link &link)']]], + ['updateoccupancygrid_61',['updateOccupancyGrid',['../classrtabmap_1_1DBDriver.html#a2f5e8e0b367e49cfbba7c96b28306a61',1,'rtabmap::DBDriver']]], + ['uprocessinfo_62',['UProcessInfo',['../classUProcessInfo.html#a9786bfe4f14bb80ddf206904f12d8f9b',1,'UProcessInfo']]], + ['ureplacechar_63',['ureplacechar',['../UConversion_8h.html#ac17caccd78f21956b7ddb78aa0c0c438',1,'uReplaceChar(const std::string &str, char before, char after): UConversion.h'],['../UConversion_8h.html#a214297200ebabb7a349fb203103d72ef',1,'uReplaceChar(const std::string &str, char before, const std::string &after): UConversion.h']]], + ['usemaphore_64',['USemaphore',['../classUSemaphore.html#ad991738e68e0a2baaec46ab27296cbe6',1,'USemaphore']]], + ['userdatacompressed_65',['userDataCompressed',['../classrtabmap_1_1Link.html#abdec9d745b1b4679a87b944cd5b48213',1,'rtabmap::Link']]], + ['userdataraw_66',['userDataRaw',['../classrtabmap_1_1Link.html#a1fce4ae495f2a4f5e0f7ac10551983ac',1,'rtabmap::Link']]], + ['usign_67',['uSign',['../UMath_8h.html#a6e100ed2031a529679a93b9b4bf818af',1,'UMath.h']]], + ['usplit_68',['uSplit',['../UStl_8h.html#ab1862437019327ce8419569e3c2ea90f',1,'UStl.h']]], + ['usplitnumchar_69',['uSplitNumChar',['../UStl_8h.html#a4045d74e1a84cde1489a754375c1d55e',1,'UStl.h']]], + ['ustr2bool_70',['uStr2Bool',['../UConversion_8h.html#abb8205ea44ccbebab8cf064fed0c7c1b',1,'UConversion.h']]], + ['ustr2bytes_71',['uStr2Bytes',['../UConversion_8h.html#aa320ef94bde5dd6f9e6ebdb986fc5ca6',1,'UConversion.h']]], + ['ustr2double_72',['uStr2Double',['../UConversion_8h.html#a9e8508b95f98ab3da0d942ee7d6b2105',1,'UConversion.h']]], + ['ustr2float_73',['uStr2Float',['../UConversion_8h.html#aaa5c2c8be40ec84e20bc6967b6b9b46a',1,'UConversion.h']]], + ['ustr2int_74',['uStr2Int',['../UConversion_8h.html#a3cd287c149717691ee36fcd593940f68',1,'UConversion.h']]], + ['ustrcontains_75',['uStrContains',['../UStl_8h.html#ab4e2c55d7930e99514a2315a2c6b4f82',1,'UStl.h']]], + ['ustrnumcmp_76',['uStrNumCmp',['../UStl_8h.html#af48fdad882d4429e4044372589503da1',1,'UStl.h']]], + ['usum_77',['usum',['../UMath_8h.html#a81a1c24c0229e6c4dc8d8e09497ad114',1,'uSum(const std::list< T > &list): UMath.h'],['../UMath_8h.html#a86599e95ecdc91ce2d9497985d5d642b',1,'uSum(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#af15f0fa694931f0f99ba640d52539b09',1,'uSum(const std::vector< T > &v): UMath.h']]], + ['usumsquared_78',['usumsquared',['../UMath_8h.html#aeb6a6517666687e509617e6bfaf274d3',1,'uSumSquared(const T *v, unsigned int size, T subtract=T()): UMath.h'],['../UMath_8h.html#a94be0f1c509db2f294048e6d5b16a522',1,'uSumSquared(const std::vector< T > &v, T subtract=T()): UMath.h']]], + ['utake_79',['uTake',['../UStl_8h.html#a6242bd5879bd7f06b8de6498650aa3b7',1,'UStl.h']]], + ['uthread_80',['UThread',['../classUThread.html#a05a92f95e2a8900f27b09ddf907b97be',1,'UThread']]], + ['utolowercase_81',['uToLowerCase',['../UConversion_8h.html#a426b88c678e06f77912c006ba02805ec',1,'UConversion.h']]], + ['utouppercase_82',['uToUpperCase',['../UConversion_8h.html#adc98c4d87bc7c13b7fc5b5504f457105',1,'UConversion.h']]], + ['uuniquekeys_83',['uUniqueKeys',['../UStl_8h.html#a62335030b4c0d80f80e7c4a21721c05e',1,'UStl.h']]], + ['uvalue_84',['uValue',['../UStl_8h.html#a155cd26667d2f88ee05dd3d819ae8182',1,'UStl.h']]], + ['uvalueat_85',['uvalueat',['../UStl_8h.html#af9a13d96ccaf6094128eb350d0253d22',1,'uValueAt(const std::list< V > &list, const unsigned int &pos): UStl.h'],['../UStl_8h.html#a27a0f94be07c53df9827b082eb107337',1,'uValueAt(std::list< V > &list, const unsigned int &pos): UStl.h']]], + ['uvalues_86',['uvalues',['../UStl_8h.html#a745b929c605a3d6b0014dff0c9c2a314',1,'uValues(const std::multimap< K, V > &mm): UStl.h'],['../UStl_8h.html#a3514dc64eabe675042a4d1b7d8770910',1,'uValues(const std::multimap< K, V > &mm, const K &key): UStl.h'],['../UStl_8h.html#a081a7dd08a9962ee1651eb4ddb01729e',1,'uValues(const std::map< K, V > &m): UStl.h']]], + ['uvalueslist_87',['uvalueslist',['../UStl_8h.html#a9419324b5c47549d954313582e69dc5c',1,'uValuesList(const std::multimap< K, V > &mm): UStl.h'],['../UStl_8h.html#ab5ea404864ed672cca3a05435786f4be',1,'uValuesList(const std::map< K, V > &m): UStl.h']]], + ['uvariance_88',['uvariance',['../UMath_8h.html#add45b750bab7251ba196079289f17d7d',1,'uVariance(const T *v, unsigned int size, T meanV): UMath.h'],['../UMath_8h.html#aa6ea127b567072434a5616bcc1c1f6e3',1,'uVariance(const std::list< T > &list, const T &m): UMath.h'],['../UMath_8h.html#a0aa8de7d20731bcae07d956256e293f6',1,'uVariance(const T *v, unsigned int size): UMath.h'],['../UMath_8h.html#a8d443d065900ca7096d08c9431fef71f',1,'uVariance(const std::vector< T > &v, const T &m): UMath.h']]], + ['uvariant_89',['uvariant',['../classUVariant.html#aae15560cd7d827b4df20ca93e73e488d',1,'UVariant::UVariant(const float &value)'],['../classUVariant.html#a98f1bc68af62d433f2946cab87fc520c',1,'UVariant::UVariant(const bool &value)'],['../classUVariant.html#a30476f11f550fdb86f97f30f9a34d042',1,'UVariant::UVariant(const unsigned int &value)'],['../classUVariant.html#a17a521fb10da7564bf5104c717ea977c',1,'UVariant::UVariant(const double &value)'],['../classUVariant.html#a0c4434b8a0e3d8d5a13967196ef75c9d',1,'UVariant::UVariant(const char *value)'],['../classUVariant.html#a0f29e416edccd2af78192288bb7ca884',1,'UVariant::UVariant(const std::string &value)'],['../classUVariant.html#a77de7639a21b4002f6c4c8f765db9748',1,'UVariant::UVariant(const std::vector< signed char > &value)'],['../classUVariant.html#a709722d8603fdb5208f5853073c0557b',1,'UVariant::UVariant(const std::vector< unsigned char > &value)'],['../classUVariant.html#a7ecbf63121fc31f094534293a05af6f3',1,'UVariant::UVariant(const std::vector< short > &value)'],['../classUVariant.html#a66b347ecdbdcd3b9bb6675d3a5040e26',1,'UVariant::UVariant(const std::vector< unsigned short > &value)'],['../classUVariant.html#a2054869e20d561d129fa2cfbd0dbe923',1,'UVariant::UVariant(const std::vector< int > &value)'],['../classUVariant.html#ad71bbca096fb06dfe1009105c6546c78',1,'UVariant::UVariant(const std::vector< unsigned int > &value)'],['../classUVariant.html#abb4dcb9be13b81f672c2012e09234be9',1,'UVariant::UVariant(const std::vector< float > &value)'],['../classUVariant.html#ad5517ddcc64a521f2bb6079d568a6029',1,'UVariant::UVariant(const std::vector< double > &value)'],['../classUVariant.html#a896511df83bbcc6d2892902b83495bae',1,'UVariant::UVariant(const int &value)'],['../classUVariant.html#a3f893e4ec4714cb594e88eb6ee421a0b',1,'UVariant::UVariant(const unsigned short &value)'],['../classUVariant.html#a5253c21485672e2e20149db1661ffc64',1,'UVariant::UVariant(const short &value)'],['../classUVariant.html#a66f79ef197d7a9fb87781073b44ed426',1,'UVariant::UVariant(const unsigned char &value)'],['../classUVariant.html#ae0939524a0c68004804381492aaab285',1,'UVariant::UVariant(const signed char &value)'],['../classUVariant.html#af210833caf9715d7678fb6d64dddf599',1,'UVariant::UVariant()']]], + ['uvectortolist_90',['uVectorToList',['../UStl_8h.html#a5a5fb7b34b8c3adb63d641358b7a7e1b',1,'UStl.h']]], + ['uxmatch_91',['uxmatch',['../UMath_8h.html#a913829c5228fabff88e4918111c1d424',1,'uXMatch(const T *vA, const T *vB, unsigned int sizeA, unsigned int sizeB, UXMatchMethod method): UMath.h'],['../UMath_8h.html#a4694c7d40749b5cb09c596d232720192',1,'uXMatch(const std::vector< T > &vA, const std::vector< T > &vB, UXMatchMethod method): UMath.h'],['../UMath_8h.html#ac616ce0471d2e35fafd59d88021ccab3',1,'uXMatch(const T *vA, const T *vB, unsigned int sizeA, unsigned int sizeB, unsigned int index, UXMatchMethod method): UMath.h'],['../UMath_8h.html#a726f4662efa078be30f5320bbb994c7a',1,'uXMatch(const std::vector< T > &vA, const std::vector< T > &vB, unsigned int index, UXMatchMethod method): UMath.h']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_14.js b/preview/pr-1773/api/latest/search/functions_14.js new file mode 100644 index 00000000..ba82c0ad --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['value_0',['value',['../classUSemaphore.html#a840fadefd8bc873c8bdf34c90d180a3b',1,'USemaphore::value()'],['../classrtabmap_1_1EnvSensor.html#a27b343c9be68fd326c10157102bb750f',1,'rtabmap::EnvSensor::value()']]], + ['velocity_1',['velocity',['../classrtabmap_1_1OdometryEvent.html#adbac8609d65d32f38d1e724007091398',1,'rtabmap::OdometryEvent']]], + ['verticalfov_2',['verticalFOV',['../classrtabmap_1_1CameraModel.html#af6226e43afcb69259b137bbe50099537',1,'rtabmap::CameraModel']]], + ['visualword_3',['VisualWord',['../classrtabmap_1_1VisualWord.html#a64ce7c97214265e24e00e3888b85f967',1,'rtabmap::VisualWord']]], + ['voxelize_4',['voxelize',['../group__VoxelFiltering.html#gac6809e08656312d793ce34e828e33998',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#ga751ff8adfdf8e6f824a7bef0d4630044',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#gab974887ed7faf7685d6c8c181827b2c2',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#ga8fce5075a28203045c3865b1d068c084',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#ga3ea1e68d63d45c84d2c3b6b3bcac4653',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#gaf5726b462426b56425604343e51a79c3',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)'],['../group__VoxelFiltering.html#gac5158ba02fc61bfa503967ddd5ec319d',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gaebeee3702499e5f8d692ecd0bc48029b',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gabf0201c1253022d7ce8278fc44998530',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gab2a9294812a8c0fcaed92d0f119eaa31',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#ga94af1db82b1faffff875a9902d44285b',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)'],['../group__VoxelFiltering.html#gad8d88a06174857cf53b1dc2cf2310d89',1,'rtabmap::util3d::voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)']]], + ['vwdictionary_5',['VWDictionary',['../classrtabmap_1_1VWDictionary.html#ada3980b520d8411a1ebb3ce14e2f8734',1,'rtabmap::VWDictionary']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_15.js b/preview/pr-1773/api/latest/search/functions_15.js new file mode 100644 index 00000000..c1a897d4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_15.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['weights_0',['weights',['../classrtabmap_1_1Statistics.html#ab29fce77b8debf381356e27ac039fafc',1,'rtabmap::Statistics']]], + ['winsize_1',['winSize',['../classrtabmap_1_1Stereo.html#a5474ebbc178bcc29ebaff3d9d4e22e54',1,'rtabmap::Stereo']]], + ['winssd_2',['winSSD',['../classrtabmap_1_1Stereo.html#aed372a471e6d3ea72713e239709da978',1,'rtabmap::Stereo']]], + ['wmstate_3',['wmState',['../classrtabmap_1_1Statistics.html#a0b0bb69d788a142a7b51ae2e916798b6',1,'rtabmap::Statistics']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_16.js b/preview/pr-1773/api/latest/search/functions_16.js new file mode 100644 index 00000000..c0185b90 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_0',['x',['../classrtabmap_1_1Transform.html#a5173dd4491ea0796180d1eb0f88a6762',1,'rtabmap::Transform']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_17.js b/preview/pr-1773/api/latest/search/functions_17.js new file mode 100644 index 00000000..cd805c0e --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_17.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_0',['y',['../classrtabmap_1_1Transform.html#acbb0afe7eb39181f85c2f9734352d6a9',1,'rtabmap::Transform']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_18.js b/preview/pr-1773/api/latest/search/functions_18.js new file mode 100644 index 00000000..5b6894d4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_18.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['z_0',['z',['../classrtabmap_1_1Transform.html#af90acc40bed06ab96468fd17585f1944',1,'rtabmap::Transform']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_19.js b/preview/pr-1773/api/latest/search/functions_19.js new file mode 100644 index 00000000..7c8fe2df --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_19.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['_7ecameramodel_0',['~CameraModel',['../classrtabmap_1_1CameraModel.html#af6f35e5071ef0070d3fae3ebaa33ce4c',1,'rtabmap::CameraModel']]], + ['_7esensorcapture_1',['~SensorCapture',['../classrtabmap_1_1SensorCapture.html#a0578f6540ecdf8c4b3b747d511ecb625',1,'rtabmap::SensorCapture']]], + ['_7esensorcaptureinfo_2',['~SensorCaptureInfo',['../classrtabmap_1_1SensorCaptureInfo.html#a31eca8aee2a61df0d35d91edbc54ac53',1,'rtabmap::SensorCaptureInfo']]], + ['_7esensorcapturethread_3',['~SensorCaptureThread',['../classrtabmap_1_1SensorCaptureThread.html#af8133c1b2332568c4699282f59c141c9',1,'rtabmap::SensorCaptureThread']]], + ['_7esensordata_4',['~SensorData',['../classrtabmap_1_1SensorData.html#a94f4e8970ae34d652100dce131cc9e44',1,'rtabmap::SensorData']]], + ['_7esensorevent_5',['~SensorEvent',['../classrtabmap_1_1SensorEvent.html#a2794fb8f052c08efdfd4b379e359fecb',1,'rtabmap::SensorEvent']]], + ['_7esignature_6',['~Signature',['../classrtabmap_1_1Signature.html#a67c41f31ff6fd72815190cc1bbba9569',1,'rtabmap::Signature']]], + ['_7estatistics_7',['~Statistics',['../classrtabmap_1_1Statistics.html#af7ecfdb141de651d094d28a2d035dca0',1,'rtabmap::Statistics']]], + ['_7estereo_8',['~Stereo',['../classrtabmap_1_1Stereo.html#aca70a15916baf916d6d66c93dad6b3d5',1,'rtabmap::Stereo']]], + ['_7estereobm_9',['~StereoBM',['../classrtabmap_1_1StereoBM.html#a6d5e4ac8698669323dff297c01f7ee4b',1,'rtabmap::StereoBM']]], + ['_7estereocameramodel_10',['~StereoCameraModel',['../classrtabmap_1_1StereoCameraModel.html#afaa6d8cf4c9b503cc8c8a03fb25ecdf3',1,'rtabmap::StereoCameraModel']]], + ['_7estereodense_11',['~StereoDense',['../classrtabmap_1_1StereoDense.html#a5c720eb11114c19540d30886cb0ba1e6',1,'rtabmap::StereoDense']]], + ['_7estereoopticalflow_12',['~StereoOpticalFlow',['../classrtabmap_1_1StereoOpticalFlow.html#afa38ce6868f4bf0388559f81ff917a97',1,'rtabmap::StereoOpticalFlow']]], + ['_7estereosgbm_13',['~StereoSGBM',['../classrtabmap_1_1StereoSGBM.html#a1568e99913769d8442c6013a7adc8796',1,'rtabmap::StereoSGBM']]], + ['_7eueventshandler_14',['~UEventsHandler',['../classUEventsHandler.html#a15ac2bf243e938c411fac0dff7db2f51',1,'UEventsHandler']]], + ['_7euobjdeletionthread_15',['~UObjDeletionThread',['../classUObjDeletionThread.html#a44e27bada40a7fdb67ebad9270da8192',1,'UObjDeletionThread']]], + ['_7euprocessinfo_16',['~UProcessInfo',['../classUProcessInfo.html#a4b4a0da3c612692790191b914e37b1a4',1,'UProcessInfo']]], + ['_7euthread_17',['~UThread',['../classUThread.html#a437580d224111e60cbe2626f0e4cb12e',1,'UThread']]], + ['_7euvariant_18',['~UVariant',['../classUVariant.html#aeeaef6c17460567dec089740e276f50a',1,'UVariant']]], + ['_7evisualword_19',['~VisualWord',['../classrtabmap_1_1VisualWord.html#adc2dc719d2e6ed06ff92a2370d9955b2',1,'rtabmap::VisualWord']]], + ['_7evwdictionary_20',['~VWDictionary',['../classrtabmap_1_1VWDictionary.html#af7f669f103368e30e31a028efbcac89d',1,'rtabmap::VWDictionary']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_2.js b/preview/pr-1773/api/latest/search/functions_2.js new file mode 100644 index 00000000..6e7a1fa8 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_2.js @@ -0,0 +1,97 @@ +var searchData= +[ + ['cache_0',['cache',['../classrtabmap_1_1GlobalMap.html#a632f06ccce72bce66a9fd38d37f23b80',1,'rtabmap::GlobalMap']]], + ['calckittisequenceerrors_1',['calcKittiSequenceErrors',['../namespacertabmap_1_1graph.html#a3c9effdb0d7c235dc1b8d7e3f8487c67',1,'rtabmap::graph']]], + ['calcopticalflowpyrlkstereo_2',['calcOpticalFlowPyrLKStereo',['../namespacertabmap_1_1util2d.html#a3d01284751a6b46770a28a7f63576600',1,'rtabmap::util2d']]], + ['calcrelativeerrors_3',['calcRelativeErrors',['../namespacertabmap_1_1graph.html#a83c41a7cdd595ae6f76d3f1c5140c215',1,'rtabmap::graph']]], + ['calcrmse_4',['calcRMSE',['../namespacertabmap_1_1graph.html#a5c36e32a4acd10ac3cdbbf7d73591f88',1,'rtabmap::graph']]], + ['calcstereocorrespondences_5',['calcStereoCorrespondences',['../namespacertabmap_1_1util2d.html#a53e2ae078c4c5c997fda9f1b6d1dda33',1,'rtabmap::util2d']]], + ['camera_6',['camera',['../classrtabmap_1_1SensorCaptureThread.html#ad6750f6280bdcbb386a051ba9cc36857',1,'rtabmap::SensorCaptureThread::camera()'],['../classrtabmap_1_1Camera.html#aaae7434ffa5e54f5006355779d335dd3',1,'rtabmap::Camera::Camera()']]], + ['cameramodel_7',['cameramodel',['../classrtabmap_1_1CameraModel.html#adad6652a711eecc9a50e544f14d276cd',1,'rtabmap::CameraModel::CameraModel()'],['../classrtabmap_1_1CameraModel.html#a4810e60f3af95b73a61879aa97201695',1,'rtabmap::CameraModel::CameraModel(const std::string &name, const cv::Size &imageSize, const cv::Mat &K, const cv::Mat &D, const cv::Mat &R, const cv::Mat &P, const Transform &localTransform=opticalRotation())'],['../classrtabmap_1_1CameraModel.html#aadb6b19ea8a94f3f6719ea0233196c34',1,'rtabmap::CameraModel::CameraModel(double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))'],['../classrtabmap_1_1CameraModel.html#a745c2d60ef6b460ca380aebd55b5d61c',1,'rtabmap::CameraModel::CameraModel(const std::string &name, double fx, double fy, double cx, double cy, const Transform &localTransform=opticalRotation(), double Tx=0.0f, const cv::Size &imageSize=cv::Size(0, 0))']]], + ['cameramodels_8',['cameraModels',['../classrtabmap_1_1SensorData.html#a6ace7b2b8ebae5f7ab18e159fe6e8a92',1,'rtabmap::SensorData']]], + ['cameraname_9',['cameraName',['../classrtabmap_1_1SensorEvent.html#adaf11817f3e0338ab63b1e8fee4a3c01',1,'rtabmap::SensorEvent']]], + ['canparsestring_10',['canParseString',['../classrtabmap_1_1Transform.html#af44657c8360a79a67e538f25027df639',1,'rtabmap::Transform']]], + ['canprocessasyncimu_11',['canprocessasyncimu',['../classrtabmap_1_1OdometryORBSLAM3.html#a2f226f38792f0c8bc146d73985239370',1,'rtabmap::OdometryORBSLAM3::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryOpenVINS.html#a7712fe74d5ff65a67fe362010b795e14',1,'rtabmap::OdometryOpenVINS::canProcessAsyncIMU()'],['../classrtabmap_1_1Odometry.html#a7a1c1e4598528a4e94f510b5dabac528',1,'rtabmap::Odometry::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryLIOSAM.html#a51193d7f42c9b0174c6eedd75d8f4535',1,'rtabmap::OdometryLIOSAM::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryMSCKF.html#a4dd9c2358d2e69f397b61746519a923a',1,'rtabmap::OdometryMSCKF::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryOkvis.html#a4e94c233112e7105dffa37eb8d33427f',1,'rtabmap::OdometryOkvis::canProcessAsyncIMU()'],['../classrtabmap_1_1OdometryVINSFusion.html#a1a3145c62e7b0b43cfb5a94f61d2c9d1',1,'rtabmap::OdometryVINSFusion::canProcessAsyncIMU() const']]], + ['canprocessrawimages_12',['canprocessrawimages',['../classrtabmap_1_1OdometryVINSFusion.html#a505ae049f32115a81d4f4258b5fb2134',1,'rtabmap::OdometryVINSFusion::canProcessRawImages()'],['../classrtabmap_1_1OdometryOpenVINS.html#aed27c46aa9ddc68c59eb09f2b3a9d3d0',1,'rtabmap::OdometryOpenVINS::canProcessRawImages()'],['../classrtabmap_1_1OdometryOkvis.html#ad4d4602445081fff30b74d1c7e22dbff',1,'rtabmap::OdometryOkvis::canProcessRawImages()'],['../classrtabmap_1_1OdometryMSCKF.html#a06b5b242107ffe5c379ff7ed089d07c6',1,'rtabmap::OdometryMSCKF::canProcessRawImages()'],['../classrtabmap_1_1Odometry.html#a69809beb553e6d4cd4a950ce251449e0',1,'rtabmap::Odometry::canProcessRawImages()']]], + ['canuseguess_13',['canUseGuess',['../classrtabmap_1_1Registration.html#ab000f795ec498882585a634c2dafec05',1,'rtabmap::Registration']]], + ['capturedata_14',['capturedata',['../classrtabmap_1_1LidarVLP16.html#a60d8190947d474e0557695c1032c40b8',1,'rtabmap::LidarVLP16::captureData()'],['../classrtabmap_1_1SensorCapture.html#a85e8691b5201a5383d1463ed980f7958',1,'rtabmap::SensorCapture::captureData()']]], + ['captureimage_15',['captureImage',['../classrtabmap_1_1CameraMyntEye.html#acefbf910185313e7cf645ecff344329c',1,'rtabmap::CameraMyntEye']]], + ['changelinkids_16',['changeLinkIds',['../classrtabmap_1_1Signature.html#a10d3bce2c3e4ec2de31aa5fa0c4b5934',1,'rtabmap::Signature']]], + ['changewordsref_17',['changeWordsRef',['../classrtabmap_1_1Signature.html#a0fbef54e89583c0ee919f938d57c8759',1,'rtabmap::Signature']]], + ['cleantexturemesh_18',['cleanTextureMesh',['../namespacertabmap_1_1util3d.html#a07466d3f99ac7f763ba476f65c99ebb0',1,'rtabmap::util3d']]], + ['cleanup_19',['cleanup',['../classrtabmap_1_1Memory.html#af87e4718dd842c59fd8459430c40d78f',1,'rtabmap::Memory']]], + ['cleanuplocalgrids_20',['cleanuplocalgrids',['../classrtabmap_1_1Rtabmap.html#ac7de2278aa53a315a63bec05c1f0a15f',1,'rtabmap::Rtabmap::cleanupLocalGrids()'],['../classrtabmap_1_1Memory.html#a6e63312ada575016b583a4252dc0a70c',1,'rtabmap::Memory::cleanupLocalGrids()']]], + ['clear_21',['clear',['../classrtabmap_1_1GridMap.html#a2a3b8ba591cf41da62e5486bb62b8f51',1,'rtabmap::GridMap::clear()'],['../classrtabmap_1_1VWDictionary.html#a566aaf19cdc098587e88393e4140b351',1,'rtabmap::VWDictionary::clear()'],['../classrtabmap_1_1LocalGridCache.html#a4068440ef10859d05f252e36f916604b',1,'rtabmap::LocalGridCache::clear()'],['../classrtabmap_1_1LaserScan.html#af0ad1e84f0be48a84b772385249adb45',1,'rtabmap::LaserScan::clear()'],['../classrtabmap_1_1GlobalMap.html#aa6701a09e2532877e73d5b1ba8cb1213',1,'rtabmap::GlobalMap::clear()'],['../classrtabmap_1_1OctoMap.html#a6f9f296f3d5852f749c88291fa11d70f',1,'rtabmap::OctoMap::clear()'],['../classrtabmap_1_1OccupancyGrid.html#a76e50602b4dea4a94b1e7e1db25c9177',1,'rtabmap::OccupancyGrid::clear()'],['../classrtabmap_1_1CloudMap.html#a3e2089cb30bd4efbee1ede0c041ee4af',1,'rtabmap::CloudMap::clear()']]], + ['clearbuffereddata_22',['clearBufferedData',['../classrtabmap_1_1RtabmapThread.html#aea5c7a61adab9ed8382066806420bfac',1,'rtabmap::RtabmapThread']]], + ['clearcompresseddata_23',['clearCompressedData',['../classrtabmap_1_1SensorData.html#a33244e8049bfae5bea9ecf80057bcd29',1,'rtabmap::SensorData']]], + ['clearglobaldescriptors_24',['clearGlobalDescriptors',['../classrtabmap_1_1SensorData.html#a37c2569419731afc855a3ce984c11505',1,'rtabmap::SensorData']]], + ['clearpath_25',['clearPath',['../classrtabmap_1_1Rtabmap.html#a589cd696bffe53a5e00898631e7d9103',1,'rtabmap::Rtabmap']]], + ['clearrawdata_26',['clearRawData',['../classrtabmap_1_1SensorData.html#a53040403970a08a677e69d824a31f7b2',1,'rtabmap::SensorData']]], + ['clone_27',['clone',['../classrtabmap_1_1Transform.html#a93af73b3a388d66293d007cb164b2198',1,'rtabmap::Transform']]], + ['close_28',['close',['../classrtabmap_1_1RtabmapThread.html#aabea5cf86e55d6669d41b0b569dac574',1,'rtabmap::RtabmapThread::close()'],['../classrtabmap_1_1Rtabmap.html#a5e0b2eada8ae885e45df23165bb91d2f',1,'rtabmap::Rtabmap::close()'],['../classrtabmap_1_1Memory.html#a44023158524dee3471a8dff43ea132db',1,'rtabmap::Memory::close()']]], + ['closeconnection_29',['closeConnection',['../classrtabmap_1_1DBDriver.html#abb644a203d148d0b29db41aea04c949f',1,'rtabmap::DBDriver']]], + ['cloudfromdepth_30',['cloudfromdepth',['../namespacertabmap_1_1util3d.html#a45c699a4a8f4108aa31148fb706e6249',1,'rtabmap::util3d::cloudFromDepth(const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)'],['../namespacertabmap_1_1util3d.html#a9fa0222fe9a7f74fcfa4c04c0c2dd532',1,'rtabmap::util3d::cloudFromDepth(const cv::Mat &imageDepth, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)']]], + ['cloudfromdepthrgb_31',['cloudfromdepthrgb',['../namespacertabmap_1_1util3d.html#a982bc5d13fea129a174e16373aa8a31c',1,'rtabmap::util3d::cloudFromDepthRGB(const cv::Mat &imageRgb, const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)'],['../namespacertabmap_1_1util3d.html#a64b369873a01960576cb34aab4c5a319',1,'rtabmap::util3d::cloudFromDepthRGB(const cv::Mat &imageRgb, const cv::Mat &imageDepth, const CameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)']]], + ['cloudfromdisparity_32',['cloudFromDisparity',['../namespacertabmap_1_1util3d.html#aee34b5fe56014a9fa058fbdbf90cab71',1,'rtabmap::util3d']]], + ['cloudfromdisparityrgb_33',['cloudFromDisparityRGB',['../namespacertabmap_1_1util3d.html#a1e4a96407fb1b92018e640ef41b8db8e',1,'rtabmap::util3d']]], + ['cloudfromsensordata_34',['cloudFromSensorData',['../namespacertabmap_1_1util3d.html#aacda489f2336d8edb4e982f61f55cc66',1,'rtabmap::util3d']]], + ['cloudfromstereoimages_35',['cloudFromStereoImages',['../namespacertabmap_1_1util3d.html#a406caa6c0c51bae870a8c3a44e7daccc',1,'rtabmap::util3d']]], + ['cloudrgbfromsensordata_36',['cloudRGBFromSensorData',['../namespacertabmap_1_1util3d.html#a29ece82e01f041cab271fe9322cf9745',1,'rtabmap::util3d']]], + ['cloudsfromsensordata_37',['cloudsFromSensorData',['../namespacertabmap_1_1util3d.html#ada07c0379fcc7bb7465e31a5a53ebfaa',1,'rtabmap::util3d']]], + ['cloudsrgbfromsensordata_38',['cloudsRGBFromSensorData',['../namespacertabmap_1_1util3d.html#a2155fca440675ca9697a2fe7b2efb30e',1,'rtabmap::util3d']]], + ['commonfiltering_39',['commonfiltering',['../namespacertabmap_1_1util3d.html#ad02c78c4d3ca36fa9a27a845540ebe55',1,'rtabmap::util3d::commonFiltering(const LaserScan &scan, int downsamplingStep, float rangeMin, float rangeMax, float voxelSize, int normalK, float normalRadius, bool forceGroundNormalsUp)'],['../namespacertabmap_1_1util3d.html#a7edd91750858112fd161f0ed30af7f45',1,'rtabmap::util3d::commonFiltering(const LaserScan &scan, int downsamplingStep, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalK=0, float normalRadius=0.0f, float groundNormalsUp=0.0f)']]], + ['compareto_40',['compareTo',['../classrtabmap_1_1Signature.html#abe3b712a3c74599007b1974f592d82bd',1,'rtabmap::Signature']]], + ['compressdata_41',['compressData',['../namespacertabmap.html#a749adef593d09b887926afb6ebdb5834',1,'rtabmap']]], + ['compressdata2_42',['compressData2',['../namespacertabmap.html#aca82ee9efc46461c648c7ab8999e1d5b',1,'rtabmap']]], + ['compresseddepthformat_43',['compresseddepthformat',['../namespacertabmap.html#a58b406e413250675abbf0ec2956e3de8',1,'rtabmap::compressedDepthFormat(const unsigned char *bytes, size_t size)'],['../namespacertabmap.html#ab5cb2dcd6db7fe3bbe25d847177582c2',1,'rtabmap::compressedDepthFormat(const std::vector< unsigned char > &bytes)'],['../namespacertabmap.html#a67c525e80a7187b3106e5fd76155cabc',1,'rtabmap::compressedDepthFormat(const cv::Mat &bytes)']]], + ['compressimage_44',['compressImage',['../namespacertabmap.html#a52beb14eea422420c95fd69bdf3ab9dc',1,'rtabmap']]], + ['compressimage2_45',['compressImage2',['../namespacertabmap.html#abd9d5523210562abd9b5dc8fa9dbeb99',1,'rtabmap']]], + ['compressionthread_46',['compressionthread',['../classrtabmap_1_1CompressionThread.html#a8cfe0e3d632c888c143b4e7902145fde',1,'rtabmap::CompressionThread::CompressionThread(const cv::Mat &bytes, bool isImage)'],['../classrtabmap_1_1CompressionThread.html#a6bdec4c44e47774291bc9f98b3b5c146',1,'rtabmap::CompressionThread::CompressionThread(const cv::Mat &mat, const std::string &format="")']]], + ['compressstring_47',['compressString',['../namespacertabmap.html#a4f0dfae296aa7029e959d573b286285a',1,'rtabmap']]], + ['computebacorrespondences_48',['computeBACorrespondences',['../classrtabmap_1_1Optimizer.html#a93fb09dac068e64de000f692bcb8216f',1,'rtabmap::Optimizer']]], + ['computecorrespondences_49',['computecorrespondences',['../classrtabmap_1_1Stereo.html#aefb9a38643b353727430c4bb6a551382',1,'rtabmap::Stereo::computeCorrespondences()'],['../classrtabmap_1_1StereoOpticalFlow.html#a406bbf688782966ea55a44c49ac10cbe',1,'rtabmap::StereoOpticalFlow::computeCorrespondences()']]], + ['computedepth_50',['computeDepth',['../classrtabmap_1_1StereoCameraModel.html#a514f7d1baff8b4be96d760b27279f5d6',1,'rtabmap::StereoCameraModel']]], + ['computedisparity_51',['computedisparity',['../classrtabmap_1_1StereoBM.html#a94b6d71050cf4b784f87853175c57b00',1,'rtabmap::StereoBM::computeDisparity()'],['../classrtabmap_1_1StereoDense.html#ac394d1dad3fa899f310e4c3eb3e428c4',1,'rtabmap::StereoDense::computeDisparity()'],['../classrtabmap_1_1StereoCameraModel.html#a28230b8236ed778729ed1e1ceb590f31',1,'rtabmap::StereoCameraModel::computeDisparity(unsigned short depth) const'],['../classrtabmap_1_1StereoCameraModel.html#aecf8b2a628ead0bc422dbf791d683f5b',1,'rtabmap::StereoCameraModel::computeDisparity(float depth) const'],['../classrtabmap_1_1StereoSGBM.html#ac0677ba125a665fe723f20814bf724cc',1,'rtabmap::StereoSGBM::computeDisparity()']]], + ['computeicptransform_52',['computeIcpTransform',['../classrtabmap_1_1Memory.html#aca66c6d1316f9d833b279104a683ee50',1,'rtabmap::Memory']]], + ['computeicptransformmulti_53',['computeIcpTransformMulti',['../classrtabmap_1_1Memory.html#a34aa7efd5f6ce0fd3136459542ad8ebb',1,'rtabmap::Memory']]], + ['computelikelihood_54',['computeLikelihood',['../classrtabmap_1_1Memory.html#a984ca01a87434b11a66dc1d96e2fff17',1,'rtabmap::Memory']]], + ['computemaxgrapherrors_55',['computeMaxGraphErrors',['../namespacertabmap_1_1graph.html#a4691b760dfafe6d93de514c96fa55e0e',1,'rtabmap::graph']]], + ['computeminmax_56',['computeMinMax',['../namespacertabmap_1_1graph.html#a39f8c9011cb5b7652003df9275c88410',1,'rtabmap::graph']]], + ['computenormalscomplexity_57',['computenormalscomplexity',['../group__ComputeNormalsComplexity.html#ga6e03130bf686d43ea527dc8e6f5cce55',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga13a6d7525494d390041c9ef0337e02dd',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga5a68422282e99f8d05c0821eac491895',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::Normal > &normals, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga3724a082502fbef6222c11843ca56b58',1,'rtabmap::util3d::computeNormalsComplexity(const LaserScan &scan, const Transform &t=Transform::getIdentity(), cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)'],['../group__ComputeNormalsComplexity.html#ga3e024c51a6a49d1c8e6b64c230148137',1,'rtabmap::util3d::computeNormalsComplexity(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const Transform &t=Transform::getIdentity(), bool is2d=false, cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)']]], + ['computepath_58',['computepath',['../classrtabmap_1_1Rtabmap.html#ab797f7f5bb73a507ba4d4672cd5476df',1,'rtabmap::Rtabmap::computePath(int targetNode, bool global)'],['../classrtabmap_1_1Rtabmap.html#a14d5c84b61386e95071e90aba406ff49',1,'rtabmap::Rtabmap::computePath(const Transform &targetPose, float tolerance=-1.0f)'],['../namespacertabmap_1_1graph.html#a5ec6c3883f73181d9458c5905c0aa0ea',1,'rtabmap::graph::computePath(const std::map< int, rtabmap::Transform > &poses, const std::multimap< int, int > &links, int from, int to, bool updateNewCosts=false)'],['../namespacertabmap_1_1graph.html#ae21d02d613df461d6163f9d9a3db7ad2',1,'rtabmap::graph::computePath(const std::multimap< int, Link > &links, int from, int to, bool updateNewCosts=false, bool useSameCostForAllLinks=false)'],['../namespacertabmap_1_1graph.html#a1ec6b9506985624f31fb2091219cb142',1,'rtabmap::graph::computePath(int fromId, int toId, const Memory *memory, bool lookInDatabase=true, bool updateNewCosts=false, float linearVelocity=0.0f, float angularVelocity=0.0f, bool ignoreDirectLinks=false)']]], + ['computepathdepths_59',['computePathDepths',['../namespacertabmap_1_1graph.html#a8acc34fed4cb4e452e8e14d05dafc578',1,'rtabmap::graph']]], + ['computepathlength_60',['computepathlength',['../namespacertabmap_1_1graph.html#a3cd2009752bc8e39ec00f7f08cfd4a39',1,'rtabmap::graph::computePathLength(const std::vector< std::pair< int, Transform > > &path)'],['../namespacertabmap_1_1graph.html#a14376d7f2365ab41e5c361876c999277',1,'rtabmap::graph::computePathLength(const std::map< int, Transform > &path)']]], + ['computeposterior_61',['computePosterior',['../classrtabmap_1_1BayesFilter.html#aa3ec78130d67d9cca8c2f11c31bc28d2',1,'rtabmap::BayesFilter']]], + ['computeroi_62',['computeroi',['../group__RoiComputation.html#ga56fed8ce688e8e9eb3b1f74ad0febcef',1,'rtabmap::util2d::computeRoi()'],['../classrtabmap_1_1Feature2D.html#a8bdfa57df68506fecb6342b9f5bc98e8',1,'rtabmap::Feature2D::computeRoi()'],['../group__RoiComputation.html#ga79d3f93673fb236980f0be532695f478',1,'rtabmap::util2d::computeRoi(const cv::Mat &image, const std::string &roiRatios)'],['../group__RoiComputation.html#ga2f0ffb8f6882e28709b03446d50250bb',1,'rtabmap::util2d::computeRoi(const cv::Size &imageSize, const std::string &roiRatios)'],['../group__RoiComputation.html#ga81d9f49d117d02494c7ff57f5d426b15',1,'rtabmap::util2d::computeRoi(const cv::Mat &image, const std::vector< float > &roiRatios)']]], + ['computetransform_63',['computetransform',['../classrtabmap_1_1Memory.html#a4ae0287262c04905baab2d6f94448486',1,'rtabmap::Memory::computeTransform(Signature &fromS, Signature &toS, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false) const'],['../classrtabmap_1_1Memory.html#a29636c34234e6e2809e3d57329dc40d6',1,'rtabmap::Memory::computeTransform(int fromId, int toId, Transform guess, RegistrationInfo *info=0, bool useKnownCorrespondencesIfPossible=false)']]], + ['computetransformation_64',['computetransformation',['../classrtabmap_1_1Registration.html#aa6b81a6f4137138a1b49510cc3f97679',1,'rtabmap::Registration::computeTransformation(const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const'],['../classrtabmap_1_1Registration.html#a42d0c93204bc4da11eb89707ea2c03c6',1,'rtabmap::Registration::computeTransformation(const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const']]], + ['computetransformationimpl_65',['computetransformationimpl',['../classrtabmap_1_1Registration.html#a21635a391a85b64bc33787179a6cd71b',1,'rtabmap::Registration::computeTransformationImpl()'],['../classrtabmap_1_1RegistrationIcp.html#a8a18107160cfc05cfb8a5109540d81b5',1,'rtabmap::RegistrationIcp::computeTransformationImpl()'],['../classrtabmap_1_1RegistrationVis.html#aa47fd3a0599ee918e024161db330a92f',1,'rtabmap::RegistrationVis::computeTransformationImpl()']]], + ['computetransformationmod_66',['computeTransformationMod',['../classrtabmap_1_1Registration.html#a44530cd77f6d0a9657251864fb136c0d',1,'rtabmap::Registration']]], + ['computevarianceandcorrespondences_67',['computevarianceandcorrespondences',['../group__ComputeVarianceAndCorrespondences.html#ga92518a7b79e9265380f3a047e46ec247',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)'],['../group__ComputeVarianceAndCorrespondences.html#gaae6ddd0517614e9332669c37c6816777',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)'],['../group__ComputeVarianceAndCorrespondences.html#ga7d90c0848a13e35f37588addf3637fe2',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloudB, double maxCorrespondenceDistance, double &variance, int &correspondencesOut, bool reciprocal)'],['../group__ComputeVarianceAndCorrespondences.html#gaf474f9fb6eaaf532e9b18af63b9e1665',1,'rtabmap::util3d::computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)']]], + ['concatenate_68',['concatenate',['../namespacertabmap_1_1util3d.html#ac6c2019b1dad806d0c593e2ee3c21185',1,'rtabmap::util3d::concatenate(const pcl::IndicesPtr &indicesA, const pcl::IndicesPtr &indicesB)'],['../namespacertabmap_1_1util3d.html#aff3c61a08b0fcad7f1c3f7c847190969',1,'rtabmap::util3d::concatenate(const std::vector< pcl::IndicesPtr > &indices)']]], + ['concatenateclouds_69',['concatenateclouds',['../namespacertabmap_1_1util3d.html#a909a600c90d8bc4f77b62ff21a97ddc1',1,'rtabmap::util3d::concatenateClouds(const std::list< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > &clouds)'],['../namespacertabmap_1_1util3d.html#a863268b894de375aa45485dafe52dd7b',1,'rtabmap::util3d::concatenateClouds(const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr > &clouds)']]], + ['constraints_70',['constraints',['../classrtabmap_1_1Statistics.html#a30275a92af2f9fb08f3955c5b9e8b661',1,'rtabmap::Statistics']]], + ['convert32ftobin_71',['convert32FToBin',['../classrtabmap_1_1VWDictionary.html#acda9d98e4ad4897ce8a8b945f396221c',1,'rtabmap::VWDictionary']]], + ['convertbinto32f_72',['convertBinTo32F',['../classrtabmap_1_1VWDictionary.html#a70aec2b9d1bf55d47192949aa728448e',1,'rtabmap::VWDictionary']]], + ['convertimage8u2map_73',['convertImage8U2Map',['../namespacertabmap_1_1util3d.html#acb47883439442306b63f5bf234e87049',1,'rtabmap::util3d']]], + ['convertmap2image8u_74',['convertMap2Image8U',['../namespacertabmap_1_1util3d.html#ae57dd8dcc488496a2c3872eba97eb4e4',1,'rtabmap::util3d']]], + ['converttobaseframe_75',['convertToBaseFrame',['../classrtabmap_1_1IMU.html#a1ccae83f46e87d28e56bcfc4a25fafb8',1,'rtabmap::IMU']]], + ['converttointermediate_76',['convertToIntermediate',['../classrtabmap_1_1Memory.html#ae66a7837edc6e844ee9186e61d139300',1,'rtabmap::Memory']]], + ['copy_77',['copy',['../classUFile.html#aa99e6dc81f23e17ce92bd848dfe5a2f4',1,'UFile::copy(const std::string &from, const std::string &to)'],['../classUFile.html#aa02141310fab62290721deee433f6314',1,'UFile::copy(const std::string &to)']]], + ['copywithoutdata_78',['copywithoutdata',['../classrtabmap_1_1OdometryInfo.html#abce081943ea566e0dcc1532ce749e276',1,'rtabmap::OdometryInfo::copyWithoutData()'],['../classrtabmap_1_1RegistrationInfo.html#ae7abf7e34019a0c27b2de8ac5647f277',1,'rtabmap::RegistrationInfo::copyWithoutData()']]], + ['countuniquepairs_79',['countUniquePairs',['../namespacertabmap_1_1util3d.html#af7d4d348836959bbdce0e5db0a4af91c',1,'rtabmap::util3d']]], + ['covariance_80',['covariance',['../classrtabmap_1_1Landmark.html#a1c1e20cccc5f659743ba48c8afe1a8a0',1,'rtabmap::Landmark::covariance()'],['../classrtabmap_1_1OdometryEvent.html#a13be8ff5e398f9fd00d09aac8deddaba',1,'rtabmap::OdometryEvent::covariance()']]], + ['create_81',['create',['../classrtabmap_1_1IMUFilter.html#a7a01dc897399c51c4a362d2438b90875',1,'rtabmap::IMUFilter::create()'],['../classrtabmap_1_1DBDriver.html#a1f75e440b35243ccad645052bc4a12f9',1,'rtabmap::DBDriver::create()'],['../classrtabmap_1_1Feature2D.html#a58ac3dff96e882f0e4bbbf8a8ffc435d',1,'rtabmap::Feature2D::create(const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Feature2D.html#ab9deec7c0e26722736aeeaeb5541ac3a',1,'rtabmap::Feature2D::create(Feature2D::Type type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1RtabmapColorOcTree.html#ac109340a5367e1b818febb00ae06f18e',1,'rtabmap::RtabmapColorOcTree::create()'],['../classrtabmap_1_1IMUFilter.html#a16790b3787da5941c89d0c1d98e76234',1,'rtabmap::IMUFilter::create()'],['../classrtabmap_1_1Odometry.html#ac8992df0b92a86c10fe8e8da2b5f3627',1,'rtabmap::Odometry::create()'],['../classrtabmap_1_1StereoDense.html#ae52002299f7e443a8e9cdc33effae37c',1,'rtabmap::StereoDense::create(StereoDense::Type type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1StereoDense.html#ad2a4e50429b17c2cb1938e9d922ba7ce',1,'rtabmap::StereoDense::create(const ParametersMap &parameters)'],['../classrtabmap_1_1Stereo.html#a2ce0c01fac282e0a8ffd862608fa2d96',1,'rtabmap::Stereo::create()'],['../classrtabmap_1_1Registration.html#a1e3493a850551c98f9e814fed74400e6',1,'rtabmap::Registration::create(Type &type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Registration.html#a516e8d64cdb3e7a743a3aa40ab026def',1,'rtabmap::Registration::create(const ParametersMap &parameters)'],['../classrtabmap_1_1Optimizer.html#aeff86117cf69fdae3c25e5bc327a142d',1,'rtabmap::Optimizer::create(Optimizer::Type type, const ParametersMap &parameters=ParametersMap())'],['../classrtabmap_1_1Optimizer.html#a78b457bec2cdb7bdd320e2bfcca759df',1,'rtabmap::Optimizer::create(const ParametersMap &parameters)'],['../classrtabmap_1_1Odometry.html#a1240aaf3a92a75b4c3c9ded9117144bb',1,'rtabmap::Odometry::create()']]], + ['create2dmap_82',['create2dmap',['../namespacertabmap_1_1util3d.html#ae7dca67101116f7de0114cea5442ec23',1,'rtabmap::util3d::create2DMap(const std::map< int, Transform > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#adcc1d4aca3da4fcb11fa44d3a20f46ca',1,'rtabmap::util3d::create2DMap(const std::map< int, Transform > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#afff989b8fc8d612a69d82bdfa7a28fe8',1,'rtabmap::util3d::create2DMap(const std::map< int, Transform > &poses, const std::map< int, std::pair< cv::Mat, cv::Mat > > &scans, const std::map< int, cv::Point3f > &viewpoints, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)']]], + ['create2dmapfromoccupancylocalmaps_83',['create2DMapFromOccupancyLocalMaps',['../namespacertabmap_1_1util3d.html#a86ea393c958183f10da8f7327e25d894',1,'rtabmap::util3d']]], + ['createintermediatenodes_84',['createIntermediateNodes',['../classrtabmap_1_1RtabmapThread.html#a78271ce60d00219c4fdd86813136a116',1,'rtabmap::RtabmapThread']]], + ['createlocalmap_85',['createlocalmap',['../classrtabmap_1_1LocalGridMaker.html#a97d17a585226dcffe580406736e00117',1,'rtabmap::LocalGridMaker::createLocalMap(const Signature &node, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPoint)'],['../classrtabmap_1_1LocalGridMaker.html#a3d43b8e022d7638262282ab2c7da0ead',1,'rtabmap::LocalGridMaker::createLocalMap(const LaserScan &cloud, const Transform &pose, cv::Mat &groundCells, cv::Mat &obstacleCells, cv::Mat &emptyCells, cv::Point3f &viewPointInOut) const']]], + ['createpolygonindexes_86',['createPolygonIndexes',['../namespacertabmap_1_1util3d.html#a9ebe11bdf534e3bdbcb2802d5dd70e62',1,'rtabmap::util3d']]], + ['cropbox_87',['cropbox',['../group__CropBox.html#ga15f14d0a8c9de82ff3ad398fa8c36097',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga0fe7f976bca4c8ec9dd0afa95f590c72',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga32e6cd849848faaccc6b46ba02f98f6b',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga43309cd4b35fcbe7a746ccb1dc9a1b4f',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga1302fc8f7569390d2d9a6a66c24f5179',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga1f23604e3b58f73183fe3102dd9f86c9',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga8065c61da2295bf203e4ee7471e9332d',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga5d5cafb95fb856438e55a0de06378ef7',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga3b4c45a05e5bc0ff7d4c3917103e4f29',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga20a5eeed65c38958ed5866216f26bd44',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#gaa6737135785f73d1a2f3ec966ab22bc7',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga668e8d0a8a8abd65500bd7e7b748eec2',1,'rtabmap::util3d::cropBox(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)'],['../group__CropBox.html#ga8291151381ff38773e641740b66b93ef',1,'rtabmap::util3d::cropBox(const pcl::PCLPointCloud2::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)']]], + ['currentdir_88',['currentDir',['../classUDirectory.html#a30b3c4e8f81892e5ea04bdab3beba900',1,'UDirectory']]], + ['currentgoalid_89',['currentGoalId',['../classrtabmap_1_1Statistics.html#adae0424da0557be95b6968eecdbc628e',1,'rtabmap::Statistics']]], + ['cvtdepthfromfloat_90',['cvtDepthFromFloat',['../namespacertabmap_1_1util2d.html#a6740b13198a2c437ab51d8e0503f2d33',1,'rtabmap::util2d']]], + ['cvtdepthtofloat_91',['cvtDepthToFloat',['../namespacertabmap_1_1util2d.html#a0e4631bed561b3a694a1a65853221f75',1,'rtabmap::util2d']]], + ['cx_92',['cx',['../classrtabmap_1_1CameraModel.html#af81ee9572d32f69bf0a66cd1f4671c20',1,'rtabmap::CameraModel']]], + ['cy_93',['cy',['../classrtabmap_1_1CameraModel.html#aa3a18f811d3e9db290d01371e078add3',1,'rtabmap::CameraModel']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_3.js b/preview/pr-1773/api/latest/search/functions_3.js new file mode 100644 index 00000000..25be744e --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_3.js @@ -0,0 +1,660 @@ +var searchData= +[ + ['d_0',['D',['../classrtabmap_1_1CameraModel.html#a4aa121905a9b2aabb6a3592a6eb7459a',1,'rtabmap::CameraModel']]], + ['d_5fraw_1',['D_raw',['../classrtabmap_1_1CameraModel.html#a88ec7053f4d442c4b1b79803c2840f28',1,'rtabmap::CameraModel']]], + ['data_2',['data',['../classrtabmap_1_1OdometryEvent.html#a19edd3196a5723053ba425186b1f3d33',1,'rtabmap::OdometryEvent::data()'],['../classrtabmap_1_1OdometryEvent.html#ac29fe21e2ba017148dae0dfd9d8c028c',1,'rtabmap::OdometryEvent::data() const'],['../classrtabmap_1_1SensorEvent.html#a02d0ef0c42eab24adb8013a9693e02b1',1,'rtabmap::SensorEvent::data()'],['../classrtabmap_1_1Statistics.html#ab5c8be76435cdfb98c656ccc236f029a',1,'rtabmap::Statistics::data()'],['../classrtabmap_1_1Transform.html#a8db5709fa16ae937c5221b6e8bbbf364',1,'rtabmap::Transform::data()']]], + ['databaserecovery_3',['databaseRecovery',['../namespacertabmap.html#a84468b4bab971b3b8e2c33a746bf7f36',1,'rtabmap']]], + ['datamatrix_4',['dataMatrix',['../classrtabmap_1_1Transform.html#aac41c119a4602f70494380303fe5d277',1,'rtabmap::Transform']]], + ['dbdriver_5',['DBDriver',['../classrtabmap_1_1DBDriver.html#a5f90eb62bb559d42611dbe7ffe11328e',1,'rtabmap::DBDriver']]], + ['dbdriversqlite3_6',['DBDriverSqlite3',['../classrtabmap_1_1DBDriverSqlite3.html#a471f26a35b093bbd5a59766735a94fd1',1,'rtabmap::DBDriverSqlite3']]], + ['decimate_7',['decimate',['../namespacertabmap_1_1util2d.html#a0b545a9f852684afb0a6d8f835f9eaf2',1,'rtabmap::util2d']]], + ['defaultbayesfullpredictionupdate_8',['defaultBayesFullPredictionUpdate',['../classrtabmap_1_1Parameters.html#acb494af5ed2d49e5d97c7df1b6a38a18',1,'rtabmap::Parameters']]], + ['defaultbayespredictionlc_9',['defaultBayesPredictionLC',['../classrtabmap_1_1Parameters.html#a4c911439d8366cb6a15cc106d051ba70',1,'rtabmap::Parameters']]], + ['defaultbayessparseprediction_10',['defaultBayesSparsePrediction',['../classrtabmap_1_1Parameters.html#a4c7834c4fbf9488336a0d1eb54ba6596',1,'rtabmap::Parameters']]], + ['defaultbayesvirtualplacepriorthr_11',['defaultBayesVirtualPlacePriorThr',['../classrtabmap_1_1Parameters.html#aeb4f9762df3e027594ed16c2028d537e',1,'rtabmap::Parameters']]], + ['defaultbriefbytes_12',['defaultBRIEFBytes',['../classrtabmap_1_1Parameters.html#afed3dda76ce941d77b7572b5556e3ae7',1,'rtabmap::Parameters']]], + ['defaultbriskoctaves_13',['defaultBRISKOctaves',['../classrtabmap_1_1Parameters.html#adf6fc76e9ad8d5155525240e4ef5a266',1,'rtabmap::Parameters']]], + ['defaultbriskpatternscale_14',['defaultBRISKPatternScale',['../classrtabmap_1_1Parameters.html#a697a20070d22285dfe9a3b70495b3883',1,'rtabmap::Parameters']]], + ['defaultbriskthresh_15',['defaultBRISKThresh',['../classrtabmap_1_1Parameters.html#a4e7f9cdbc4f3297c47f8f4e3594d61ef',1,'rtabmap::Parameters']]], + ['defaultdata_16',['defaultData',['../classrtabmap_1_1Statistics.html#a917322822da5565f5c7438849f307c4f',1,'rtabmap::Statistics']]], + ['defaultdbsqlite3cachesize_17',['defaultDbSqlite3CacheSize',['../classrtabmap_1_1Parameters.html#a5a884b150b992f3036e0edd2af41f982',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3inmemory_18',['defaultDbSqlite3InMemory',['../classrtabmap_1_1Parameters.html#a6328492132d4c825c2686be9b14a887f',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3journalmode_19',['defaultDbSqlite3JournalMode',['../classrtabmap_1_1Parameters.html#a092819342dd9653df6c864f005a54002',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3synchronous_20',['defaultDbSqlite3Synchronous',['../classrtabmap_1_1Parameters.html#affc43d17e3aa571ace8661703fc7fe07',1,'rtabmap::Parameters']]], + ['defaultdbsqlite3tempstore_21',['defaultDbSqlite3TempStore',['../classrtabmap_1_1Parameters.html#a4ecff498d7aae4c909823e2470aa42d8',1,'rtabmap::Parameters']]], + ['defaultdbtargetversion_22',['defaultDbTargetVersion',['../classrtabmap_1_1Parameters.html#a75ed80e64e48b43d9fdc78650943c182',1,'rtabmap::Parameters']]], + ['defaultfastcv_23',['defaultFASTCV',['../classrtabmap_1_1Parameters.html#a8e98c4bff1a80612547d3e64af5dec5a',1,'rtabmap::Parameters']]], + ['defaultfastgpu_24',['defaultFASTGpu',['../classrtabmap_1_1Parameters.html#a93ea5d1f5986e5b4369045f43d65a7ff',1,'rtabmap::Parameters']]], + ['defaultfastgpukeypointsratio_25',['defaultFASTGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#afb23ee4d8780efc2c9103bfd01b59b02',1,'rtabmap::Parameters']]], + ['defaultfastgridcols_26',['defaultFASTGridCols',['../classrtabmap_1_1Parameters.html#a1a9a9653aedaf49cc5d23644d364db7e',1,'rtabmap::Parameters']]], + ['defaultfastgridrows_27',['defaultFASTGridRows',['../classrtabmap_1_1Parameters.html#a4766b8fdbe1f9cbb70db5395b6ccddd9',1,'rtabmap::Parameters']]], + ['defaultfastmaxthreshold_28',['defaultFASTMaxThreshold',['../classrtabmap_1_1Parameters.html#a201352771572624a745d46e8e06e06bd',1,'rtabmap::Parameters']]], + ['defaultfastminthreshold_29',['defaultFASTMinThreshold',['../classrtabmap_1_1Parameters.html#a9dd993e3616459eba668ffe59c8c476d',1,'rtabmap::Parameters']]], + ['defaultfastnonmaxsuppression_30',['defaultFASTNonmaxSuppression',['../classrtabmap_1_1Parameters.html#adcf54f387eb8692e7588f51b510d2d7f',1,'rtabmap::Parameters']]], + ['defaultfastthreshold_31',['defaultFASTThreshold',['../classrtabmap_1_1Parameters.html#a45d6c6be39871d8bda5fe5d4fe604178',1,'rtabmap::Parameters']]], + ['defaultfreaknoctaves_32',['defaultFREAKNOctaves',['../classrtabmap_1_1Parameters.html#a054f06d5fe9f1d6b025b06dfd154ab6c',1,'rtabmap::Parameters']]], + ['defaultfreakorientationnormalized_33',['defaultFREAKOrientationNormalized',['../classrtabmap_1_1Parameters.html#a53be4c4eb30ddfa4da53aa5b87798be8',1,'rtabmap::Parameters']]], + ['defaultfreakpatternscale_34',['defaultFREAKPatternScale',['../classrtabmap_1_1Parameters.html#a73d5d5bb6c06505560060456bf0d8f21',1,'rtabmap::Parameters']]], + ['defaultfreakscalenormalized_35',['defaultFREAKScaleNormalized',['../classrtabmap_1_1Parameters.html#ae98cac5e506b63e2c242ed750b089364',1,'rtabmap::Parameters']]], + ['defaultg2ooptimizer_36',['defaultg2oOptimizer',['../classrtabmap_1_1Parameters.html#a01a1c280ff72e8b57b9ee3281d5a9b7b',1,'rtabmap::Parameters']]], + ['defaultg2osolver_37',['defaultg2oSolver',['../classrtabmap_1_1Parameters.html#a7f1b92b3088d718e32d474a31190498a',1,'rtabmap::Parameters']]], + ['defaultgfttblocksize_38',['defaultGFTTBlockSize',['../classrtabmap_1_1Parameters.html#a3ebd63265592876d33e12e4fed155671',1,'rtabmap::Parameters']]], + ['defaultgfttgpu_39',['defaultGFTTGpu',['../classrtabmap_1_1Parameters.html#af8e5d8e3f745dd0df0f59ec1bd864b78',1,'rtabmap::Parameters']]], + ['defaultgfttk_40',['defaultGFTTK',['../classrtabmap_1_1Parameters.html#a335fb3b20d447687808d82e2e0082e18',1,'rtabmap::Parameters']]], + ['defaultgfttmindistance_41',['defaultGFTTMinDistance',['../classrtabmap_1_1Parameters.html#a3a223c759e077983bcf8b3445be5420b',1,'rtabmap::Parameters']]], + ['defaultgfttqualitylevel_42',['defaultGFTTQualityLevel',['../classrtabmap_1_1Parameters.html#ab445c47af2fe642eb50da3e97df547f2',1,'rtabmap::Parameters']]], + ['defaultgfttuseharrisdetector_43',['defaultGFTTUseHarrisDetector',['../classrtabmap_1_1Parameters.html#a69d1e44e3ee6901b066858a2a68b62a9',1,'rtabmap::Parameters']]], + ['defaultgmsthresholdfactor_44',['defaultGMSThresholdFactor',['../classrtabmap_1_1Parameters.html#a9d9022450fb2ed8dc53ed0955c5565f5',1,'rtabmap::Parameters']]], + ['defaultgmswithrotation_45',['defaultGMSWithRotation',['../classrtabmap_1_1Parameters.html#afa02153eae02a863c54686e13b4537f1',1,'rtabmap::Parameters']]], + ['defaultgmswithscale_46',['defaultGMSWithScale',['../classrtabmap_1_1Parameters.html#a346f5e35f0ec8b14df603785b59e7916',1,'rtabmap::Parameters']]], + ['defaultgrid3d_47',['defaultGrid3D',['../classrtabmap_1_1Parameters.html#a0b6eb3bba47924c214f33a281771d8d9',1,'rtabmap::Parameters']]], + ['defaultgridcellsize_48',['defaultGridCellSize',['../classrtabmap_1_1Parameters.html#a96a93b16ce8e0a4126ce6503a6bd5f2d',1,'rtabmap::Parameters']]], + ['defaultgridclusterradius_49',['defaultGridClusterRadius',['../classrtabmap_1_1Parameters.html#ad6a857a91d940c7dbb754c6baa7349ad',1,'rtabmap::Parameters']]], + ['defaultgriddepthdecimation_50',['defaultGridDepthDecimation',['../classrtabmap_1_1Parameters.html#a57bd48a54aaaa5973c8d344e0a92915f',1,'rtabmap::Parameters']]], + ['defaultgriddepthroiratios_51',['defaultGridDepthRoiRatios',['../classrtabmap_1_1Parameters.html#ae6f3eb72ad5123476e03b78cef47f523',1,'rtabmap::Parameters']]], + ['defaultgridflatobstacledetected_52',['defaultGridFlatObstacleDetected',['../classrtabmap_1_1Parameters.html#af0c8e5bb596876f4721823afd95505cb',1,'rtabmap::Parameters']]], + ['defaultgridfootprintheight_53',['defaultGridFootprintHeight',['../classrtabmap_1_1Parameters.html#ab6ee60666b38709085569d70174ebf84',1,'rtabmap::Parameters']]], + ['defaultgridfootprintlength_54',['defaultGridFootprintLength',['../classrtabmap_1_1Parameters.html#a1aa053c04e42ff09046df1377518cc96',1,'rtabmap::Parameters']]], + ['defaultgridfootprintwidth_55',['defaultGridFootprintWidth',['../classrtabmap_1_1Parameters.html#aaf2fc9dd2873ddd03969776c9e832dfa',1,'rtabmap::Parameters']]], + ['defaultgridglobalaltitudedelta_56',['defaultGridGlobalAltitudeDelta',['../classrtabmap_1_1Parameters.html#a11495d14ef327e284d01b65c9c74f3bb',1,'rtabmap::Parameters']]], + ['defaultgridglobaleroded_57',['defaultGridGlobalEroded',['../classrtabmap_1_1Parameters.html#a11677d5287f3b6c0d4b4480b9526bad1',1,'rtabmap::Parameters']]], + ['defaultgridglobalfloodfilldepth_58',['defaultGridGlobalFloodFillDepth',['../classrtabmap_1_1Parameters.html#a4d3ad503a5b8737aa3528ca27b6bee02',1,'rtabmap::Parameters']]], + ['defaultgridglobalfootprintradius_59',['defaultGridGlobalFootprintRadius',['../classrtabmap_1_1Parameters.html#abd9b4c3907b11a093b8576f8e225fd0b',1,'rtabmap::Parameters']]], + ['defaultgridglobalmaxnodes_60',['defaultGridGlobalMaxNodes',['../classrtabmap_1_1Parameters.html#a40f120fb907600ce7992aed2bc10d6f9',1,'rtabmap::Parameters']]], + ['defaultgridglobalminsize_61',['defaultGridGlobalMinSize',['../classrtabmap_1_1Parameters.html#a782ef417fcb895f4c9bd50a7c623e434',1,'rtabmap::Parameters']]], + ['defaultgridglobaloccupancythr_62',['defaultGridGlobalOccupancyThr',['../classrtabmap_1_1Parameters.html#af5cf3655e66ba2f8e86b84af68a2c358',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobclampingmax_63',['defaultGridGlobalProbClampingMax',['../classrtabmap_1_1Parameters.html#af08efafaf8747496a8669fdfcb07d8af',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobclampingmin_64',['defaultGridGlobalProbClampingMin',['../classrtabmap_1_1Parameters.html#a41502bbdd364b10113db122354becb5a',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobhit_65',['defaultGridGlobalProbHit',['../classrtabmap_1_1Parameters.html#a6318e26b58df3545e2968b6d828d395e',1,'rtabmap::Parameters']]], + ['defaultgridglobalprobmiss_66',['defaultGridGlobalProbMiss',['../classrtabmap_1_1Parameters.html#ab69bcf2461998d744f3a6cd3f65b23d8',1,'rtabmap::Parameters']]], + ['defaultgridglobalupdateerror_67',['defaultGridGlobalUpdateError',['../classrtabmap_1_1Parameters.html#a6e25c31658e200cac75e71dd9dd6424f',1,'rtabmap::Parameters']]], + ['defaultgridgroundisobstacle_68',['defaultGridGroundIsObstacle',['../classrtabmap_1_1Parameters.html#a36b39cd7eff09c4c1aeef3c458651670',1,'rtabmap::Parameters']]], + ['defaultgridmapframeprojection_69',['defaultGridMapFrameProjection',['../classrtabmap_1_1Parameters.html#a82ca167bf012afed26ef43c8e870fc34',1,'rtabmap::Parameters']]], + ['defaultgridmaxgroundangle_70',['defaultGridMaxGroundAngle',['../classrtabmap_1_1Parameters.html#a58513dd50061768ea9d3ad1638fce78f',1,'rtabmap::Parameters']]], + ['defaultgridmaxgroundheight_71',['defaultGridMaxGroundHeight',['../classrtabmap_1_1Parameters.html#a2b87b706a55a4b178800bd2f232f1854',1,'rtabmap::Parameters']]], + ['defaultgridmaxobstacleheight_72',['defaultGridMaxObstacleHeight',['../classrtabmap_1_1Parameters.html#a248d9d96681e897e39d1ec93d4185777',1,'rtabmap::Parameters']]], + ['defaultgridminclustersize_73',['defaultGridMinClusterSize',['../classrtabmap_1_1Parameters.html#a101841642b00291cc1c50e6f42442653',1,'rtabmap::Parameters']]], + ['defaultgridmingroundheight_74',['defaultGridMinGroundHeight',['../classrtabmap_1_1Parameters.html#aaf47b8fce88fbd8444775c4e953e3243',1,'rtabmap::Parameters']]], + ['defaultgridnoisefilteringminneighbors_75',['defaultGridNoiseFilteringMinNeighbors',['../classrtabmap_1_1Parameters.html#a7d13e70bb851fc35b34da4f0e58bf41a',1,'rtabmap::Parameters']]], + ['defaultgridnoisefilteringradius_76',['defaultGridNoiseFilteringRadius',['../classrtabmap_1_1Parameters.html#a7aeb29b1f9a2bc1b8c1ba9ab83b445de',1,'rtabmap::Parameters']]], + ['defaultgridnormalk_77',['defaultGridNormalK',['../classrtabmap_1_1Parameters.html#ac0b04b0c1d17cc4927269c09a8b0cf07',1,'rtabmap::Parameters']]], + ['defaultgridnormalssegmentation_78',['defaultGridNormalsSegmentation',['../classrtabmap_1_1Parameters.html#a41e52d754479af71f18e7389fe92ab81',1,'rtabmap::Parameters']]], + ['defaultgridprevoxelfiltering_79',['defaultGridPreVoxelFiltering',['../classrtabmap_1_1Parameters.html#a65bdcf12c06a2b558ed703cba95a6034',1,'rtabmap::Parameters']]], + ['defaultgridrangemax_80',['defaultGridRangeMax',['../classrtabmap_1_1Parameters.html#a58347bba2b64588e462f105bfc35e3f3',1,'rtabmap::Parameters']]], + ['defaultgridrangemin_81',['defaultGridRangeMin',['../classrtabmap_1_1Parameters.html#a8405ef0df1d5abf50bc367a75c3ab7c7',1,'rtabmap::Parameters']]], + ['defaultgridraytracing_82',['defaultGridRayTracing',['../classrtabmap_1_1Parameters.html#a83124bee1f8c7deb63d15f871129b56a',1,'rtabmap::Parameters']]], + ['defaultgridscan2dunknownspacefilled_83',['defaultGridScan2dUnknownSpaceFilled',['../classrtabmap_1_1Parameters.html#a2e953d7c1d784099b5bf9743a155b7f7',1,'rtabmap::Parameters']]], + ['defaultgridscandecimation_84',['defaultGridScanDecimation',['../classrtabmap_1_1Parameters.html#ae3ff9dc2f20c580bcf76f7fa064cca4f',1,'rtabmap::Parameters']]], + ['defaultgridsensor_85',['defaultGridSensor',['../classrtabmap_1_1Parameters.html#acbadf2f07b7bc3f4e766e16c958f7d83',1,'rtabmap::Parameters']]], + ['defaultgtsamincrelinearizeskip_86',['defaultGTSAMIncRelinearizeSkip',['../classrtabmap_1_1Parameters.html#a9655fd620e39777f3f829003b6f3e115',1,'rtabmap::Parameters']]], + ['defaultgtsamincrelinearizethreshold_87',['defaultGTSAMIncRelinearizeThreshold',['../classrtabmap_1_1Parameters.html#a02b3bc870c99fc2c9581e2b7e8e2f790',1,'rtabmap::Parameters']]], + ['defaultgtsamincremental_88',['defaultGTSAMIncremental',['../classrtabmap_1_1Parameters.html#a66c11bfaae450751def3a11a6fdd63e6',1,'rtabmap::Parameters']]], + ['defaultgtsamoptimizer_89',['defaultGTSAMOptimizer',['../classrtabmap_1_1Parameters.html#ad1a81c4592bd2d628badbb53ad767e10',1,'rtabmap::Parameters']]], + ['defaulticpccfilteroutfarthestpoints_90',['defaultIcpCCFilterOutFarthestPoints',['../classrtabmap_1_1Parameters.html#ac70e4c88b147402e0252cf4dec8dbdb5',1,'rtabmap::Parameters']]], + ['defaulticpccmaxfinalrms_91',['defaultIcpCCMaxFinalRMS',['../classrtabmap_1_1Parameters.html#aac51ae7a84230f23c174dede57dcd4c9',1,'rtabmap::Parameters']]], + ['defaulticpccsamplinglimit_92',['defaultIcpCCSamplingLimit',['../classrtabmap_1_1Parameters.html#abff765f21e3216be19abad3c884f41ba',1,'rtabmap::Parameters']]], + ['defaulticpcorrespondenceratio_93',['defaultIcpCorrespondenceRatio',['../classrtabmap_1_1Parameters.html#adfe8c59562a8b2a4c05a577bd246b33f',1,'rtabmap::Parameters']]], + ['defaulticpdebugexportformat_94',['defaultIcpDebugExportFormat',['../classrtabmap_1_1Parameters.html#a66006bf7dd18f8a0de308bbcf0bab014',1,'rtabmap::Parameters']]], + ['defaulticpdownsamplingstep_95',['defaultIcpDownsamplingStep',['../classrtabmap_1_1Parameters.html#a73f22b909b9f8c5f5a90507e413497c6',1,'rtabmap::Parameters']]], + ['defaulticpepsilon_96',['defaultIcpEpsilon',['../classrtabmap_1_1Parameters.html#ae7c659591f51feff0b74a925b26a8ac8',1,'rtabmap::Parameters']]], + ['defaulticpfiltersenabled_97',['defaultIcpFiltersEnabled',['../classrtabmap_1_1Parameters.html#afe98ba19467980deea6f7c792358bccd',1,'rtabmap::Parameters']]], + ['defaulticpforce4dof_98',['defaultIcpForce4DoF',['../classrtabmap_1_1Parameters.html#a86c2803255834b69cc9b5557721c5ed3',1,'rtabmap::Parameters']]], + ['defaulticpiterations_99',['defaultIcpIterations',['../classrtabmap_1_1Parameters.html#a272a33aa43d7ce5adaf1928f619ed1d6',1,'rtabmap::Parameters']]], + ['defaulticpmaxcorrespondencedistance_100',['defaultIcpMaxCorrespondenceDistance',['../classrtabmap_1_1Parameters.html#a2062addb9e1f26d9869c8a8a335c275c',1,'rtabmap::Parameters']]], + ['defaulticpmaxrotation_101',['defaultIcpMaxRotation',['../classrtabmap_1_1Parameters.html#a0fcc69faf752edc0413ffc74e1920bf3',1,'rtabmap::Parameters']]], + ['defaulticpmaxtranslation_102',['defaultIcpMaxTranslation',['../classrtabmap_1_1Parameters.html#a48ad351e07d927c5e5d7078042360ac5',1,'rtabmap::Parameters']]], + ['defaulticpoutlierratio_103',['defaultIcpOutlierRatio',['../classrtabmap_1_1Parameters.html#ad1301dc537bbe67736be508c5e85bf55',1,'rtabmap::Parameters']]], + ['defaulticppmconfig_104',['defaultIcpPMConfig',['../classrtabmap_1_1Parameters.html#a6980f6acce87ef655f8fab7e301db560',1,'rtabmap::Parameters']]], + ['defaulticppmmatcherepsilon_105',['defaultIcpPMMatcherEpsilon',['../classrtabmap_1_1Parameters.html#ac7bc6428c071295fb0a042a7b293e366',1,'rtabmap::Parameters']]], + ['defaulticppmmatcherintensity_106',['defaultIcpPMMatcherIntensity',['../classrtabmap_1_1Parameters.html#a818c7242245d46e324e81dcf77a8792c',1,'rtabmap::Parameters']]], + ['defaulticppmmatcherknn_107',['defaultIcpPMMatcherKnn',['../classrtabmap_1_1Parameters.html#a46b977b4ad9a3c1a7a6dbb6ff9e191ab',1,'rtabmap::Parameters']]], + ['defaulticppointtoplane_108',['defaultIcpPointToPlane',['../classrtabmap_1_1Parameters.html#add9b61da4ce22d5a0f847e48e05968fd',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanecomplexitycentered_109',['defaultIcpPointToPlaneComplexityCentered',['../classrtabmap_1_1Parameters.html#a7921673566fbb71db1143b3c1866b3e5',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanegroundnormalsup_110',['defaultIcpPointToPlaneGroundNormalsUp',['../classrtabmap_1_1Parameters.html#a60ccd48fddfb1c45c371d9827197a982',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanek_111',['defaultIcpPointToPlaneK',['../classrtabmap_1_1Parameters.html#ac1a10501fecebad9b4013b0ff7a8bad7',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanelowcomplexitystrategy_112',['defaultIcpPointToPlaneLowComplexityStrategy',['../classrtabmap_1_1Parameters.html#ad3249c659f7314d8715d109a4df9356b',1,'rtabmap::Parameters']]], + ['defaulticppointtoplanemincomplexity_113',['defaultIcpPointToPlaneMinComplexity',['../classrtabmap_1_1Parameters.html#a37bc1c553ac075d0dde1b5f0df877952',1,'rtabmap::Parameters']]], + ['defaulticppointtoplaneradius_114',['defaultIcpPointToPlaneRadius',['../classrtabmap_1_1Parameters.html#a1856ca425ea0dbce101dee61123c6193',1,'rtabmap::Parameters']]], + ['defaulticprangemax_115',['defaultIcpRangeMax',['../classrtabmap_1_1Parameters.html#a0d045291712292ef1ea4c6be6e414744',1,'rtabmap::Parameters']]], + ['defaulticprangemin_116',['defaultIcpRangeMin',['../classrtabmap_1_1Parameters.html#ac293ef0ededcbe97332e06f9193d7cf2',1,'rtabmap::Parameters']]], + ['defaulticpreciprocalcorrespondences_117',['defaultIcpReciprocalCorrespondences',['../classrtabmap_1_1Parameters.html#a3567fdbac78fa3f98b98fc043e8c06df',1,'rtabmap::Parameters']]], + ['defaulticpstrategy_118',['defaultIcpStrategy',['../classrtabmap_1_1Parameters.html#a460c9b69cba029ac63a92133bb5bd3b6',1,'rtabmap::Parameters']]], + ['defaulticpvoxelsize_119',['defaultIcpVoxelSize',['../classrtabmap_1_1Parameters.html#aefeff456decda53ac6ac935cc34514e1',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarybiasalpha_120',['defaultImuFilterComplementaryBiasAlpha',['../classrtabmap_1_1Parameters.html#aa83213367d3e8ed5a397a32bc7cab340',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarydoadpativegain_121',['defaultImuFilterComplementaryDoAdpativeGain',['../classrtabmap_1_1Parameters.html#a85c221b4112ae51e9fb66e3c0641cea3',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarydobiasestimation_122',['defaultImuFilterComplementaryDoBiasEstimation',['../classrtabmap_1_1Parameters.html#a1227b448cd86787f3947379a5a2b035e',1,'rtabmap::Parameters']]], + ['defaultimufiltercomplementarygainacc_123',['defaultImuFilterComplementaryGainAcc',['../classrtabmap_1_1Parameters.html#aeab1fce7ec197b0c98d9f59cd3bf0245',1,'rtabmap::Parameters']]], + ['defaultimufiltermadgwickgain_124',['defaultImuFilterMadgwickGain',['../classrtabmap_1_1Parameters.html#a00093b3dc49ed5480355d0032c17002f',1,'rtabmap::Parameters']]], + ['defaultimufiltermadgwickzeta_125',['defaultImuFilterMadgwickZeta',['../classrtabmap_1_1Parameters.html#a506655a4389ba5a6a37d4d59df788d3b',1,'rtabmap::Parameters']]], + ['defaultkazediffusivity_126',['defaultKAZEDiffusivity',['../classrtabmap_1_1Parameters.html#a05fd79f518399c0dd6f9b6fded713c79',1,'rtabmap::Parameters']]], + ['defaultkazeextended_127',['defaultKAZEExtended',['../classrtabmap_1_1Parameters.html#a7cb2bf7a6c30beec554cf991fad5f7d9',1,'rtabmap::Parameters']]], + ['defaultkazenoctavelayers_128',['defaultKAZENOctaveLayers',['../classrtabmap_1_1Parameters.html#a6fff9e155ce10a31f6d3b8e5396d18a2',1,'rtabmap::Parameters']]], + ['defaultkazenoctaves_129',['defaultKAZENOctaves',['../classrtabmap_1_1Parameters.html#abb03d452f7c432f206dd38a675c6ef1e',1,'rtabmap::Parameters']]], + ['defaultkazethreshold_130',['defaultKAZEThreshold',['../classrtabmap_1_1Parameters.html#aff82ed202205cbb380d28bba97820b2c',1,'rtabmap::Parameters']]], + ['defaultkazeupright_131',['defaultKAZEUpright',['../classrtabmap_1_1Parameters.html#a2944dca840e36bf2e0e82a081cde421f',1,'rtabmap::Parameters']]], + ['defaultkpbadsignratio_132',['defaultKpBadSignRatio',['../classrtabmap_1_1Parameters.html#a2d03d0083e112c34d7211c682f12b4b0',1,'rtabmap::Parameters']]], + ['defaultkpbytetofloat_133',['defaultKpByteToFloat',['../classrtabmap_1_1Parameters.html#a65c89efe990caf9872456567afd54c71',1,'rtabmap::Parameters']]], + ['defaultkpdetectorstrategy_134',['defaultKpDetectorStrategy',['../classrtabmap_1_1Parameters.html#afbe9d14ecea943aa7f67375648df0c4e',1,'rtabmap::Parameters']]], + ['defaultkpdictionarypath_135',['defaultKpDictionaryPath',['../classrtabmap_1_1Parameters.html#a554c76ea763b4a63003a059c344e282c',1,'rtabmap::Parameters']]], + ['defaultkpflannindexsaved_136',['defaultKpFlannIndexSaved',['../classrtabmap_1_1Parameters.html#ab13a284ca5975977d5434f6d95fef86b',1,'rtabmap::Parameters']]], + ['defaultkpflannrebalancingfactor_137',['defaultKpFlannRebalancingFactor',['../classrtabmap_1_1Parameters.html#a48c34474ee0a9b6f8862688f2015fce8',1,'rtabmap::Parameters']]], + ['defaultkpflannthreads_138',['defaultKpFlannThreads',['../classrtabmap_1_1Parameters.html#aa4efa328145004e470dac002845d9edf',1,'rtabmap::Parameters']]], + ['defaultkpgridcols_139',['defaultKpGridCols',['../classrtabmap_1_1Parameters.html#aea86ae4c7b844fed4fa2c65a0dffb6e4',1,'rtabmap::Parameters']]], + ['defaultkpgridrows_140',['defaultKpGridRows',['../classrtabmap_1_1Parameters.html#a6ac24bc6ad96363c6172a51ee7bf489c',1,'rtabmap::Parameters']]], + ['defaultkpincrementaldictionary_141',['defaultKpIncrementalDictionary',['../classrtabmap_1_1Parameters.html#ad7274a400277b33267ef1ee69aa528ee',1,'rtabmap::Parameters']]], + ['defaultkpincrementalflann_142',['defaultKpIncrementalFlann',['../classrtabmap_1_1Parameters.html#a66f0bded3fc68132c461caec2347d740',1,'rtabmap::Parameters']]], + ['defaultkpmaxdepth_143',['defaultKpMaxDepth',['../classrtabmap_1_1Parameters.html#a1d5841e95b1f505365866234f89b3d5f',1,'rtabmap::Parameters']]], + ['defaultkpmaxfeatures_144',['defaultKpMaxFeatures',['../classrtabmap_1_1Parameters.html#ab21984b1a150eb9dc439ef3fd12c3410',1,'rtabmap::Parameters']]], + ['defaultkpmindepth_145',['defaultKpMinDepth',['../classrtabmap_1_1Parameters.html#aae97af028948e434ca9a6e48d1f1aa33',1,'rtabmap::Parameters']]], + ['defaultkpnewwordscomparedtogether_146',['defaultKpNewWordsComparedTogether',['../classrtabmap_1_1Parameters.html#a0bfe074e401d001341f2ad33ab860ff9',1,'rtabmap::Parameters']]], + ['defaultkpnndrratio_147',['defaultKpNndrRatio',['../classrtabmap_1_1Parameters.html#aa762b8106f1aa255aaea164c0c6834d8',1,'rtabmap::Parameters']]], + ['defaultkpnnstrategy_148',['defaultKpNNStrategy',['../classrtabmap_1_1Parameters.html#a2df3c573a24040a99c2204b15d40b3af',1,'rtabmap::Parameters']]], + ['defaultkpparallelized_149',['defaultKpParallelized',['../classrtabmap_1_1Parameters.html#a57c85a044e33721d5f74c07ac0bb1774',1,'rtabmap::Parameters']]], + ['defaultkproiratios_150',['defaultKpRoiRatios',['../classrtabmap_1_1Parameters.html#a6eb23a4101a03899cb749844d643a031',1,'rtabmap::Parameters']]], + ['defaultkpserializewithchecksum_151',['defaultKpSerializeWithChecksum',['../classrtabmap_1_1Parameters.html#a27931d62192448763f478b5c64dffa6f',1,'rtabmap::Parameters']]], + ['defaultkpssc_152',['defaultKpSSC',['../classrtabmap_1_1Parameters.html#a5f430747d74d7df265f20a5c83290ce9',1,'rtabmap::Parameters']]], + ['defaultkpsubpixeps_153',['defaultKpSubPixEps',['../classrtabmap_1_1Parameters.html#a65d5b01115225f787942f558ae03c8da',1,'rtabmap::Parameters']]], + ['defaultkpsubpixiterations_154',['defaultKpSubPixIterations',['../classrtabmap_1_1Parameters.html#aa3759274713c3872bf8712e6176ef029',1,'rtabmap::Parameters']]], + ['defaultkpsubpixwinsize_155',['defaultKpSubPixWinSize',['../classrtabmap_1_1Parameters.html#a1237fc0d0c27b7e9e02b2c0781e9eaec',1,'rtabmap::Parameters']]], + ['defaultkptfidflikelihoodused_156',['defaultKpTfIdfLikelihoodUsed',['../classrtabmap_1_1Parameters.html#a899ab46fdc89303e0eca550c20d49f97',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagdebug_157',['defaultMarkerAprilTagDebug',['../classrtabmap_1_1Parameters.html#ac64439e547bca975dffbc4e1e2d7d323',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagdecodesharpening_158',['defaultMarkerAprilTagDecodeSharpening',['../classrtabmap_1_1Parameters.html#ac71c241a47b182a2397b667aecc2db60',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagnthreads_159',['defaultMarkerAprilTagNThreads',['../classrtabmap_1_1Parameters.html#a2bbec969b470dce7e649350ad6cec3ba',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagquaddecimate_160',['defaultMarkerAprilTagQuadDecimate',['../classrtabmap_1_1Parameters.html#af1bf0c1f974d3a6f7af71ba86e362054',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagquadsigma_161',['defaultMarkerAprilTagQuadSigma',['../classrtabmap_1_1Parameters.html#a46902165a0506cf367120c75fc0bdadb',1,'rtabmap::Parameters']]], + ['defaultmarkerapriltagrefineedges_162',['defaultMarkerAprilTagRefineEdges',['../classrtabmap_1_1Parameters.html#ace2768173b1e4dd7c4c90313df1a6687',1,'rtabmap::Parameters']]], + ['defaultmarkerdictionary_163',['defaultMarkerDictionary',['../classrtabmap_1_1Parameters.html#a89e4e2adc1501701afcb33b835a019c1',1,'rtabmap::Parameters']]], + ['defaultmarkerlength_164',['defaultMarkerLength',['../classrtabmap_1_1Parameters.html#ae807eaa877eeb5ecbfc633ef746cdca7',1,'rtabmap::Parameters']]], + ['defaultmarkerlengths_165',['defaultMarkerLengths',['../classrtabmap_1_1Parameters.html#a200c43f96c1a74b1a0bffb44b0e3b0b7',1,'rtabmap::Parameters']]], + ['defaultmarkermaxdeptherror_166',['defaultMarkerMaxDepthError',['../classrtabmap_1_1Parameters.html#a1a22d9e421f766a7e14b6ff60bea1c5c',1,'rtabmap::Parameters']]], + ['defaultmarkermaxrange_167',['defaultMarkerMaxRange',['../classrtabmap_1_1Parameters.html#a10a1eb6ba4c13f00b2859bcbf2ca75bf',1,'rtabmap::Parameters']]], + ['defaultmarkerminrange_168',['defaultMarkerMinRange',['../classrtabmap_1_1Parameters.html#ada7dff5d592bb160272f6056fb9712b4',1,'rtabmap::Parameters']]], + ['defaultmarkeropencvcornerrefinementmethod_169',['defaultMarkerOpenCVCornerRefinementMethod',['../classrtabmap_1_1Parameters.html#ad3ea4f4e9a55812e44b336f515e58107',1,'rtabmap::Parameters']]], + ['defaultmarkerpriors_170',['defaultMarkerPriors',['../classrtabmap_1_1Parameters.html#a967c0591e9b4a922f266e569f4872ab2',1,'rtabmap::Parameters']]], + ['defaultmarkerpriorsvarianceangular_171',['defaultMarkerPriorsVarianceAngular',['../classrtabmap_1_1Parameters.html#a0d6c4002cfe7b213dc76655d011fe586',1,'rtabmap::Parameters']]], + ['defaultmarkerpriorsvariancelinear_172',['defaultMarkerPriorsVarianceLinear',['../classrtabmap_1_1Parameters.html#a5f8b4750c25c3b11c26aa6e65534fa7a',1,'rtabmap::Parameters']]], + ['defaultmarkerstrategy_173',['defaultMarkerStrategy',['../classrtabmap_1_1Parameters.html#ae1e284597b4137aa16e0462c545b27b7',1,'rtabmap::Parameters']]], + ['defaultmarkervarianceangular_174',['defaultMarkerVarianceAngular',['../classrtabmap_1_1Parameters.html#a4685a5901c92910d199cc9232e682888',1,'rtabmap::Parameters']]], + ['defaultmarkervariancelinear_175',['defaultMarkerVarianceLinear',['../classrtabmap_1_1Parameters.html#ae68320748306e51bfac2d41d752c2f60',1,'rtabmap::Parameters']]], + ['defaultmarkervarianceorientationignored_176',['defaultMarkerVarianceOrientationIgnored',['../classrtabmap_1_1Parameters.html#ad02a68ccc38dfe99c474bce7f8c1beb8',1,'rtabmap::Parameters']]], + ['defaultmembadsignaturesignored_177',['defaultMemBadSignaturesIgnored',['../classrtabmap_1_1Parameters.html#a05100dbe754fe80f80e295f8488db2bf',1,'rtabmap::Parameters']]], + ['defaultmembindatakept_178',['defaultMemBinDataKept',['../classrtabmap_1_1Parameters.html#a8de7d48c83fb6e01445aba0db8ae0757',1,'rtabmap::Parameters']]], + ['defaultmemcompressionparallelized_179',['defaultMemCompressionParallelized',['../classrtabmap_1_1Parameters.html#a18f0b2d1533598f44bc24068bb2037bf',1,'rtabmap::Parameters']]], + ['defaultmemcovoffdiagignored_180',['defaultMemCovOffDiagIgnored',['../classrtabmap_1_1Parameters.html#a9d6f381a9a0b59483fe9bfbfdda561ef',1,'rtabmap::Parameters']]], + ['defaultmemdepthasmask_181',['defaultMemDepthAsMask',['../classrtabmap_1_1Parameters.html#a0b951157e5f4d13eaf02a9fcc96e4fe7',1,'rtabmap::Parameters']]], + ['defaultmemdepthcompressionformat_182',['defaultMemDepthCompressionFormat',['../classrtabmap_1_1Parameters.html#a910b2ae89d8052dd47a351ec70837fff',1,'rtabmap::Parameters']]], + ['defaultmemdepthmaskfloorthr_183',['defaultMemDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#ab67a80c58f1fe6229f495b562aab4dff',1,'rtabmap::Parameters']]], + ['defaultmemgenerateids_184',['defaultMemGenerateIds',['../classrtabmap_1_1Parameters.html#ad20f4bc73ba55bf59e363f8954ae0093',1,'rtabmap::Parameters']]], + ['defaultmemglobaldescriptorstrategy_185',['defaultMemGlobalDescriptorStrategy',['../classrtabmap_1_1Parameters.html#ae8628f043403b1e6b5d151e4502966a1',1,'rtabmap::Parameters']]], + ['defaultmemimagecompressionformat_186',['defaultMemImageCompressionFormat',['../classrtabmap_1_1Parameters.html#a93e3a1a8e17c89b5bd296b2e46e01f59',1,'rtabmap::Parameters']]], + ['defaultmemimagekept_187',['defaultMemImageKept',['../classrtabmap_1_1Parameters.html#a7acd099f792c408938369a5d6ac2cbb4',1,'rtabmap::Parameters']]], + ['defaultmemimagepostdecimation_188',['defaultMemImagePostDecimation',['../classrtabmap_1_1Parameters.html#a1e10a4ffe99aebfb52a875786da93942',1,'rtabmap::Parameters']]], + ['defaultmemimagepredecimation_189',['defaultMemImagePreDecimation',['../classrtabmap_1_1Parameters.html#a38e39c920f79b924fe4a72851b0f2369',1,'rtabmap::Parameters']]], + ['defaultmemincrementalmemory_190',['defaultMemIncrementalMemory',['../classrtabmap_1_1Parameters.html#a8bb38651262b700eac115e843fd4052b',1,'rtabmap::Parameters']]], + ['defaultmeminitwmwithallnodes_191',['defaultMemInitWMWithAllNodes',['../classrtabmap_1_1Parameters.html#a219e4eb04a5a4ed9ec18c21fe7358feb',1,'rtabmap::Parameters']]], + ['defaultmemintermediatenodedatakept_192',['defaultMemIntermediateNodeDataKept',['../classrtabmap_1_1Parameters.html#aa0833629878456d49d6b9abeda19154a',1,'rtabmap::Parameters']]], + ['defaultmemlaserscandownsamplestepsize_193',['defaultMemLaserScanDownsampleStepSize',['../classrtabmap_1_1Parameters.html#ab2a7153ce501d4e3b5fbcc67451ffa2b',1,'rtabmap::Parameters']]], + ['defaultmemlaserscannormalk_194',['defaultMemLaserScanNormalK',['../classrtabmap_1_1Parameters.html#a3b3da0e74eb2eb6953af5f4093ebf636',1,'rtabmap::Parameters']]], + ['defaultmemlaserscannormalradius_195',['defaultMemLaserScanNormalRadius',['../classrtabmap_1_1Parameters.html#a996ec0a78373510fd9fa3a1e809f72e3',1,'rtabmap::Parameters']]], + ['defaultmemlaserscanvoxelsize_196',['defaultMemLaserScanVoxelSize',['../classrtabmap_1_1Parameters.html#a0a452f952823c8515d8c0445cd3a3e7e',1,'rtabmap::Parameters']]], + ['defaultmemloadvisuallocalfeaturesoninit_197',['defaultMemLoadVisualLocalFeaturesOnInit',['../classrtabmap_1_1Parameters.html#ac9f8a3dde1fdbf9d12c916dd64816577',1,'rtabmap::Parameters']]], + ['defaultmemlocalizationdatasaved_198',['defaultMemLocalizationDataSaved',['../classrtabmap_1_1Parameters.html#af371caa7510c244cf2e77f9517e20c87',1,'rtabmap::Parameters']]], + ['defaultmemlocalizationreadonly_199',['defaultMemLocalizationReadOnly',['../classrtabmap_1_1Parameters.html#a8a28e4d7255ffc9748111478f123e92c',1,'rtabmap::Parameters']]], + ['defaultmemmaplabelsadded_200',['defaultMemMapLabelsAdded',['../classrtabmap_1_1Parameters.html#a314d269c542216bc1648a941749769a3',1,'rtabmap::Parameters']]], + ['defaultmemnotlinkednodeskept_201',['defaultMemNotLinkedNodesKept',['../classrtabmap_1_1Parameters.html#a0378f5c6c5fa962273e14b4abf16c3b7',1,'rtabmap::Parameters']]], + ['defaultmemrawdescriptorskept_202',['defaultMemRawDescriptorsKept',['../classrtabmap_1_1Parameters.html#afdd68706f173ac772c09e5bdf8506e47',1,'rtabmap::Parameters']]], + ['defaultmemrecentwmratio_203',['defaultMemRecentWmRatio',['../classrtabmap_1_1Parameters.html#a2d08f0a0bf9f1971b5f0e050189a822a',1,'rtabmap::Parameters']]], + ['defaultmemreducegraph_204',['defaultMemReduceGraph',['../classrtabmap_1_1Parameters.html#ac798d107c6adf5eec5afa92f9bde20f1',1,'rtabmap::Parameters']]], + ['defaultmemrehearsalidupdatedtonewone_205',['defaultMemRehearsalIdUpdatedToNewOne',['../classrtabmap_1_1Parameters.html#a3a7129fc995fbdcdb40aba94242e73a8',1,'rtabmap::Parameters']]], + ['defaultmemrehearsalsimilarity_206',['defaultMemRehearsalSimilarity',['../classrtabmap_1_1Parameters.html#a24fc112f4a843966f15b7547ed7774fc',1,'rtabmap::Parameters']]], + ['defaultmemrehearsalweightignoredwhilemoving_207',['defaultMemRehearsalWeightIgnoredWhileMoving',['../classrtabmap_1_1Parameters.html#a4a2f8b6aed34584b1b68e88b95bbf3c0',1,'rtabmap::Parameters']]], + ['defaultmemrotateimagesupsideup_208',['defaultMemRotateImagesUpsideUp',['../classrtabmap_1_1Parameters.html#a14b56aaa304f0a16640ab233cdf51699',1,'rtabmap::Parameters']]], + ['defaultmemsavedepth16format_209',['defaultMemSaveDepth16Format',['../classrtabmap_1_1Parameters.html#ae23d9e42dbfbf5221f40828212b95dbc',1,'rtabmap::Parameters']]], + ['defaultmemstereofrommotion_210',['defaultMemStereoFromMotion',['../classrtabmap_1_1Parameters.html#ab9c856a18e3b60843eef5d263095354f',1,'rtabmap::Parameters']]], + ['defaultmemstmsize_211',['defaultMemSTMSize',['../classrtabmap_1_1Parameters.html#ab5a017cb8ba362dcc65ef27af01ee68e',1,'rtabmap::Parameters']]], + ['defaultmemtransfersortingbyweightid_212',['defaultMemTransferSortingByWeightId',['../classrtabmap_1_1Parameters.html#a3872c9c529790aa5ec13b3db08889936',1,'rtabmap::Parameters']]], + ['defaultmemuseodomfeatures_213',['defaultMemUseOdomFeatures',['../classrtabmap_1_1Parameters.html#aea6bd00c7845c08d64ed8ce0942c6b5d',1,'rtabmap::Parameters']]], + ['defaultmemuseodomgravity_214',['defaultMemUseOdomGravity',['../classrtabmap_1_1Parameters.html#aaf12cf04eca49960b331182d933b3525',1,'rtabmap::Parameters']]], + ['defaultodomalignwithground_215',['defaultOdomAlignWithGround',['../classrtabmap_1_1Parameters.html#adf61806ebca30c99cc61708a03487069',1,'rtabmap::Parameters']]], + ['defaultodomcuvslammulticammode_216',['defaultOdomCuVSLAMMulticamMode',['../classrtabmap_1_1Parameters.html#a6321edd033cc8dda8df213b2a3b27bbb',1,'rtabmap::Parameters']]], + ['defaultodomdeskewing_217',['defaultOdomDeskewing',['../classrtabmap_1_1Parameters.html#a3a8263972a698faa1da37e4f2007a8d3',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustment_218',['defaultOdomF2MBundleAdjustment',['../classrtabmap_1_1Parameters.html#a3e1eb21d9993f959bd5092006d76abf4',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustmentmaxframes_219',['defaultOdomF2MBundleAdjustmentMaxFrames',['../classrtabmap_1_1Parameters.html#a45e8427292d5400170b1212abcec6521',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustmentmaxkeyframesperfeature_220',['defaultOdomF2MBundleAdjustmentMaxKeyFramesPerFeature',['../classrtabmap_1_1Parameters.html#a5a9009e5400a8c41f0e8685ac5cdeb27',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleadjustmentminmotion_221',['defaultOdomF2MBundleAdjustmentMinMotion',['../classrtabmap_1_1Parameters.html#a9fa254f3db2fa2571e0cdc235836d4d8',1,'rtabmap::Parameters']]], + ['defaultodomf2mbundleupdatefeaturemaponallframes_222',['defaultOdomF2MBundleUpdateFeatureMapOnAllFrames',['../classrtabmap_1_1Parameters.html#a90664ff4e25f23f644e4acaaa7457e70',1,'rtabmap::Parameters']]], + ['defaultodomf2mfloorthreshold_223',['defaultOdomF2MFloorThreshold',['../classrtabmap_1_1Parameters.html#afb4da34908495ef75b835dc29db5433a',1,'rtabmap::Parameters']]], + ['defaultodomf2minitdepthfactor_224',['defaultOdomF2MInitDepthFactor',['../classrtabmap_1_1Parameters.html#a29e7c5e7d4c6f267fe1ae81612bbc405',1,'rtabmap::Parameters']]], + ['defaultodomf2mmaxnewfeatures_225',['defaultOdomF2MMaxNewFeatures',['../classrtabmap_1_1Parameters.html#a38b8eb922697a26d2ac49b66d3820d4d',1,'rtabmap::Parameters']]], + ['defaultodomf2mmaxsize_226',['defaultOdomF2MMaxSize',['../classrtabmap_1_1Parameters.html#a497cfa082354a36a2904b4e599ea4037',1,'rtabmap::Parameters']]], + ['defaultodomf2mscanmaxsize_227',['defaultOdomF2MScanMaxSize',['../classrtabmap_1_1Parameters.html#ae114fc8566cbe5a8eb542a9ececb5edf',1,'rtabmap::Parameters']]], + ['defaultodomf2mscanrange_228',['defaultOdomF2MScanRange',['../classrtabmap_1_1Parameters.html#afb0502573b7b34b6a4d2f8528724a9ff',1,'rtabmap::Parameters']]], + ['defaultodomf2mscansubtractangle_229',['defaultOdomF2MScanSubtractAngle',['../classrtabmap_1_1Parameters.html#a6fd50e45fa9efdbacb4747378959884c',1,'rtabmap::Parameters']]], + ['defaultodomf2mscansubtractradius_230',['defaultOdomF2MScanSubtractRadius',['../classrtabmap_1_1Parameters.html#a3cf5aa47d0837e8ec65d714e1c112b81',1,'rtabmap::Parameters']]], + ['defaultodomf2mvaliddepthratio_231',['defaultOdomF2MValidDepthRatio',['../classrtabmap_1_1Parameters.html#abfb4c6fd15bcfa071bed540c0f7e96d8',1,'rtabmap::Parameters']]], + ['defaultodomfillinfodata_232',['defaultOdomFillInfoData',['../classrtabmap_1_1Parameters.html#aec72ae27f91cc9e12b3353396993b478',1,'rtabmap::Parameters']]], + ['defaultodomfilteringstrategy_233',['defaultOdomFilteringStrategy',['../classrtabmap_1_1Parameters.html#a8b370a112ae85e9825286591d27bcdaa',1,'rtabmap::Parameters']]], + ['defaultodomfovisbucketheight_234',['defaultOdomFovisBucketHeight',['../classrtabmap_1_1Parameters.html#a7f22415d7908d094c5aa015b440420b7',1,'rtabmap::Parameters']]], + ['defaultodomfovisbucketwidth_235',['defaultOdomFovisBucketWidth',['../classrtabmap_1_1Parameters.html#adf69c49e64a7385b9325dd8e423e69bf',1,'rtabmap::Parameters']]], + ['defaultodomfoviscliqueinlierthreshold_236',['defaultOdomFovisCliqueInlierThreshold',['../classrtabmap_1_1Parameters.html#ad5f6221218799efca22c96585cd24545',1,'rtabmap::Parameters']]], + ['defaultodomfovisfastthreshold_237',['defaultOdomFovisFastThreshold',['../classrtabmap_1_1Parameters.html#a700a47acc644e78198e9badaa6cde066',1,'rtabmap::Parameters']]], + ['defaultodomfovisfastthresholdadaptivegain_238',['defaultOdomFovisFastThresholdAdaptiveGain',['../classrtabmap_1_1Parameters.html#ac3a040582a539045a65f8fc0b6d74a8d',1,'rtabmap::Parameters']]], + ['defaultodomfovisfeaturesearchwindow_239',['defaultOdomFovisFeatureSearchWindow',['../classrtabmap_1_1Parameters.html#af9404a130353bb7b64882e6e50ccb006',1,'rtabmap::Parameters']]], + ['defaultodomfovisfeaturewindowsize_240',['defaultOdomFovisFeatureWindowSize',['../classrtabmap_1_1Parameters.html#ade2e444ac97aad41fe71fea20af57d3a',1,'rtabmap::Parameters']]], + ['defaultodomfovisinliermaxreprojectionerror_241',['defaultOdomFovisInlierMaxReprojectionError',['../classrtabmap_1_1Parameters.html#a07aba043390fbb0ea5b544e451586cf6',1,'rtabmap::Parameters']]], + ['defaultodomfovismaxkeypointsperbucket_242',['defaultOdomFovisMaxKeypointsPerBucket',['../classrtabmap_1_1Parameters.html#aa0baa7c864efff0adeed5bf108eac6df',1,'rtabmap::Parameters']]], + ['defaultodomfovismaxmeanreprojectionerror_243',['defaultOdomFovisMaxMeanReprojectionError',['../classrtabmap_1_1Parameters.html#aba0b8f4e74cebe20ecc10f8f76323d24',1,'rtabmap::Parameters']]], + ['defaultodomfovismaxpyramidlevel_244',['defaultOdomFovisMaxPyramidLevel',['../classrtabmap_1_1Parameters.html#acd133e19a601529b581c0d80bcd5eb37',1,'rtabmap::Parameters']]], + ['defaultodomfovisminfeaturesforestimate_245',['defaultOdomFovisMinFeaturesForEstimate',['../classrtabmap_1_1Parameters.html#a414caf76d6a6517bdb3d2ec0900771e4',1,'rtabmap::Parameters']]], + ['defaultodomfovisminpyramidlevel_246',['defaultOdomFovisMinPyramidLevel',['../classrtabmap_1_1Parameters.html#ad14afed75e7df64906231c198ead9806',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereomaxdisparity_247',['defaultOdomFovisStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a3751cc3828e192dce707f57f74f34593',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereomaxdistepipolarline_248',['defaultOdomFovisStereoMaxDistEpipolarLine',['../classrtabmap_1_1Parameters.html#a498b781dbbcafed78d27643512b36f3c',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereomaxrefinementdisplacement_249',['defaultOdomFovisStereoMaxRefinementDisplacement',['../classrtabmap_1_1Parameters.html#a5799a6d9934061ad97c29a106f07c86e',1,'rtabmap::Parameters']]], + ['defaultodomfovisstereorequiremutualmatch_250',['defaultOdomFovisStereoRequireMutualMatch',['../classrtabmap_1_1Parameters.html#a8b59dc119f3c1dabddf99239a32cc44f',1,'rtabmap::Parameters']]], + ['defaultodomfovistargetpixelsperfeature_251',['defaultOdomFovisTargetPixelsPerFeature',['../classrtabmap_1_1Parameters.html#ad75316aad624c6d6b899eb4dc7953434',1,'rtabmap::Parameters']]], + ['defaultodomfovisupdatetargetfeatureswithrefined_252',['defaultOdomFovisUpdateTargetFeaturesWithRefined',['../classrtabmap_1_1Parameters.html#ad58b3bace690a5ac77d67961f2b613f0',1,'rtabmap::Parameters']]], + ['defaultodomfovisuseadaptivethreshold_253',['defaultOdomFovisUseAdaptiveThreshold',['../classrtabmap_1_1Parameters.html#a2575d8ba3b70f26f0f9bc3bc9d885c49',1,'rtabmap::Parameters']]], + ['defaultodomfovisusebucketing_254',['defaultOdomFovisUseBucketing',['../classrtabmap_1_1Parameters.html#a0ff03d3e381396c8d29cfe7bb2634a61',1,'rtabmap::Parameters']]], + ['defaultodomfovisusehomographyinitialization_255',['defaultOdomFovisUseHomographyInitialization',['../classrtabmap_1_1Parameters.html#a316f11d7c192cb395ff72a15e708aea0',1,'rtabmap::Parameters']]], + ['defaultodomfovisuseimagenormalization_256',['defaultOdomFovisUseImageNormalization',['../classrtabmap_1_1Parameters.html#a5fa1e186fb28299644211763eeda696b',1,'rtabmap::Parameters']]], + ['defaultodomfovisusesubpixelrefinement_257',['defaultOdomFovisUseSubpixelRefinement',['../classrtabmap_1_1Parameters.html#a07297e9e7f311987fbd154b6348145e3',1,'rtabmap::Parameters']]], + ['defaultodomguessmotion_258',['defaultOdomGuessMotion',['../classrtabmap_1_1Parameters.html#aed75497245cb08a0d126dc4e5abc2c19',1,'rtabmap::Parameters']]], + ['defaultodomguesssmoothingdelay_259',['defaultOdomGuessSmoothingDelay',['../classrtabmap_1_1Parameters.html#ab92e1ac2b4bcdcc6551533aaf19aa4e2',1,'rtabmap::Parameters']]], + ['defaultodomholonomic_260',['defaultOdomHolonomic',['../classrtabmap_1_1Parameters.html#aa016823429e4d0f9253f8815583cf890',1,'rtabmap::Parameters']]], + ['defaultodomimagebuffersize_261',['defaultOdomImageBufferSize',['../classrtabmap_1_1Parameters.html#a7007e291b876f4c3c78b17639e547aae',1,'rtabmap::Parameters']]], + ['defaultodomimagedecimation_262',['defaultOdomImageDecimation',['../classrtabmap_1_1Parameters.html#a29925c5f81033bf7841a302e30b336ce',1,'rtabmap::Parameters']]], + ['defaultodomkalmanmeasurementnoise_263',['defaultOdomKalmanMeasurementNoise',['../classrtabmap_1_1Parameters.html#a1b74baad5e6ec5c35f35522c8941dc18',1,'rtabmap::Parameters']]], + ['defaultodomkalmanprocessnoise_264',['defaultOdomKalmanProcessNoise',['../classrtabmap_1_1Parameters.html#a1c5361e55edddc9fcf941a0e79ca6622',1,'rtabmap::Parameters']]], + ['defaultodomkeyframethr_265',['defaultOdomKeyFrameThr',['../classrtabmap_1_1Parameters.html#aebbba0733b605dffc9d3e09cc6c5f4c8',1,'rtabmap::Parameters']]], + ['defaultodomliosamangvar_266',['defaultOdomLIOSAMAngVar',['../classrtabmap_1_1Parameters.html#a575f1579dff09f3e994a1c240806df02',1,'rtabmap::Parameters']]], + ['defaultodomliosamconfigpath_267',['defaultOdomLIOSAMConfigPath',['../classrtabmap_1_1Parameters.html#ae647bfc8e912c2a3a12ba0b1a9073c3a',1,'rtabmap::Parameters']]], + ['defaultodomliosamedgethreshold_268',['defaultOdomLIOSAMEdgeThreshold',['../classrtabmap_1_1Parameters.html#aea09c42680d231381944fd0791fdd09a',1,'rtabmap::Parameters']]], + ['defaultodomliosamhorizonscan_269',['defaultOdomLIOSAMHorizonScan',['../classrtabmap_1_1Parameters.html#ae313ad29097b20594b73820d00dcdfeb',1,'rtabmap::Parameters']]], + ['defaultodomliosamimuaccbiasn_270',['defaultOdomLIOSAMImuAccBiasN',['../classrtabmap_1_1Parameters.html#a847625d6ff1cc59c2c3de02fd3c2e36b',1,'rtabmap::Parameters']]], + ['defaultodomliosamimuaccnoise_271',['defaultOdomLIOSAMImuAccNoise',['../classrtabmap_1_1Parameters.html#a099f2325458ade22804d20d84dfeee3e',1,'rtabmap::Parameters']]], + ['defaultodomliosamimugravity_272',['defaultOdomLIOSAMImuGravity',['../classrtabmap_1_1Parameters.html#ab07bee4cad6abb0d74b2b229340a0923',1,'rtabmap::Parameters']]], + ['defaultodomliosamimugyrbiasn_273',['defaultOdomLIOSAMImuGyrBiasN',['../classrtabmap_1_1Parameters.html#a6ad4b345fb908c819f48b0da6c26391d',1,'rtabmap::Parameters']]], + ['defaultodomliosamimugyrnoise_274',['defaultOdomLIOSAMImuGyrNoise',['../classrtabmap_1_1Parameters.html#a6ccf979b8a2b786a4fa5310ecccd66cb',1,'rtabmap::Parameters']]], + ['defaultodomliosamlinvar_275',['defaultOdomLIOSAMLinVar',['../classrtabmap_1_1Parameters.html#a4ae6a37370f77e3576cbbf7aba5c5197',1,'rtabmap::Parameters']]], + ['defaultodomliosamnscan_276',['defaultOdomLIOSAMNScan',['../classrtabmap_1_1Parameters.html#aaba2ce4d92d139f3b114c1ffce133091',1,'rtabmap::Parameters']]], + ['defaultodomliosamsensor_277',['defaultOdomLIOSAMSensor',['../classrtabmap_1_1Parameters.html#ad936440b9718d013ae4e0c229c6c3e04',1,'rtabmap::Parameters']]], + ['defaultodomliosamsurfthreshold_278',['defaultOdomLIOSAMSurfThreshold',['../classrtabmap_1_1Parameters.html#abcc86ef38c56a0a8cc7160aacbbc6d7d',1,'rtabmap::Parameters']]], + ['defaultodomloamangvar_279',['defaultOdomLOAMAngVar',['../classrtabmap_1_1Parameters.html#aef9c223d75c418dad360cc5d48c1c89f',1,'rtabmap::Parameters']]], + ['defaultodomloamlinvar_280',['defaultOdomLOAMLinVar',['../classrtabmap_1_1Parameters.html#af993c5440d36205803d38a777961da54',1,'rtabmap::Parameters']]], + ['defaultodomloamlocalmapping_281',['defaultOdomLOAMLocalMapping',['../classrtabmap_1_1Parameters.html#a8d70548d0c38720f159fe017bf56858d',1,'rtabmap::Parameters']]], + ['defaultodomloamresolution_282',['defaultOdomLOAMResolution',['../classrtabmap_1_1Parameters.html#a46bf5542610081e2ef578d11c2117313',1,'rtabmap::Parameters']]], + ['defaultodomloamscanperiod_283',['defaultOdomLOAMScanPeriod',['../classrtabmap_1_1Parameters.html#ab969f8e8af3d39234d8c56091750de5f',1,'rtabmap::Parameters']]], + ['defaultodomloamsensor_284',['defaultOdomLOAMSensor',['../classrtabmap_1_1Parameters.html#a08c6c9c804fb52cc3c982371603908bc',1,'rtabmap::Parameters']]], + ['defaultodommonoinitminflow_285',['defaultOdomMonoInitMinFlow',['../classrtabmap_1_1Parameters.html#a7f65ed004403fa9edbbff3e6405ca891',1,'rtabmap::Parameters']]], + ['defaultodommonoinitmintranslation_286',['defaultOdomMonoInitMinTranslation',['../classrtabmap_1_1Parameters.html#a1ac667c7a48be31fb51e082993277d5f',1,'rtabmap::Parameters']]], + ['defaultodommonomaxvariance_287',['defaultOdomMonoMaxVariance',['../classrtabmap_1_1Parameters.html#a6e45d5c403607f445dfcad384358ac74',1,'rtabmap::Parameters']]], + ['defaultodommonomintranslation_288',['defaultOdomMonoMinTranslation',['../classrtabmap_1_1Parameters.html#a16f3c3aa628f68e2606a94baa4b304ef',1,'rtabmap::Parameters']]], + ['defaultodommsckffastthreshold_289',['defaultOdomMSCKFFastThreshold',['../classrtabmap_1_1Parameters.html#a8f705436db08f88c518f74ac1acd9037',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridcol_290',['defaultOdomMSCKFGridCol',['../classrtabmap_1_1Parameters.html#a1e184b7a26a82b3d94a95353358d0349',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridmaxfeaturenum_291',['defaultOdomMSCKFGridMaxFeatureNum',['../classrtabmap_1_1Parameters.html#a774387049daba9119d2eb85f3e687fb4',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridminfeaturenum_292',['defaultOdomMSCKFGridMinFeatureNum',['../classrtabmap_1_1Parameters.html#ae0f2a06ff72491ddd8c4119d504accce',1,'rtabmap::Parameters']]], + ['defaultodommsckfgridrow_293',['defaultOdomMSCKFGridRow',['../classrtabmap_1_1Parameters.html#ae9d193a2dddd7cf9fc15d589f2c47411',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovaccbias_294',['defaultOdomMSCKFInitCovAccBias',['../classrtabmap_1_1Parameters.html#a445bd24bdd34a0aa27fcf5ff36a47364',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovexrot_295',['defaultOdomMSCKFInitCovExRot',['../classrtabmap_1_1Parameters.html#a67a5d1eb0f678ac399bb467e011ac403',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovextrans_296',['defaultOdomMSCKFInitCovExTrans',['../classrtabmap_1_1Parameters.html#a1a1228eec668c42f7358c69caec0ee70',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovgyrobias_297',['defaultOdomMSCKFInitCovGyroBias',['../classrtabmap_1_1Parameters.html#a1c218ac5a9a5e97a602829ca5c5c9cdf',1,'rtabmap::Parameters']]], + ['defaultodommsckfinitcovvel_298',['defaultOdomMSCKFInitCovVel',['../classrtabmap_1_1Parameters.html#a2419769d93949fc1f097d002c9c20c22',1,'rtabmap::Parameters']]], + ['defaultodommsckfmaxcamstatesize_299',['defaultOdomMSCKFMaxCamStateSize',['../classrtabmap_1_1Parameters.html#ad2a521ea5f3a2b1eb48cb0613542ddb2',1,'rtabmap::Parameters']]], + ['defaultodommsckfmaxiteration_300',['defaultOdomMSCKFMaxIteration',['../classrtabmap_1_1Parameters.html#a228a84611344d7db43d4d14eaffdf15e',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoiseacc_301',['defaultOdomMSCKFNoiseAcc',['../classrtabmap_1_1Parameters.html#ac3637861797af117354619b13a63e6de',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoiseaccbias_302',['defaultOdomMSCKFNoiseAccBias',['../classrtabmap_1_1Parameters.html#a0e7f583660061567e068fceecd672c22',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoisefeature_303',['defaultOdomMSCKFNoiseFeature',['../classrtabmap_1_1Parameters.html#a1cc429adff28df7e630c29bc67a54bf3',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoisegyro_304',['defaultOdomMSCKFNoiseGyro',['../classrtabmap_1_1Parameters.html#a827db4e8b440b924fc2f0ce6be9fb940',1,'rtabmap::Parameters']]], + ['defaultodommsckfnoisegyrobias_305',['defaultOdomMSCKFNoiseGyroBias',['../classrtabmap_1_1Parameters.html#a797cfbfab620a68648fb4d6f6729dad8',1,'rtabmap::Parameters']]], + ['defaultodommsckfopttranslationthreshold_306',['defaultOdomMSCKFOptTranslationThreshold',['../classrtabmap_1_1Parameters.html#af30192a47c66b1fc6c73fec78092f940',1,'rtabmap::Parameters']]], + ['defaultodommsckfpatchsize_307',['defaultOdomMSCKFPatchSize',['../classrtabmap_1_1Parameters.html#a6aceae41d0ddc22cee471661a8dc9430',1,'rtabmap::Parameters']]], + ['defaultodommsckfpositionstdthreshold_308',['defaultOdomMSCKFPositionStdThreshold',['../classrtabmap_1_1Parameters.html#a1a6adbc06f4f19059b17f77ed6c744a0',1,'rtabmap::Parameters']]], + ['defaultodommsckfpyramidlevels_309',['defaultOdomMSCKFPyramidLevels',['../classrtabmap_1_1Parameters.html#aa4b73d6831d8daaa9db3981e30b49818',1,'rtabmap::Parameters']]], + ['defaultodommsckfransacthreshold_310',['defaultOdomMSCKFRansacThreshold',['../classrtabmap_1_1Parameters.html#a092a2962faabb91bf8486e71d31f0a07',1,'rtabmap::Parameters']]], + ['defaultodommsckfrotationthreshold_311',['defaultOdomMSCKFRotationThreshold',['../classrtabmap_1_1Parameters.html#a1a4d1f9579e16ebf21a7ab4ba3436a60',1,'rtabmap::Parameters']]], + ['defaultodommsckfstereothreshold_312',['defaultOdomMSCKFStereoThreshold',['../classrtabmap_1_1Parameters.html#ab2f28e5a6de694c7a55519dec63c5a30',1,'rtabmap::Parameters']]], + ['defaultodommsckftrackingratethreshold_313',['defaultOdomMSCKFTrackingRateThreshold',['../classrtabmap_1_1Parameters.html#a4b15c6cece18b7fbfeab9c3012e8f975',1,'rtabmap::Parameters']]], + ['defaultodommsckftrackprecision_314',['defaultOdomMSCKFTrackPrecision',['../classrtabmap_1_1Parameters.html#a677ee5a5b6bae0b65b9c4735494fc823',1,'rtabmap::Parameters']]], + ['defaultodommsckftranslationthreshold_315',['defaultOdomMSCKFTranslationThreshold',['../classrtabmap_1_1Parameters.html#a80d7a199eca7bf5dbe11a89ae2505dc8',1,'rtabmap::Parameters']]], + ['defaultodomokvisconfigpath_316',['defaultOdomOKVISConfigPath',['../classrtabmap_1_1Parameters.html#a42709fed698a2b97684140ac9f5a7b32',1,'rtabmap::Parameters']]], + ['defaultodomopen3dmaxdepth_317',['defaultOdomOpen3DMaxDepth',['../classrtabmap_1_1Parameters.html#a3501ff6b79ecf1089480b180a24d375f',1,'rtabmap::Parameters']]], + ['defaultodomopen3dmethod_318',['defaultOdomOpen3DMethod',['../classrtabmap_1_1Parameters.html#a454aed6a09f909eb384aaf7f5b6a0995',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsaccelerometernoisedensity_319',['defaultOdomOpenVINSAccelerometerNoiseDensity',['../classrtabmap_1_1Parameters.html#ad3b48f09c6ae5b0749794c289763f6f3',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsaccelerometerrandomwalk_320',['defaultOdomOpenVINSAccelerometerRandomWalk',['../classrtabmap_1_1Parameters.html#ae244b49a31a04101cfcea4c5e5d6eff1',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibcamextrinsics_321',['defaultOdomOpenVINSCalibCamExtrinsics',['../classrtabmap_1_1Parameters.html#abad820880f66289a5bb3539b6cece37b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibcamintrinsics_322',['defaultOdomOpenVINSCalibCamIntrinsics',['../classrtabmap_1_1Parameters.html#a325720d717ef80d19b03a9f2d504ed28',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibcamtimeoffset_323',['defaultOdomOpenVINSCalibCamTimeoffset',['../classrtabmap_1_1Parameters.html#ab6dd58e8cc0f581bf02765ffbf8d6df7',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibimugsensitivity_324',['defaultOdomOpenVINSCalibIMUGSensitivity',['../classrtabmap_1_1Parameters.html#ab14ce144b0d11185b303a9f336590174',1,'rtabmap::Parameters']]], + ['defaultodomopenvinscalibimuintrinsics_325',['defaultOdomOpenVINSCalibIMUIntrinsics',['../classrtabmap_1_1Parameters.html#a43cf0249cd4accae00804d80d7ec74bd',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsconfigpath_326',['defaultOdomOpenVINSConfigPath',['../classrtabmap_1_1Parameters.html#a3d0f13ab949ed08f216ecf7dea6dc4aa',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsdtslamdelay_327',['defaultOdomOpenVINSDtSLAMDelay',['../classrtabmap_1_1Parameters.html#a62210249c6a36aa2d5c82e283b69a89f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfeatrepmsckf_328',['defaultOdomOpenVINSFeatRepMSCKF',['../classrtabmap_1_1Parameters.html#a53b0cbaf7b295195689bd52e44f67057',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfeatrepslam_329',['defaultOdomOpenVINSFeatRepSLAM',['../classrtabmap_1_1Parameters.html#a0e22a193990315a0c169c0f961addaac',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfimaxbaseline_330',['defaultOdomOpenVINSFiMaxBaseline',['../classrtabmap_1_1Parameters.html#a859b3bc69da9573d1592c76811698451',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfimaxcondnumber_331',['defaultOdomOpenVINSFiMaxCondNumber',['../classrtabmap_1_1Parameters.html#a0a197c6368939cbc8a365a92580f67c6',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfimaxruns_332',['defaultOdomOpenVINSFiMaxRuns',['../classrtabmap_1_1Parameters.html#a0ded3bb70718deb25b3c5fd9faba16b1',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfirefinefeatures_333',['defaultOdomOpenVINSFiRefineFeatures',['../classrtabmap_1_1Parameters.html#a6ffc20ed47a965ac527889e4946833d0',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsfitriangulate1d_334',['defaultOdomOpenVINSFiTriangulate1d',['../classrtabmap_1_1Parameters.html#a68fe1405aa148b207622af0951b3229c',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsgravitymag_335',['defaultOdomOpenVINSGravityMag',['../classrtabmap_1_1Parameters.html#a59525c19420757af33a0b081c717fd36',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsgyroscopenoisedensity_336',['defaultOdomOpenVINSGyroscopeNoiseDensity',['../classrtabmap_1_1Parameters.html#a878cf99f652db81cb416c2b359fe8438',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsgyroscoperandomwalk_337',['defaultOdomOpenVINSGyroscopeRandomWalk',['../classrtabmap_1_1Parameters.html#a6d7b2adb63801c77d39d5a72a09decad',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationba_338',['defaultOdomOpenVINSInitDynInflationBa',['../classrtabmap_1_1Parameters.html#afe5184aef893a0b985f979c2c1f78d59',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationbg_339',['defaultOdomOpenVINSInitDynInflationBg',['../classrtabmap_1_1Parameters.html#a1d021093c325316bb03a57b16308b6e5',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationori_340',['defaultOdomOpenVINSInitDynInflationOri',['../classrtabmap_1_1Parameters.html#ac7e1906e0f98e72750f419e72e821120',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdyninflationvel_341',['defaultOdomOpenVINSInitDynInflationVel',['../classrtabmap_1_1Parameters.html#ab5bfd3d2cf5d6dacebeb77f00c96003b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmindeg_342',['defaultOdomOpenVINSInitDynMinDeg',['../classrtabmap_1_1Parameters.html#a89160b019c1d237ad7f67720e741b790',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynminreccond_343',['defaultOdomOpenVINSInitDynMinRecCond',['../classrtabmap_1_1Parameters.html#a0a30a3740f3427803f325c2dff6ff88c',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmlemaxiter_344',['defaultOdomOpenVINSInitDynMLEMaxIter',['../classrtabmap_1_1Parameters.html#a016c6e6429a1972d19a2265285420cff',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmlemaxthreads_345',['defaultOdomOpenVINSInitDynMLEMaxThreads',['../classrtabmap_1_1Parameters.html#a9dfa2510f2abfc920345222b7bf3bb42',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmlemaxtime_346',['defaultOdomOpenVINSInitDynMLEMaxTime',['../classrtabmap_1_1Parameters.html#a6cb0a7432ebba00c7c6457253430eb9e',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynmleoptcalib_347',['defaultOdomOpenVINSInitDynMLEOptCalib',['../classrtabmap_1_1Parameters.html#a937e112aa605e4674401dc8e01631433',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynnumpose_348',['defaultOdomOpenVINSInitDynNumPose',['../classrtabmap_1_1Parameters.html#a3e612bb9c96142493df81d2f5ae82933',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitdynuse_349',['defaultOdomOpenVINSInitDynUse',['../classrtabmap_1_1Parameters.html#aed862b5334f34e11f0c1c1ae72eee7e0',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitimuthresh_350',['defaultOdomOpenVINSInitIMUThresh',['../classrtabmap_1_1Parameters.html#a0a444b5fd99ca929eafe9f369deb6275',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitmaxdisparity_351',['defaultOdomOpenVINSInitMaxDisparity',['../classrtabmap_1_1Parameters.html#a3cf405a2987bfc621c957b25f29cf9a4',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitmaxfeatures_352',['defaultOdomOpenVINSInitMaxFeatures',['../classrtabmap_1_1Parameters.html#a06e454a54226066c9fe555147e2a924f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsinitwindowtime_353',['defaultOdomOpenVINSInitWindowTime',['../classrtabmap_1_1Parameters.html#a497e3c6de5c331901a25f8f20dc22e33',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsintegration_354',['defaultOdomOpenVINSIntegration',['../classrtabmap_1_1Parameters.html#a07e666fe4774be272d92169d7e51d72e',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsleftmaskpath_355',['defaultOdomOpenVINSLeftMaskPath',['../classrtabmap_1_1Parameters.html#ae99dde6443571ac09d8db1bac3d5824e',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxclones_356',['defaultOdomOpenVINSMaxClones',['../classrtabmap_1_1Parameters.html#a53df19bf9e8b01c78258b17d784432ed',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxmsckfinupdate_357',['defaultOdomOpenVINSMaxMSCKFInUpdate',['../classrtabmap_1_1Parameters.html#a94acdf45e1bf8ce5b1d547f37e04b9b2',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxslam_358',['defaultOdomOpenVINSMaxSLAM',['../classrtabmap_1_1Parameters.html#a1e1aa930222b5df89e4059640c01f77f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsmaxslaminupdate_359',['defaultOdomOpenVINSMaxSLAMInUpdate',['../classrtabmap_1_1Parameters.html#a953fca633fc1700453fad55faa5efd9f',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsminpxdist_360',['defaultOdomOpenVINSMinPxDist',['../classrtabmap_1_1Parameters.html#a3379fb4026b4f2b87b4d9ac962b02884',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsnumpts_361',['defaultOdomOpenVINSNumPts',['../classrtabmap_1_1Parameters.html#acc3507fadec6548443ee3ca6d51ed74b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsrightmaskpath_362',['defaultOdomOpenVINSRightMaskPath',['../classrtabmap_1_1Parameters.html#a2e179e0624073ebc5d2934cd836b343d',1,'rtabmap::Parameters']]], + ['defaultodomopenvinstryzupt_363',['defaultOdomOpenVINSTryZUPT',['../classrtabmap_1_1Parameters.html#af4eebbcf12dd4e9cfcee87552c8086df',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupmsckfchi2multiplier_364',['defaultOdomOpenVINSUpMSCKFChi2Multiplier',['../classrtabmap_1_1Parameters.html#ad3a86a56e223816258cad17c2a0c0910',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupmsckfsigmapx_365',['defaultOdomOpenVINSUpMSCKFSigmaPx',['../classrtabmap_1_1Parameters.html#affdeec9133e7f06af421cccf87bcb981',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupslamchi2multiplier_366',['defaultOdomOpenVINSUpSLAMChi2Multiplier',['../classrtabmap_1_1Parameters.html#ab835ef788b3b42b8c85e11f89cadcd5b',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsupslamsigmapx_367',['defaultOdomOpenVINSUpSLAMSigmaPx',['../classrtabmap_1_1Parameters.html#a9de79f11f8e9f5d61d18d2821b095070',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsusefej_368',['defaultOdomOpenVINSUseFEJ',['../classrtabmap_1_1Parameters.html#a864a71e62e61b03d2c23afa2abf2c7db',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsuseklt_369',['defaultOdomOpenVINSUseKLT',['../classrtabmap_1_1Parameters.html#abf2880c3c5dbb224274237d99b0185cc',1,'rtabmap::Parameters']]], + ['defaultodomopenvinsusestereo_370',['defaultOdomOpenVINSUseStereo',['../classrtabmap_1_1Parameters.html#abc1565f7225cd5be7f09e82d6b52c4f1',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptchi2multiplier_371',['defaultOdomOpenVINSZUPTChi2Multiplier',['../classrtabmap_1_1Parameters.html#aa67576cd497ae3c827fc00cdd383d7a6',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptmaxdisparity_372',['defaultOdomOpenVINSZUPTMaxDisparity',['../classrtabmap_1_1Parameters.html#a2f847a941866b28e6aa401babfe459c6',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptmaxvelodicy_373',['defaultOdomOpenVINSZUPTMaxVelodicy',['../classrtabmap_1_1Parameters.html#a4bdf4f5c9e84c943a7414576b9192b26',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptnoisemultiplier_374',['defaultOdomOpenVINSZUPTNoiseMultiplier',['../classrtabmap_1_1Parameters.html#ac38e66485ad24d894911d9ce03986689',1,'rtabmap::Parameters']]], + ['defaultodomopenvinszuptonlyatbeginning_375',['defaultOdomOpenVINSZUPTOnlyAtBeginning',['../classrtabmap_1_1Parameters.html#a91b98b9532960850486e6eb55a12e06d',1,'rtabmap::Parameters']]], + ['defaultodomorbslamaccnoise_376',['defaultOdomORBSLAMAccNoise',['../classrtabmap_1_1Parameters.html#a0fceb51732eea1d2c2f5cfcfc9f6c908',1,'rtabmap::Parameters']]], + ['defaultodomorbslamaccwalk_377',['defaultOdomORBSLAMAccWalk',['../classrtabmap_1_1Parameters.html#a5e01b168e4a31aec792366e0139cc959',1,'rtabmap::Parameters']]], + ['defaultodomorbslambf_378',['defaultOdomORBSLAMBf',['../classrtabmap_1_1Parameters.html#a69c4cb422de40aa1346158375147a333',1,'rtabmap::Parameters']]], + ['defaultodomorbslamfps_379',['defaultOdomORBSLAMFps',['../classrtabmap_1_1Parameters.html#ae927ca70227e512394ca9b7b91a1251b',1,'rtabmap::Parameters']]], + ['defaultodomorbslamgyronoise_380',['defaultOdomORBSLAMGyroNoise',['../classrtabmap_1_1Parameters.html#a92c076aa98e5f4d3996ab370305fb128',1,'rtabmap::Parameters']]], + ['defaultodomorbslamgyrowalk_381',['defaultOdomORBSLAMGyroWalk',['../classrtabmap_1_1Parameters.html#a34cae713888a601086153ac0fb5236df',1,'rtabmap::Parameters']]], + ['defaultodomorbslaminertial_382',['defaultOdomORBSLAMInertial',['../classrtabmap_1_1Parameters.html#aac902f6d6374c112c3a60b6ae7c305df',1,'rtabmap::Parameters']]], + ['defaultodomorbslammapsize_383',['defaultOdomORBSLAMMapSize',['../classrtabmap_1_1Parameters.html#a3c339175a63d8b6ff3111baf64862bba',1,'rtabmap::Parameters']]], + ['defaultodomorbslammaxfeatures_384',['defaultOdomORBSLAMMaxFeatures',['../classrtabmap_1_1Parameters.html#ad41dc0470b91a895e53a5d1319701096',1,'rtabmap::Parameters']]], + ['defaultodomorbslamsamplingrate_385',['defaultOdomORBSLAMSamplingRate',['../classrtabmap_1_1Parameters.html#a98f800e901efb131cc4399a811462f83',1,'rtabmap::Parameters']]], + ['defaultodomorbslamthdepth_386',['defaultOdomORBSLAMThDepth',['../classrtabmap_1_1Parameters.html#affa55160db0408d1d22ae7935649b4ec',1,'rtabmap::Parameters']]], + ['defaultodomorbslamvocpath_387',['defaultOdomORBSLAMVocPath',['../classrtabmap_1_1Parameters.html#a9191f537b0cbd35fa3865b584168b1a3',1,'rtabmap::Parameters']]], + ['defaultodomparticlelambdar_388',['defaultOdomParticleLambdaR',['../classrtabmap_1_1Parameters.html#a999356e45e0d04c0e23b8a658bdce1ad',1,'rtabmap::Parameters']]], + ['defaultodomparticlelambdat_389',['defaultOdomParticleLambdaT',['../classrtabmap_1_1Parameters.html#a5b779a5e544c6fcdc714683edba8b3d3',1,'rtabmap::Parameters']]], + ['defaultodomparticlenoiser_390',['defaultOdomParticleNoiseR',['../classrtabmap_1_1Parameters.html#a8e6f5c04ac08cc14e6a8d7163a6df977',1,'rtabmap::Parameters']]], + ['defaultodomparticlenoiset_391',['defaultOdomParticleNoiseT',['../classrtabmap_1_1Parameters.html#a36a060c171c3804e1e208f879c93e7e6',1,'rtabmap::Parameters']]], + ['defaultodomparticlesize_392',['defaultOdomParticleSize',['../classrtabmap_1_1Parameters.html#a080173bc5ca04f3b41c0e397339647ab',1,'rtabmap::Parameters']]], + ['defaultodomresetcountdown_393',['defaultOdomResetCountdown',['../classrtabmap_1_1Parameters.html#af755f7fbaed913e4718ab7d6f6531db6',1,'rtabmap::Parameters']]], + ['defaultodomscankeyframethr_394',['defaultOdomScanKeyFrameThr',['../classrtabmap_1_1Parameters.html#ad6174a0ecd9ac76d8242540c30df4ad5',1,'rtabmap::Parameters']]], + ['defaultodomstrategy_395',['defaultOdomStrategy',['../classrtabmap_1_1Parameters.html#a1e9109160a37784a68c945acebd38525',1,'rtabmap::Parameters']]], + ['defaultodomvinsfusionconfigpath_396',['defaultOdomVINSFusionConfigPath',['../classrtabmap_1_1Parameters.html#a383c3a45b5aa61295e33a6e9da4542c5',1,'rtabmap::Parameters']]], + ['defaultodomviskeyframethr_397',['defaultOdomVisKeyFrameThr',['../classrtabmap_1_1Parameters.html#ae37f0155b9c8b516cda895f08b1344ba',1,'rtabmap::Parameters']]], + ['defaultodomviso2bucketheight_398',['defaultOdomViso2BucketHeight',['../classrtabmap_1_1Parameters.html#aa0f7d154eb3e914488380c80252b0541',1,'rtabmap::Parameters']]], + ['defaultodomviso2bucketmaxfeatures_399',['defaultOdomViso2BucketMaxFeatures',['../classrtabmap_1_1Parameters.html#a4cbb446867b50e3187af090146c578f0',1,'rtabmap::Parameters']]], + ['defaultodomviso2bucketwidth_400',['defaultOdomViso2BucketWidth',['../classrtabmap_1_1Parameters.html#ad46d465287b4b685122eec82f8765da6',1,'rtabmap::Parameters']]], + ['defaultodomviso2inlierthreshold_401',['defaultOdomViso2InlierThreshold',['../classrtabmap_1_1Parameters.html#a429bac1484f93fa8a011f72c98e763ea',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchbinsize_402',['defaultOdomViso2MatchBinsize',['../classrtabmap_1_1Parameters.html#aff4139b8a4b5be3bb32f9d7f7a56786a',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchdisptolerance_403',['defaultOdomViso2MatchDispTolerance',['../classrtabmap_1_1Parameters.html#aeef943b33c89637852d411a2e43a5d7a',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchhalfresolution_404',['defaultOdomViso2MatchHalfResolution',['../classrtabmap_1_1Parameters.html#ab25dec8a4a1ba5ef0bc3ef14d455ffd4',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchmultistage_405',['defaultOdomViso2MatchMultiStage',['../classrtabmap_1_1Parameters.html#a38c5e12cb00d850e9741248fb564be0f',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchnmsn_406',['defaultOdomViso2MatchNmsN',['../classrtabmap_1_1Parameters.html#a6dc343145cffd796512b4b0733057642',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchnmstau_407',['defaultOdomViso2MatchNmsTau',['../classrtabmap_1_1Parameters.html#a2e80812231c26ef3d3a2e06ce3a5d79e',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchoutlierdisptolerance_408',['defaultOdomViso2MatchOutlierDispTolerance',['../classrtabmap_1_1Parameters.html#af9a738592540bc96e5f9b054fdd34f96',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchoutlierflowtolerance_409',['defaultOdomViso2MatchOutlierFlowTolerance',['../classrtabmap_1_1Parameters.html#a4c488a981cf4228a1ae147505695b7ea',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchradius_410',['defaultOdomViso2MatchRadius',['../classrtabmap_1_1Parameters.html#a2cb8a4380b2ac7513acfe4c227b0f512',1,'rtabmap::Parameters']]], + ['defaultodomviso2matchrefinement_411',['defaultOdomViso2MatchRefinement',['../classrtabmap_1_1Parameters.html#ad0ee385292880d42488589f00f820335',1,'rtabmap::Parameters']]], + ['defaultodomviso2ransaciters_412',['defaultOdomViso2RansacIters',['../classrtabmap_1_1Parameters.html#a0dfa5c17449e9e07f21ec6cdbb637e71',1,'rtabmap::Parameters']]], + ['defaultodomviso2reweighting_413',['defaultOdomViso2Reweighting',['../classrtabmap_1_1Parameters.html#acca03777ae8d44bbb151efe95d866370',1,'rtabmap::Parameters']]], + ['defaultoptimizerbaseline_414',['defaultOptimizerBaseline',['../classrtabmap_1_1Parameters.html#a62219439aa503751ef54d6476e0ef5c2',1,'rtabmap::Parameters']]], + ['defaultoptimizerdisparityvariance_415',['defaultOptimizerDisparityVariance',['../classrtabmap_1_1Parameters.html#a9b2bf1254c87e79d358dd45a27d92254',1,'rtabmap::Parameters']]], + ['defaultoptimizerepsilon_416',['defaultOptimizerEpsilon',['../classrtabmap_1_1Parameters.html#a8fb0df24ed2d24a013abc03828f43acc',1,'rtabmap::Parameters']]], + ['defaultoptimizergravitysigma_417',['defaultOptimizerGravitySigma',['../classrtabmap_1_1Parameters.html#a88fab03b485f103123fad036a536c71a',1,'rtabmap::Parameters']]], + ['defaultoptimizeriterations_418',['defaultOptimizerIterations',['../classrtabmap_1_1Parameters.html#a88a7018a56b4e6c7c0ceb8e11286f319',1,'rtabmap::Parameters']]], + ['defaultoptimizerlandmarksignored_419',['defaultOptimizerLandmarksIgnored',['../classrtabmap_1_1Parameters.html#a45cdc34f61574e7de40f2d4a822b1ca6',1,'rtabmap::Parameters']]], + ['defaultoptimizerpixelvariance_420',['defaultOptimizerPixelVariance',['../classrtabmap_1_1Parameters.html#aac621d5d3acba7b0d9a9b5dcd52f7d4f',1,'rtabmap::Parameters']]], + ['defaultoptimizerpriorsignored_421',['defaultOptimizerPriorsIgnored',['../classrtabmap_1_1Parameters.html#a6394c7cc99dca72faf68799adc89ffd7',1,'rtabmap::Parameters']]], + ['defaultoptimizerrobust_422',['defaultOptimizerRobust',['../classrtabmap_1_1Parameters.html#a2a83a1c7b7cc3dfe1b03bd9c10a437fd',1,'rtabmap::Parameters']]], + ['defaultoptimizerrobustkerneldelta_423',['defaultOptimizerRobustKernelDelta',['../classrtabmap_1_1Parameters.html#a29ca5e5f03feb515f565edb0caae230b',1,'rtabmap::Parameters']]], + ['defaultoptimizerstrategy_424',['defaultOptimizerStrategy',['../classrtabmap_1_1Parameters.html#a09eb562dd5700d848c1e8ccfa161e94e',1,'rtabmap::Parameters']]], + ['defaultoptimizervarianceignored_425',['defaultOptimizerVarianceIgnored',['../classrtabmap_1_1Parameters.html#ad329ace1333ac8c94cd4043b58173f1b',1,'rtabmap::Parameters']]], + ['defaultorbedgethreshold_426',['defaultORBEdgeThreshold',['../classrtabmap_1_1Parameters.html#a0f10206dac5e7ecfef51feb8c533f996',1,'rtabmap::Parameters']]], + ['defaultorbfirstlevel_427',['defaultORBFirstLevel',['../classrtabmap_1_1Parameters.html#a1d9630d2b1c11e310279388894b4ac7f',1,'rtabmap::Parameters']]], + ['defaultorbgpu_428',['defaultORBGpu',['../classrtabmap_1_1Parameters.html#ae59341ab604bc7a29bd2e6417b63e90e',1,'rtabmap::Parameters']]], + ['defaultorbnlevels_429',['defaultORBNLevels',['../classrtabmap_1_1Parameters.html#abc8351dab8ba91e67ab33fd39240728c',1,'rtabmap::Parameters']]], + ['defaultorbpatchsize_430',['defaultORBPatchSize',['../classrtabmap_1_1Parameters.html#abeca7515070ae40463c94ec043d8a96c',1,'rtabmap::Parameters']]], + ['defaultorbscalefactor_431',['defaultORBScaleFactor',['../classrtabmap_1_1Parameters.html#a2a0b519bfda2c164ac9765e5cafa298e',1,'rtabmap::Parameters']]], + ['defaultorbscoretype_432',['defaultORBScoreType',['../classrtabmap_1_1Parameters.html#ae23c8c0a797337aff68aea63ab366045',1,'rtabmap::Parameters']]], + ['defaultorbwta_5fk_433',['defaultORBWTA_K',['../classrtabmap_1_1Parameters.html#a03b2170e4675ea9a566b9b2e8474d04b',1,'rtabmap::Parameters']]], + ['defaultpydescriptordim_434',['defaultPyDescriptorDim',['../classrtabmap_1_1Parameters.html#acd3f288c78d60132fe3103cc3baa56b6',1,'rtabmap::Parameters']]], + ['defaultpydescriptorpath_435',['defaultPyDescriptorPath',['../classrtabmap_1_1Parameters.html#a679be234a8731a22b2533291030920d9',1,'rtabmap::Parameters']]], + ['defaultpydetectorcuda_436',['defaultPyDetectorCuda',['../classrtabmap_1_1Parameters.html#a67de62af4a854432733f5cd4121532fa',1,'rtabmap::Parameters']]], + ['defaultpydetectorpath_437',['defaultPyDetectorPath',['../classrtabmap_1_1Parameters.html#a12dd2fc3f9ffd3c563d577c64fa890c0',1,'rtabmap::Parameters']]], + ['defaultpymatchercuda_438',['defaultPyMatcherCuda',['../classrtabmap_1_1Parameters.html#ae8b2abba1413851a1ef9d71c24691df9',1,'rtabmap::Parameters']]], + ['defaultpymatcheriterations_439',['defaultPyMatcherIterations',['../classrtabmap_1_1Parameters.html#a21c62122654773faec6dad9e861e6bfa',1,'rtabmap::Parameters']]], + ['defaultpymatchermodel_440',['defaultPyMatcherModel',['../classrtabmap_1_1Parameters.html#a9c56180fc02716fcb268ab139f211e3f',1,'rtabmap::Parameters']]], + ['defaultpymatcherpath_441',['defaultPyMatcherPath',['../classrtabmap_1_1Parameters.html#a978797b8ec7933292493fff90251fa5b',1,'rtabmap::Parameters']]], + ['defaultpymatcherthreshold_442',['defaultPyMatcherThreshold',['../classrtabmap_1_1Parameters.html#a3e826c170c563783be3b31c129db5ecb',1,'rtabmap::Parameters']]], + ['defaultregforce3dof_443',['defaultRegForce3DoF',['../classrtabmap_1_1Parameters.html#aee1046f9615d2ed988c952cc47c9331e',1,'rtabmap::Parameters']]], + ['defaultregrepeatonce_444',['defaultRegRepeatOnce',['../classrtabmap_1_1Parameters.html#a389ef8590b17e0c8e1cca6e01ed82ef0',1,'rtabmap::Parameters']]], + ['defaultregstrategy_445',['defaultRegStrategy',['../classrtabmap_1_1Parameters.html#a2bf8075d9a8e7f47cb99b5ebafaaad34',1,'rtabmap::Parameters']]], + ['defaultrgbdaggressiveloopthr_446',['defaultRGBDAggressiveLoopThr',['../classrtabmap_1_1Parameters.html#aa0280b8578239d72dc63137145c0a26e',1,'rtabmap::Parameters']]], + ['defaultrgbdangularspeedupdate_447',['defaultRGBDAngularSpeedUpdate',['../classrtabmap_1_1Parameters.html#a4bfae76169252ef1b605a3de2cffb79b',1,'rtabmap::Parameters']]], + ['defaultrgbdangularupdate_448',['defaultRGBDAngularUpdate',['../classrtabmap_1_1Parameters.html#afb7eb4db84edfdc8e5db6dd5a223735d',1,'rtabmap::Parameters']]], + ['defaultrgbdcreateoccupancygrid_449',['defaultRGBDCreateOccupancyGrid',['../classrtabmap_1_1Parameters.html#aad44b21f15d9893f9447419a12432ba1',1,'rtabmap::Parameters']]], + ['defaultrgbdenabled_450',['defaultRGBDEnabled',['../classrtabmap_1_1Parameters.html#ac5704dfa1a8d2f498aa41dd22e2fad96',1,'rtabmap::Parameters']]], + ['defaultrgbdforceodom3dof_451',['defaultRGBDForceOdom3DoF',['../classrtabmap_1_1Parameters.html#acd5a7917273e734f113b670f2fe6f0f2',1,'rtabmap::Parameters']]], + ['defaultrgbdgoalreachedradius_452',['defaultRGBDGoalReachedRadius',['../classrtabmap_1_1Parameters.html#aef2ac63e326b9fd31c4aecd71c57a485',1,'rtabmap::Parameters']]], + ['defaultrgbdgoalssavedinuserdata_453',['defaultRGBDGoalsSavedInUserData',['../classrtabmap_1_1Parameters.html#afeb3cc8064aa5bcb10b547565764f938',1,'rtabmap::Parameters']]], + ['defaultrgbdinvertedreg_454',['defaultRGBDInvertedReg',['../classrtabmap_1_1Parameters.html#a8a43f35d5d3ff84ea040d11c67f06cd3',1,'rtabmap::Parameters']]], + ['defaultrgbdlinearspeedupdate_455',['defaultRGBDLinearSpeedUpdate',['../classrtabmap_1_1Parameters.html#aaf25ea9452edef26470859b2fa3a18b0',1,'rtabmap::Parameters']]], + ['defaultrgbdlinearupdate_456',['defaultRGBDLinearUpdate',['../classrtabmap_1_1Parameters.html#a6a5e27ec1dd5895cdc044b15f933847c',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalbundleonloopclosure_457',['defaultRGBDLocalBundleOnLoopClosure',['../classrtabmap_1_1Parameters.html#a3a04224f5cae1e13997bed67bfdf2421',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalimmunizationratio_458',['defaultRGBDLocalImmunizationRatio',['../classrtabmap_1_1Parameters.html#a75e80116239ca237f05b5030dbddff94',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalizationpriorerror_459',['defaultRGBDLocalizationPriorError',['../classrtabmap_1_1Parameters.html#a3ea147a3dcb325d1dd8245d5ac6c355a',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalizationsecondtrywithoutproximitylinks_460',['defaultRGBDLocalizationSecondTryWithoutProximityLinks',['../classrtabmap_1_1Parameters.html#a29069e6e4a55635bf0c553353a309386',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalizationsmoothing_461',['defaultRGBDLocalizationSmoothing',['../classrtabmap_1_1Parameters.html#a0411f730d9d60eba47de4135c54ae517',1,'rtabmap::Parameters']]], + ['defaultrgbdlocalradius_462',['defaultRGBDLocalRadius',['../classrtabmap_1_1Parameters.html#acf286a0736091c5249eb7b3e745ce3e1',1,'rtabmap::Parameters']]], + ['defaultrgbdloopclosureidentityguess_463',['defaultRGBDLoopClosureIdentityGuess',['../classrtabmap_1_1Parameters.html#a3a91dafa1048d1c378960782f9a7c88e',1,'rtabmap::Parameters']]], + ['defaultrgbdloopclosurereextractfeatures_464',['defaultRGBDLoopClosureReextractFeatures',['../classrtabmap_1_1Parameters.html#afd0bc554dfe35e65fa9bbefdf917cfcf',1,'rtabmap::Parameters']]], + ['defaultrgbdloopcovlimited_465',['defaultRGBDLoopCovLimited',['../classrtabmap_1_1Parameters.html#abc8740cd9ff03f46b8c4838b1e79a9b1',1,'rtabmap::Parameters']]], + ['defaultrgbdmarkerdetection_466',['defaultRGBDMarkerDetection',['../classrtabmap_1_1Parameters.html#ac8fa2190bca9a03f92fe33d3ad4052d6',1,'rtabmap::Parameters']]], + ['defaultrgbdmaxlocalretrieved_467',['defaultRGBDMaxLocalRetrieved',['../classrtabmap_1_1Parameters.html#ab6a66375f993df5e2f4c8f20e42aaca6',1,'rtabmap::Parameters']]], + ['defaultrgbdmaxloopclosuredistance_468',['defaultRGBDMaxLoopClosureDistance',['../classrtabmap_1_1Parameters.html#a6ccc6b27ed352368d401cb2eadf4aef9',1,'rtabmap::Parameters']]], + ['defaultrgbdmaxodomcachesize_469',['defaultRGBDMaxOdomCacheSize',['../classrtabmap_1_1Parameters.html#a20604ab3e4ca41289cf8143b73b825bf',1,'rtabmap::Parameters']]], + ['defaultrgbdneighborlinkrefining_470',['defaultRGBDNeighborLinkRefining',['../classrtabmap_1_1Parameters.html#a43cd30d28fef96ead5dad3681918512a',1,'rtabmap::Parameters']]], + ['defaultrgbdnewmapodomchangedistance_471',['defaultRGBDNewMapOdomChangeDistance',['../classrtabmap_1_1Parameters.html#a382348a9c98d6dcde1612d4886747777',1,'rtabmap::Parameters']]], + ['defaultrgbdoptimizefromgraphend_472',['defaultRGBDOptimizeFromGraphEnd',['../classrtabmap_1_1Parameters.html#ac6fe48a78f487f8bd8973166c54c94ea',1,'rtabmap::Parameters']]], + ['defaultrgbdoptimizemaxerror_473',['defaultRGBDOptimizeMaxError',['../classrtabmap_1_1Parameters.html#a34706ecf0c565f91077916bb3b1df82d',1,'rtabmap::Parameters']]], + ['defaultrgbdoptimizemaxerrorrepairradius_474',['defaultRGBDOptimizeMaxErrorRepairRadius',['../classrtabmap_1_1Parameters.html#acbf5f04306c6009925f517397b804b16',1,'rtabmap::Parameters']]], + ['defaultrgbdplanangularvelocity_475',['defaultRGBDPlanAngularVelocity',['../classrtabmap_1_1Parameters.html#aebb28a5fbb4e6d36ccd3c3fc67e8e604',1,'rtabmap::Parameters']]], + ['defaultrgbdplanlinearvelocity_476',['defaultRGBDPlanLinearVelocity',['../classrtabmap_1_1Parameters.html#a0ea9c8facb5cb321f3741e2bedacb4a6',1,'rtabmap::Parameters']]], + ['defaultrgbdplanstuckiterations_477',['defaultRGBDPlanStuckIterations',['../classrtabmap_1_1Parameters.html#a4b1e69675edd82c0e91786c10a1a8670',1,'rtabmap::Parameters']]], + ['defaultrgbdproximityangle_478',['defaultRGBDProximityAngle',['../classrtabmap_1_1Parameters.html#afdb1d6a1d9574cbca1c8709f35e26130',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitybyspace_479',['defaultRGBDProximityBySpace',['../classrtabmap_1_1Parameters.html#a9df84bca361ba3bef08c626dc2f1abc5',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitybytime_480',['defaultRGBDProximityByTime',['../classrtabmap_1_1Parameters.html#a9a1572edf65d9b14ff26fdb2f7041bb8',1,'rtabmap::Parameters']]], + ['defaultrgbdproximityglobalscanmap_481',['defaultRGBDProximityGlobalScanMap',['../classrtabmap_1_1Parameters.html#a92466baf9167fd0afb22b7f9eefa8c0b',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitymaxgraphdepth_482',['defaultRGBDProximityMaxGraphDepth',['../classrtabmap_1_1Parameters.html#a63616e8796fa3ddab768591a031cd122',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitymaxpaths_483',['defaultRGBDProximityMaxPaths',['../classrtabmap_1_1Parameters.html#a1b207ec20b49719f0c2849a3009ed50b',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitymergedscancovfactor_484',['defaultRGBDProximityMergedScanCovFactor',['../classrtabmap_1_1Parameters.html#a0b12eea42081e74fb478aee4754d66bf',1,'rtabmap::Parameters']]], + ['defaultrgbdproximityodomguess_485',['defaultRGBDProximityOdomGuess',['../classrtabmap_1_1Parameters.html#a06df8e609e0574dd3428b8056e33b9f1',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitypathfilteringradius_486',['defaultRGBDProximityPathFilteringRadius',['../classrtabmap_1_1Parameters.html#a2883511bedcc4c220754ea93b6e08525',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitypathmaxneighbors_487',['defaultRGBDProximityPathMaxNeighbors',['../classrtabmap_1_1Parameters.html#a317c5dcf56c171dc06b8734322ef71c5',1,'rtabmap::Parameters']]], + ['defaultrgbdproximitypathrawposesused_488',['defaultRGBDProximityPathRawPosesUsed',['../classrtabmap_1_1Parameters.html#af8d84436a760061ced713ccba723dafd',1,'rtabmap::Parameters']]], + ['defaultrgbdscanmatchingidssavedinlinks_489',['defaultRGBDScanMatchingIdsSavedInLinks',['../classrtabmap_1_1Parameters.html#a55e477f21db71f035354857824cdae62',1,'rtabmap::Parameters']]], + ['defaultrgbdstartatorigin_490',['defaultRGBDStartAtOrigin',['../classrtabmap_1_1Parameters.html#ae9008be85b56ced7a1a0380d6403b4f4',1,'rtabmap::Parameters']]], + ['defaultrtabmapcomputermse_491',['defaultRtabmapComputeRMSE',['../classrtabmap_1_1Parameters.html#a64af0d2d6c1f1d37401c19d333c9d2fd',1,'rtabmap::Parameters']]], + ['defaultrtabmapcreateintermediatenodes_492',['defaultRtabmapCreateIntermediateNodes',['../classrtabmap_1_1Parameters.html#a8883a52eabe5cf1b8543f28883b5c5cc',1,'rtabmap::Parameters']]], + ['defaultrtabmapdetectionrate_493',['defaultRtabmapDetectionRate',['../classrtabmap_1_1Parameters.html#a17d26c31e01108f87151549822d14d55',1,'rtabmap::Parameters']]], + ['defaultrtabmapimagebuffersize_494',['defaultRtabmapImageBufferSize',['../classrtabmap_1_1Parameters.html#acf225328e66eabb45e6e7bb61541b75a',1,'rtabmap::Parameters']]], + ['defaultrtabmapimagesalreadyrectified_495',['defaultRtabmapImagesAlreadyRectified',['../classrtabmap_1_1Parameters.html#a655fb29bc817d5be3be975a68b22d051',1,'rtabmap::Parameters']]], + ['defaultrtabmaploopgps_496',['defaultRtabmapLoopGPS',['../classrtabmap_1_1Parameters.html#a72811b235cade342cb8598f8fc98fd2a',1,'rtabmap::Parameters']]], + ['defaultrtabmaploopratio_497',['defaultRtabmapLoopRatio',['../classrtabmap_1_1Parameters.html#a693a08916d475d7ed25a94f9e5ee9e48',1,'rtabmap::Parameters']]], + ['defaultrtabmaploopthr_498',['defaultRtabmapLoopThr',['../classrtabmap_1_1Parameters.html#a297d4cfc19464ff9944cec968f69f25e',1,'rtabmap::Parameters']]], + ['defaultrtabmapmaxrepublished_499',['defaultRtabmapMaxRepublished',['../classrtabmap_1_1Parameters.html#a84e422bed1fee99bf3add6b22509d7b3',1,'rtabmap::Parameters']]], + ['defaultrtabmapmaxretrieved_500',['defaultRtabmapMaxRetrieved',['../classrtabmap_1_1Parameters.html#a10d3800662d76d7ca707779be4c64562',1,'rtabmap::Parameters']]], + ['defaultrtabmapmemorythr_501',['defaultRtabmapMemoryThr',['../classrtabmap_1_1Parameters.html#a74a04a2c228039577af97a6eca733af4',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishlastsignature_502',['defaultRtabmapPublishLastSignature',['../classrtabmap_1_1Parameters.html#a5409119d4fa7ae4467bb5ad2bd8fd264',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishlikelihood_503',['defaultRtabmapPublishLikelihood',['../classrtabmap_1_1Parameters.html#aec63f44fb276848c0276ef49e157a42e',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishpdf_504',['defaultRtabmapPublishPdf',['../classrtabmap_1_1Parameters.html#a71cdb17c468eb22164c8fea56809381f',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishramusage_505',['defaultRtabmapPublishRAMUsage',['../classrtabmap_1_1Parameters.html#a435580b8d8bfc04a3056a670733fd4ee',1,'rtabmap::Parameters']]], + ['defaultrtabmappublishstats_506',['defaultRtabmapPublishStats',['../classrtabmap_1_1Parameters.html#a7c5e66f953be45705f9733cb9b6c45fe',1,'rtabmap::Parameters']]], + ['defaultrtabmaprectifyonlyfeatures_507',['defaultRtabmapRectifyOnlyFeatures',['../classrtabmap_1_1Parameters.html#a192b1b802343b48e517d153a44fca57a',1,'rtabmap::Parameters']]], + ['defaultrtabmapsavewmstate_508',['defaultRtabmapSaveWMState',['../classrtabmap_1_1Parameters.html#ae85f3dc522a58805b8e4292924fbcae4',1,'rtabmap::Parameters']]], + ['defaultrtabmapstartnewmapongoodsignature_509',['defaultRtabmapStartNewMapOnGoodSignature',['../classrtabmap_1_1Parameters.html#ae2ec57ced69ca430af3979e0c06ca1de',1,'rtabmap::Parameters']]], + ['defaultrtabmapstartnewmaponloopclosure_510',['defaultRtabmapStartNewMapOnLoopClosure',['../classrtabmap_1_1Parameters.html#abffddbc89dfbc074e09561c39e749102',1,'rtabmap::Parameters']]], + ['defaultrtabmapstatisticlogged_511',['defaultRtabmapStatisticLogged',['../classrtabmap_1_1Parameters.html#a0e063855679c989570030552742516dc',1,'rtabmap::Parameters']]], + ['defaultrtabmapstatisticloggedheaders_512',['defaultRtabmapStatisticLoggedHeaders',['../classrtabmap_1_1Parameters.html#a927f4dbc6c08e694d937ee23363568a7',1,'rtabmap::Parameters']]], + ['defaultrtabmapstatisticlogsbufferedinram_513',['defaultRtabmapStatisticLogsBufferedInRAM',['../classrtabmap_1_1Parameters.html#aaf1d0f53f567096d54ab06ac97598d8f',1,'rtabmap::Parameters']]], + ['defaultrtabmaptimethr_514',['defaultRtabmapTimeThr',['../classrtabmap_1_1Parameters.html#a25c9d8fcef338e3ff2b5906b5a3641d8',1,'rtabmap::Parameters']]], + ['defaultrtabmapvirtualplacelikelihoodratio_515',['defaultRtabmapVirtualPlaceLikelihoodRatio',['../classrtabmap_1_1Parameters.html#a36ed76f23eb746ff97f5c3a751e40743',1,'rtabmap::Parameters']]], + ['defaultrtabmapworkingdirectory_516',['defaultRtabmapWorkingDirectory',['../classrtabmap_1_1Parameters.html#a5ea43cb3ed900709216cf27daf05d34d',1,'rtabmap::Parameters']]], + ['defaultsiftcontrastthreshold_517',['defaultSIFTContrastThreshold',['../classrtabmap_1_1Parameters.html#adc01d33cd863ae0ade2628adcd6c63ae',1,'rtabmap::Parameters']]], + ['defaultsiftedgethreshold_518',['defaultSIFTEdgeThreshold',['../classrtabmap_1_1Parameters.html#a9b6eb51827444f9f62d0ae9f4ab917a7',1,'rtabmap::Parameters']]], + ['defaultsiftgaussianthreshold_519',['defaultSIFTGaussianThreshold',['../classrtabmap_1_1Parameters.html#a3bf6aa344aab628f500b5e481175d55c',1,'rtabmap::Parameters']]], + ['defaultsiftgpu_520',['defaultSIFTGpu',['../classrtabmap_1_1Parameters.html#a21d9a558dd10640d5b6a783ba5feea31',1,'rtabmap::Parameters']]], + ['defaultsiftmaxgaussianthreshold_521',['defaultSIFTMaxGaussianThreshold',['../classrtabmap_1_1Parameters.html#a8600392dd5581a0ac428c998ea21b403',1,'rtabmap::Parameters']]], + ['defaultsiftnoctavelayers_522',['defaultSIFTNOctaveLayers',['../classrtabmap_1_1Parameters.html#a781567208efdfc12e71bd746ffab8207',1,'rtabmap::Parameters']]], + ['defaultsiftpreciseupscale_523',['defaultSIFTPreciseUpscale',['../classrtabmap_1_1Parameters.html#ad80d2376a9730979d3d3f593cc92137c',1,'rtabmap::Parameters']]], + ['defaultsiftrootsift_524',['defaultSIFTRootSIFT',['../classrtabmap_1_1Parameters.html#a588c11fb03b02d42df5240dc65cce418',1,'rtabmap::Parameters']]], + ['defaultsiftsigma_525',['defaultSIFTSigma',['../classrtabmap_1_1Parameters.html#aca50d40cc689b8a88def05680f08f5da',1,'rtabmap::Parameters']]], + ['defaultsiftupscale_526',['defaultSIFTUpscale',['../classrtabmap_1_1Parameters.html#a5353494af0d7bfddbd330da6becef8f9',1,'rtabmap::Parameters']]], + ['defaultstereobmblocksize_527',['defaultStereoBMBlockSize',['../classrtabmap_1_1Parameters.html#af41ea4fb7bb26a8997b8fbe9b72ab579',1,'rtabmap::Parameters']]], + ['defaultstereobmdisp12maxdiff_528',['defaultStereoBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#a28f2f033c9e4d8ec27d5e681985f8405',1,'rtabmap::Parameters']]], + ['defaultstereobmmindisparity_529',['defaultStereoBMMinDisparity',['../classrtabmap_1_1Parameters.html#afb4c35b0bf30231b04ab959ce0bf2042',1,'rtabmap::Parameters']]], + ['defaultstereobmnumdisparities_530',['defaultStereoBMNumDisparities',['../classrtabmap_1_1Parameters.html#abea19c85ecb7d078942054d2396ce9d8',1,'rtabmap::Parameters']]], + ['defaultstereobmprefiltercap_531',['defaultStereoBMPreFilterCap',['../classrtabmap_1_1Parameters.html#aabe53158599b1479ed66ddf61d688188',1,'rtabmap::Parameters']]], + ['defaultstereobmprefiltersize_532',['defaultStereoBMPreFilterSize',['../classrtabmap_1_1Parameters.html#a729dda48a58cb48cef88cd1c523120da',1,'rtabmap::Parameters']]], + ['defaultstereobmspecklerange_533',['defaultStereoBMSpeckleRange',['../classrtabmap_1_1Parameters.html#a1fe10e68203a20650dad3c0b158babef',1,'rtabmap::Parameters']]], + ['defaultstereobmspecklewindowsize_534',['defaultStereoBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#ad4388d8163b7c79ca22a81e10de1da7f',1,'rtabmap::Parameters']]], + ['defaultstereobmtexturethreshold_535',['defaultStereoBMTextureThreshold',['../classrtabmap_1_1Parameters.html#a7988cca845e3d4ab0f9c8f4044c7b357',1,'rtabmap::Parameters']]], + ['defaultstereobmuniquenessratio_536',['defaultStereoBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a8a86b2a1c92d1c60ff8732df829d93e0',1,'rtabmap::Parameters']]], + ['defaultstereodensestrategy_537',['defaultStereoDenseStrategy',['../classrtabmap_1_1Parameters.html#ae37ed02b9869832e1e40015b2a742cae',1,'rtabmap::Parameters']]], + ['defaultstereoeps_538',['defaultStereoEps',['../classrtabmap_1_1Parameters.html#affd797869ba81693ceb41c699a16b189',1,'rtabmap::Parameters']]], + ['defaultstereoerrorthreshold_539',['defaultStereoErrorThreshold',['../classrtabmap_1_1Parameters.html#a43dd4b83451d88127fe3d92d24a6f468',1,'rtabmap::Parameters']]], + ['defaultstereogpu_540',['defaultStereoGpu',['../classrtabmap_1_1Parameters.html#a3be75b42ebe3f34e345f97c38944ce21',1,'rtabmap::Parameters']]], + ['defaultstereoiterations_541',['defaultStereoIterations',['../classrtabmap_1_1Parameters.html#ab71248546a9b14dfb0a9d9caf978fd11',1,'rtabmap::Parameters']]], + ['defaultstereomaxdisparity_542',['defaultStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a3610794bc2182265cb702f459f46b4a9',1,'rtabmap::Parameters']]], + ['defaultstereomaxlevel_543',['defaultStereoMaxLevel',['../classrtabmap_1_1Parameters.html#adb2d145c305560d9c5c660bb74a024b5',1,'rtabmap::Parameters']]], + ['defaultstereomindisparity_544',['defaultStereoMinDisparity',['../classrtabmap_1_1Parameters.html#ace1334e39c04840c4607f3369c73deaa',1,'rtabmap::Parameters']]], + ['defaultstereomineigthreshold_545',['defaultStereoMinEigThreshold',['../classrtabmap_1_1Parameters.html#ac7f0f4f9f362450c79ae78851913fdcf',1,'rtabmap::Parameters']]], + ['defaultstereoopticalflow_546',['defaultStereoOpticalFlow',['../classrtabmap_1_1Parameters.html#a9a332a183a459fb27dc5a209d7ed79d7',1,'rtabmap::Parameters']]], + ['defaultstereosgbmblocksize_547',['defaultStereoSGBMBlockSize',['../classrtabmap_1_1Parameters.html#aa9b0276b847320e2ceb5f6f536e8b4d6',1,'rtabmap::Parameters']]], + ['defaultstereosgbmdisp12maxdiff_548',['defaultStereoSGBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#a3bc7e2d1fbfb1cf62d41a112b23fcfa2',1,'rtabmap::Parameters']]], + ['defaultstereosgbmmindisparity_549',['defaultStereoSGBMMinDisparity',['../classrtabmap_1_1Parameters.html#a10a6872195e5d06d192599c34f466f3e',1,'rtabmap::Parameters']]], + ['defaultstereosgbmmode_550',['defaultStereoSGBMMode',['../classrtabmap_1_1Parameters.html#ae15de14b2d38197d68681b431127c8d7',1,'rtabmap::Parameters']]], + ['defaultstereosgbmnumdisparities_551',['defaultStereoSGBMNumDisparities',['../classrtabmap_1_1Parameters.html#a21c10e376ba39baa30de0852667f0b95',1,'rtabmap::Parameters']]], + ['defaultstereosgbmp1_552',['defaultStereoSGBMP1',['../classrtabmap_1_1Parameters.html#a4430ed2635ebecb07373215e32d22528',1,'rtabmap::Parameters']]], + ['defaultstereosgbmp2_553',['defaultStereoSGBMP2',['../classrtabmap_1_1Parameters.html#a4b4d64be676abfea14639a769bdb4de0',1,'rtabmap::Parameters']]], + ['defaultstereosgbmprefiltercap_554',['defaultStereoSGBMPreFilterCap',['../classrtabmap_1_1Parameters.html#a56df9c1f66bc2386969a7e98db78a616',1,'rtabmap::Parameters']]], + ['defaultstereosgbmspecklerange_555',['defaultStereoSGBMSpeckleRange',['../classrtabmap_1_1Parameters.html#affdf258b1abcb915b8b434f0cf896609',1,'rtabmap::Parameters']]], + ['defaultstereosgbmspecklewindowsize_556',['defaultStereoSGBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a0b799762d41b09d020c89d6591db4530',1,'rtabmap::Parameters']]], + ['defaultstereosgbmuniquenessratio_557',['defaultStereoSGBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a4d94a30645c4f406bcd07c81c44404eb',1,'rtabmap::Parameters']]], + ['defaultstereossd_558',['defaultStereoSSD',['../classrtabmap_1_1Parameters.html#a8e40f0194449e89021f25b90456fc4da',1,'rtabmap::Parameters']]], + ['defaultstereousemineigenvals_559',['defaultStereoUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a02e16884db0e7711c14361f21abc8ab7',1,'rtabmap::Parameters']]], + ['defaultstereowinheight_560',['defaultStereoWinHeight',['../classrtabmap_1_1Parameters.html#a73674efa12b70980fd75d2ccb6d570d7',1,'rtabmap::Parameters']]], + ['defaultstereowinwidth_561',['defaultStereoWinWidth',['../classrtabmap_1_1Parameters.html#abaf98fb040c73d8184620b83aa17a665',1,'rtabmap::Parameters']]], + ['defaultsuperpointcuda_562',['defaultSuperPointCuda',['../classrtabmap_1_1Parameters.html#ac8736592c8be8e0d08532ddbbd67669c',1,'rtabmap::Parameters']]], + ['defaultsuperpointmodelpath_563',['defaultSuperPointModelPath',['../classrtabmap_1_1Parameters.html#a7937dcfbdddbb8ce94a24483c69e8379',1,'rtabmap::Parameters']]], + ['defaultsuperpointnms_564',['defaultSuperPointNMS',['../classrtabmap_1_1Parameters.html#a52e41199a441d7faf8bca48bfb493f89',1,'rtabmap::Parameters']]], + ['defaultsuperpointnmsradius_565',['defaultSuperPointNMSRadius',['../classrtabmap_1_1Parameters.html#a20b6d913f74764fc38f373315af31a4d',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratcuda_566',['defaultSuperPointRpautratCuda',['../classrtabmap_1_1Parameters.html#a41f09de77ae04f8a2045d03101754cd7',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratmodelpath_567',['defaultSuperPointRpautratModelPath',['../classrtabmap_1_1Parameters.html#a8d5ea16300f98ab2a05b2f26ab7d647f',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratnms_568',['defaultSuperPointRpautratNMS',['../classrtabmap_1_1Parameters.html#a4182d2ab831934256d47ba166e24a926',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratnmsradius_569',['defaultSuperPointRpautratNMSRadius',['../classrtabmap_1_1Parameters.html#a22fe1cd294532b26ef49e4298a69e26b',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratthreshold_570',['defaultSuperPointRpautratThreshold',['../classrtabmap_1_1Parameters.html#a69b146047ebb1870028729f0e7be3d50',1,'rtabmap::Parameters']]], + ['defaultsuperpointrpautratweightspath_571',['defaultSuperPointRpautratWeightsPath',['../classrtabmap_1_1Parameters.html#a49c218c9619ea2185fce9487ecf718ab',1,'rtabmap::Parameters']]], + ['defaultsuperpointthreshold_572',['defaultSuperPointThreshold',['../classrtabmap_1_1Parameters.html#ace5033f0007763fc93e65932b9041682',1,'rtabmap::Parameters']]], + ['defaultsurfextended_573',['defaultSURFExtended',['../classrtabmap_1_1Parameters.html#a53f85d547c5cc152962f311803a70fdf',1,'rtabmap::Parameters']]], + ['defaultsurfgpukeypointsratio_574',['defaultSURFGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#ace3c3edea85a3a6b2e073d14bdfb2ab7',1,'rtabmap::Parameters']]], + ['defaultsurfgpuversion_575',['defaultSURFGpuVersion',['../classrtabmap_1_1Parameters.html#aa74df8b4c0b7b8fb769b1f33ca6a290d',1,'rtabmap::Parameters']]], + ['defaultsurfhessianthreshold_576',['defaultSURFHessianThreshold',['../classrtabmap_1_1Parameters.html#ab79bcf3220b95aafd2d1172359f26ae2',1,'rtabmap::Parameters']]], + ['defaultsurfoctavelayers_577',['defaultSURFOctaveLayers',['../classrtabmap_1_1Parameters.html#a4f35eb1553af531d3f4c59cc35f327bf',1,'rtabmap::Parameters']]], + ['defaultsurfoctaves_578',['defaultSURFOctaves',['../classrtabmap_1_1Parameters.html#ae02e3fea01023968f7f269038f0e477a',1,'rtabmap::Parameters']]], + ['defaultsurfupright_579',['defaultSURFUpright',['../classrtabmap_1_1Parameters.html#a372b88b3284dc01afcfabe4750964a64',1,'rtabmap::Parameters']]], + ['defaultvhepenabled_580',['defaultVhEpEnabled',['../classrtabmap_1_1Parameters.html#a55d159a1f4d432f77b50cde8b642439e',1,'rtabmap::Parameters']]], + ['defaultvhepmatchcountmin_581',['defaultVhEpMatchCountMin',['../classrtabmap_1_1Parameters.html#a0247195ecf1fe7fa766ae79bd49e03e0',1,'rtabmap::Parameters']]], + ['defaultvhepransacparam1_582',['defaultVhEpRansacParam1',['../classrtabmap_1_1Parameters.html#a63632c5cbe1f0b13fbc1bb7ed558d61f',1,'rtabmap::Parameters']]], + ['defaultvhepransacparam2_583',['defaultVhEpRansacParam2',['../classrtabmap_1_1Parameters.html#a4adc701cd2e1d9ee639cf26d41b0a548',1,'rtabmap::Parameters']]], + ['defaultvisbundleadjustment_584',['defaultVisBundleAdjustment',['../classrtabmap_1_1Parameters.html#a04e6d740b74a7796929a1265ff7be884',1,'rtabmap::Parameters']]], + ['defaultviscorfloweps_585',['defaultVisCorFlowEps',['../classrtabmap_1_1Parameters.html#ace9e57ccaffb74ac1991465d20d0b8e3',1,'rtabmap::Parameters']]], + ['defaultviscorflowerrorthreshold_586',['defaultVisCorFlowErrorThreshold',['../classrtabmap_1_1Parameters.html#aa67b91b1e6966f2877e82a38efbc388a',1,'rtabmap::Parameters']]], + ['defaultviscorflowgpu_587',['defaultVisCorFlowGpu',['../classrtabmap_1_1Parameters.html#a434023e866dd8b6300a5952c0fecfbca',1,'rtabmap::Parameters']]], + ['defaultviscorflowiterations_588',['defaultVisCorFlowIterations',['../classrtabmap_1_1Parameters.html#a0c297e3a0aee1942d658f82e737a4d8a',1,'rtabmap::Parameters']]], + ['defaultviscorflowmaxlevel_589',['defaultVisCorFlowMaxLevel',['../classrtabmap_1_1Parameters.html#aef22d8f74728d085ae108c35a1791d82',1,'rtabmap::Parameters']]], + ['defaultviscorflowmineigthreshold_590',['defaultVisCorFlowMinEigThreshold',['../classrtabmap_1_1Parameters.html#aefee30d19bc9b87b06e21abe5eb1cbbc',1,'rtabmap::Parameters']]], + ['defaultviscorflowusemineigenvals_591',['defaultVisCorFlowUseMinEigenVals',['../classrtabmap_1_1Parameters.html#a2a05bef06bac1622562c563fe32927a1',1,'rtabmap::Parameters']]], + ['defaultviscorflowwinsize_592',['defaultVisCorFlowWinSize',['../classrtabmap_1_1Parameters.html#afb33251a94f3517c520a34a3a1283e5a',1,'rtabmap::Parameters']]], + ['defaultviscorguessmatchtoprojection_593',['defaultVisCorGuessMatchToProjection',['../classrtabmap_1_1Parameters.html#aa12553705c26df80ec035a08c172138f',1,'rtabmap::Parameters']]], + ['defaultviscorguesswinsize_594',['defaultVisCorGuessWinSize',['../classrtabmap_1_1Parameters.html#af34904f60b0b96ad96f9cbf1a4b14cd3',1,'rtabmap::Parameters']]], + ['defaultviscornndr_595',['defaultVisCorNNDR',['../classrtabmap_1_1Parameters.html#a9878752f654207e07d5ab91c957eea8e',1,'rtabmap::Parameters']]], + ['defaultviscornntype_596',['defaultVisCorNNType',['../classrtabmap_1_1Parameters.html#a975192ffcb93b8b2923379657090fcf7',1,'rtabmap::Parameters']]], + ['defaultviscortype_597',['defaultVisCorType',['../classrtabmap_1_1Parameters.html#a4390086fa765b55ed8db95ed4c84402f',1,'rtabmap::Parameters']]], + ['defaultvisdepthasmask_598',['defaultVisDepthAsMask',['../classrtabmap_1_1Parameters.html#a8b9bb46e56f16efd4e6e7b48b97ca4e8',1,'rtabmap::Parameters']]], + ['defaultvisdepthmaskfloorthr_599',['defaultVisDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a03cefcae7f028d96a1ba1f2aee762594',1,'rtabmap::Parameters']]], + ['defaultvisepipolargeometryvar_600',['defaultVisEpipolarGeometryVar',['../classrtabmap_1_1Parameters.html#a3f14a544667c829c6dfaea70168cc8d2',1,'rtabmap::Parameters']]], + ['defaultvisestimationtype_601',['defaultVisEstimationType',['../classrtabmap_1_1Parameters.html#aaf0ed785770024ea04a36b5748be0acd',1,'rtabmap::Parameters']]], + ['defaultvisfeaturetype_602',['defaultVisFeatureType',['../classrtabmap_1_1Parameters.html#a6d6b05e1579e3b4598e0ef991f74f814',1,'rtabmap::Parameters']]], + ['defaultvisgridcols_603',['defaultVisGridCols',['../classrtabmap_1_1Parameters.html#ac277e2a7fc50b150144308e1ba9b241a',1,'rtabmap::Parameters']]], + ['defaultvisgridrows_604',['defaultVisGridRows',['../classrtabmap_1_1Parameters.html#a073559bc6e3b3b08ac7e7595e9e3dd2a',1,'rtabmap::Parameters']]], + ['defaultvisinlierdistance_605',['defaultVisInlierDistance',['../classrtabmap_1_1Parameters.html#aaaf5aa4cf8883a92ff81342023e4206e',1,'rtabmap::Parameters']]], + ['defaultvisiterations_606',['defaultVisIterations',['../classrtabmap_1_1Parameters.html#a49294cd6ce5b24d516b2a88768e336ba',1,'rtabmap::Parameters']]], + ['defaultvismaxdepth_607',['defaultVisMaxDepth',['../classrtabmap_1_1Parameters.html#afce66bb7dea92bf71cb6c40eee0525aa',1,'rtabmap::Parameters']]], + ['defaultvismaxfeatures_608',['defaultVisMaxFeatures',['../classrtabmap_1_1Parameters.html#a4d1e65f17b6f579a3dc3ea706b7daece',1,'rtabmap::Parameters']]], + ['defaultvismeaninliersdistance_609',['defaultVisMeanInliersDistance',['../classrtabmap_1_1Parameters.html#afc400a1894120b3adbd301ea92dee760',1,'rtabmap::Parameters']]], + ['defaultvismindepth_610',['defaultVisMinDepth',['../classrtabmap_1_1Parameters.html#a0a34ea2af26613e72a8a40d45efe5f3b',1,'rtabmap::Parameters']]], + ['defaultvismininliers_611',['defaultVisMinInliers',['../classrtabmap_1_1Parameters.html#a803b4fd705ce5153fd06920dc658689d',1,'rtabmap::Parameters']]], + ['defaultvismininliersdistribution_612',['defaultVisMinInliersDistribution',['../classrtabmap_1_1Parameters.html#a3fcf445dfb4a6e0d379a92e428dfa6dd',1,'rtabmap::Parameters']]], + ['defaultvispnpflags_613',['defaultVisPnPFlags',['../classrtabmap_1_1Parameters.html#a525f5019e8faa02db110c201b0abe691',1,'rtabmap::Parameters']]], + ['defaultvispnpmaxvariance_614',['defaultVisPnPMaxVariance',['../classrtabmap_1_1Parameters.html#a14411e7adc3db5e7faed1c4376430529',1,'rtabmap::Parameters']]], + ['defaultvispnprefineiterations_615',['defaultVisPnPRefineIterations',['../classrtabmap_1_1Parameters.html#a7a51cff01e503035688fe92d1a88183d',1,'rtabmap::Parameters']]], + ['defaultvispnpreprojerror_616',['defaultVisPnPReprojError',['../classrtabmap_1_1Parameters.html#a5726f7a1920f35b0ffd9f0fe267b1404',1,'rtabmap::Parameters']]], + ['defaultvispnpsamplingpolicy_617',['defaultVisPnPSamplingPolicy',['../classrtabmap_1_1Parameters.html#a11862bd3db45c58db755e297d3647273',1,'rtabmap::Parameters']]], + ['defaultvispnpsplitlinearcovcomponents_618',['defaultVisPnPSplitLinearCovComponents',['../classrtabmap_1_1Parameters.html#a5a06db00062712789d4731839a76b789',1,'rtabmap::Parameters']]], + ['defaultvispnpvariancemedianratio_619',['defaultVisPnPVarianceMedianRatio',['../classrtabmap_1_1Parameters.html#a40a071dad5bb22dfc482f67142013f1a',1,'rtabmap::Parameters']]], + ['defaultvisrefineiterations_620',['defaultVisRefineIterations',['../classrtabmap_1_1Parameters.html#aa9777fe86b771f07d5c65e0f003bcae3',1,'rtabmap::Parameters']]], + ['defaultvisroiratios_621',['defaultVisRoiRatios',['../classrtabmap_1_1Parameters.html#af63113a8692b8400a33c684cee55d604',1,'rtabmap::Parameters']]], + ['defaultvisssc_622',['defaultVisSSC',['../classrtabmap_1_1Parameters.html#a2c78fb7b71679e3aa143f73ac02cc6e0',1,'rtabmap::Parameters']]], + ['defaultvissubpixeps_623',['defaultVisSubPixEps',['../classrtabmap_1_1Parameters.html#abb32e5ec30ef33bb29dbcb5123731630',1,'rtabmap::Parameters']]], + ['defaultvissubpixiterations_624',['defaultVisSubPixIterations',['../classrtabmap_1_1Parameters.html#ae5d158af0e723d456769f20f98624f61',1,'rtabmap::Parameters']]], + ['defaultvissubpixwinsize_625',['defaultVisSubPixWinSize',['../classrtabmap_1_1Parameters.html#ad12de348591423de8595d3c067b419e5',1,'rtabmap::Parameters']]], + ['deletelastlocation_626',['deleteLastLocation',['../classrtabmap_1_1Rtabmap.html#aee23115b4bd02bce5d1721418a0f7599',1,'rtabmap::Rtabmap']]], + ['deletelocation_627',['deleteLocation',['../classrtabmap_1_1Memory.html#a2b91d8b5d651fbaa12a31e364c793a21',1,'rtabmap::Memory']]], + ['deleteunusedwords_628',['deleteUnusedWords',['../classrtabmap_1_1VWDictionary.html#a33c8904edf3d0af65dfd2a6d817416fa',1,'rtabmap::VWDictionary']]], + ['depthbleedingfiltering_629',['depthBleedingFiltering',['../namespacertabmap_1_1util2d.html#a7788d4dabf084959aa69162d5dbb2d2e',1,'rtabmap::util2d']]], + ['depthconfidencecompressed_630',['depthConfidenceCompressed',['../classrtabmap_1_1SensorData.html#aebbab80906082f6e35ce5731fa67ca26',1,'rtabmap::SensorData']]], + ['depthconfidenceraw_631',['depthConfidenceRaw',['../classrtabmap_1_1SensorData.html#a0cfb7cee085b7959c9ddf1d7854ed910',1,'rtabmap::SensorData']]], + ['depthfromcloud_632',['depthFromCloud',['../namespacertabmap_1_1util3d.html#aaf77cb59d32f36c1e9baa2111a7b1b3d',1,'rtabmap::util3d']]], + ['depthfromdisparity_633',['depthFromDisparity',['../namespacertabmap_1_1util2d.html#a110359c4884579e1c7b68d8baa7acb6c',1,'rtabmap::util2d']]], + ['depthfromstereocorrespondences_634',['depthFromStereoCorrespondences',['../namespacertabmap_1_1util2d.html#ae6548e6246eceaff5dcc9ee30514eac5',1,'rtabmap::util2d']]], + ['depthfromstereoimages_635',['depthFromStereoImages',['../namespacertabmap_1_1util2d.html#aacf89454b054d86b53a8038c8a404b50',1,'rtabmap::util2d']]], + ['depthorrightcompressed_636',['depthOrRightCompressed',['../classrtabmap_1_1SensorData.html#a85b36ca12b0936a99d61b768908097da',1,'rtabmap::SensorData']]], + ['depthorrightraw_637',['depthOrRightRaw',['../classrtabmap_1_1SensorData.html#a2476c59283ef2e24d7a3f10301433327',1,'rtabmap::SensorData']]], + ['depthraw_638',['depthRaw',['../classrtabmap_1_1SensorData.html#a1970cd319999fb371873553b53b07d73',1,'rtabmap::SensorData']]], + ['descriptors_639',['descriptors',['../classrtabmap_1_1SensorData.html#a5cf732793c05b16bb67f144524882b26',1,'rtabmap::SensorData']]], + ['deserialize_640',['deserialize',['../classrtabmap_1_1CameraModel.html#a490dc97ca8aa55d96324eb6612ccfd30',1,'rtabmap::CameraModel::deserialize()'],['../classrtabmap_1_1StereoCameraModel.html#afdec3f5bab7ab9b4c339edaa30e639db',1,'rtabmap::StereoCameraModel::deserialize(const unsigned char *data, unsigned int dataSize)'],['../classrtabmap_1_1StereoCameraModel.html#a7467f3a9a7961e643d0cd152286a13dd',1,'rtabmap::StereoCameraModel::deserialize(const std::vector< unsigned char > &data)'],['../classrtabmap_1_1CameraModel.html#a181c2e53da1151c281d85fde986a29c5',1,'rtabmap::CameraModel::deserialize()']]], + ['deserializedata_641',['deserializeData',['../classrtabmap_1_1Statistics.html#a167ea0c3bc76865e90624323e72399c7',1,'rtabmap::Statistics']]], + ['deserializeindex_642',['deserializeindex',['../classrtabmap_1_1VWDictionary.html#a0a29d849a7c2b626407f453e5cb4b526',1,'rtabmap::VWDictionary::deserializeIndex(const unsigned char *data, size_t size)'],['../classrtabmap_1_1VWDictionary.html#a3af1cce90b50dcb0f9dcd77e1fb08aad',1,'rtabmap::VWDictionary::deserializeIndex(const std::vector< unsigned char > &data)']]], + ['deskew_643',['deskew',['../namespacertabmap_1_1util3d.html#ae4f056638c16889c7cb1d41ecac2866c',1,'rtabmap::util3d']]], + ['detectmoreloopclosures_644',['detectMoreLoopClosures',['../classrtabmap_1_1Rtabmap.html#a600d86ab2a67fa08d6a1e726380948ea',1,'rtabmap::Rtabmap']]], + ['disablebilateralfiltering_645',['disableBilateralFiltering',['../classrtabmap_1_1SensorCaptureThread.html#a57beeb2c34d4430e37da05ef8e400a9b',1,'rtabmap::SensorCaptureThread']]], + ['disablefeaturedetection_646',['disableFeatureDetection',['../classrtabmap_1_1SensorCaptureThread.html#aeddec5c0c55aab261b31d0a980a7d327',1,'rtabmap::SensorCaptureThread']]], + ['disableimufiltering_647',['disableimufiltering',['../classrtabmap_1_1IMUThread.html#a7934573b7f4899278f1b048cf9a686bc',1,'rtabmap::IMUThread::disableIMUFiltering()'],['../classrtabmap_1_1SensorCaptureThread.html#a75c2426adc532854f1d7119256b1cf0d',1,'rtabmap::SensorCaptureThread::disableIMUFiltering()']]], + ['disparityfromstereocorrespondences_648',['disparityFromStereoCorrespondences',['../namespacertabmap_1_1util2d.html#a4f10f8038c62a97d3a79bd2dc5bf2c58',1,'rtabmap::util2d']]], + ['disparityfromstereoimages_649',['disparityFromStereoImages',['../namespacertabmap_1_1util2d.html#ad7ea8d1905c7143d376c57c9e22dcea5',1,'rtabmap::util2d']]], + ['downsample_650',['downsample',['../group__PointCloudDownSampling.html#ga2f9dd8a7c572ce78b76aec448b17a863',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga7a57facb7148254d43af7577a3716d15',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#gab4b196b83a0634b8e58c145ed54d510d',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga83657d48dce8b727088941773f4d8a73',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga8c3ca654fb0cc07084fdac8077714b3a',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga32d575439b2f5082c3946bc964c14b75',1,'rtabmap::util3d::downsample(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, int step)'],['../group__PointCloudDownSampling.html#ga83a15e5eaeee8707bfa5563c71154579',1,'rtabmap::util3d::downsample(const LaserScan &cloud, int step)']]], + ['dumpdata_651',['dumpData',['../classrtabmap_1_1Rtabmap.html#a38db1c80ae583e255dd6174ba6d41ffc',1,'rtabmap::Rtabmap']]], + ['dumpdictionary_652',['dumpDictionary',['../classrtabmap_1_1Memory.html#afc3de4b861e23f90bf753794bcb40e68',1,'rtabmap::Memory']]], + ['dumpmemory_653',['dumpMemory',['../classrtabmap_1_1Memory.html#a634e2fdc0e1c93a2cb01f07c9cbac33f',1,'rtabmap::Memory']]], + ['dumpmemorytree_654',['dumpMemoryTree',['../classrtabmap_1_1Memory.html#a4aef39ff933463d9693e8f4f325f74e7',1,'rtabmap::Memory']]], + ['dumpprediction_655',['dumpPrediction',['../classrtabmap_1_1Rtabmap.html#ad0c040e54bbca27dffc46346d96c57cb',1,'rtabmap::Rtabmap']]], + ['dumpsignatures_656',['dumpSignatures',['../classrtabmap_1_1Memory.html#a1b470cb9ff41fd77a35d9a6230750446',1,'rtabmap::Memory']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_4.js b/preview/pr-1773/api/latest/search/functions_4.js new file mode 100644 index 00000000..233a8fc5 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_4.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['e_0',['E',['../classrtabmap_1_1StereoCameraModel.html#a8ab6c698248837e4dcfe36c2e7b02546',1,'rtabmap::StereoCameraModel']]], + ['elapsed_1',['elapsed',['../classUTimer.html#a372405f02e1d4e9571a73d80962d6f4c',1,'UTimer']]], + ['empty_2',['empty',['../classrtabmap_1_1IMU.html#ace111e68ca49e6d47cc92f53a0be87ef',1,'rtabmap::IMU']]], + ['emptytrash_3',['emptyTrash',['../classrtabmap_1_1Memory.html#a072ec41027a03072f1a945540b43a1b8',1,'rtabmap::Memory']]], + ['emptytrashes_4',['emptyTrashes',['../classrtabmap_1_1DBDriver.html#ab4a0036162994c2ef76d4236e2a7ea0a',1,'rtabmap::DBDriver']]], + ['enablebilateralfiltering_5',['enableBilateralFiltering',['../classrtabmap_1_1SensorCaptureThread.html#a429011ef7b39d30fc98413d727cccf4b',1,'rtabmap::SensorCaptureThread']]], + ['enablefeaturedetection_6',['enableFeatureDetection',['../classrtabmap_1_1SensorCaptureThread.html#aa0a6c975417a655029470aea2ea5d01a',1,'rtabmap::SensorCaptureThread']]], + ['enableimufiltering_7',['enableimufiltering',['../classrtabmap_1_1IMUThread.html#ad7e54aa5d2c6a9354e38bda9f01c89ab',1,'rtabmap::IMUThread::enableIMUFiltering()'],['../classrtabmap_1_1SensorCaptureThread.html#a97ef5e49b994fcd2a3c87d6f7ef244ec',1,'rtabmap::SensorCaptureThread::enableIMUFiltering()']]], + ['ensurelinking_8',['ensureLinking',['../classrtabmap_1_1RtabmapColorOcTree_1_1StaticMemberInitializer.html#aff6bc204ec1c5dfaa423d8ec3e448f0f',1,'rtabmap::RtabmapColorOcTree::StaticMemberInitializer']]], + ['enu_5fwgs84togeocentric_5fwgs84_9',['ENU_WGS84ToGeocentric_WGS84',['../classrtabmap_1_1GeodeticCoords.html#a7f8066cd690d20fc02ad19bf96d9215b',1,'rtabmap::GeodeticCoords']]], + ['envsensor_10',['envsensor',['../classrtabmap_1_1EnvSensor.html#a512758b1afef465b24ce24de8a705dc9',1,'rtabmap::EnvSensor::EnvSensor()'],['../classrtabmap_1_1EnvSensor.html#a8b2f05e0297750a60ccd05c56f141a1b',1,'rtabmap::EnvSensor::EnvSensor(const Type &type, const double &value, const double &stamp=0)']]], + ['envsensors_11',['envSensors',['../classrtabmap_1_1SensorData.html#a4cce095c69f9fa8f0035c9f2f51c0ff9',1,'rtabmap::SensorData']]], + ['epsilon_12',['epsilon',['../classrtabmap_1_1Optimizer.html#a3bca4e3df1048f8bbad9b3b9473924a2',1,'rtabmap::Optimizer::epsilon()'],['../classrtabmap_1_1StereoOpticalFlow.html#ae53f537e0e9ebf121ff8a8b3bdc410a8',1,'rtabmap::StereoOpticalFlow::epsilon()']]], + ['erase_13',['erase',['../classUFile.html#a1faba3e78bb915a685d82f0696e1ec02',1,'UFile']]], + ['erodemap_14',['erodeMap',['../namespacertabmap_1_1util3d.html#aa4d323d39ec23ea314c22f0668ab11c4',1,'rtabmap::util3d']]], + ['error_15',['error',['../classrtabmap_1_1GPS.html#acf16049cca9dfc2fdb46705818f3bb34',1,'rtabmap::GPS']]], + ['estimatemapdepth_16',['estimateMapDepth',['../classclams_1_1FrameProjector.html#a26c74a7a7f6f6e9c2e18d6a38693699c',1,'clams::FrameProjector']]], + ['estimatemotion3dto2d_17',['estimatemotion3dto2d',['../namespacertabmap_1_1util3d.html#a0a1a57cb2be47c4b6670672b2a0a5a93',1,'rtabmap::util3d::estimateMotion3DTo2D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< CameraModel > &cameraModels, unsigned int samplingPolicy=0, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const Transform &guess=Transform::getIdentity(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)'],['../namespacertabmap_1_1util3d.html#a3fffe99bf880decfb8a9f60ff7b882bd',1,'rtabmap::util3d::estimateMotion3DTo2D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const std::vector< CameraModel > &cameraModels, unsigned int samplingPolicy, int minInliers, int iterations, double reprojError, int flagsPnP, int refineIterations, int varianceMedianRatio, float maxVariance, const Transform &guess, const std::map< int, cv::Point3f > &words3B, cv::Mat *covariance, std::vector< std::vector< int > > *matchesOut, std::vector< std::vector< int > > *inliersOut, bool splitLinearCovarianceComponents)'],['../namespacertabmap_1_1util3d.html#a94321442a82f05368f8fd9c9a998284e',1,'rtabmap::util3d::estimateMotion3DTo2D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const CameraModel &cameraModel, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const Transform &guess=Transform::getIdentity(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)']]], + ['estimatemotion3dto3d_18',['estimateMotion3DTo3D',['../namespacertabmap_1_1util3d.html#a717fefeecb331b1dddc3ec3b4f6beb3a',1,'rtabmap::util3d']]], + ['executenoresult_19',['executeNoResult',['../classrtabmap_1_1DBDriver.html#a835fc23bd4f6532af71f3aadfb8037d8',1,'rtabmap::DBDriver']]], + ['exists_20',['exists',['../classUFile.html#a4963afa70289718a3bd1ca50b6adb420',1,'UFile::exists()'],['../classUFile.html#ab8719ee88436205b171674060eaa4dea',1,'UFile::exists(const std::string &filePath)'],['../classUDirectory.html#ad82410f2502789f23d30984a5b1d7724',1,'UDirectory::exists()']]], + ['exportdictionary_21',['exportDictionary',['../classrtabmap_1_1VWDictionary.html#a1ba7cb31f8658980849ffd9ce76b3cb8',1,'rtabmap::VWDictionary']]], + ['exportgps_22',['exportGPS',['../namespacertabmap_1_1graph.html#a96a6c2e8348e3d9cfd8b1770d17da9b2',1,'rtabmap::graph']]], + ['exportposes_23',['exportposes',['../classrtabmap_1_1Rtabmap.html#aeffdfc811a178ba2e55205b746a6ea71',1,'rtabmap::Rtabmap::exportPoses()'],['../namespacertabmap_1_1graph.html#af5622dec3112ea0b5154056bde132d46',1,'rtabmap::graph::exportPoses()']]], + ['exposurefusion_24',['exposureFusion',['../namespacertabmap_1_1util2d.html#ac38e8ed586d24c4b9fe72d64afeb9583',1,'rtabmap::util2d']]], + ['extended_25',['extended',['../classrtabmap_1_1Statistics.html#a1e1ba8f7429fa212aa32897877dec122',1,'rtabmap::Statistics']]], + ['extractclusters_26',['extractclusters',['../group__ExtractClusters.html#ga8e23ae8df06afbb753eb6eb0b54a400a',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga3e51576a82fef5cddffe4d3ae14d8899',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#gada592bb1e0525a32412d5009002b9b1e',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga7c622ccc41a487527f0448db84fd8539',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga8184974cc084fdd804e82bb979eb2353',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga180048dc26009c5d6d1233bb6ce5de04',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#ga62a0d02930f5969cbff707afe01d1bcd',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)'],['../group__ExtractClusters.html#gaecfbf327f7ef38738d0e592ed470d318',1,'rtabmap::util3d::extractClusters(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)']]], + ['extractindices_27',['extractindices',['../group__ExtractIndices.html#ga2a39a8e9d769e5e2cea8054b7084af1e',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gaa312bb0ae54f1472d4e4f22bee7cc4d6',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gad759e35639cd87f04ebd09eadb5865f5',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gaf6cd58fdda3450fb11496395e35908d7',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gaca2188ec4a875fb9c6d2fa240888dcf1',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative, bool keepOrganized)'],['../group__ExtractIndices.html#gae196609121fa899ba2735d406aedc73b',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#gaf8e635d6864b0a7f41bad4bb185a57f4',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga93acd3d20cbab15b628cbc2a0f3b1919',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga0c8a4fe56efba09d2bf6c5b84da36702',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga8ce0dc4070d599c6f4a8c55651c2f944',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)'],['../group__ExtractIndices.html#ga8685395807479f06b19d9d41616a03a7',1,'rtabmap::util3d::extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)']]], + ['extractplane_28',['extractPlane',['../namespacertabmap_1_1util3d.html#acc584a6135a4567d4566f72a64d0770a',1,'rtabmap::util3d']]], + ['extractxyzcorrespondences_29',['extractxyzcorrespondences',['../namespacertabmap_1_1util3d.html#a58b9802c1fc28b7e8927359173f98de8',1,'rtabmap::util3d::extractXYZCorrespondences(const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)'],['../namespacertabmap_1_1util3d.html#a0696277eef10a197af8fd5dcba52fc12',1,'rtabmap::util3d::extractXYZCorrespondences(const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const cv::Mat &depthImage1, const cv::Mat &depthImage2, float cx, float cy, float fx, float fy, float maxDepth, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)'],['../namespacertabmap_1_1util3d.html#a340e76117340170fb465ade8b11dd6af',1,'rtabmap::util3d::extractXYZCorrespondences(const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZ > &cloud1, const pcl::PointCloud< pcl::PointXYZ > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)'],['../namespacertabmap_1_1util3d.html#a43b6de83939173dfd275cbd17f5d7500',1,'rtabmap::util3d::extractXYZCorrespondences(const std::list< std::pair< cv::Point2f, cv::Point2f > > &correspondences, const pcl::PointCloud< pcl::PointXYZRGB > &cloud1, const pcl::PointCloud< pcl::PointXYZRGB > &cloud2, pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2)']]], + ['extractxyzcorrespondencesransac_30',['extractXYZCorrespondencesRANSAC',['../namespacertabmap_1_1util3d.html#ab6a2896e40afacde8cb8b0d10a955e02',1,'rtabmap::util3d']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_5.js b/preview/pr-1773/api/latest/search/functions_5.js new file mode 100644 index 00000000..3df81570 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_5.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['f_0',['F',['../classrtabmap_1_1StereoCameraModel.html#a1e4ffc9baa8dfee0a79ea32bac9b7c1c',1,'rtabmap::StereoCameraModel']]], + ['fastbilateralfiltering_1',['fastBilateralFiltering',['../namespacertabmap_1_1util2d.html#a076914fde23d1323fccf71a794b9bc51',1,'rtabmap::util2d']]], + ['featuresdim_2',['featuresDim',['../classrtabmap_1_1FlannIndex.html#a8191e3ba9cc7a5361443430171691df3',1,'rtabmap::FlannIndex']]], + ['featurestype_3',['featuresType',['../classrtabmap_1_1FlannIndex.html#ace329768df8b54b935fbe7a8921efe69',1,'rtabmap::FlannIndex']]], + ['field_4',['field',['../classrtabmap_1_1LaserScan.html#a61d7ecfee5d444fdde06efb0f13ed68d',1,'rtabmap::LaserScan']]], + ['filldepthholes_5',['fillDepthHoles',['../namespacertabmap_1_1util2d.html#aeb3dee2cf6484f0b224d4687899cb004',1,'rtabmap::util2d']]], + ['fillprojectedcloudholes_6',['fillProjectedCloudHoles',['../namespacertabmap_1_1util3d.html#a992c9dd2c6243261244e0650d3e98564',1,'rtabmap::util3d']]], + ['fillregistereddepthholes_7',['fillRegisteredDepthHoles',['../namespacertabmap_1_1util2d.html#afc6c9b3442c64ef2061365ead3923228',1,'rtabmap::util2d']]], + ['filterduplicatelinks_8',['filterDuplicateLinks',['../namespacertabmap_1_1graph.html#a5d11e3cccfeca97d570c528858863dd2',1,'rtabmap::graph']]], + ['filterfloor_9',['filterFloor',['../namespacertabmap_1_1util3d.html#ae145af1bf4955fa135bcf359fb1fe628',1,'rtabmap::util3d']]], + ['filterkeypointsbydepth_10',['filterKeypointsByDepth',['../classrtabmap_1_1Feature2D.html#aadbb5a7611eb94ea6925115999bc0f4e',1,'rtabmap::Feature2D']]], + ['filterkeypointsbydisparity_11',['filterKeypointsByDisparity',['../classrtabmap_1_1Feature2D.html#a32fa09026282be6a729483bfe57d31ec',1,'rtabmap::Feature2D']]], + ['filterlinks_12',['filterlinks',['../namespacertabmap_1_1graph.html#a592918d54b32d6f13236de85958da300',1,'rtabmap::graph::filterLinks(const std::multimap< int, Link > &links, Link::Type filteredType, bool inverted=false)'],['../namespacertabmap_1_1graph.html#af4dffb2a3eced519378d18bca8fa4419',1,'rtabmap::graph::filterLinks(const std::map< int, Link > &links, Link::Type filteredType, bool inverted=false)']]], + ['filtermaxdepth_13',['filterMaxDepth',['../namespacertabmap_1_1util3d.html#a96efcf6ed971e5a5d6b7f9a5e03d1ce3',1,'rtabmap::util3d']]], + ['filterparameters_14',['filterParameters',['../classrtabmap_1_1Parameters.html#a24faced7b8d2ebb7045cd6f8f6382ad7',1,'rtabmap::Parameters']]], + ['findcorrespondences_15',['findcorrespondences',['../namespacertabmap_1_1util3d.html#a188c2a13980f6b7d85e6e0804a38cb50',1,'rtabmap::util3d::findCorrespondences(const std::multimap< int, cv::KeyPoint > &wordsA, const std::multimap< int, cv::KeyPoint > &wordsB, std::list< std::pair< cv::Point2f, cv::Point2f > > &pairs)'],['../namespacertabmap_1_1util3d.html#ac466a705ab9ee7d99f23842cd71f3c96',1,'rtabmap::util3d::findCorrespondences(const std::multimap< int, cv::Point3f > &words1, const std::multimap< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *uniqueCorrespondences=0)'],['../namespacertabmap_1_1util3d.html#a5c07f098f9f5ba889e18d22b927f3cd4',1,'rtabmap::util3d::findCorrespondences(const std::map< int, cv::Point3f > &words1, const std::map< int, cv::Point3f > &words2, std::vector< cv::Point3f > &inliers1, std::vector< cv::Point3f > &inliers2, float maxDepth, std::vector< int > *correspondences=0)']]], + ['findlink_16',['findlink',['../namespacertabmap_1_1graph.html#a7695c60c6bb375057586449674d42eea',1,'rtabmap::graph::findLink(const std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)'],['../namespacertabmap_1_1graph.html#aecdcc01682092f4c89257d070aa2a437',1,'rtabmap::graph::findLink(const std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)'],['../namespacertabmap_1_1graph.html#aaa0b06795dea514ad1d5fdd4626d32ec',1,'rtabmap::graph::findLink(std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)'],['../namespacertabmap_1_1graph.html#ad91079c9cdd934c8ba8927d3c52b40e5',1,'rtabmap::graph::findLink(std::multimap< int, std::pair< int, Link::Type > > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)'],['../namespacertabmap_1_1graph.html#a06ed3112247c13dcf494665c1d9df327',1,'rtabmap::graph::findLink(std::multimap< int, int > &links, int from, int to, bool checkBothWays=true)'],['../namespacertabmap_1_1graph.html#a8200ae3a6bd27ee2cee4b71d85ace3e9',1,'rtabmap::graph::findLink(const std::multimap< int, std::pair< int, Link::Type > > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)']]], + ['findlinks_17',['findLinks',['../namespacertabmap_1_1graph.html#a308c9331cd3dd36a776517e64b33bd82',1,'rtabmap::graph']]], + ['findnearestnode_18',['findNearestNode',['../namespacertabmap_1_1graph.html#a3d6e74a018b07cd52151e3e168f6384c',1,'rtabmap::graph']]], + ['findnearestnodes_19',['findnearestnodes',['../namespacertabmap_1_1graph.html#a92dfe14b22f897e11bf5bf3f7a7c9157',1,'rtabmap::graph::findNearestNodes(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)'],['../namespacertabmap_1_1graph.html#a70a5f4b17aa3bb54cad151c9f290ff7f',1,'rtabmap::graph::findNearestNodes(const Transform &targetPose, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)'],['../namespacertabmap_1_1graph.html#a52dbbfb5099e97699f2ead9139891a5f',1,'rtabmap::graph::findNearestNodes(const std::map< int, rtabmap::Transform > &nodes, const rtabmap::Transform &targetPose, int k)']]], + ['findnearestposes_20',['findnearestposes',['../namespacertabmap_1_1graph.html#a8cd823f440a4512407ef78d76ff1dbbf',1,'rtabmap::graph::findNearestPoses(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)'],['../namespacertabmap_1_1graph.html#a236de727a38e51699fe73ff61b459d95',1,'rtabmap::graph::findNearestPoses(const Transform &targetPose, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)']]], + ['findnn_21',['findnn',['../classrtabmap_1_1VWDictionary.html#ac2f21a98b70e91ab2e8a07151c508d1c',1,'rtabmap::VWDictionary::findNN(const std::list< VisualWord * > &vws) const'],['../classrtabmap_1_1VWDictionary.html#aada11cf01b586ac8205f8bff0b1ab295',1,'rtabmap::VWDictionary::findNN(const cv::Mat &descriptors) const']]], + ['findpairs_22',['findpairs',['../classrtabmap_1_1EpipolarGeometry.html#a8fc121340b9d638dc9b8c69f2d86c5e7',1,'rtabmap::EpipolarGeometry::findPairs(const std::multimap< int, T > &wordsA, const std::multimap< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)'],['../classrtabmap_1_1EpipolarGeometry.html#ace979984a7d97ccaa18bf0764318d342',1,'rtabmap::EpipolarGeometry::findPairs(const std::map< int, T > &wordsA, const std::map< int, T > &wordsB, std::list< std::pair< int, std::pair< T, T > > > &pairs, bool ignoreNegativeIds=true)']]], + ['findpairsall_23',['findPairsAll',['../classrtabmap_1_1EpipolarGeometry.html#adfcc58ee756cb99887c6d8807bc7104c',1,'rtabmap::EpipolarGeometry']]], + ['findpairsunique_24',['findPairsUnique',['../classrtabmap_1_1EpipolarGeometry.html#a7c3886c647a098d33a88640ed2477e24',1,'rtabmap::EpipolarGeometry']]], + ['flush_25',['flush',['../classULogger.html#a701ad6b99c9040cf3b5d47711e9f6d6a',1,'ULogger']]], + ['force3dof_26',['force3DoF',['../classrtabmap_1_1Registration.html#abb255bdab60a262f9cfc5d868e50cc9c',1,'rtabmap::Registration']]], + ['forget_27',['forget',['../classrtabmap_1_1Memory.html#a51e89ccab2261912b09a5b7178fdd46c',1,'rtabmap::Memory']]], + ['fovx_28',['fovX',['../classrtabmap_1_1CameraModel.html#ac3aa6835f8ae019de4dbf85eed849b75',1,'rtabmap::CameraModel']]], + ['fovy_29',['fovY',['../classrtabmap_1_1CameraModel.html#af4df41cc8a613f3e03b1ed14fc0a887e',1,'rtabmap::CameraModel']]], + ['framesprocessed_30',['framesProcessed',['../classrtabmap_1_1Odometry.html#a7476b9fffee225ef396804ef59084659',1,'rtabmap::Odometry']]], + ['from_31',['from',['../classrtabmap_1_1Link.html#a185194e8e766ca979e4de7e179f0e534',1,'rtabmap::Link']]], + ['fromeigen4f_32',['fromEigen4f',['../classrtabmap_1_1Transform.html#aed17615176c1c3e6fdc682232b753d29',1,'rtabmap::Transform']]], + ['fromenu_5fwgs84_33',['fromENU_WGS84',['../classrtabmap_1_1GeodeticCoords.html#abc69e5c7f8e473fe6788042237992d43',1,'rtabmap::GeodeticCoords']]], + ['fromgeocentric_5fwgs84_34',['fromGeocentric_WGS84',['../classrtabmap_1_1GeodeticCoords.html#ae37435ee904b9782fcddbf0f72f388bd',1,'rtabmap::GeodeticCoords']]], + ['fromstring_35',['fromString',['../classrtabmap_1_1Transform.html#a8358aacfcddec4ab82c43c758cad0b75',1,'rtabmap::Transform']]], + ['frustumfiltering_36',['frustumfiltering',['../group__FrustumFiltering.html#gad05921639a3371d2ee0f684b77542330',1,'rtabmap::util3d::frustumFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)'],['../group__FrustumFiltering.html#ga93cb6151fc470d6b932b4a7c6cb15090',1,'rtabmap::util3d::frustumFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)'],['../group__FrustumFiltering.html#ga4ceacaabe757da82d3278b08df766a69',1,'rtabmap::util3d::frustumFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)']]], + ['frustumposesfiltering_37',['frustumPosesFiltering',['../namespacertabmap_1_1graph.html#a8213a5876c86611ee4c832981eb1e7de',1,'rtabmap::graph']]], + ['fullupdateneeded_38',['fullUpdateNeeded',['../classrtabmap_1_1GlobalMap.html#a11e9ba83337edf7f08f3c50064be028a',1,'rtabmap::GlobalMap']]], + ['fx_39',['fx',['../classrtabmap_1_1CameraModel.html#acea616d4e141804dbc5c6eda58bebf6b',1,'rtabmap::CameraModel']]], + ['fy_40',['fy',['../classrtabmap_1_1CameraModel.html#ac4089d34947b040205e281edae4151a1',1,'rtabmap::CameraModel']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_6.js b/preview/pr-1773/api/latest/search/functions_6.js new file mode 100644 index 00000000..1d7f7699 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_6.js @@ -0,0 +1,210 @@ +var searchData= +[ + ['generatedescriptors_0',['generateDescriptors',['../classrtabmap_1_1Feature2D.html#abaca942668ac3d2f16d3e78797ff0fb9',1,'rtabmap::Feature2D']]], + ['generatedotgraph_1',['generateDOTGraph',['../classrtabmap_1_1Rtabmap.html#a3c32f64acd943c676a9b11c7dbd3a5ae',1,'rtabmap::Rtabmap']]], + ['generategraph_2',['generategraph',['../classrtabmap_1_1DBDriver.html#abbf62fc6967cf618e6b2aece44f45230',1,'rtabmap::DBDriver::generateGraph()'],['../classrtabmap_1_1Memory.html#aebef354bb315f522b4767337a6bd1ee6',1,'rtabmap::Memory::generateGraph()']]], + ['generatekeypoints_3',['generateKeypoints',['../classrtabmap_1_1Feature2D.html#a78d70d2150b42203ffd1c94d79661248',1,'rtabmap::Feature2D']]], + ['generatekeypoints3d_4',['generateKeypoints3D',['../classrtabmap_1_1Feature2D.html#ae01a548fe993a7aa309cce96645693ce',1,'rtabmap::Feature2D']]], + ['generatekeypoints3ddepth_5',['generatekeypoints3ddepth',['../namespacertabmap_1_1util3d.html#a785db0d55f5eccf209b9d3d712ec92b2',1,'rtabmap::util3d::generateKeypoints3DDepth(const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, float minDepth=0, float maxDepth=0)'],['../namespacertabmap_1_1util3d.html#a4f938d094d62997e0fb5d53c59f7ef82',1,'rtabmap::util3d::generateKeypoints3DDepth(const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const CameraModel &cameraModel, float minDepth=0, float maxDepth=0)']]], + ['generatekeypoints3ddisparity_6',['generateKeypoints3DDisparity',['../namespacertabmap_1_1util3d.html#af34bc7763a1e077a3520f4952ed9d196',1,'rtabmap::util3d']]], + ['generatekeypoints3dstereo_7',['generateKeypoints3DStereo',['../namespacertabmap_1_1util3d.html#a7d48db86fe2f0cfc9abc974a66be8695',1,'rtabmap::util3d']]], + ['generateprediction_8',['generatePrediction',['../classrtabmap_1_1BayesFilter.html#a489031236b91dbaba0ff192f90799cd4',1,'rtabmap::BayesFilter']]], + ['geocentric_5fwgs84toenu_5fwgs84_9',['Geocentric_WGS84ToENU_WGS84',['../classrtabmap_1_1GeodeticCoords.html#a76c33e9f988c743e429b0a04d18e258d',1,'rtabmap::GeodeticCoords']]], + ['geodeticcoords_10',['geodeticcoords',['../classrtabmap_1_1GeodeticCoords.html#a0e70bc5a1464b930fafc579322912a68',1,'rtabmap::GeodeticCoords::GeodeticCoords(double latitude, double longitude, double altitude)'],['../classrtabmap_1_1GeodeticCoords.html#a41294c28a20d82ca1cee7f7038255d64',1,'rtabmap::GeodeticCoords::GeodeticCoords()']]], + ['get3dmap_11',['get3DMap',['../classrtabmap_1_1Rtabmap.html#ae617c65a0ba6f95a321b8c0c3a18b0e3',1,'rtabmap::Rtabmap']]], + ['getalllabels_12',['getAllLabels',['../classrtabmap_1_1Memory.html#a055a0ebfc7e2c128d386f8141dc320ce',1,'rtabmap::Memory']]], + ['getalllinks_13',['getAllLinks',['../classrtabmap_1_1Memory.html#acde7a0f34f8896c3c9f002c6cbcc614e',1,'rtabmap::Memory']]], + ['getallsignatureids_14',['getAllSignatureIds',['../classrtabmap_1_1Memory.html#a4c7c344a7f3733a8f30a6e82fbb4f20a',1,'rtabmap::Memory']]], + ['getangle_15',['getAngle',['../classrtabmap_1_1Transform.html#abd0f443c22c295cfe85e2402516defcc',1,'rtabmap::Transform']]], + ['getbackwardcompatibilitymap_16',['getBackwardCompatibilityMap',['../classrtabmap_1_1Parameters.html#a66c12cd1e2e614cc5c987cf7f0dbe2be',1,'rtabmap::Parameters']]], + ['getcellsize_17',['getcellsize',['../classrtabmap_1_1LocalGridMaker.html#a305865c8f98b498b13a35ef0b790f926',1,'rtabmap::LocalGridMaker::getCellSize()'],['../classrtabmap_1_1GlobalMap.html#a445f18d347d5624a012f756eb9fe5320',1,'rtabmap::GlobalMap::getCellSize()']]], + ['getclassname_18',['getclassname',['../classULogEvent.html#a70ec329f7f43a18805469302ffddc610',1,'ULogEvent::getClassName()'],['../classrtabmap_1_1OdometryEvent.html#a461365124cbdf488d3a05874be8c4bb2',1,'rtabmap::OdometryEvent::getClassName()'],['../classrtabmap_1_1IMUEvent.html#adf3482d48ccbf36daa039efb596405d0',1,'rtabmap::IMUEvent::getClassName()'],['../classrtabmap_1_1OdometryResetEvent.html#a94dc8e8b7ec952c0ca2b393cc0f3e71d',1,'rtabmap::OdometryResetEvent::getClassName()'],['../classUObjDeletedEvent.html#adb1ad42f6258d12eee9da77d6f129633',1,'UObjDeletedEvent::getClassName()'],['../classUEvent.html#a2c7d278240ad4b7d88a2c534cc5f47b4',1,'UEvent::getClassName()'],['../classrtabmap_1_1UserDataEvent.html#a26248169380397c47377310d61090385',1,'rtabmap::UserDataEvent::getClassName()'],['../classrtabmap_1_1SensorEvent.html#a7bb8ca3a235aa8b58227bc50e19d7493',1,'rtabmap::SensorEvent::getClassName()'],['../classrtabmap_1_1RtabmapGoalStatusEvent.html#aa90a7d8a6afe4de12b28f68aaf4f2897',1,'rtabmap::RtabmapGoalStatusEvent::getClassName()'],['../classrtabmap_1_1RtabmapLabelErrorEvent.html#ab41ac9cdd98c1d94b1a8dc9a21364315',1,'rtabmap::RtabmapLabelErrorEvent::getClassName()'],['../classrtabmap_1_1RtabmapGlobalPathEvent.html#a5dd474b3110c9d4bb53a832aaeda8145',1,'rtabmap::RtabmapGlobalPathEvent::getClassName()'],['../classrtabmap_1_1RtabmapEvent3DMap.html#ad2d9581145b56762e1d9ae5f04101db5',1,'rtabmap::RtabmapEvent3DMap::getClassName()'],['../classrtabmap_1_1RtabmapEventInit.html#ac10fa3c98f98804d1059b2673233bf0c',1,'rtabmap::RtabmapEventInit::getClassName()'],['../classrtabmap_1_1RtabmapEventCmd.html#a23c1b76dc2e8d6223cb52cb4fcaf7b5c',1,'rtabmap::RtabmapEventCmd::getClassName()'],['../classrtabmap_1_1RtabmapEvent.html#ae548b73bb3504a10a4e40592648f42b8',1,'rtabmap::RtabmapEvent::getClassName()'],['../classrtabmap_1_1ParamEvent.html#a877e2b7fedcb8aba63e3430d7f975e0a',1,'rtabmap::ParamEvent::getClassName()']]], + ['getclosesttransform_19',['getClosestTransform',['../classrtabmap_1_1Transform.html#ab943d72a808b96b7f89943fc78e38d68',1,'rtabmap::Transform']]], + ['getcode_20',['getCode',['../classUEvent.html#a7356350719dfd5ba2d28368d1fdcd143',1,'UEvent']]], + ['getcompresseddata_21',['getCompressedData',['../classrtabmap_1_1CompressionThread.html#a6908afb16364f91c7d0744decf6c970d',1,'rtabmap::CompressionThread']]], + ['getconnectedgraph_22',['getConnectedGraph',['../classrtabmap_1_1Optimizer.html#a4477c9a5b6651729944726465b5eba7f',1,'rtabmap::Optimizer']]], + ['getcreateintermediatenodes_23',['getCreateIntermediateNodes',['../classrtabmap_1_1RtabmapThread.html#a3dffee6fb4ae760c140144fd47923643',1,'rtabmap::RtabmapThread']]], + ['getdata_24',['getData',['../classrtabmap_1_1IMUEvent.html#a3ebdf9e3cb56c153bf76d4aad5a6b44e',1,'rtabmap::IMUEvent']]], + ['getdatabasememoryused_25',['getDatabaseMemoryUsed',['../classrtabmap_1_1Memory.html#a83d0b30afc46dd66ab3106c9997657c4',1,'rtabmap::Memory']]], + ['getdatabaseurl_26',['getDatabaseUrl',['../classrtabmap_1_1Memory.html#ab2c3951385254cbb42fb399b407ded24',1,'rtabmap::Memory']]], + ['getdatabaseversion_27',['getdatabaseversion',['../classrtabmap_1_1Memory.html#aebd7dd4ef859d70435a5db8e4f398ea5',1,'rtabmap::Memory::getDatabaseVersion()'],['../classrtabmap_1_1DBDriver.html#a9adb7be1463016917f24a3db5f1e8264',1,'rtabmap::DBDriver::getDatabaseVersion()']]], + ['getdatabuffersize_28',['getDataBufferSize',['../classrtabmap_1_1RtabmapThread.html#a9aa2f05308498abcba0f01b2df25cac0',1,'rtabmap::RtabmapThread']]], + ['getdbsavingtime_29',['getDbSavingTime',['../classrtabmap_1_1Memory.html#a40ba03d0f1291fc9e45ce86d05479cd3',1,'rtabmap::Memory']]], + ['getdefaultparameters_30',['getDefaultParameters',['../classrtabmap_1_1Parameters.html#a3921b82495e0308f8cfcbdb8ef072e21',1,'rtabmap::Parameters']]], + ['getdepth_31',['getDepth',['../namespacertabmap_1_1util2d.html#a48b07b02efba21a914db10e832589aba',1,'rtabmap::util2d']]], + ['getdescription_32',['getDescription',['../classrtabmap_1_1Parameters.html#a7aacfe3e18e28a1fb81d0f3f0ffbb414',1,'rtabmap::Parameters']]], + ['getdescriptor_33',['getDescriptor',['../classrtabmap_1_1VisualWord.html#a2d20ce6234dc211335a926759e111bbb',1,'rtabmap::VisualWord']]], + ['getdetector_34',['getDetector',['../classrtabmap_1_1RegistrationVis.html#a0a860fb3509b4c5b135b66ebd5cd6e55',1,'rtabmap::RegistrationVis']]], + ['getdetectorrate_35',['getDetectorRate',['../classrtabmap_1_1RtabmapThread.html#ac788245b9aa70ebc9e7148fad3b92ed1',1,'rtabmap::RtabmapThread']]], + ['getdir_36',['getDir',['../classUDirectory.html#a0177e6f7286fc63c48fe2629e6ba5b34',1,'UDirectory']]], + ['getdistance_37',['getDistance',['../classrtabmap_1_1Transform.html#ade8f4e91576b320690741efa817bd7ad',1,'rtabmap::Transform']]], + ['getdistancesquared_38',['getDistanceSquared',['../classrtabmap_1_1Transform.html#ae311741cc884ca8f5343bc2710b96a0b',1,'rtabmap::Transform']]], + ['getestimationtype_39',['getEstimationType',['../classrtabmap_1_1RegistrationVis.html#a951c79dd9be75b896c551e5213c0ee31',1,'rtabmap::RegistrationVis']]], + ['geteulerangles_40',['getEulerAngles',['../classrtabmap_1_1Transform.html#adf2345af30927b656ceca938ec4d0525',1,'rtabmap::Transform']]], + ['getextension_41',['getextension',['../classUFile.html#aa937b9f20ef2e51091845c5108ded154',1,'UFile::getExtension()'],['../classUFile.html#ac630657b2f15288df6ecddec029b42c6',1,'UFile::getExtension(const std::string &filePath)']]], + ['getfeature2d_42',['getFeature2D',['../classrtabmap_1_1Memory.html#ab094dfa40b0fe37cb12552a6ba081d6b',1,'rtabmap::Memory']]], + ['getfilenames_43',['getFileNames',['../classUDirectory.html#aa16e64be3cc238eec871bddaf6dbc289',1,'UDirectory']]], + ['getforwardwmposes_44',['getForwardWMPoses',['../classrtabmap_1_1Rtabmap.html#a8400ccecd090cb438d16178930fe0872',1,'rtabmap::Rtabmap']]], + ['getframerate_45',['getFrameRate',['../classrtabmap_1_1SensorCapture.html#af7de847c118ec1ba77a5c9f29f7efece',1,'rtabmap::SensorCapture']]], + ['getgoalreachedradius_46',['getGoalReachedRadius',['../classrtabmap_1_1Rtabmap.html#a6098155788f6e9ccaa636e26f8881c07',1,'rtabmap::Rtabmap']]], + ['getgps_47',['getGPS',['../classrtabmap_1_1Memory.html#aca3bdb688c64dd62672f2385ce6de594',1,'rtabmap::Memory']]], + ['getgraph_48',['getGraph',['../classrtabmap_1_1Rtabmap.html#a456fa0c95770f052d78f6d9f745fa1e3',1,'rtabmap::Rtabmap']]], + ['getgridmax_49',['getgridmax',['../classrtabmap_1_1GlobalMap.html#aa840b2e62893de929f952b8511df6164',1,'rtabmap::GlobalMap::getGridMax(double &x, double &y) const'],['../classrtabmap_1_1GlobalMap.html#a060366742fc8f51deaf7dd75b66615c7',1,'rtabmap::GlobalMap::getGridMax(double &x, double &y, double &z) const']]], + ['getgridmin_50',['getgridmin',['../classrtabmap_1_1GlobalMap.html#aaf028c4c070aa8568eaaf3dae4b926ee',1,'rtabmap::GlobalMap::getGridMin(double &x, double &y) const'],['../classrtabmap_1_1GlobalMap.html#a37adbbb0e80ba76cfa080cec9811cca3',1,'rtabmap::GlobalMap::getGridMin(double &x, double &y, double &z) const']]], + ['getgroundtruthpose_51',['getgroundtruthpose',['../classrtabmap_1_1Memory.html#a89dd9b0aea5595e929b23ded82cd8ff1',1,'rtabmap::Memory::getGroundTruthPose()'],['../classrtabmap_1_1Signature.html#a5d5f3aa41c0d9404654ebc5628a5189c',1,'rtabmap::Signature::getGroundTruthPose()']]], + ['getgroundtruths_52',['getGroundTruths',['../classrtabmap_1_1Memory.html#ac61afdb7694d54b5e3d146be427638b2',1,'rtabmap::Memory']]], + ['gethighesthypothesisid_53',['getHighestHypothesisId',['../classrtabmap_1_1Rtabmap.html#ab11a50751ab17717f567934e7cb2c450',1,'rtabmap::Rtabmap']]], + ['gethighesthypothesisvalue_54',['getHighestHypothesisValue',['../classrtabmap_1_1Rtabmap.html#a530c87cda2cd010e384178bced6611a1',1,'rtabmap::Rtabmap']]], + ['getidentity_55',['getIdentity',['../classrtabmap_1_1Transform.html#a8ea4368f2018d751d2733038081d56a2',1,'rtabmap::Transform']]], + ['getimagecompressed_56',['getImageCompressed',['../classrtabmap_1_1Memory.html#abc4c40056783163ec5abde9366060cb2',1,'rtabmap::Memory']]], + ['getindexedwordscount_57',['getIndexedWordsCount',['../classrtabmap_1_1VWDictionary.html#a6a0610e87964c3881dc70cae6cd9123c',1,'rtabmap::VWDictionary']]], + ['getindexmemoryused_58',['getIndexMemoryUsed',['../classrtabmap_1_1VWDictionary.html#a63ec6a9b915eb939c2650e623feb0576',1,'rtabmap::VWDictionary']]], + ['getinformation_59',['getInformation',['../classrtabmap_1_1Rtabmap.html#aeea47830776fe57c456ae6a673069ddc',1,'rtabmap::Rtabmap']]], + ['getinlierdistance_60',['getInlierDistance',['../classrtabmap_1_1RegistrationVis.html#a488ecb8a7423996abdad98b0044cd7f2',1,'rtabmap::RegistrationVis']]], + ['getinvalidwordscount_61',['getInvalidWordsCount',['../classrtabmap_1_1Signature.html#ac2d1526d87df9ff5d4885b16c460ebcf',1,'rtabmap::Signature']]], + ['getiterations_62',['getIterations',['../classrtabmap_1_1RegistrationVis.html#a93331add1822dd6f02bc74efec6d6834',1,'rtabmap::RegistrationVis']]], + ['getlabel_63',['getLabel',['../classrtabmap_1_1Signature.html#a78a9ae9059257c60cf1d50ef415520cd',1,'rtabmap::Signature']]], + ['getlandmarks_64',['getLandmarks',['../classrtabmap_1_1Signature.html#a2257cfc6c620d726484f1c6c2b11257a',1,'rtabmap::Signature']]], + ['getlandmarksindex_65',['getLandmarksIndex',['../classrtabmap_1_1Memory.html#acf7e6cbe5eda50b024cbb1bc82d03b7c',1,'rtabmap::Memory']]], + ['getlastgloballoopclosureid_66',['getLastGlobalLoopClosureId',['../classrtabmap_1_1Memory.html#ad6e8870c75b300a7d526f49467f67913',1,'rtabmap::Memory']]], + ['getlastindexedwordid_67',['getLastIndexedWordId',['../classrtabmap_1_1VWDictionary.html#a65a99ae457b1c779233de57d190ca8da',1,'rtabmap::VWDictionary']]], + ['getlastlocalizationpose_68',['getLastLocalizationPose',['../classrtabmap_1_1Rtabmap.html#a2d2efac02d4a6d1d7bbc505d94fd634b',1,'rtabmap::Rtabmap']]], + ['getlastlocationid_69',['getLastLocationId',['../classrtabmap_1_1Rtabmap.html#a9406c710b7af988dda1868a3efa8f1dd',1,'rtabmap::Rtabmap']]], + ['getlastprocesstime_70',['getLastProcessTime',['../classrtabmap_1_1Rtabmap.html#a88ffdd1ba70707e5969deab4f6ee66a0',1,'rtabmap::Rtabmap']]], + ['getlastsignaturedata_71',['getLastSignatureData',['../classrtabmap_1_1Statistics.html#a582cb4d6d0b3034062d508a6cac77081',1,'rtabmap::Statistics']]], + ['getlastsignatureid_72',['getLastSignatureId',['../classrtabmap_1_1Memory.html#a65552e672e67c9f511b3384e3d117de6',1,'rtabmap::Memory']]], + ['getlastworkingsignature_73',['getLastWorkingSignature',['../classrtabmap_1_1Memory.html#ad14c4346a42a621b7834c60de6bc2e63',1,'rtabmap::Memory']]], + ['getleftsuffix_74',['getLeftSuffix',['../classrtabmap_1_1StereoCameraModel.html#a799e3f787d015b5cbd0189768f5b673c',1,'rtabmap::StereoCameraModel']]], + ['getlinks_75',['getlinks',['../classrtabmap_1_1Signature.html#a1496e2f2ae46f2b6efcf7ece309ffd22',1,'rtabmap::Signature::getLinks()'],['../classrtabmap_1_1Memory.html#a7d4e2a2281980bc1b18683fd8fc2ebeb',1,'rtabmap::Memory::getLinks()']]], + ['getlocalconstraints_76',['getLocalConstraints',['../classrtabmap_1_1Rtabmap.html#a4d1e329f0c0fcc341d14f6853ec86750',1,'rtabmap::Rtabmap']]], + ['getlocaloptimizedposes_77',['getLocalOptimizedPoses',['../classrtabmap_1_1Rtabmap.html#aebe0bf9364ff8952d041f57c6a1c1d57',1,'rtabmap::Rtabmap']]], + ['getlocalradius_78',['getLocalRadius',['../classrtabmap_1_1Rtabmap.html#a6a4c533659621ccb1f6a5ddbc8149306',1,'rtabmap::Rtabmap']]], + ['getlocaltransform_79',['getLocalTransform',['../classrtabmap_1_1SensorCapture.html#a99829249c51fd08c32310b788b00b663',1,'rtabmap::SensorCapture']]], + ['getloopclosureid_80',['getLoopClosureId',['../classrtabmap_1_1Rtabmap.html#a2bc8eecb690ec1e36955119cd2c1a197',1,'rtabmap::Rtabmap']]], + ['getloopclosurelinks_81',['getLoopClosureLinks',['../classrtabmap_1_1Memory.html#a88fecb24bd16886d6086937277df5f20',1,'rtabmap::Memory']]], + ['getloopclosurevalue_82',['getLoopClosureValue',['../classrtabmap_1_1Rtabmap.html#adc87cbb6adde3027b8c20bbba25fec7b',1,'rtabmap::Rtabmap']]], + ['getmapcorrection_83',['getMapCorrection',['../classrtabmap_1_1Rtabmap.html#a7b71f70a20f1ef42a65fa9571e254711',1,'rtabmap::Rtabmap']]], + ['getmapid_84',['getMapId',['../classrtabmap_1_1Memory.html#a2391cf06d55513bee3cfd50d8beb3a59',1,'rtabmap::Memory']]], + ['getmaxodominf_85',['getMaxOdomInf',['../namespacertabmap_1_1graph.html#a6c009c4c819abe37ec2ca6d041edd92b',1,'rtabmap::graph']]], + ['getmaxstmemsize_86',['getMaxStMemSize',['../classrtabmap_1_1Memory.html#a41b23c567f6aa6bcc3a756e5ae5c1f33',1,'rtabmap::Memory']]], + ['getmemory_87',['getMemory',['../classrtabmap_1_1Rtabmap.html#a08adb5e0b8019c1dbd4f571099d2d46b',1,'rtabmap::Rtabmap']]], + ['getmemorythreshold_88',['getMemoryThreshold',['../classrtabmap_1_1Rtabmap.html#a876d3599c76de815bee4b278a087cfa5',1,'rtabmap::Rtabmap']]], + ['getmemoryusage_89',['getMemoryUsage',['../classUProcessInfo.html#a8a494e68cdea348a4788b8d54fd7de40',1,'UProcessInfo']]], + ['getmemoryused_90',['getmemoryused',['../classrtabmap_1_1VWDictionary.html#ac5177a75f402538b50ec6c36bdbc7307',1,'rtabmap::VWDictionary::getMemoryUsed()'],['../classrtabmap_1_1VisualWord.html#ad23c14c1c81848fb42573fd5ceac3a42',1,'rtabmap::VisualWord::getMemoryUsed()'],['../classrtabmap_1_1Signature.html#a014fd12ee6cd47004e94ef4bb4753459',1,'rtabmap::Signature::getMemoryUsed()'],['../classrtabmap_1_1Memory.html#ad59e8591cd04e2ecd93b4e706f198763',1,'rtabmap::Memory::getMemoryUsed()'],['../classrtabmap_1_1BayesFilter.html#a60ad13fd18ac4e595359f3c86c430a80',1,'rtabmap::BayesFilter::getMemoryUsed()'],['../classrtabmap_1_1CloudMap.html#a18a2dd71488719960f06eb4ae5e2cf4b',1,'rtabmap::CloudMap::getMemoryUsed()'],['../classrtabmap_1_1OccupancyGrid.html#a06bee0b73df176bd0ab6495e22992d7f',1,'rtabmap::OccupancyGrid::getMemoryUsed()'],['../classrtabmap_1_1OctoMap.html#ab4706881eee755cf58312859e6a3af89',1,'rtabmap::OctoMap::getMemoryUsed()'],['../classrtabmap_1_1GlobalMap.html#a20031690daf7a7e9195ae97abf46522b',1,'rtabmap::GlobalMap::getMemoryUsed()'],['../classrtabmap_1_1LocalGridCache.html#ab72a88b5c00d2a104ac1055538960acb',1,'rtabmap::LocalGridCache::getMemoryUsed()'],['../classrtabmap_1_1SensorData.html#a60b3b2366bb66c914cfa7799204828fc',1,'rtabmap::SensorData::getMemoryUsed()']]], + ['getmetricconstraints_91',['getMetricConstraints',['../classrtabmap_1_1Memory.html#ab5329c43c6b185613222d8458c049848',1,'rtabmap::Memory']]], + ['getmingeometrycorrespondencesratio_92',['getMinGeometryCorrespondencesRatio',['../classrtabmap_1_1Registration.html#ac4baf87f079ce52df845805b84cad6c9',1,'rtabmap::Registration']]], + ['getmininliers_93',['getMinInliers',['../classrtabmap_1_1RegistrationVis.html#ae951e95c4ae2ea1ab5c4d849823d66c4',1,'rtabmap::RegistrationVis']]], + ['getminmax3d_94',['getminmax3d',['../namespacertabmap_1_1util3d.html#ad857475644e8de6d7d84b920637b2018',1,'rtabmap::util3d::getMinMax3D(const cv::Mat &laserScan, cv::Point3f &min, cv::Point3f &max)'],['../namespacertabmap_1_1util3d.html#afc22f82c00f6dcc8a4ec1963891f4b7e',1,'rtabmap::util3d::getMinMax3D(const cv::Mat &laserScan, pcl::PointXYZ &min, pcl::PointXYZ &max)']]], + ['getminvisualcorrespondences_95',['getMinVisualCorrespondences',['../classrtabmap_1_1Registration.html#abc02df4842af900fbb5da75b8e5318e0',1,'rtabmap::Registration']]], + ['getmsg_96',['getMsg',['../classULogEvent.html#a460976b037ecf8357fc3fa3f613e5817',1,'ULogEvent']]], + ['getname_97',['getname',['../classUFile.html#a3e7905705a69b747e1ed6b6e37b19f3f',1,'UFile::getName(const std::string &filePath)'],['../classUFile.html#af7e7f5995b05cda098037ca1cdcd63f4',1,'UFile::getName()']]], + ['getneighborlinks_98',['getNeighborLinks',['../classrtabmap_1_1Memory.html#a172f0d3046c0b7d6b37cdf11af153bee',1,'rtabmap::Memory']]], + ['getneighborsid_99',['getNeighborsId',['../classrtabmap_1_1Memory.html#a521305f39adcdfbedebbe5bdae9efbc6',1,'rtabmap::Memory']]], + ['getneighborsidradius_100',['getNeighborsIdRadius',['../classrtabmap_1_1Memory.html#a10c44ee8a5d84480b41aa4980665d894',1,'rtabmap::Memory']]], + ['getneuralmodelwarning_101',['getNeuralModelWarning',['../classrtabmap_1_1CameraStereoZed.html#aab6005c68f61b37ee1919ef6828b32a4',1,'rtabmap::CameraStereoZed']]], + ['getnextfilename_102',['getNextFileName',['../classUDirectory.html#a89ff08bf6044f2a0dc61f0dbbdc9d2cc',1,'UDirectory']]], + ['getnextfilepath_103',['getNextFilePath',['../classUDirectory.html#a2e435d2c98e54a8119c2fc3b388c03e9',1,'UDirectory']]], + ['getnextid_104',['getNextId',['../classrtabmap_1_1VWDictionary.html#a085d69ef577600000f397bd63abeaf69',1,'rtabmap::VWDictionary']]], + ['getnextseqid_105',['getNextSeqID',['../classrtabmap_1_1SensorCapture.html#acbffaf17772639bc65b0a5457bc56b22',1,'rtabmap::SensorCapture']]], + ['getnndr_106',['getNNDR',['../classrtabmap_1_1RegistrationVis.html#aed9e9e593b290a4be1aeda05967a631a',1,'rtabmap::RegistrationVis']]], + ['getnndrratio_107',['getNndrRatio',['../classrtabmap_1_1VWDictionary.html#a454639bff3d95b2f9dd346413981d5c5',1,'rtabmap::VWDictionary']]], + ['getnnstrategy_108',['getNNStrategy',['../classrtabmap_1_1VWDictionary.html#ab1ec0db96328164864953f25d463bcbb',1,'rtabmap::VWDictionary']]], + ['getnntype_109',['getNNType',['../classrtabmap_1_1RegistrationVis.html#a697d562bebe30b73a1ecd34dabee4347',1,'rtabmap::RegistrationVis']]], + ['getnntypename_110',['getnntypename',['../classrtabmap_1_1RegistrationVis.html#a770e36d382cf124c47847e50436ae40e',1,'rtabmap::RegistrationVis::getNNTypeName(int nnType)'],['../classrtabmap_1_1RegistrationVis.html#a9fd0ba3453d2c658d8a9b1cee5ba132c',1,'rtabmap::RegistrationVis::getNNTypeName() const']]], + ['getnodecalibration_111',['getNodeCalibration',['../classrtabmap_1_1Memory.html#af48dbd905dda453b6b2c2246a90d0e04',1,'rtabmap::Memory']]], + ['getnodedata_112',['getNodeData',['../classrtabmap_1_1Memory.html#a22d6c0b38d8699cdbba73b6bcdb38dd6',1,'rtabmap::Memory']]], + ['getnodeinfo_113',['getNodeInfo',['../classrtabmap_1_1Memory.html#ae6184a6979703045f34d3e2a155eb9f3',1,'rtabmap::Memory']]], + ['getnodesinradius_114',['getnodesinradius',['../classrtabmap_1_1Rtabmap.html#a9bd263bbcdbc6f41119f8532131db974',1,'rtabmap::Rtabmap::getNodesInRadius(int nodeId, float radius, int k=0, std::map< int, float > *distsSqr=0)'],['../classrtabmap_1_1Rtabmap.html#a1a6498f60f52f65ffbed2d89d7c20648',1,'rtabmap::Rtabmap::getNodesInRadius(const Transform &pose, float radius, int k=0, std::map< int, float > *distsSqr=0)'],['../namespacertabmap_1_1graph.html#a4f7f712868babb4cc74f7fe2cc366620',1,'rtabmap::graph::getNodesInRadius(const Transform &targetPose, const std::map< int, Transform > &nodes, float radius)'],['../namespacertabmap_1_1graph.html#af9e81a0b31730adb292591b79f45c87e',1,'rtabmap::graph::getNodesInRadius(int nodeId, const std::map< int, Transform > &nodes, float radius)']]], + ['getnodesobservinglandmark_115',['getNodesObservingLandmark',['../classrtabmap_1_1Memory.html#afe7a1c036129e7ec94905c3650e91cc8',1,'rtabmap::Memory']]], + ['getnodewordsandglobaldescriptors_116',['getNodeWordsAndGlobalDescriptors',['../classrtabmap_1_1Memory.html#a4c555fac41be4b4d44c551c010971dc3',1,'rtabmap::Memory']]], + ['getnorm_117',['getNorm',['../classrtabmap_1_1Transform.html#af3c46b76fe855b0334a7f255792a6082',1,'rtabmap::Transform']]], + ['getnormsquared_118',['getNormSquared',['../classrtabmap_1_1Transform.html#aee7765828eb454015b4deb72d70a034a',1,'rtabmap::Transform']]], + ['getnotindexedwordscount_119',['getNotIndexedWordsCount',['../classrtabmap_1_1VWDictionary.html#a293c09f00caf84bb991d73983a5f22c8',1,'rtabmap::VWDictionary']]], + ['getodommaxinf_120',['getOdomMaxInf',['../classrtabmap_1_1Memory.html#ae37d02a779acb85797de25da36066829',1,'rtabmap::Memory']]], + ['getodompose_121',['getOdomPose',['../classrtabmap_1_1Memory.html#a4bb01d27d1ec7776103635b11228626c',1,'rtabmap::Memory']]], + ['getorientation_122',['getOrientation',['../classrtabmap_1_1IMUFilter.html#ae32dda362d720f964781f1681fa6a973',1,'rtabmap::IMUFilter']]], + ['getparameters_123',['getparameters',['../classrtabmap_1_1Rtabmap.html#a9ac5900cbc165df1c501606f79c65ec1',1,'rtabmap::Rtabmap::getParameters()'],['../classrtabmap_1_1Memory.html#af4cc965870dd757517b126af4860d34d',1,'rtabmap::Memory::getParameters()']]], + ['getpath_124',['getPath',['../classrtabmap_1_1Rtabmap.html#a5fe89ac87283a92258d27f42eb7b13f1',1,'rtabmap::Rtabmap']]], + ['getpathcurrentgoalid_125',['getPathCurrentGoalId',['../classrtabmap_1_1Rtabmap.html#a5f886101463229fcd79bf3dd6418aa5c',1,'rtabmap::Rtabmap']]], + ['getpathcurrentgoalindex_126',['getPathCurrentGoalIndex',['../classrtabmap_1_1Rtabmap.html#a781713c190497d5f25d7e12112ae4345',1,'rtabmap::Rtabmap']]], + ['getpathcurrentindex_127',['getPathCurrentIndex',['../classrtabmap_1_1Rtabmap.html#a94eecd89994fc02a913b1eb087d85c84',1,'rtabmap::Rtabmap']]], + ['getpathnextnodes_128',['getPathNextNodes',['../classrtabmap_1_1Rtabmap.html#a45addb0848702b39c67c2394dd62f739',1,'rtabmap::Rtabmap']]], + ['getpathnextposes_129',['getPathNextPoses',['../classrtabmap_1_1Rtabmap.html#af81fe33ef45e1ad1838bc97d6a73a8be',1,'rtabmap::Rtabmap']]], + ['getpaths_130',['getpaths',['../classrtabmap_1_1Rtabmap.html#ad314edf995555480a2db1aceb7fd2ee7',1,'rtabmap::Rtabmap::getPaths()'],['../namespacertabmap_1_1graph.html#a0a04ab5289c258725555d6c18a076094',1,'rtabmap::graph::getPaths()']]], + ['getpathstatus_131',['getPathStatus',['../classrtabmap_1_1Rtabmap.html#afe4aa4f9a67ba85b60c7dfda86d0131b',1,'rtabmap::Rtabmap']]], + ['getpathtransformtogoal_132',['getPathTransformToGoal',['../classrtabmap_1_1Rtabmap.html#aedf5dce175ee325822ab7b7772c8d4f5',1,'rtabmap::Rtabmap']]], + ['getpose_133',['getpose',['../classrtabmap_1_1Signature.html#a5166864f276c921963033e8852c13076',1,'rtabmap::Signature::getPose()'],['../classrtabmap_1_1SensorCapture.html#a2f940d75366088bfae0164e1803ffe9a',1,'rtabmap::SensorCapture::getPose()'],['../classrtabmap_1_1Rtabmap.html#ac430e0adb75dc4aec3b7ba77053aabd0',1,'rtabmap::Rtabmap::getPose()'],['../classrtabmap_1_1OdometryResetEvent.html#ae756dea7a2e79fd918dd4c158085bc68',1,'rtabmap::OdometryResetEvent::getPose()'],['../classrtabmap_1_1Odometry.html#a8b45aea55b336f758943b4a6b2ec28ee',1,'rtabmap::Odometry::getPose()'],['../classrtabmap_1_1DBReader.html#abd2b32ae00a05810465f63d63c44d5ed',1,'rtabmap::DBReader::getPose()'],['../classrtabmap_1_1CameraStereoZed.html#a1fceb3208a256d1023739a60f5931def',1,'rtabmap::CameraStereoZed::getPose()'],['../classrtabmap_1_1CameraSeerSense.html#a831666d29d4eabc1a00e9eb5c8b47c27',1,'rtabmap::CameraSeerSense::getPose()'],['../classrtabmap_1_1CameraRealSense2.html#a31fc38dca7aa6dc61c68150d5409204e',1,'rtabmap::CameraRealSense2::getPose()']]], + ['getposecovariance_134',['getPoseCovariance',['../classrtabmap_1_1Signature.html#afc81cb91421dcd36e2f5e3dc84a77b44',1,'rtabmap::Signature']]], + ['getposesinradius_135',['getposesinradius',['../namespacertabmap_1_1graph.html#a0851e81af5d331032ec790a10bb4302f',1,'rtabmap::graph::getPosesInRadius(const Transform &targetPose, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)'],['../namespacertabmap_1_1graph.html#ae487257302634dff8248188e2ed69043',1,'rtabmap::graph::getPosesInRadius(int nodeId, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)']]], + ['getposteriorids_136',['getPosteriorIds',['../classrtabmap_1_1BayesFilter.html#a4b476a9fa8b1c67562be4134c936081c',1,'rtabmap::BayesFilter']]], + ['getposteriorvalues_137',['getPosteriorValues',['../classrtabmap_1_1BayesFilter.html#aaebf1bee8c904dabdf1d8ea0f446c143',1,'rtabmap::BayesFilter']]], + ['getpredictionlc_138',['getPredictionLC',['../classrtabmap_1_1BayesFilter.html#ab13c8acecfbb4fcfff4e809e2b0a7538',1,'rtabmap::BayesFilter']]], + ['getpredictionlcstr_139',['getPredictionLCStr',['../classrtabmap_1_1BayesFilter.html#a18a6d97fe3088a4a356a85358f641376',1,'rtabmap::BayesFilter']]], + ['getreferences_140',['getReferences',['../classrtabmap_1_1VisualWord.html#aef73a60eccd61a917f27bf277366a5bc',1,'rtabmap::VisualWord']]], + ['getremovedparameters_141',['getRemovedParameters',['../classrtabmap_1_1Parameters.html#ae3e84e415669d8c8bf17b119683b1056',1,'rtabmap::Parameters']]], + ['getrightsuffix_142',['getRightSuffix',['../classrtabmap_1_1StereoCameraModel.html#a3ecae21bbf6bc9914d0bb553c99f9e09',1,'rtabmap::StereoCameraModel']]], + ['getserial_143',['getserial',['../classrtabmap_1_1CameraOpenni.html#acaeb07cbf369a47817c48acacee04e41',1,'rtabmap::CameraOpenni::getSerial()'],['../classrtabmap_1_1CameraDepthAI.html#ac77ceb30af0f98aa27f2de1259f31d7e',1,'rtabmap::CameraDepthAI::getSerial()'],['../classrtabmap_1_1CameraFreenect.html#ad4aa325278c21b339aea31437430610d',1,'rtabmap::CameraFreenect::getSerial()'],['../classrtabmap_1_1CameraFreenect2.html#a985478701c8eb9751918fcd497893af7',1,'rtabmap::CameraFreenect2::getSerial()'],['../classrtabmap_1_1CameraImages.html#a217f54d1ead7a4d6af733c2644064a5f',1,'rtabmap::CameraImages::getSerial()'],['../classrtabmap_1_1CameraK4A.html#af7dae13200b0d2ca09294b335225e993',1,'rtabmap::CameraK4A::getSerial()'],['../classrtabmap_1_1CameraK4W2.html#a90bd066891ec59c4f1261af3353209bb',1,'rtabmap::CameraK4W2::getSerial()'],['../classrtabmap_1_1SensorCapture.html#a7830e571e45752f9d8f30fa806f6aa64',1,'rtabmap::SensorCapture::getSerial()'],['../classrtabmap_1_1LidarVLP16.html#a9d533721703457a60e94124d840fee95',1,'rtabmap::LidarVLP16::getSerial()'],['../classrtabmap_1_1CameraVideo.html#ab3400ba7ae983cd1ad9678970079b00a',1,'rtabmap::CameraVideo::getSerial()'],['../classrtabmap_1_1CameraMyntEye.html#ac163457701a9274659e41aae5417f831',1,'rtabmap::CameraMyntEye::getSerial()'],['../classrtabmap_1_1CameraOpenNI2.html#a9767b92c3df7b637c75ee351208e3f0b',1,'rtabmap::CameraOpenNI2::getSerial()'],['../classrtabmap_1_1CameraOpenNICV.html#a29fe33644f755cf54307b55df898617b',1,'rtabmap::CameraOpenNICV::getSerial()'],['../classrtabmap_1_1CameraOrbbecSDK.html#a75f9abaf3ddc009c7772cc0239816b86',1,'rtabmap::CameraOrbbecSDK::getSerial()'],['../classrtabmap_1_1CameraRealSense.html#a4abbdf6efedd229a146d066b5ff17799',1,'rtabmap::CameraRealSense::getSerial()'],['../classrtabmap_1_1CameraRealSense2.html#aff19c4db66d2403c0e09a67d1418bcdc',1,'rtabmap::CameraRealSense2::getSerial()'],['../classrtabmap_1_1CameraSeerSense.html#aa921995e3a4a1cd5480868998bd27b2e',1,'rtabmap::CameraSeerSense::getSerial()'],['../classrtabmap_1_1CameraStereoDC1394.html#a125d6fa6e6bd7f8b2e3d22d10ce54acb',1,'rtabmap::CameraStereoDC1394::getSerial()'],['../classrtabmap_1_1CameraStereoFlyCapture2.html#a06d1e6cd0ea504f6601e78ecbd0442df',1,'rtabmap::CameraStereoFlyCapture2::getSerial()'],['../classrtabmap_1_1CameraStereoImages.html#a507ca5b4c37b75f4108e9aa8dad5125b',1,'rtabmap::CameraStereoImages::getSerial()'],['../classrtabmap_1_1CameraStereoTara.html#a87d7cdfd3354bdffd8e9e88f1244c79d',1,'rtabmap::CameraStereoTara::getSerial()'],['../classrtabmap_1_1CameraStereoVideo.html#a0eba205715f6f856b14eaba8de2eadcf',1,'rtabmap::CameraStereoVideo::getSerial()'],['../classrtabmap_1_1CameraStereoZed.html#a8c13902c0c25565357e6f7e0a16f0838',1,'rtabmap::CameraStereoZed::getSerial()'],['../classrtabmap_1_1DBReader.html#ac6e8622842447cdccfaab061c1cab3c4',1,'rtabmap::DBReader::getSerial()'],['../classrtabmap_1_1CameraStereoZedOC.html#a11244c590c4e356765abf59e94f66ddb',1,'rtabmap::CameraStereoZedOC::getSerial()']]], + ['getsignature_144',['getSignature',['../classrtabmap_1_1Memory.html#a15ec109dd157745f69dcd4f80efaf561',1,'rtabmap::Memory']]], + ['getsignaturecopy_145',['getSignatureCopy',['../classrtabmap_1_1Rtabmap.html#a7133d8efa98410eaec68e0199ff98a0c',1,'rtabmap::Rtabmap']]], + ['getsignatureidbylabel_146',['getSignatureIdByLabel',['../classrtabmap_1_1Memory.html#a4907501b27fdfd5b8053b9d932d8dec4',1,'rtabmap::Memory']]], + ['getsignaturesdata_147',['getSignaturesData',['../classrtabmap_1_1Statistics.html#abd89f302128c32d07b0dea07e50b742b',1,'rtabmap::Statistics']]], + ['getsimilaritythreshold_148',['getSimilarityThreshold',['../classrtabmap_1_1Memory.html#ae1e4c518ec65f86b7a3eade7ac2705c8',1,'rtabmap::Memory']]], + ['getstamp_149',['getstamp',['../classrtabmap_1_1IMUEvent.html#ac1dc5e7e806fbe05ee5fec562384924f',1,'rtabmap::IMUEvent::getStamp()'],['../classrtabmap_1_1Signature.html#aa9c4ed8d3617b039181cf44a0e30eca2',1,'rtabmap::Signature::getStamp()']]], + ['getstatistics_150',['getStatistics',['../classrtabmap_1_1Rtabmap.html#a5d18002c7eb7cee234471686413d201c',1,'rtabmap::Rtabmap']]], + ['getstm_151',['getSTM',['../classrtabmap_1_1Rtabmap.html#a809673c3d0e6d8fb05ebb4a52218d438',1,'rtabmap::Rtabmap']]], + ['getstmem_152',['getStMem',['../classrtabmap_1_1Memory.html#a007abab13fade6f63b6db3fc279a1631',1,'rtabmap::Memory']]], + ['getstmemintermediatenodescount_153',['getStMemIntermediateNodesCount',['../classrtabmap_1_1Memory.html#a3f3a3da280f9e5ee9bba6df03e551f79',1,'rtabmap::Memory']]], + ['getstmsize_154',['getSTMSize',['../classrtabmap_1_1Rtabmap.html#a49adc83991d6b95c7911f41330cbd467',1,'rtabmap::Rtabmap']]], + ['gettargetversion_155',['getTargetVersion',['../classrtabmap_1_1DBDriver.html#a456bc49e8e60e0c754078a4b09e3f1a1',1,'rtabmap::DBDriver']]], + ['gettime_156',['getTime',['../classULogger.html#a17e6d133cea7c2cbe5365e5f5f2216a9',1,'ULogger']]], + ['gettimethreshold_157',['getTimeThreshold',['../classrtabmap_1_1Rtabmap.html#af7fa0cbd1ef027f8bb2af11364487df8',1,'rtabmap::Rtabmap']]], + ['gettotalactivereferences_158',['getTotalActiveReferences',['../classrtabmap_1_1VWDictionary.html#a98447a880fdcf91709f00d00cfd4e54d',1,'rtabmap::VWDictionary']]], + ['gettotalmemsize_159',['getTotalMemSize',['../classrtabmap_1_1Rtabmap.html#ab44f1bca06eec4beb8dfebeed9ed5ce8',1,'rtabmap::Rtabmap']]], + ['gettotalreferences_160',['getTotalReferences',['../classrtabmap_1_1VisualWord.html#a2eaf9703feb310a1038fcd6c8341a1d3',1,'rtabmap::VisualWord']]], + ['gettransform_161',['getTransform',['../classrtabmap_1_1Transform.html#a3ebc45da479b4cae9a5641fda6ebaf23',1,'rtabmap::Transform']]], + ['gettranslation_162',['getTranslation',['../classrtabmap_1_1Transform.html#a3393daecc17559c66156ba3eb0711875',1,'rtabmap::Transform']]], + ['gettranslationandeulerangles_163',['getTranslationAndEulerAngles',['../classrtabmap_1_1Transform.html#aad65adff491fd57a31dbe4e26d7f29af',1,'rtabmap::Transform']]], + ['gettype_164',['gettype',['../classrtabmap_1_1OdometryFovis.html#a415b08f31a2ab8ff503c84623df71f0d',1,'rtabmap::OdometryFovis::getType()'],['../classrtabmap_1_1Odometry.html#a92685daa2786aff06518c8c4e26b8899',1,'rtabmap::Odometry::getType()'],['../classrtabmap_1_1OdometryCuVSLAM.html#a68801df22a6803dabf7a064b99e04898',1,'rtabmap::OdometryCuVSLAM::getType()'],['../classrtabmap_1_1OdometryDVO.html#a8475f5a8b1ba4e288ba58daf6284acc9',1,'rtabmap::OdometryDVO::getType()'],['../classrtabmap_1_1OdometryF2F.html#af0e2f40a3dd28b9e1e84159bcf9df323',1,'rtabmap::OdometryF2F::getType()'],['../classrtabmap_1_1OdometryF2M.html#aa0244571578fd8604470d8c21af01611',1,'rtabmap::OdometryF2M::getType()'],['../classrtabmap_1_1OdometryFLOAM.html#a311c8b022d0a2dc6219b97a8e2b40d84',1,'rtabmap::OdometryFLOAM::getType()'],['../classrtabmap_1_1OdometryLIOSAM.html#aea8d8aea35772e3b81ba3f74c6eb3415',1,'rtabmap::OdometryLIOSAM::getType()'],['../classrtabmap_1_1OdometryLOAM.html#a0833118684e4f836ec668b735f81da0d',1,'rtabmap::OdometryLOAM::getType()'],['../classrtabmap_1_1OdometryMono.html#ada54391f88a0704c4fab2d9a2b370a15',1,'rtabmap::OdometryMono::getType()'],['../classrtabmap_1_1OdometryMSCKF.html#a81657f9c46e39bfa48e1d0021c5af8ea',1,'rtabmap::OdometryMSCKF::getType()'],['../classrtabmap_1_1OdometryOkvis.html#ab93efd88da4ff30e4ee4a0ec525347d8',1,'rtabmap::OdometryOkvis::getType()'],['../classrtabmap_1_1OdometryOpen3D.html#a79c86c26bd892619797d6266243bb8d6',1,'rtabmap::OdometryOpen3D::getType()'],['../classrtabmap_1_1OdometryOpenVINS.html#a79898924aa5af5d59ce10028e876e387',1,'rtabmap::OdometryOpenVINS::getType()'],['../classrtabmap_1_1OdometryORBSLAM2.html#a8773eea08df092d237e17af96ff6d096',1,'rtabmap::OdometryORBSLAM2::getType()'],['../classrtabmap_1_1OdometryORBSLAM3.html#a6a4161d9be51ff66e3571ba912655029',1,'rtabmap::OdometryORBSLAM3::getType()'],['../classrtabmap_1_1OdometryVINSFusion.html#ac7e841322ccadfcfdec61cc3b698754a',1,'rtabmap::OdometryVINSFusion::getType()'],['../classrtabmap_1_1OdometryViso2.html#ae9bf8422bbf6d2c880098b828b5d6187',1,'rtabmap::OdometryViso2::getType()'],['../classrtabmap_1_1Parameters.html#a08f4ea48ac7dbd93cb322d1c89b455b0',1,'rtabmap::Parameters::getType()']]], + ['getuncompresseddata_165',['getUncompressedData',['../classrtabmap_1_1CompressionThread.html#aafdc57cad744cbe94b30a8abfe7711a4',1,'rtabmap::CompressionThread']]], + ['getunusedword_166',['getUnusedWord',['../classrtabmap_1_1VWDictionary.html#abbd007a028847ecbbdd50e3480ba95e3',1,'rtabmap::VWDictionary']]], + ['getunusedwordids_167',['getUnusedWordIds',['../classrtabmap_1_1VWDictionary.html#a64b0aee7f33cbd4df26e2d0c14329e9d',1,'rtabmap::VWDictionary']]], + ['getunusedwords_168',['getUnusedWords',['../classrtabmap_1_1VWDictionary.html#ab47b5ecb12c822474004f0ad77dbb388',1,'rtabmap::VWDictionary']]], + ['getunusedwordssize_169',['getUnusedWordsSize',['../classrtabmap_1_1VWDictionary.html#a117282f59ed918808d8116cd1f92f412',1,'rtabmap::VWDictionary']]], + ['getupdateerror_170',['getUpdateError',['../classrtabmap_1_1GlobalMap.html#a99c3840a89e76a091cf59cfaf1a8bcc4',1,'rtabmap::GlobalMap']]], + ['geturl_171',['getUrl',['../classrtabmap_1_1DBDriver.html#a79365611bce06aeda0d078641be89cab',1,'rtabmap::DBDriver']]], + ['getvelocity_172',['getVelocity',['../classrtabmap_1_1Signature.html#ae97f22fcb6799a5312c1948cb9f42c99',1,'rtabmap::Signature']]], + ['getvelocityguess_173',['getVelocityGuess',['../classrtabmap_1_1Odometry.html#aa6ab1c129163771b0d87e3e068a0427e',1,'rtabmap::Odometry']]], + ['getvirtualplaceprior_174',['getVirtualPlacePrior',['../classrtabmap_1_1BayesFilter.html#a1f479b2d242f05eef69532f454dc851f',1,'rtabmap::BayesFilter']]], + ['getvisualwords_175',['getVisualWords',['../classrtabmap_1_1VWDictionary.html#a6bcad4c04999469001b5ac03b8a61ab4',1,'rtabmap::VWDictionary']]], + ['getvwdictionary_176',['getVWDictionary',['../classrtabmap_1_1Memory.html#a61adae3b07b3daee32efd1abb4dac45e',1,'rtabmap::Memory']]], + ['getweight_177',['getWeight',['../classrtabmap_1_1Signature.html#a701b32c562d789929a18a19c08bac4ca',1,'rtabmap::Signature']]], + ['getweights_178',['getweights',['../classrtabmap_1_1Memory.html#a4d8bfc0b85f270dbb3fc66cde079b63e',1,'rtabmap::Memory::getWeights()'],['../classrtabmap_1_1Rtabmap.html#a353361aeeece3ce8c799d168a5798a01',1,'rtabmap::Rtabmap::getWeights() const']]], + ['getwm_179',['getWM',['../classrtabmap_1_1Rtabmap.html#ae3d40ed4ee48954e70d45e0779c24a49',1,'rtabmap::Rtabmap']]], + ['getwmsize_180',['getWMSize',['../classrtabmap_1_1Rtabmap.html#a203a18eb60f6c057518fd5129bbc32ff',1,'rtabmap::Rtabmap']]], + ['getword_181',['getWord',['../classrtabmap_1_1VWDictionary.html#a5cf9981cf11f8f93280b7d0c195159e1',1,'rtabmap::VWDictionary']]], + ['getwords_182',['getWords',['../classrtabmap_1_1Signature.html#a68eaa67c81d08e20d2b7a43b0659b1d4',1,'rtabmap::Signature']]], + ['getwords3_183',['getWords3',['../classrtabmap_1_1Signature.html#ab902bfc7cdde2542ffe7e5d441f90a66',1,'rtabmap::Signature']]], + ['getwordschanged_184',['getWordsChanged',['../classrtabmap_1_1Signature.html#a01f6eac0e5836aa921d65108b75249f6',1,'rtabmap::Signature']]], + ['getwordsdescriptors_185',['getWordsDescriptors',['../classrtabmap_1_1Signature.html#a1ed4181ac5cc7b477482459d680c63b1',1,'rtabmap::Signature']]], + ['getwordskpts_186',['getWordsKpts',['../classrtabmap_1_1Signature.html#a471f71821ceeec9a25e9e4e16673d14f',1,'rtabmap::Signature']]], + ['getworkingdir_187',['getWorkingDir',['../classrtabmap_1_1Rtabmap.html#a61bc4dce59a1da8b904a7dbe39e5038a',1,'rtabmap::Rtabmap']]], + ['getworkingmem_188',['getWorkingMem',['../classrtabmap_1_1Memory.html#ab6c0794ad1aac6e9084c0240e709cdc6',1,'rtabmap::Memory']]], + ['getworkingmemintermediatenodescount_189',['getWorkingMemIntermediateNodesCount',['../classrtabmap_1_1Memory.html#ad9b97cdfd95eb3c0dad649d755fc3267',1,'rtabmap::Memory']]], + ['getworkingmemsize_190',['getWorkingMemSize',['../classrtabmap_1_1Memory.html#a5ca9260a2a63fae6f3d16e1db9cbce53',1,'rtabmap::Memory']]], + ['globalbundleadjustment_191',['globalBundleAdjustment',['../classrtabmap_1_1Rtabmap.html#ab1044f290653749990018ca5722f00c7',1,'rtabmap::Rtabmap']]], + ['globaldescriptors_192',['globalDescriptors',['../classrtabmap_1_1SensorData.html#acd46b940bac6e1d53ff2826be309b4c8',1,'rtabmap::SensorData']]], + ['globalmap_193',['GlobalMap',['../classrtabmap_1_1GlobalMap.html#a03581caaa2a313b131726af4e4a6b714',1,'rtabmap::GlobalMap']]], + ['globalpose_194',['globalPose',['../classrtabmap_1_1SensorData.html#a55e6ca21bfd11b7afb375451a2a77b87',1,'rtabmap::SensorData']]], + ['globalposecovariance_195',['globalPoseCovariance',['../classrtabmap_1_1SensorData.html#a569af71e8757105dc040251a3805fe97',1,'rtabmap::SensorData']]], + ['gps_196',['gps',['../classrtabmap_1_1SensorData.html#a176b8160afc549fc6eaa2d0567c12957',1,'rtabmap::SensorData::gps()'],['../classrtabmap_1_1GPS.html#a488bb172e3b8836387e0994a31e709ef',1,'rtabmap::GPS::GPS(const double &stamp, const double &longitude, const double &latitude, const double &altitude, const double &error, const double &bearing)'],['../classrtabmap_1_1GPS.html#a4ea914df744ae5a9ff60eff6bb2c734d',1,'rtabmap::GPS::GPS()']]], + ['gravitysigma_197',['gravitySigma',['../classrtabmap_1_1Optimizer.html#aceb68e0f692b81c4a978e46f804515d7',1,'rtabmap::Optimizer']]], + ['gridcellsize_198',['gridCellSize',['../classrtabmap_1_1SensorData.html#a984ce55b6b75152a63441bd07288dc6c',1,'rtabmap::SensorData']]], + ['gridemptycellscompressed_199',['gridEmptyCellsCompressed',['../classrtabmap_1_1SensorData.html#ac2bae4f0747795f778275102b4ebf1b3',1,'rtabmap::SensorData']]], + ['gridemptycellsraw_200',['gridEmptyCellsRaw',['../classrtabmap_1_1SensorData.html#a490e96f3f1d16cc559b3a004e2ec4fbe',1,'rtabmap::SensorData']]], + ['gridgroundcellscompressed_201',['gridGroundCellsCompressed',['../classrtabmap_1_1SensorData.html#ab3c515b23322cd31c3fcbcb054588e43',1,'rtabmap::SensorData']]], + ['gridgroundcellsraw_202',['gridGroundCellsRaw',['../classrtabmap_1_1SensorData.html#a2db9b9dbbe3d0943a47cdc4a5a9051d4',1,'rtabmap::SensorData']]], + ['gridobstaclecellscompressed_203',['gridObstacleCellsCompressed',['../classrtabmap_1_1SensorData.html#a50b09c52de6c8c6a6a95ee08886845a0',1,'rtabmap::SensorData']]], + ['gridobstaclecellsraw_204',['gridObstacleCellsRaw',['../classrtabmap_1_1SensorData.html#a0f2e804ebbcff5be648a43f0a41e9dfc',1,'rtabmap::SensorData']]], + ['gridviewpoint_205',['gridViewPoint',['../classrtabmap_1_1SensorData.html#a51f21b98088ceec4c5d108d0fbe03200',1,'rtabmap::SensorData']]], + ['groundtruth_206',['groundTruth',['../classrtabmap_1_1SensorData.html#aef9e0c36efdc8915536c3bc082108689',1,'rtabmap::SensorData']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_7.js b/preview/pr-1773/api/latest/search/functions_7.js new file mode 100644 index 00000000..0cbddd2c --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['handleevent_0',['handleevent',['../classrtabmap_1_1OdometryThread.html#a65808dd7148c1e2c49dcf90ef718b5a8',1,'rtabmap::OdometryThread::handleEvent()'],['../classrtabmap_1_1RtabmapThread.html#ab2556f7773329963038d876c86e97d09',1,'rtabmap::RtabmapThread::handleEvent()'],['../classUEventsHandler.html#a0d43b582c19f01196a513f66d3618d8d',1,'UEventsHandler::handleEvent()']]], + ['haslink_1',['hasLink',['../classrtabmap_1_1Signature.html#ad71fa7c0466dbb5c5062953043c3fcb0',1,'rtabmap::Signature']]], + ['homedir_2',['homeDir',['../classUDirectory.html#a3338b47405f65f25a4256e0ea86bff07',1,'UDirectory']]], + ['horizontalfov_3',['horizontalFOV',['../classrtabmap_1_1CameraModel.html#a12abd4cac897f48bf862a96f0eba1d65',1,'rtabmap::CameraModel']]], + ['hsvtorgb_4',['HSVtoRGB',['../namespacertabmap_1_1util2d.html#ac29ac5b8bed26a5299d378708170dd11',1,'rtabmap::util2d']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_8.js b/preview/pr-1773/api/latest/search/functions_8.js new file mode 100644 index 00000000..7bd21ce4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_8.js @@ -0,0 +1,98 @@ +var searchData= +[ + ['icp_0',['icp',['../namespacertabmap_1_1util3d.html#af9f16d681288b1f91ce6e5a8ee9f6967',1,'rtabmap::util3d::icp(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZ > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)'],['../namespacertabmap_1_1util3d.html#a1a153cf0e597dd206c6a850957f6c1ef',1,'rtabmap::util3d::icp(const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZI >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZI > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)']]], + ['icppointtoplane_1',['icppointtoplane',['../namespacertabmap_1_1util3d.html#a6ac0f56608f1760d60eda7861b8dc303',1,'rtabmap::util3d::icpPointToPlane(const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointNormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)'],['../namespacertabmap_1_1util3d.html#a12d008fea5babe6a208fca7b1fb719d3',1,'rtabmap::util3d::icpPointToPlane(const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZINormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZINormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)']]], + ['id_2',['id',['../classrtabmap_1_1SensorData.html#a84fbcb16e51018d96065d3ce240650c6',1,'rtabmap::SensorData::id()'],['../classrtabmap_1_1Landmark.html#a2b5a5cbdb313813e3bb473a05b1145e2',1,'rtabmap::Landmark::id()'],['../classUObjDeletionThread.html#a027f81f93f7b78c442a094d944136f20',1,'UObjDeletionThread::id()'],['../classrtabmap_1_1VisualWord.html#a988fd37d739297c9b04c7dc156de3c66',1,'rtabmap::VisualWord::id()'],['../classrtabmap_1_1Signature.html#a31c6e7b7e720eca20fb5935e0ee1d9f9',1,'rtabmap::Signature::id()']]], + ['imagecompressed_3',['imageCompressed',['../classrtabmap_1_1SensorData.html#aafcc6b483798b7a99fafa8f929db1029',1,'rtabmap::SensorData']]], + ['imageraw_4',['imageRaw',['../classrtabmap_1_1SensorData.html#ae9e44401d0d6faee8fcb801090936fef',1,'rtabmap::SensorData']]], + ['imagesalreadyrectified_5',['imagesAlreadyRectified',['../classrtabmap_1_1Odometry.html#ac9ae854d14d44d82e1f20e8a4791b9c4',1,'rtabmap::Odometry']]], + ['importposes_6',['importPoses',['../namespacertabmap_1_1graph.html#a5c0eb890db7dba1c353d57595ccbdc6e',1,'rtabmap::graph']]], + ['imu_7',['imu',['../classrtabmap_1_1IMU.html#a76e674d3ef1865369e1416ae5ff76483',1,'rtabmap::IMU::IMU()'],['../classrtabmap_1_1IMU.html#a8db1233b6871dcbd58f1862cee2826fa',1,'rtabmap::IMU::IMU(const cv::Vec4d &orientation, const cv::Mat &orientationCovariance, const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1IMU.html#a3171afc29cdf8587a401b6da1b1908e6',1,'rtabmap::IMU::IMU(const cv::Vec3d &angularVelocity, const cv::Mat &angularVelocityCovariance, const cv::Vec3d &linearAcceleration, const cv::Mat &linearAccelerationCovariance, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1SensorData.html#a056056de80edf1bc20505fd992cdc6e7',1,'rtabmap::SensorData::imu()']]], + ['imuevent_8',['imuevent',['../classrtabmap_1_1IMUEvent.html#af041b297fa5f621dbc4fd085b16da800',1,'rtabmap::IMUEvent::IMUEvent(const IMU &data, double stamp)'],['../classrtabmap_1_1IMUEvent.html#a1ab86d7c16b1cadb44f0440808a9a81b',1,'rtabmap::IMUEvent::IMUEvent()']]], + ['imus_9',['imus',['../classrtabmap_1_1Odometry.html#a6c9ed388da42499d2244bb98c8ff0e8d',1,'rtabmap::Odometry']]], + ['imuthread_10',['IMUThread',['../classrtabmap_1_1IMUThread.html#a97a2c48c6bb7e29ae64147fc9f032ac3',1,'rtabmap::IMUThread']]], + ['incrementmapid_11',['incrementMapId',['../classrtabmap_1_1Memory.html#afce9dbf3e5657d65540e33c59e992d83',1,'rtabmap::Memory']]], + ['indexedfeatures_12',['indexedFeatures',['../classrtabmap_1_1FlannIndex.html#a759817fbddaf8c6bdb04ba0a44e9847a',1,'rtabmap::FlannIndex']]], + ['info_13',['info',['../classrtabmap_1_1SensorEvent.html#a89ec0e00ab443a71b4735e392e419331',1,'rtabmap::SensorEvent::info()'],['../classrtabmap_1_1OdometryEvent.html#a9d20ed607b8cc697c8aa5ca725e477a5',1,'rtabmap::OdometryEvent::info()']]], + ['inframe_14',['inFrame',['../classrtabmap_1_1CameraModel.html#aa07cbe07c7893e726c408392cf54d9ca',1,'rtabmap::CameraModel']]], + ['init_15',['init',['../classrtabmap_1_1CameraStereoTara.html#a3cd79ca07d74d6a3501f3ecd9b31bbef',1,'rtabmap::CameraStereoTara::init()'],['../classrtabmap_1_1CameraStereoVideo.html#a8bc165fb5c77bb9693203791a0888269',1,'rtabmap::CameraStereoVideo::init()'],['../classrtabmap_1_1CameraStereoZed.html#a80088853404d1c4e89b5f29933d7b020',1,'rtabmap::CameraStereoZed::init()'],['../classrtabmap_1_1CameraStereoZedOC.html#a37264abe58baa727bb5ee8d6653fa443',1,'rtabmap::CameraStereoZedOC::init()'],['../classrtabmap_1_1CameraVideo.html#a2b20fb67f20ec64e6c43e8d76d5c1f74',1,'rtabmap::CameraVideo::init()'],['../classrtabmap_1_1DBReader.html#a31b8ffc3d213da7ab58a85ce89b8055e',1,'rtabmap::DBReader::init()'],['../classrtabmap_1_1IMUThread.html#aeed84fd5d571a5e9af54c8c3ea16ef9d',1,'rtabmap::IMUThread::init()'],['../classrtabmap_1_1LidarVLP16.html#a80162804e05013f64c6868084f460ab0',1,'rtabmap::LidarVLP16::init()'],['../classrtabmap_1_1Memory.html#aeeabc78648bf7dc14ea1356828cdeddd',1,'rtabmap::Memory::init()'],['../classrtabmap_1_1Rtabmap.html#a711c479925db2c9f8201aacffe70281b',1,'rtabmap::Rtabmap::init(const ParametersMap &parameters, const std::string &databasePath="", bool loadDatabaseParameters=false)'],['../classrtabmap_1_1Rtabmap.html#a25bfb157aa3be3bd3c8a1d4200329041',1,'rtabmap::Rtabmap::init(const std::string &configFile="", const std::string &databasePath="", bool loadDatabaseParameters=false)'],['../classrtabmap_1_1SensorCapture.html#a1c0cd843969fab53f157cbe0fd333b8a',1,'rtabmap::SensorCapture::init()'],['../classrtabmap_1_1CameraStereoFlyCapture2.html#a46a2477a1c151927c9d5e7eea51d3354',1,'rtabmap::CameraStereoFlyCapture2::init()'],['../classrtabmap_1_1CameraK4A.html#af2c611c697451697f318405469bb23e8',1,'rtabmap::CameraK4A::init()'],['../classrtabmap_1_1CameraImages.html#a8f00b6eb8c78a66d3381877825d70206',1,'rtabmap::CameraImages::init()'],['../classrtabmap_1_1CameraFreenect2.html#aab9ed1bf2f64c6b8f6f95e25f94c4a8f',1,'rtabmap::CameraFreenect2::init()'],['../classrtabmap_1_1CameraFreenect.html#aa36a4142ea9e7dab7120690b1d4a7449',1,'rtabmap::CameraFreenect::init()'],['../classrtabmap_1_1CameraStereoImages.html#abc0cb4bfd56314d0003c6ce5d365cbca',1,'rtabmap::CameraStereoImages::init()'],['../classrtabmap_1_1CameraDepthAI.html#aeab341a67f8c9ef3a078ef4636f969c1',1,'rtabmap::CameraDepthAI::init()'],['../classrtabmap_1_1CameraK4W2.html#a33aec7e8863ddd2815a983a71e869127',1,'rtabmap::CameraK4W2::init()'],['../classrtabmap_1_1CameraMyntEye.html#a368591c828d3bb5aabfe8cae56d01304',1,'rtabmap::CameraMyntEye::init()'],['../classrtabmap_1_1CameraOpenni.html#aaa00fc3850c747fb261c87d4ad54827f',1,'rtabmap::CameraOpenni::init()'],['../classrtabmap_1_1CameraOpenNICV.html#a4d636b36e01de97d35fb0b6bb5fc3b7d',1,'rtabmap::CameraOpenNICV::init()'],['../classrtabmap_1_1CameraOrbbecSDK.html#a3a99d50d119791b9d3a36056aaddf59a',1,'rtabmap::CameraOrbbecSDK::init()'],['../classrtabmap_1_1CameraStereoDC1394.html#a2cc861b0f7c66b8e21267678f6f5f221',1,'rtabmap::CameraStereoDC1394::init()'],['../classrtabmap_1_1CameraSeerSense.html#a2fb66c8fa789c747b12c4ce85c8fc874',1,'rtabmap::CameraSeerSense::init()'],['../classrtabmap_1_1CameraRGBDImages.html#a21903042693fbbc0bfc1586225efb2dd',1,'rtabmap::CameraRGBDImages::init()'],['../classrtabmap_1_1CameraRealSense2.html#a7efbcb280ddd451a9c8fdbdba599c68f',1,'rtabmap::CameraRealSense2::init()'],['../classrtabmap_1_1CameraOpenNI2.html#a0c0da722b985da3595896fcc6bc72c7b',1,'rtabmap::CameraOpenNI2::init()'],['../classrtabmap_1_1CameraRealSense.html#a8c94957c92c38eee0d9ebbfd75d35a10',1,'rtabmap::CameraRealSense::init()']]], + ['initrectificationmap_16',['initrectificationmap',['../classrtabmap_1_1CameraModel.html#a5690a86d11b0d84e80961ae5d38b1d25',1,'rtabmap::CameraModel::initRectificationMap()'],['../classrtabmap_1_1StereoCameraModel.html#a544ee7d540dfe57c94863190d87898aa',1,'rtabmap::StereoCameraModel::initRectificationMap()']]], + ['interpolate_17',['interpolate',['../namespacertabmap_1_1util2d.html#afc241016af8396edf5228dbe9e80ee8d',1,'rtabmap::util2d::interpolate()'],['../classrtabmap_1_1Transform.html#af42b1c945a7fee57a26207fb96b7143d',1,'rtabmap::Transform::interpolate()']]], + ['intersectraytriangle_18',['intersectRayTriangle',['../namespacertabmap_1_1util3d.html#ab138227ab6c0511088e846b2276e7afc',1,'rtabmap::util3d']]], + ['inverse_19',['inverse',['../classrtabmap_1_1Transform.html#a71ff72d5731d252a87a19c63e3890e3a',1,'rtabmap::Transform::inverse()'],['../classrtabmap_1_1Link.html#a0d5dcb7392f6ac89ca8b4de202ca07d3',1,'rtabmap::Link::inverse()']]], + ['is3d_20',['is3D',['../classrtabmap_1_1LocalGrid.html#af4bac3ac9ffd57653dee619b5be2b4f7',1,'rtabmap::LocalGrid']]], + ['is3dof_21',['is3DoF',['../classrtabmap_1_1Transform.html#a61c6a6acf6b149caa67918331d73004a',1,'rtabmap::Transform']]], + ['is4dof_22',['is4DoF',['../classrtabmap_1_1Transform.html#adaa07bac5d863d028d277b84880aeaab',1,'rtabmap::Transform']]], + ['isavailable_23',['isavailable',['../classrtabmap_1_1Optimizer.html#afe0381a3b42926b7634027e522766eb1',1,'rtabmap::Optimizer::isAvailable()'],['../classrtabmap_1_1Feature2D.html#a6020550480c25d36f0b4255629e75ee2',1,'rtabmap::Feature2D::isAvailable()']]], + ['isbadsignature_24',['isBadSignature',['../classrtabmap_1_1Signature.html#a693874de0d6ede4fe5c5d43d6f4d8b55',1,'rtabmap::Signature']]], + ['isbindatakept_25',['isBinDataKept',['../classrtabmap_1_1Memory.html#a18a6e852d545751fbc348d2aae6d7fe0',1,'rtabmap::Memory']]], + ['isbool_26',['isBool',['../classUVariant.html#a1f5b265f0e4569021bd6bc212cae91f7',1,'UVariant']]], + ['isbuilt_27',['isBuilt',['../classrtabmap_1_1FlannIndex.html#a4a5c33446a515bd8f0c2f73a1adaeb23',1,'rtabmap::FlannIndex']]], + ['iscapturing_28',['isCapturing',['../classrtabmap_1_1SensorCaptureThread.html#ab2654b31ebdf06b375045fadbc83731a',1,'rtabmap::SensorCaptureThread']]], + ['ischar_29',['isChar',['../classUVariant.html#a644e3deffa081cacfdadddc1f504e6b6',1,'UVariant']]], + ['ischararray_30',['isCharArray',['../classUVariant.html#ab17409bb37beec9c62defdbe398dfe8b',1,'UVariant']]], + ['iscompressed_31',['isCompressed',['../classrtabmap_1_1LaserScan.html#a25e8e9681240f4a21960977f5c12bcd9',1,'rtabmap::LaserScan']]], + ['isconnected_32',['isConnected',['../classrtabmap_1_1DBDriver.html#a7b1222cf6e75d7365b5b90c37bca2a85',1,'rtabmap::DBDriver']]], + ['iscovarianceignored_33',['isCovarianceIgnored',['../classrtabmap_1_1Optimizer.html#a8bb6372ce4c67fd9b8d54f692ac34238',1,'rtabmap::Optimizer']]], + ['iscreating_34',['isCreating',['../classUThread.html#ac80eff7d48382fd230141ca286370d33',1,'UThread']]], + ['isdouble_35',['isDouble',['../classUVariant.html#a3b9f099698afa0716564960cce359a60',1,'UVariant']]], + ['isdoublearray_36',['isDoubleArray',['../classUVariant.html#aa0a91a91288b102857ebc978767d71c4',1,'UVariant']]], + ['isenabled_37',['isEnabled',['../classrtabmap_1_1Signature.html#a343a565680d03c45cc29dff7392b275e',1,'rtabmap::Signature']]], + ['isfinite_38',['isFinite',['../namespacertabmap_1_1util3d.html#acc048e10b70e3ad3efb299926e575020',1,'rtabmap::util3d']]], + ['isfisheye_39',['isFisheye',['../classrtabmap_1_1CameraModel.html#a3ceb0d36d8786f03b778d1969cb6e839',1,'rtabmap::CameraModel']]], + ['isfloat_40',['isFloat',['../classUVariant.html#a2d5757424cf7e69ede4564b82a7ab95c',1,'UVariant']]], + ['isfloatarray_41',['isFloatArray',['../classUVariant.html#a94c1a6cbd6c39968801cc4116bae3c55',1,'UVariant']]], + ['isgpuavailable_42',['isgpuavailable',['../classrtabmap_1_1SuperPointTorch.html#aee69f6089f657449d3813b440abbaa25',1,'rtabmap::SuperPointTorch::isGpuAvailable()'],['../classrtabmap_1_1Feature2D.html#a8d330b2b7db059f59c257cde6c9b6a99',1,'rtabmap::Feature2D::isGpuAvailable()'],['../classrtabmap_1_1SURF.html#a1150923dbf7e1bfd066dba0c3b22db57',1,'rtabmap::SURF::isGpuAvailable()'],['../classrtabmap_1_1SIFT.html#ad089f68ffc9ef1b42b5a9c2d5a5ecd81',1,'rtabmap::SIFT::isGpuAvailable()'],['../classrtabmap_1_1ORB.html#a7b5e3e7cc41dd04e517c5332f04d3a0a',1,'rtabmap::ORB::isGpuAvailable()'],['../classrtabmap_1_1FAST.html#a1418ac4de2bdf5815df888a4d1f50b2e',1,'rtabmap::FAST::isGpuAvailable()'],['../classrtabmap_1_1GFTT.html#a05151f04cf624576783837dc48ddf744',1,'rtabmap::GFTT::isGpuAvailable()'],['../classrtabmap_1_1SuperPointRpautrat.html#ac041c8738dc391661ba21331bf78d344',1,'rtabmap::SuperPointRpautrat::isGpuAvailable()']]], + ['isgpuenabled_43',['isgpuenabled',['../classrtabmap_1_1Stereo.html#ac1db900d4dbca15de73a81d32f0be179',1,'rtabmap::Stereo::isGpuEnabled()'],['../classrtabmap_1_1StereoOpticalFlow.html#abc4c02bc672566fc2dd3f7331b84944e',1,'rtabmap::StereoOpticalFlow::isGpuEnabled()']]], + ['isgraphreduced_44',['isGraphReduced',['../classrtabmap_1_1Memory.html#a790e24b6cb0fb3ec2ed198121a6211c1',1,'rtabmap::Memory']]], + ['isgridfromdepth_45',['isGridFromDepth',['../classrtabmap_1_1LocalGridMaker.html#a60f571f0fd1e58a1a82eb39bfeafda2a',1,'rtabmap::LocalGridMaker']]], + ['isidentity_46',['isIdentity',['../classrtabmap_1_1Transform.html#ae0636052ce31698d4d45afe4492ffab9',1,'rtabmap::Transform']]], + ['isidle_47',['isIdle',['../classUThread.html#a2c4554ad881c0532239a0930c2ebfe24',1,'UThread']]], + ['isidsgenerated_48',['isidsgenerated',['../classrtabmap_1_1Rtabmap.html#a5e85283c6421dcf9afb6961662e501b8',1,'rtabmap::Rtabmap::isIDsGenerated()'],['../classrtabmap_1_1Memory.html#a6d48ff5d4dfcf085123b5dd354fae681',1,'rtabmap::Memory::isIDsGenerated()']]], + ['isimagerequired_49',['isImageRequired',['../classrtabmap_1_1Registration.html#ae10ae7b6dbf4d5396db66600ebe18228',1,'rtabmap::Registration']]], + ['isincremental_50',['isincremental',['../classrtabmap_1_1Memory.html#a420ddb38a3ffefafc84d22b0dd3b3814',1,'rtabmap::Memory::isIncremental()'],['../classrtabmap_1_1VWDictionary.html#a706e209f6228c02730dd8ea501ab5369',1,'rtabmap::VWDictionary::isIncremental() const']]], + ['isincrementalflann_51',['isIncrementalFlann',['../classrtabmap_1_1VWDictionary.html#a9f016aa45f3b3d5618d104fb799ca998',1,'rtabmap::VWDictionary']]], + ['isinfodatafilled_52',['isInfoDataFilled',['../classrtabmap_1_1Odometry.html#a3276da70261724ceb03df8e410844a8c',1,'rtabmap::Odometry']]], + ['isinltm_53',['isInLTM',['../classrtabmap_1_1Memory.html#a2464a77e0190653e10ce9e60fb919ae9',1,'rtabmap::Memory']]], + ['isinmemory_54',['isinmemory',['../classrtabmap_1_1DBDriverSqlite3.html#af9cf8fda0fcc032efb44981d908b4e55',1,'rtabmap::DBDriverSqlite3::isInMemory()'],['../classrtabmap_1_1DBDriver.html#a0ecd6182f404d8e6822b66a54f1d248a',1,'rtabmap::DBDriver::isInMemory()']]], + ['isinstm_55',['isinstm',['../classrtabmap_1_1Memory.html#a19fe91598153249250ac4870db535e8e',1,'rtabmap::Memory::isInSTM()'],['../classrtabmap_1_1Rtabmap.html#a596ea3fbeb22c90db9530f6752900ecc',1,'rtabmap::Rtabmap::isInSTM()']]], + ['isint_56',['isInt',['../classUVariant.html#a4a22ee60a869140c36f80ff04f90c07b',1,'UVariant']]], + ['isintarray_57',['isIntArray',['../classUVariant.html#aa09528d4c1668a2dff51b0f12b3b1de3',1,'UVariant']]], + ['isinvertible_58',['isInvertible',['../classrtabmap_1_1Transform.html#addc1c06517c7308f00bd54b5744aa959',1,'rtabmap::Transform']]], + ['isinwm_59',['isInWM',['../classrtabmap_1_1Memory.html#a5058d8b44e4f76f1fedb76645087a1ac',1,'rtabmap::Memory']]], + ['iskilled_60',['isKilled',['../classUThread.html#a3a0d0de0f78eab72512941ccd048477b',1,'UThread']]], + ['islinksmodified_61',['isLinksModified',['../classrtabmap_1_1Signature.html#a93dcbd3cffc84808fe5652bf0f542ca9',1,'rtabmap::Signature']]], + ['islocalizationdatasaved_62',['isLocalizationDataSaved',['../classrtabmap_1_1Memory.html#a32ed69b783e53be29fca6102ab198a4e',1,'rtabmap::Memory']]], + ['ismapframeprojection_63',['isMapFrameProjection',['../classrtabmap_1_1LocalGridMaker.html#ae8fcd8ed901bc23bac3f14efb48567a9',1,'rtabmap::LocalGridMaker']]], + ['ismodified_64',['ismodified',['../classrtabmap_1_1Signature.html#ab63ee6d2a0e2cd456748a64d9990f969',1,'rtabmap::Signature::isModified()'],['../classrtabmap_1_1VWDictionary.html#aa0bcdf4002305d36bb072c019d475f13',1,'rtabmap::VWDictionary::isModified()']]], + ['isnodeassembled_65',['isNodeAssembled',['../classrtabmap_1_1GlobalMap.html#a9c853fcade3b4b9bd4f49b6a07025e6d',1,'rtabmap::GlobalMap']]], + ['isnull_66',['isNull',['../classrtabmap_1_1Transform.html#a0d6a1985391a45de4fe208e58c51b9d2',1,'rtabmap::Transform']]], + ['isodomgravityused_67',['isOdomGravityUsed',['../classrtabmap_1_1Memory.html#ab29b6d90e79694d7fdfb56574476141f',1,'rtabmap::Memory']]], + ['ispaused_68',['isPaused',['../classrtabmap_1_1SensorCaptureThread.html#a435f89b6a3186462f6ee860afa88644c',1,'rtabmap::SensorCaptureThread']]], + ['ispointvisiblefromcameras_69',['isPointVisibleFromCameras',['../classrtabmap_1_1SensorData.html#a30f069ee8ffa263ec2c18bc714713e03',1,'rtabmap::SensorData']]], + ['ispredictionsparse_70',['isPredictionSparse',['../classrtabmap_1_1BayesFilter.html#a8d65b71c1a2230fdefae41d90f73c0d5',1,'rtabmap::BayesFilter']]], + ['isreadonly_71',['isReadOnly',['../classrtabmap_1_1Memory.html#ad6d7488b61f8bedf6c9e3f4019a6b7f4',1,'rtabmap::Memory']]], + ['isrectificationmapinitialized_72',['isrectificationmapinitialized',['../classrtabmap_1_1StereoCameraModel.html#aa35a73db2fc272f0f33b40220b75fa43',1,'rtabmap::StereoCameraModel::isRectificationMapInitialized()'],['../classrtabmap_1_1CameraModel.html#a80cacb16d347e89980369cb2e02f3d48',1,'rtabmap::CameraModel::isRectificationMapInitialized()']]], + ['isrgbdmode_73',['isRGBDMode',['../classrtabmap_1_1Rtabmap.html#a691de75b6964ab48d7f1ea53ea40f4c1',1,'rtabmap::Rtabmap']]], + ['isrobust_74',['isRobust',['../classrtabmap_1_1Optimizer.html#a29ba07e1e829ae616d82756977161c9f',1,'rtabmap::Optimizer']]], + ['isrunning_75',['isRunning',['../classUThread.html#a38e2b22f0616ed4128312baff9cfeba9',1,'UThread']]], + ['issaved_76',['issaved',['../classrtabmap_1_1Signature.html#a0d15326165e9d01f0b91b247f5da23ea',1,'rtabmap::Signature::isSaved()'],['../classrtabmap_1_1VisualWord.html#a4a4d316a18741c30c8d2d5db50f3c4e7',1,'rtabmap::VisualWord::isSaved()']]], + ['isscanrequired_77',['isScanRequired',['../classrtabmap_1_1Registration.html#aa0748ad5a576d0919ef0d360137e5ea7',1,'rtabmap::Registration']]], + ['isshort_78',['isShort',['../classUVariant.html#a611898d77468fdb704aeaf20f5ebc5df',1,'UVariant']]], + ['isshortarray_79',['isShortArray',['../classUVariant.html#a671286922d321c4da699d4cebca3ca44',1,'UVariant']]], + ['isslam2d_80',['isSlam2d',['../classrtabmap_1_1Optimizer.html#a51485674608bbf910922ecee43cc13aa',1,'rtabmap::Optimizer']]], + ['isstr_81',['isStr',['../classUVariant.html#af431bdd37ebae79c5b778d66ad08cf50',1,'UVariant']]], + ['isuchar_82',['isUChar',['../classUVariant.html#af94e47d3da5a0ba9d605359ef843e5d4',1,'UVariant']]], + ['isuchararray_83',['isUCharArray',['../classUVariant.html#a66c02a68f48cab8c2952ebae7181b164',1,'UVariant']]], + ['isuint_84',['isUInt',['../classUVariant.html#aed53240d0ec77aca65317988753412dd',1,'UVariant']]], + ['isuintarray_85',['isUIntArray',['../classUVariant.html#af31b8bdca6cb78ebd3f8f6e97e895442',1,'UVariant']]], + ['isundef_86',['isUndef',['../classUVariant.html#aa33dc5850071f73864c280bd1d4e743b',1,'UVariant']]], + ['isuserdatarequired_87',['isUserDataRequired',['../classrtabmap_1_1Registration.html#a3cd064c74588fd13cce178596e188b5d',1,'rtabmap::Registration']]], + ['isushort_88',['isUShort',['../classUVariant.html#a87d098e60871ec85d179528d0a7bdc88',1,'UVariant']]], + ['isushortarray_89',['isUShortArray',['../classUVariant.html#a006cef10aa4c95539d0cd9d574de747d',1,'UVariant']]], + ['isvalid_90',['isvalid',['../classrtabmap_1_1Link.html#a53974a2cea4315106cf12065ace8bb96',1,'rtabmap::Link::isValid()'],['../classUFile.html#ad0ecde61a088d9fc3d034a513133341d',1,'UFile::isValid()'],['../classUDirectory.html#a8d471f3c9ff7391d25a52eab24255e64',1,'UDirectory::isValid()'],['../classrtabmap_1_1SensorData.html#ad620676ab1a971846ab80ef646aa5882',1,'rtabmap::SensorData::isValid()']]], + ['isvalidforprojection_91',['isvalidforprojection',['../classrtabmap_1_1StereoCameraModel.html#a6c16870b83978d286003b166fd6949cf',1,'rtabmap::StereoCameraModel::isValidForProjection()'],['../classrtabmap_1_1CameraModel.html#a7b6db41415e085d52bf363d09d5e6d67',1,'rtabmap::CameraModel::isValidForProjection()']]], + ['isvalidforrectification_92',['isvalidforrectification',['../classrtabmap_1_1StereoCameraModel.html#ac5e22eec7815cb27e436afada2b5769f',1,'rtabmap::StereoCameraModel::isValidForRectification()'],['../classrtabmap_1_1CameraModel.html#a46864eb8de680d45d79777e828dcbb6a',1,'rtabmap::CameraModel::isValidForRectification() const']]], + ['isvalidforreprojection_93',['isValidForReprojection',['../classrtabmap_1_1CameraModel.html#abd4db4f23eb05d531a34ee44f7cdb687',1,'rtabmap::CameraModel']]], + ['iterations_94',['iterations',['../classrtabmap_1_1Optimizer.html#a178bb719b0e22863e29add12c85e14a5',1,'rtabmap::Optimizer::iterations()'],['../classrtabmap_1_1Stereo.html#abde66966de114cd5649fd22602d27816',1,'rtabmap::Stereo::iterations()']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_9.js b/preview/pr-1773/api/latest/search/functions_9.js new file mode 100644 index 00000000..5d2c0abc --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['join_0',['join',['../classUThread.html#acf33c0e4b656af76da100e7d4f69ed1d',1,'UThread']]], + ['jointrashthread_1',['joinTrashThread',['../classrtabmap_1_1Memory.html#a2bba8c0aa57778bb441a97728d45a58e',1,'rtabmap::Memory']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_a.js b/preview/pr-1773/api/latest/search/functions_a.js new file mode 100644 index 00000000..d937247f --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_a.js @@ -0,0 +1,626 @@ +var searchData= +[ + ['k_0',['K',['../classrtabmap_1_1CameraModel.html#a5df2e6c3f361b7084e4d26d7f1846e3d',1,'rtabmap::CameraModel']]], + ['k_5fraw_1',['K_raw',['../classrtabmap_1_1CameraModel.html#ada626650b01d35b494016a5490efb31a',1,'rtabmap::CameraModel']]], + ['kbayesfullpredictionupdate_2',['kBayesFullPredictionUpdate',['../classrtabmap_1_1Parameters.html#a08f0a214eb15975386b5d06be56e38b4',1,'rtabmap::Parameters']]], + ['kbayespredictionlc_3',['kBayesPredictionLC',['../classrtabmap_1_1Parameters.html#aabfee3d6757a2269d7bbbbd3ebc20fb1',1,'rtabmap::Parameters']]], + ['kbayessparseprediction_4',['kBayesSparsePrediction',['../classrtabmap_1_1Parameters.html#ae8141b0f2cc33d7e47b8a5f4fc558bc1',1,'rtabmap::Parameters']]], + ['kbayesvirtualplacepriorthr_5',['kBayesVirtualPlacePriorThr',['../classrtabmap_1_1Parameters.html#af5f568511dbc4d9213d21acf1cedd65e',1,'rtabmap::Parameters']]], + ['kbriefbytes_6',['kBRIEFBytes',['../classrtabmap_1_1Parameters.html#a62ce1ff73ad01bb94bc5c1b19467e140',1,'rtabmap::Parameters']]], + ['kbriskoctaves_7',['kBRISKOctaves',['../classrtabmap_1_1Parameters.html#ad8e01f25d2fd5dbc2460db13f761dddf',1,'rtabmap::Parameters']]], + ['kbriskpatternscale_8',['kBRISKPatternScale',['../classrtabmap_1_1Parameters.html#a44b86ee14e1ed84d429fe58f889854c7',1,'rtabmap::Parameters']]], + ['kbriskthresh_9',['kBRISKThresh',['../classrtabmap_1_1Parameters.html#af0c6a76aca67ca854db89db8cbc17acc',1,'rtabmap::Parameters']]], + ['kdbsqlite3cachesize_10',['kDbSqlite3CacheSize',['../classrtabmap_1_1Parameters.html#a66f7bbca12f9fdf7db68b23e6216ef28',1,'rtabmap::Parameters']]], + ['kdbsqlite3inmemory_11',['kDbSqlite3InMemory',['../classrtabmap_1_1Parameters.html#af89c7aa5e4d7dea98fe2cd05e231346d',1,'rtabmap::Parameters']]], + ['kdbsqlite3journalmode_12',['kDbSqlite3JournalMode',['../classrtabmap_1_1Parameters.html#a8cf0412111ec59d46a4fb109bc3e8ad3',1,'rtabmap::Parameters']]], + ['kdbsqlite3synchronous_13',['kDbSqlite3Synchronous',['../classrtabmap_1_1Parameters.html#a23665c30783f8f7092c145bad3e359dd',1,'rtabmap::Parameters']]], + ['kdbsqlite3tempstore_14',['kDbSqlite3TempStore',['../classrtabmap_1_1Parameters.html#a2ee0c59c976d0fdffc18c690ab7aef73',1,'rtabmap::Parameters']]], + ['kdbtargetversion_15',['kDbTargetVersion',['../classrtabmap_1_1Parameters.html#a4356a08f2a4153665ff049e73000c303',1,'rtabmap::Parameters']]], + ['keypoints_16',['keypoints',['../classrtabmap_1_1SensorData.html#afdc0db8c8176c4108e78e66df54b7d94',1,'rtabmap::SensorData']]], + ['keypoints3d_17',['keypoints3D',['../classrtabmap_1_1SensorData.html#ab17daf3d7c2cd1253306e6d5991549df',1,'rtabmap::SensorData']]], + ['kfastcv_18',['kFASTCV',['../classrtabmap_1_1Parameters.html#a9868a2aa2ff8894d00088ca7aded75e0',1,'rtabmap::Parameters']]], + ['kfastgpu_19',['kFASTGpu',['../classrtabmap_1_1Parameters.html#ae1c7644f497ae8fe3ea1c31d20fb3e77',1,'rtabmap::Parameters']]], + ['kfastgpukeypointsratio_20',['kFASTGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#ae35a026ec83bca7ee057887a7c61e7aa',1,'rtabmap::Parameters']]], + ['kfastgridcols_21',['kFASTGridCols',['../classrtabmap_1_1Parameters.html#a495b537e66f3b84299ec6ddb4b655db3',1,'rtabmap::Parameters']]], + ['kfastgridrows_22',['kFASTGridRows',['../classrtabmap_1_1Parameters.html#a7baba0d971512a68bd19cd3ab5afce91',1,'rtabmap::Parameters']]], + ['kfastmaxthreshold_23',['kFASTMaxThreshold',['../classrtabmap_1_1Parameters.html#a0f183f29462258ed99a44d174405640a',1,'rtabmap::Parameters']]], + ['kfastminthreshold_24',['kFASTMinThreshold',['../classrtabmap_1_1Parameters.html#aefa8c1c443422ddc86b12b8c39d558c1',1,'rtabmap::Parameters']]], + ['kfastnonmaxsuppression_25',['kFASTNonmaxSuppression',['../classrtabmap_1_1Parameters.html#aa7ec4748a513318585530bdf77e23cb7',1,'rtabmap::Parameters']]], + ['kfastthreshold_26',['kFASTThreshold',['../classrtabmap_1_1Parameters.html#ab0310b05579e241dbf6233f2d90b4d40',1,'rtabmap::Parameters']]], + ['kfreaknoctaves_27',['kFREAKNOctaves',['../classrtabmap_1_1Parameters.html#af48faacb97db49ed8bfdfe5138996c6b',1,'rtabmap::Parameters']]], + ['kfreakorientationnormalized_28',['kFREAKOrientationNormalized',['../classrtabmap_1_1Parameters.html#a415c8e59ec5184ff1a53f11741a23787',1,'rtabmap::Parameters']]], + ['kfreakpatternscale_29',['kFREAKPatternScale',['../classrtabmap_1_1Parameters.html#a3bc68df8d08d383f6659e30e967b97da',1,'rtabmap::Parameters']]], + ['kfreakscalenormalized_30',['kFREAKScaleNormalized',['../classrtabmap_1_1Parameters.html#a9143c60d083a74debb69f96ef0bdd86c',1,'rtabmap::Parameters']]], + ['kg2ooptimizer_31',['kg2oOptimizer',['../classrtabmap_1_1Parameters.html#aef86c8d789e3c0883af2bdcc0bccc95a',1,'rtabmap::Parameters']]], + ['kg2osolver_32',['kg2oSolver',['../classrtabmap_1_1Parameters.html#a1fe7a65c4c54f17e60b55c73ffb94ec7',1,'rtabmap::Parameters']]], + ['kgfttblocksize_33',['kGFTTBlockSize',['../classrtabmap_1_1Parameters.html#ae16b197e0dedd91de692e1f147e3a2c6',1,'rtabmap::Parameters']]], + ['kgfttgpu_34',['kGFTTGpu',['../classrtabmap_1_1Parameters.html#ab29e59a1629d8d113cdf61f27a4b009f',1,'rtabmap::Parameters']]], + ['kgfttk_35',['kGFTTK',['../classrtabmap_1_1Parameters.html#a76531055869daa8a3500b1a2e59087ba',1,'rtabmap::Parameters']]], + ['kgfttmindistance_36',['kGFTTMinDistance',['../classrtabmap_1_1Parameters.html#aa1c20d6d51c8163c76d6d5f3b8776ec1',1,'rtabmap::Parameters']]], + ['kgfttqualitylevel_37',['kGFTTQualityLevel',['../classrtabmap_1_1Parameters.html#a464cba190eaeeeb112ab6c878db2f5f5',1,'rtabmap::Parameters']]], + ['kgfttuseharrisdetector_38',['kGFTTUseHarrisDetector',['../classrtabmap_1_1Parameters.html#ae7d3c6f4065a49a5a6f7f1d54b4bfcb5',1,'rtabmap::Parameters']]], + ['kgmsthresholdfactor_39',['kGMSThresholdFactor',['../classrtabmap_1_1Parameters.html#a4ac2b3550fbbd94f088b7b40a4fb7fe1',1,'rtabmap::Parameters']]], + ['kgmswithrotation_40',['kGMSWithRotation',['../classrtabmap_1_1Parameters.html#ae056f4c45333f9afe44cd2e7bffd7bdf',1,'rtabmap::Parameters']]], + ['kgmswithscale_41',['kGMSWithScale',['../classrtabmap_1_1Parameters.html#a1a6daaf29f6d0b92c036201c256c9644',1,'rtabmap::Parameters']]], + ['kgrid3d_42',['kGrid3D',['../classrtabmap_1_1Parameters.html#a9cc690fcb9e611d424ad844ae825ccfd',1,'rtabmap::Parameters']]], + ['kgridcellsize_43',['kGridCellSize',['../classrtabmap_1_1Parameters.html#a9ba0c8ad336348dd5a031bf858efb2d1',1,'rtabmap::Parameters']]], + ['kgridclusterradius_44',['kGridClusterRadius',['../classrtabmap_1_1Parameters.html#a2a1b1d1ad7b11b884f37e3dc7ecf468e',1,'rtabmap::Parameters']]], + ['kgriddepthdecimation_45',['kGridDepthDecimation',['../classrtabmap_1_1Parameters.html#a91ac51fd2094e2fae2ecfae7cf52e620',1,'rtabmap::Parameters']]], + ['kgriddepthroiratios_46',['kGridDepthRoiRatios',['../classrtabmap_1_1Parameters.html#a79d2fcd0644b3e2bf55b7b1c8b5f8ab1',1,'rtabmap::Parameters']]], + ['kgridflatobstacledetected_47',['kGridFlatObstacleDetected',['../classrtabmap_1_1Parameters.html#a50063c0dfbee1c62c3839575f5542d22',1,'rtabmap::Parameters']]], + ['kgridfootprintheight_48',['kGridFootprintHeight',['../classrtabmap_1_1Parameters.html#a234c4a08cbdf07bf8ffea053dfc6dcfc',1,'rtabmap::Parameters']]], + ['kgridfootprintlength_49',['kGridFootprintLength',['../classrtabmap_1_1Parameters.html#a57fa77623fe59b5c9868f235495e52a7',1,'rtabmap::Parameters']]], + ['kgridfootprintwidth_50',['kGridFootprintWidth',['../classrtabmap_1_1Parameters.html#ad1df593600fd9d68530e8f60bd5471ee',1,'rtabmap::Parameters']]], + ['kgridglobalaltitudedelta_51',['kGridGlobalAltitudeDelta',['../classrtabmap_1_1Parameters.html#aa693e91b029f7280b0a192ddd268ea9b',1,'rtabmap::Parameters']]], + ['kgridglobaleroded_52',['kGridGlobalEroded',['../classrtabmap_1_1Parameters.html#a9769fdbb898ef8fcad4b14a1b3f29526',1,'rtabmap::Parameters']]], + ['kgridglobalfloodfilldepth_53',['kGridGlobalFloodFillDepth',['../classrtabmap_1_1Parameters.html#aa9112f877f9d69592f68df92e72c2105',1,'rtabmap::Parameters']]], + ['kgridglobalfootprintradius_54',['kGridGlobalFootprintRadius',['../classrtabmap_1_1Parameters.html#a7fb452ec90123f1cf1bdad111fae27a1',1,'rtabmap::Parameters']]], + ['kgridglobalmaxnodes_55',['kGridGlobalMaxNodes',['../classrtabmap_1_1Parameters.html#ac201b49f3b57d1227cf46b6710cafde0',1,'rtabmap::Parameters']]], + ['kgridglobalminsize_56',['kGridGlobalMinSize',['../classrtabmap_1_1Parameters.html#a1eb487e17ac8232778ffb2e644777e94',1,'rtabmap::Parameters']]], + ['kgridglobaloccupancythr_57',['kGridGlobalOccupancyThr',['../classrtabmap_1_1Parameters.html#a50033bc725e85c2bff0504790b6b18e5',1,'rtabmap::Parameters']]], + ['kgridglobalprobclampingmax_58',['kGridGlobalProbClampingMax',['../classrtabmap_1_1Parameters.html#a93c2a22289a5eab0620adf1038f8d2f4',1,'rtabmap::Parameters']]], + ['kgridglobalprobclampingmin_59',['kGridGlobalProbClampingMin',['../classrtabmap_1_1Parameters.html#abc950468ca91f57cd90182049922a2a8',1,'rtabmap::Parameters']]], + ['kgridglobalprobhit_60',['kGridGlobalProbHit',['../classrtabmap_1_1Parameters.html#a278ec732e12af354ed4dfb34e4b4957b',1,'rtabmap::Parameters']]], + ['kgridglobalprobmiss_61',['kGridGlobalProbMiss',['../classrtabmap_1_1Parameters.html#affb9a27903cd4b3bee7e3ef9f0635927',1,'rtabmap::Parameters']]], + ['kgridglobalupdateerror_62',['kGridGlobalUpdateError',['../classrtabmap_1_1Parameters.html#ad8552e70b80bf9406fd87c807e6134b9',1,'rtabmap::Parameters']]], + ['kgridgroundisobstacle_63',['kGridGroundIsObstacle',['../classrtabmap_1_1Parameters.html#a0419d0da4d891367e2367e907ee8a68e',1,'rtabmap::Parameters']]], + ['kgridmapframeprojection_64',['kGridMapFrameProjection',['../classrtabmap_1_1Parameters.html#a0326a913a549ff0f891fcdde8fcfa80d',1,'rtabmap::Parameters']]], + ['kgridmaxgroundangle_65',['kGridMaxGroundAngle',['../classrtabmap_1_1Parameters.html#a0de6af7ecde2f2dd63297cd2f4cb2574',1,'rtabmap::Parameters']]], + ['kgridmaxgroundheight_66',['kGridMaxGroundHeight',['../classrtabmap_1_1Parameters.html#a85aa414c16d0b4dd0081358e165d1c90',1,'rtabmap::Parameters']]], + ['kgridmaxobstacleheight_67',['kGridMaxObstacleHeight',['../classrtabmap_1_1Parameters.html#a3537ee9eac938f50656016ab342a4d2a',1,'rtabmap::Parameters']]], + ['kgridminclustersize_68',['kGridMinClusterSize',['../classrtabmap_1_1Parameters.html#a94f89342ff5869a39aa2679de1e19ec5',1,'rtabmap::Parameters']]], + ['kgridmingroundheight_69',['kGridMinGroundHeight',['../classrtabmap_1_1Parameters.html#a5c769b2c45900713f3ebdc0080f47331',1,'rtabmap::Parameters']]], + ['kgridnoisefilteringminneighbors_70',['kGridNoiseFilteringMinNeighbors',['../classrtabmap_1_1Parameters.html#a12e51366977f318533bc867f8ad80281',1,'rtabmap::Parameters']]], + ['kgridnoisefilteringradius_71',['kGridNoiseFilteringRadius',['../classrtabmap_1_1Parameters.html#ab4e846f84fde809aed0f2a372cb4ffce',1,'rtabmap::Parameters']]], + ['kgridnormalk_72',['kGridNormalK',['../classrtabmap_1_1Parameters.html#a5e906ead524e0ea1e79d0e66fb51bb26',1,'rtabmap::Parameters']]], + ['kgridnormalssegmentation_73',['kGridNormalsSegmentation',['../classrtabmap_1_1Parameters.html#a70947485e501b5de0351fef74c55aca9',1,'rtabmap::Parameters']]], + ['kgridprevoxelfiltering_74',['kGridPreVoxelFiltering',['../classrtabmap_1_1Parameters.html#abdd9a3b28dc70ddf545f6f8ae4b9e78a',1,'rtabmap::Parameters']]], + ['kgridrangemax_75',['kGridRangeMax',['../classrtabmap_1_1Parameters.html#a182d6b4adf099ece1c2864ad47402e56',1,'rtabmap::Parameters']]], + ['kgridrangemin_76',['kGridRangeMin',['../classrtabmap_1_1Parameters.html#a98229e97473d896c4bb345e39d591073',1,'rtabmap::Parameters']]], + ['kgridraytracing_77',['kGridRayTracing',['../classrtabmap_1_1Parameters.html#aaf5a23830e3aee217920e18aeada9f00',1,'rtabmap::Parameters']]], + ['kgridscan2dunknownspacefilled_78',['kGridScan2dUnknownSpaceFilled',['../classrtabmap_1_1Parameters.html#aeadfd5e3a3ec56c8e2e3190ac79a6c4f',1,'rtabmap::Parameters']]], + ['kgridscandecimation_79',['kGridScanDecimation',['../classrtabmap_1_1Parameters.html#aaac7e3032b2b561ddfdccac2d4ee0576',1,'rtabmap::Parameters']]], + ['kgridsensor_80',['kGridSensor',['../classrtabmap_1_1Parameters.html#a17fb5272a86d8b1bfed8aac554ca8e98',1,'rtabmap::Parameters']]], + ['kgtsamincrelinearizeskip_81',['kGTSAMIncRelinearizeSkip',['../classrtabmap_1_1Parameters.html#a134ec2e200cdcd6939f5a76c597cddcc',1,'rtabmap::Parameters']]], + ['kgtsamincrelinearizethreshold_82',['kGTSAMIncRelinearizeThreshold',['../classrtabmap_1_1Parameters.html#a7303c20956fa4405ac8b2e7facb5ebed',1,'rtabmap::Parameters']]], + ['kgtsamincremental_83',['kGTSAMIncremental',['../classrtabmap_1_1Parameters.html#a85233821baf884eb986169e4f0d8823a',1,'rtabmap::Parameters']]], + ['kgtsamoptimizer_84',['kGTSAMOptimizer',['../classrtabmap_1_1Parameters.html#a7cc2c9525f9c2299054638a7b678d2db',1,'rtabmap::Parameters']]], + ['kicpccfilteroutfarthestpoints_85',['kIcpCCFilterOutFarthestPoints',['../classrtabmap_1_1Parameters.html#a0e461024f2f27269f0091fbeddddfc8b',1,'rtabmap::Parameters']]], + ['kicpccmaxfinalrms_86',['kIcpCCMaxFinalRMS',['../classrtabmap_1_1Parameters.html#a296483386b095ff93c27c7ddd5204d08',1,'rtabmap::Parameters']]], + ['kicpccsamplinglimit_87',['kIcpCCSamplingLimit',['../classrtabmap_1_1Parameters.html#a01d14f1bbd519db7c90def16a326dfc2',1,'rtabmap::Parameters']]], + ['kicpcorrespondenceratio_88',['kIcpCorrespondenceRatio',['../classrtabmap_1_1Parameters.html#ae945b67ac4b76cef103c807d21747d3b',1,'rtabmap::Parameters']]], + ['kicpdebugexportformat_89',['kIcpDebugExportFormat',['../classrtabmap_1_1Parameters.html#a75cedfb0422415f78403b3672b64cff7',1,'rtabmap::Parameters']]], + ['kicpdownsamplingstep_90',['kIcpDownsamplingStep',['../classrtabmap_1_1Parameters.html#a6b63072e02beaec51295bf29de44ded6',1,'rtabmap::Parameters']]], + ['kicpepsilon_91',['kIcpEpsilon',['../classrtabmap_1_1Parameters.html#a85af34771b5bafd29c885b84f4b699ef',1,'rtabmap::Parameters']]], + ['kicpfiltersenabled_92',['kIcpFiltersEnabled',['../classrtabmap_1_1Parameters.html#a39e12e0bbb367846ff321ca86058facc',1,'rtabmap::Parameters']]], + ['kicpforce4dof_93',['kIcpForce4DoF',['../classrtabmap_1_1Parameters.html#a4cd0f5d3a7c2b0a41a7675905dc258bf',1,'rtabmap::Parameters']]], + ['kicpiterations_94',['kIcpIterations',['../classrtabmap_1_1Parameters.html#a2361cfb9744c6a9f24f1d5165ea4cdd2',1,'rtabmap::Parameters']]], + ['kicpmaxcorrespondencedistance_95',['kIcpMaxCorrespondenceDistance',['../classrtabmap_1_1Parameters.html#a53b2beff5312e5957a1917451e83eb85',1,'rtabmap::Parameters']]], + ['kicpmaxrotation_96',['kIcpMaxRotation',['../classrtabmap_1_1Parameters.html#a1da2167a4b4d3cbbc8e64ec01a5f86eb',1,'rtabmap::Parameters']]], + ['kicpmaxtranslation_97',['kIcpMaxTranslation',['../classrtabmap_1_1Parameters.html#a37a34d17c3f3fbebcab43ae88dfaaa9b',1,'rtabmap::Parameters']]], + ['kicpoutlierratio_98',['kIcpOutlierRatio',['../classrtabmap_1_1Parameters.html#abed047178caae21cc8ca9c0569bfbdd9',1,'rtabmap::Parameters']]], + ['kicppmconfig_99',['kIcpPMConfig',['../classrtabmap_1_1Parameters.html#a0de0df17c7bee790bdccab2d906f0546',1,'rtabmap::Parameters']]], + ['kicppmmatcherepsilon_100',['kIcpPMMatcherEpsilon',['../classrtabmap_1_1Parameters.html#ac28b9e7aaa056625eb4ae150ce9a1cb6',1,'rtabmap::Parameters']]], + ['kicppmmatcherintensity_101',['kIcpPMMatcherIntensity',['../classrtabmap_1_1Parameters.html#a4f75209aa785bb97ad71d1a9eef4491f',1,'rtabmap::Parameters']]], + ['kicppmmatcherknn_102',['kIcpPMMatcherKnn',['../classrtabmap_1_1Parameters.html#aeb32e463df0faa2008ab07c7bce3d485',1,'rtabmap::Parameters']]], + ['kicppointtoplane_103',['kIcpPointToPlane',['../classrtabmap_1_1Parameters.html#ae382048d6b918b27df4ab78b63751752',1,'rtabmap::Parameters']]], + ['kicppointtoplanecomplexitycentered_104',['kIcpPointToPlaneComplexityCentered',['../classrtabmap_1_1Parameters.html#ac16600c46a84d055c58e7cb15cc174fd',1,'rtabmap::Parameters']]], + ['kicppointtoplanegroundnormalsup_105',['kIcpPointToPlaneGroundNormalsUp',['../classrtabmap_1_1Parameters.html#a6e7285a03ab276aba71a2eb07abde674',1,'rtabmap::Parameters']]], + ['kicppointtoplanek_106',['kIcpPointToPlaneK',['../classrtabmap_1_1Parameters.html#a67f1161f2fe567b36293f5b904557eac',1,'rtabmap::Parameters']]], + ['kicppointtoplanelowcomplexitystrategy_107',['kIcpPointToPlaneLowComplexityStrategy',['../classrtabmap_1_1Parameters.html#a24700377ca08f50ee4e96025f1e9efcb',1,'rtabmap::Parameters']]], + ['kicppointtoplanemincomplexity_108',['kIcpPointToPlaneMinComplexity',['../classrtabmap_1_1Parameters.html#af64d24ad74a083cec1930f49c2054241',1,'rtabmap::Parameters']]], + ['kicppointtoplaneradius_109',['kIcpPointToPlaneRadius',['../classrtabmap_1_1Parameters.html#a4671c80890369c5e110601577d07b1c9',1,'rtabmap::Parameters']]], + ['kicprangemax_110',['kIcpRangeMax',['../classrtabmap_1_1Parameters.html#a293a9d28b491a70d70a43a8ed6f9bca8',1,'rtabmap::Parameters']]], + ['kicprangemin_111',['kIcpRangeMin',['../classrtabmap_1_1Parameters.html#a2a7c04f4a38407f232cb072632909284',1,'rtabmap::Parameters']]], + ['kicpreciprocalcorrespondences_112',['kIcpReciprocalCorrespondences',['../classrtabmap_1_1Parameters.html#a6b551c66b2f1197470ef64a0ae865a67',1,'rtabmap::Parameters']]], + ['kicpstrategy_113',['kIcpStrategy',['../classrtabmap_1_1Parameters.html#aff92df532af017bd315b6934fcee89dd',1,'rtabmap::Parameters']]], + ['kicpvoxelsize_114',['kIcpVoxelSize',['../classrtabmap_1_1Parameters.html#aeaaf33d377ff1bbd3c25bca50360b85c',1,'rtabmap::Parameters']]], + ['kill_115',['kill',['../classUThread.html#a8dfefcfd68b453da08ddba9836f35965',1,'UThread']]], + ['kimufiltercomplementarybiasalpha_116',['kImuFilterComplementaryBiasAlpha',['../classrtabmap_1_1Parameters.html#a91de69282d3a74a375efe38fc98891d0',1,'rtabmap::Parameters']]], + ['kimufiltercomplementarydoadpativegain_117',['kImuFilterComplementaryDoAdpativeGain',['../classrtabmap_1_1Parameters.html#a49ebdfc1ad9b9480ba5ca647d1b5d980',1,'rtabmap::Parameters']]], + ['kimufiltercomplementarydobiasestimation_118',['kImuFilterComplementaryDoBiasEstimation',['../classrtabmap_1_1Parameters.html#ae535970456b8b0ce2e059c2d0f55209f',1,'rtabmap::Parameters']]], + ['kimufiltercomplementarygainacc_119',['kImuFilterComplementaryGainAcc',['../classrtabmap_1_1Parameters.html#a51d2a1d67f97668a89d78831f42fa937',1,'rtabmap::Parameters']]], + ['kimufiltermadgwickgain_120',['kImuFilterMadgwickGain',['../classrtabmap_1_1Parameters.html#a4ede524204bafa288690d1b314361b7e',1,'rtabmap::Parameters']]], + ['kimufiltermadgwickzeta_121',['kImuFilterMadgwickZeta',['../classrtabmap_1_1Parameters.html#a9699961272598a840f9e1e88e352a49f',1,'rtabmap::Parameters']]], + ['kkazediffusivity_122',['kKAZEDiffusivity',['../classrtabmap_1_1Parameters.html#a4038e9285978f2a7ad4eaae4e752de3b',1,'rtabmap::Parameters']]], + ['kkazeextended_123',['kKAZEExtended',['../classrtabmap_1_1Parameters.html#a84368df8fd55a3d2befdbba7ded234bf',1,'rtabmap::Parameters']]], + ['kkazenoctavelayers_124',['kKAZENOctaveLayers',['../classrtabmap_1_1Parameters.html#a90de23b13a9683ce6715fa10c1b6fc34',1,'rtabmap::Parameters']]], + ['kkazenoctaves_125',['kKAZENOctaves',['../classrtabmap_1_1Parameters.html#a47866a6b459883a233dba1bea52c0f7c',1,'rtabmap::Parameters']]], + ['kkazethreshold_126',['kKAZEThreshold',['../classrtabmap_1_1Parameters.html#adcf23394952cc6a8227a9e4110b22364',1,'rtabmap::Parameters']]], + ['kkazeupright_127',['kKAZEUpright',['../classrtabmap_1_1Parameters.html#a29daea80c2af6b3ce6179fdee91fd6b0',1,'rtabmap::Parameters']]], + ['kkpbadsignratio_128',['kKpBadSignRatio',['../classrtabmap_1_1Parameters.html#af636a4ac3e917b46f7bebbe841eec4f6',1,'rtabmap::Parameters']]], + ['kkpbytetofloat_129',['kKpByteToFloat',['../classrtabmap_1_1Parameters.html#a98de5152ce8f3bc8d1f197d20d4e778a',1,'rtabmap::Parameters']]], + ['kkpdetectorstrategy_130',['kKpDetectorStrategy',['../classrtabmap_1_1Parameters.html#ad61392cda3782e740f3023577a4839fc',1,'rtabmap::Parameters']]], + ['kkpdictionarypath_131',['kKpDictionaryPath',['../classrtabmap_1_1Parameters.html#a57e67dc855ce4b059baba6655c2077ef',1,'rtabmap::Parameters']]], + ['kkpflannindexsaved_132',['kKpFlannIndexSaved',['../classrtabmap_1_1Parameters.html#a866886411343233d86d96d574ea1c524',1,'rtabmap::Parameters']]], + ['kkpflannrebalancingfactor_133',['kKpFlannRebalancingFactor',['../classrtabmap_1_1Parameters.html#a17550d1f1b862a621c409d4e12c7696b',1,'rtabmap::Parameters']]], + ['kkpflannthreads_134',['kKpFlannThreads',['../classrtabmap_1_1Parameters.html#abe0297bd38661233f2b0fcf6851b1659',1,'rtabmap::Parameters']]], + ['kkpgridcols_135',['kKpGridCols',['../classrtabmap_1_1Parameters.html#a1a302199e3aa8f82688160732a637f4b',1,'rtabmap::Parameters']]], + ['kkpgridrows_136',['kKpGridRows',['../classrtabmap_1_1Parameters.html#a6e36653d2e375a7e3bfde9c7acc80178',1,'rtabmap::Parameters']]], + ['kkpincrementaldictionary_137',['kKpIncrementalDictionary',['../classrtabmap_1_1Parameters.html#adea90352705c00f23bd3f90d72b7fbdd',1,'rtabmap::Parameters']]], + ['kkpincrementalflann_138',['kKpIncrementalFlann',['../classrtabmap_1_1Parameters.html#a092387f2a424c8db4f2482742b0b0fb9',1,'rtabmap::Parameters']]], + ['kkpmaxdepth_139',['kKpMaxDepth',['../classrtabmap_1_1Parameters.html#acec9d7db5ce8c9b5e0595bf60158fbd0',1,'rtabmap::Parameters']]], + ['kkpmaxfeatures_140',['kKpMaxFeatures',['../classrtabmap_1_1Parameters.html#a6801f48aaaca4448f87ad459e168cd99',1,'rtabmap::Parameters']]], + ['kkpmindepth_141',['kKpMinDepth',['../classrtabmap_1_1Parameters.html#a1eac07ec17481a6a3ba2624ffecc1b73',1,'rtabmap::Parameters']]], + ['kkpnewwordscomparedtogether_142',['kKpNewWordsComparedTogether',['../classrtabmap_1_1Parameters.html#ad4a9e088d01469df176bd6f81e7a8669',1,'rtabmap::Parameters']]], + ['kkpnndrratio_143',['kKpNndrRatio',['../classrtabmap_1_1Parameters.html#a13f4bb57e661d37f80d3af034ee0431b',1,'rtabmap::Parameters']]], + ['kkpnnstrategy_144',['kKpNNStrategy',['../classrtabmap_1_1Parameters.html#a994321ccf32f126b6781aa1925a5fa66',1,'rtabmap::Parameters']]], + ['kkpparallelized_145',['kKpParallelized',['../classrtabmap_1_1Parameters.html#a3fe648463bf0faeb75fec21f2b0592ea',1,'rtabmap::Parameters']]], + ['kkproiratios_146',['kKpRoiRatios',['../classrtabmap_1_1Parameters.html#afe37a6e5b4eb946113b320b16bc39107',1,'rtabmap::Parameters']]], + ['kkpserializewithchecksum_147',['kKpSerializeWithChecksum',['../classrtabmap_1_1Parameters.html#a28ad6d76310026f362eef0296b1552db',1,'rtabmap::Parameters']]], + ['kkpssc_148',['kKpSSC',['../classrtabmap_1_1Parameters.html#a7230153ec64f937a4f431560a8520663',1,'rtabmap::Parameters']]], + ['kkpsubpixeps_149',['kKpSubPixEps',['../classrtabmap_1_1Parameters.html#a6fc9485a168e16fbbefd21f9951a947e',1,'rtabmap::Parameters']]], + ['kkpsubpixiterations_150',['kKpSubPixIterations',['../classrtabmap_1_1Parameters.html#a9560ca4e6065209b305018222c41f788',1,'rtabmap::Parameters']]], + ['kkpsubpixwinsize_151',['kKpSubPixWinSize',['../classrtabmap_1_1Parameters.html#acc06479235e5d65de80de98ea2e505c3',1,'rtabmap::Parameters']]], + ['kkptfidflikelihoodused_152',['kKpTfIdfLikelihoodUsed',['../classrtabmap_1_1Parameters.html#aca77bbee94284ba850b37c236c687b66',1,'rtabmap::Parameters']]], + ['kmarkerapriltagdebug_153',['kMarkerAprilTagDebug',['../classrtabmap_1_1Parameters.html#afa504a77adb75f55aadb411b20b8d045',1,'rtabmap::Parameters']]], + ['kmarkerapriltagdecodesharpening_154',['kMarkerAprilTagDecodeSharpening',['../classrtabmap_1_1Parameters.html#a74415d642cb1d4b315709a3a13cedfc5',1,'rtabmap::Parameters']]], + ['kmarkerapriltagnthreads_155',['kMarkerAprilTagNThreads',['../classrtabmap_1_1Parameters.html#aa3c83e283de96089f746b2fabfde9043',1,'rtabmap::Parameters']]], + ['kmarkerapriltagquaddecimate_156',['kMarkerAprilTagQuadDecimate',['../classrtabmap_1_1Parameters.html#ad970898e86da4015b8f6d4163a4072e6',1,'rtabmap::Parameters']]], + ['kmarkerapriltagquadsigma_157',['kMarkerAprilTagQuadSigma',['../classrtabmap_1_1Parameters.html#a8f0c040aa563a799b6ce754389423928',1,'rtabmap::Parameters']]], + ['kmarkerapriltagrefineedges_158',['kMarkerAprilTagRefineEdges',['../classrtabmap_1_1Parameters.html#a4f5d2e60e056fa202b656df2ff319daa',1,'rtabmap::Parameters']]], + ['kmarkerdictionary_159',['kMarkerDictionary',['../classrtabmap_1_1Parameters.html#adf1ae580fe3e8859f550840b9bc419a9',1,'rtabmap::Parameters']]], + ['kmarkerlength_160',['kMarkerLength',['../classrtabmap_1_1Parameters.html#ae2ca732fba21a575b6da17af7654879f',1,'rtabmap::Parameters']]], + ['kmarkerlengths_161',['kMarkerLengths',['../classrtabmap_1_1Parameters.html#aae0264aeec232dc1567d18ec0054a0d5',1,'rtabmap::Parameters']]], + ['kmarkermaxdeptherror_162',['kMarkerMaxDepthError',['../classrtabmap_1_1Parameters.html#adbb982c507014c608d445bd7092cd8aa',1,'rtabmap::Parameters']]], + ['kmarkermaxrange_163',['kMarkerMaxRange',['../classrtabmap_1_1Parameters.html#a765d58c7021570a38f0ac26ddac6bf6c',1,'rtabmap::Parameters']]], + ['kmarkerminrange_164',['kMarkerMinRange',['../classrtabmap_1_1Parameters.html#a7384c7c242639781743b73874585c864',1,'rtabmap::Parameters']]], + ['kmarkeropencvcornerrefinementmethod_165',['kMarkerOpenCVCornerRefinementMethod',['../classrtabmap_1_1Parameters.html#a9858aa16eb660ea69e0523d30407fe84',1,'rtabmap::Parameters']]], + ['kmarkerpriors_166',['kMarkerPriors',['../classrtabmap_1_1Parameters.html#ad5e03b34213d481ba80d6878f98c7a2a',1,'rtabmap::Parameters']]], + ['kmarkerpriorsvarianceangular_167',['kMarkerPriorsVarianceAngular',['../classrtabmap_1_1Parameters.html#ad7eae2c7445b3cec440feac79c3aa635',1,'rtabmap::Parameters']]], + ['kmarkerpriorsvariancelinear_168',['kMarkerPriorsVarianceLinear',['../classrtabmap_1_1Parameters.html#ad6f8a80869d7886c66a201f39c323a0b',1,'rtabmap::Parameters']]], + ['kmarkerstrategy_169',['kMarkerStrategy',['../classrtabmap_1_1Parameters.html#adab3040e45ae1e39b166e6d5e09b449e',1,'rtabmap::Parameters']]], + ['kmarkervarianceangular_170',['kMarkerVarianceAngular',['../classrtabmap_1_1Parameters.html#a52bc876b7e7aa0e0026cbb52f1c80caf',1,'rtabmap::Parameters']]], + ['kmarkervariancelinear_171',['kMarkerVarianceLinear',['../classrtabmap_1_1Parameters.html#af925249a8ef55540e0145e36b529160b',1,'rtabmap::Parameters']]], + ['kmarkervarianceorientationignored_172',['kMarkerVarianceOrientationIgnored',['../classrtabmap_1_1Parameters.html#a2dee7c32c6693d890b2c8c5cd23af8e5',1,'rtabmap::Parameters']]], + ['kmembadsignaturesignored_173',['kMemBadSignaturesIgnored',['../classrtabmap_1_1Parameters.html#a24abc1ea580d7553742be1da9b175c8e',1,'rtabmap::Parameters']]], + ['kmembindatakept_174',['kMemBinDataKept',['../classrtabmap_1_1Parameters.html#a23b09c6b9123ff098daadfbcb3910547',1,'rtabmap::Parameters']]], + ['kmemcompressionparallelized_175',['kMemCompressionParallelized',['../classrtabmap_1_1Parameters.html#ac4326a6ce26a1e3589103353d96379eb',1,'rtabmap::Parameters']]], + ['kmemcovoffdiagignored_176',['kMemCovOffDiagIgnored',['../classrtabmap_1_1Parameters.html#a18d4f880bb91b668ab13ccee01342901',1,'rtabmap::Parameters']]], + ['kmemdepthasmask_177',['kMemDepthAsMask',['../classrtabmap_1_1Parameters.html#aefa32418f8abf3ed074bfc63ea4b0abc',1,'rtabmap::Parameters']]], + ['kmemdepthcompressionformat_178',['kMemDepthCompressionFormat',['../classrtabmap_1_1Parameters.html#aae33ed5cddc4a5478f73381645791c66',1,'rtabmap::Parameters']]], + ['kmemdepthmaskfloorthr_179',['kMemDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#a30cb0472505fb0df71d22bf5152314c0',1,'rtabmap::Parameters']]], + ['kmemgenerateids_180',['kMemGenerateIds',['../classrtabmap_1_1Parameters.html#ab764242425564aa2f46aa6f6b130848c',1,'rtabmap::Parameters']]], + ['kmemglobaldescriptorstrategy_181',['kMemGlobalDescriptorStrategy',['../classrtabmap_1_1Parameters.html#ada839b937aee38aa9f2286fbce94c587',1,'rtabmap::Parameters']]], + ['kmemimagecompressionformat_182',['kMemImageCompressionFormat',['../classrtabmap_1_1Parameters.html#ad9e4e91a5578d8e4331f7137881c7994',1,'rtabmap::Parameters']]], + ['kmemimagekept_183',['kMemImageKept',['../classrtabmap_1_1Parameters.html#a7d0a4460d46e31758947da907a771003',1,'rtabmap::Parameters']]], + ['kmemimagepostdecimation_184',['kMemImagePostDecimation',['../classrtabmap_1_1Parameters.html#a762f5541544dc053ce2da49fb20e5d47',1,'rtabmap::Parameters']]], + ['kmemimagepredecimation_185',['kMemImagePreDecimation',['../classrtabmap_1_1Parameters.html#aa9ec8ff31384d52a1dcb84b7c7f4f47d',1,'rtabmap::Parameters']]], + ['kmemincrementalmemory_186',['kMemIncrementalMemory',['../classrtabmap_1_1Parameters.html#acdc74cd2b096ba28d9c1e00040b69d42',1,'rtabmap::Parameters']]], + ['kmeminitwmwithallnodes_187',['kMemInitWMWithAllNodes',['../classrtabmap_1_1Parameters.html#a3f77423afadcf608c70439a2285c00fe',1,'rtabmap::Parameters']]], + ['kmemintermediatenodedatakept_188',['kMemIntermediateNodeDataKept',['../classrtabmap_1_1Parameters.html#ab92caa11849247f945733c9726331a1e',1,'rtabmap::Parameters']]], + ['kmemlaserscandownsamplestepsize_189',['kMemLaserScanDownsampleStepSize',['../classrtabmap_1_1Parameters.html#a82306640f9636e0383f60c9573decb74',1,'rtabmap::Parameters']]], + ['kmemlaserscannormalk_190',['kMemLaserScanNormalK',['../classrtabmap_1_1Parameters.html#ad6050c26a4552d646d9fa519a830bea1',1,'rtabmap::Parameters']]], + ['kmemlaserscannormalradius_191',['kMemLaserScanNormalRadius',['../classrtabmap_1_1Parameters.html#a0bc25e1e8384bee8e7c2feac80979809',1,'rtabmap::Parameters']]], + ['kmemlaserscanvoxelsize_192',['kMemLaserScanVoxelSize',['../classrtabmap_1_1Parameters.html#a4ba8b0d1eac69cec0b55a48e6e368b4a',1,'rtabmap::Parameters']]], + ['kmemloadvisuallocalfeaturesoninit_193',['kMemLoadVisualLocalFeaturesOnInit',['../classrtabmap_1_1Parameters.html#abc9f4e248d0f4c4013b7fd9f53f394b9',1,'rtabmap::Parameters']]], + ['kmemlocalizationdatasaved_194',['kMemLocalizationDataSaved',['../classrtabmap_1_1Parameters.html#aa5a4f5d2c71072ea2896c7ae2c8dda12',1,'rtabmap::Parameters']]], + ['kmemlocalizationreadonly_195',['kMemLocalizationReadOnly',['../classrtabmap_1_1Parameters.html#a326e79acb5a39f7da481f9771501030c',1,'rtabmap::Parameters']]], + ['kmemmaplabelsadded_196',['kMemMapLabelsAdded',['../classrtabmap_1_1Parameters.html#a4f0f23726bbc332d8b7014e74bc52252',1,'rtabmap::Parameters']]], + ['kmemnotlinkednodeskept_197',['kMemNotLinkedNodesKept',['../classrtabmap_1_1Parameters.html#aa64b9331ee411f41941ca5635da09f81',1,'rtabmap::Parameters']]], + ['kmemrawdescriptorskept_198',['kMemRawDescriptorsKept',['../classrtabmap_1_1Parameters.html#abca9942e65b415db926d23373803b151',1,'rtabmap::Parameters']]], + ['kmemrecentwmratio_199',['kMemRecentWmRatio',['../classrtabmap_1_1Parameters.html#a4459441e2574e19b15fedb9cb0bc3fd9',1,'rtabmap::Parameters']]], + ['kmemreducegraph_200',['kMemReduceGraph',['../classrtabmap_1_1Parameters.html#a5b838d1204f572de9f39904de5e22ed5',1,'rtabmap::Parameters']]], + ['kmemrehearsalidupdatedtonewone_201',['kMemRehearsalIdUpdatedToNewOne',['../classrtabmap_1_1Parameters.html#ac9b2dcf91f6fee0a7d099c65e055a8dc',1,'rtabmap::Parameters']]], + ['kmemrehearsalsimilarity_202',['kMemRehearsalSimilarity',['../classrtabmap_1_1Parameters.html#a634f4790c9c84772935bf406265bc692',1,'rtabmap::Parameters']]], + ['kmemrehearsalweightignoredwhilemoving_203',['kMemRehearsalWeightIgnoredWhileMoving',['../classrtabmap_1_1Parameters.html#af96149d636262363159cebc9c554884a',1,'rtabmap::Parameters']]], + ['kmemrotateimagesupsideup_204',['kMemRotateImagesUpsideUp',['../classrtabmap_1_1Parameters.html#a65474937d0e1e01e02d29dc773363353',1,'rtabmap::Parameters']]], + ['kmemsavedepth16format_205',['kMemSaveDepth16Format',['../classrtabmap_1_1Parameters.html#a528843d4d3b5d53e152e424c91559ab3',1,'rtabmap::Parameters']]], + ['kmemstereofrommotion_206',['kMemStereoFromMotion',['../classrtabmap_1_1Parameters.html#a0eaad81168b2e41ca12bc16210723ea8',1,'rtabmap::Parameters']]], + ['kmemstmsize_207',['kMemSTMSize',['../classrtabmap_1_1Parameters.html#a46dc1a24b02bb00014262f7f4d818a49',1,'rtabmap::Parameters']]], + ['kmemtransfersortingbyweightid_208',['kMemTransferSortingByWeightId',['../classrtabmap_1_1Parameters.html#aea65d81db6cbca6869d7ee1b8e1003a7',1,'rtabmap::Parameters']]], + ['kmemuseodomfeatures_209',['kMemUseOdomFeatures',['../classrtabmap_1_1Parameters.html#a2f9669812fc65ec213e54b97e71ba6fd',1,'rtabmap::Parameters']]], + ['kmemuseodomgravity_210',['kMemUseOdomGravity',['../classrtabmap_1_1Parameters.html#ab53fe6e9b2e23d37c6a7af8f52354848',1,'rtabmap::Parameters']]], + ['knnsearch_211',['knnSearch',['../classrtabmap_1_1FlannIndex.html#aee58e859aa067646b4c6ffd63b593928',1,'rtabmap::FlannIndex']]], + ['kodomalignwithground_212',['kOdomAlignWithGround',['../classrtabmap_1_1Parameters.html#af7560d62a725e93669225843403625e5',1,'rtabmap::Parameters']]], + ['kodomcuvslammulticammode_213',['kOdomCuVSLAMMulticamMode',['../classrtabmap_1_1Parameters.html#a27425f8e3e56f5a804d0dd5be78b9788',1,'rtabmap::Parameters']]], + ['kodomdeskewing_214',['kOdomDeskewing',['../classrtabmap_1_1Parameters.html#a5a45711027dd93b66a34e72c20aa2208',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustment_215',['kOdomF2MBundleAdjustment',['../classrtabmap_1_1Parameters.html#a1e100b918823cb30dee7732858159252',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustmentmaxframes_216',['kOdomF2MBundleAdjustmentMaxFrames',['../classrtabmap_1_1Parameters.html#ac7e487bf17bd21dcf04450ecb6f01d22',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustmentmaxkeyframesperfeature_217',['kOdomF2MBundleAdjustmentMaxKeyFramesPerFeature',['../classrtabmap_1_1Parameters.html#aa02e6cbbf40685c86c1795fbc8be24b6',1,'rtabmap::Parameters']]], + ['kodomf2mbundleadjustmentminmotion_218',['kOdomF2MBundleAdjustmentMinMotion',['../classrtabmap_1_1Parameters.html#ae13b73cac8d3bb01aa48a1c59d33252a',1,'rtabmap::Parameters']]], + ['kodomf2mbundleupdatefeaturemaponallframes_219',['kOdomF2MBundleUpdateFeatureMapOnAllFrames',['../classrtabmap_1_1Parameters.html#aafbd529e88aa7d92dc489dda0ac65b9f',1,'rtabmap::Parameters']]], + ['kodomf2mfloorthreshold_220',['kOdomF2MFloorThreshold',['../classrtabmap_1_1Parameters.html#a8c677b2f3514b5f3837a1ad1948cbe17',1,'rtabmap::Parameters']]], + ['kodomf2minitdepthfactor_221',['kOdomF2MInitDepthFactor',['../classrtabmap_1_1Parameters.html#a66a915924c4f779aab3cda1749822995',1,'rtabmap::Parameters']]], + ['kodomf2mmaxnewfeatures_222',['kOdomF2MMaxNewFeatures',['../classrtabmap_1_1Parameters.html#aaee9367c69f35649b0bafecb87360297',1,'rtabmap::Parameters']]], + ['kodomf2mmaxsize_223',['kOdomF2MMaxSize',['../classrtabmap_1_1Parameters.html#ac2e15108edeaa0a3df35a738d5582412',1,'rtabmap::Parameters']]], + ['kodomf2mscanmaxsize_224',['kOdomF2MScanMaxSize',['../classrtabmap_1_1Parameters.html#a49944814bb280accc31948b3afeb8284',1,'rtabmap::Parameters']]], + ['kodomf2mscanrange_225',['kOdomF2MScanRange',['../classrtabmap_1_1Parameters.html#a9385355ad45a97d99505ad34e8656519',1,'rtabmap::Parameters']]], + ['kodomf2mscansubtractangle_226',['kOdomF2MScanSubtractAngle',['../classrtabmap_1_1Parameters.html#ace6fede03ca5f163f569ae214191c86a',1,'rtabmap::Parameters']]], + ['kodomf2mscansubtractradius_227',['kOdomF2MScanSubtractRadius',['../classrtabmap_1_1Parameters.html#a2c54a0a4f8dd3f9290a122bd1a1bc136',1,'rtabmap::Parameters']]], + ['kodomf2mvaliddepthratio_228',['kOdomF2MValidDepthRatio',['../classrtabmap_1_1Parameters.html#a7effab382c8878014c9f3df2c3c14532',1,'rtabmap::Parameters']]], + ['kodomfillinfodata_229',['kOdomFillInfoData',['../classrtabmap_1_1Parameters.html#a731259601c7919cdea1649d3e2c96b59',1,'rtabmap::Parameters']]], + ['kodomfilteringstrategy_230',['kOdomFilteringStrategy',['../classrtabmap_1_1Parameters.html#a15b57b97754e10867ffb5e8682de5431',1,'rtabmap::Parameters']]], + ['kodomfovisbucketheight_231',['kOdomFovisBucketHeight',['../classrtabmap_1_1Parameters.html#a744da9d3d3f7dc02f81b172ad700cdac',1,'rtabmap::Parameters']]], + ['kodomfovisbucketwidth_232',['kOdomFovisBucketWidth',['../classrtabmap_1_1Parameters.html#a9f10b2dc12a040a9ec11b88b988a08e6',1,'rtabmap::Parameters']]], + ['kodomfoviscliqueinlierthreshold_233',['kOdomFovisCliqueInlierThreshold',['../classrtabmap_1_1Parameters.html#a65eb222b6f5cedf807b5b84d72c635eb',1,'rtabmap::Parameters']]], + ['kodomfovisfastthreshold_234',['kOdomFovisFastThreshold',['../classrtabmap_1_1Parameters.html#ae1cfe589e2ffc8bfde6a7a7093c8e059',1,'rtabmap::Parameters']]], + ['kodomfovisfastthresholdadaptivegain_235',['kOdomFovisFastThresholdAdaptiveGain',['../classrtabmap_1_1Parameters.html#ac40e00e9a3f9304f9fd43289b191374f',1,'rtabmap::Parameters']]], + ['kodomfovisfeaturesearchwindow_236',['kOdomFovisFeatureSearchWindow',['../classrtabmap_1_1Parameters.html#aef81f182c48b63b8e2fadacc44c1d104',1,'rtabmap::Parameters']]], + ['kodomfovisfeaturewindowsize_237',['kOdomFovisFeatureWindowSize',['../classrtabmap_1_1Parameters.html#aad1b5418b5d5b9634e3a1950db187a07',1,'rtabmap::Parameters']]], + ['kodomfovisinliermaxreprojectionerror_238',['kOdomFovisInlierMaxReprojectionError',['../classrtabmap_1_1Parameters.html#a3ae340e3124c4f76ff87aa90b67589ea',1,'rtabmap::Parameters']]], + ['kodomfovismaxkeypointsperbucket_239',['kOdomFovisMaxKeypointsPerBucket',['../classrtabmap_1_1Parameters.html#a20969af48b8ec864ce45867cbf99e4e3',1,'rtabmap::Parameters']]], + ['kodomfovismaxmeanreprojectionerror_240',['kOdomFovisMaxMeanReprojectionError',['../classrtabmap_1_1Parameters.html#a66bf879149f455f630be435984e0d954',1,'rtabmap::Parameters']]], + ['kodomfovismaxpyramidlevel_241',['kOdomFovisMaxPyramidLevel',['../classrtabmap_1_1Parameters.html#a12fa062b2c413fdfd454e93262078b20',1,'rtabmap::Parameters']]], + ['kodomfovisminfeaturesforestimate_242',['kOdomFovisMinFeaturesForEstimate',['../classrtabmap_1_1Parameters.html#a8a5c8f7e914c32a9fcdd406a9d69f4da',1,'rtabmap::Parameters']]], + ['kodomfovisminpyramidlevel_243',['kOdomFovisMinPyramidLevel',['../classrtabmap_1_1Parameters.html#aebe817683724aad1a92c0ed4188559a7',1,'rtabmap::Parameters']]], + ['kodomfovisstereomaxdisparity_244',['kOdomFovisStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a556f56fbb700a484357a85d4617611d5',1,'rtabmap::Parameters']]], + ['kodomfovisstereomaxdistepipolarline_245',['kOdomFovisStereoMaxDistEpipolarLine',['../classrtabmap_1_1Parameters.html#a7fb8ad6bcfcda4a67e6cf65ab66a185f',1,'rtabmap::Parameters']]], + ['kodomfovisstereomaxrefinementdisplacement_246',['kOdomFovisStereoMaxRefinementDisplacement',['../classrtabmap_1_1Parameters.html#aef9e7481720f740ea8724e3d26a2069f',1,'rtabmap::Parameters']]], + ['kodomfovisstereorequiremutualmatch_247',['kOdomFovisStereoRequireMutualMatch',['../classrtabmap_1_1Parameters.html#a2fe2a8419d7d1698b2f12a32c04eeaf8',1,'rtabmap::Parameters']]], + ['kodomfovistargetpixelsperfeature_248',['kOdomFovisTargetPixelsPerFeature',['../classrtabmap_1_1Parameters.html#a13faae85a4a6bb055778f1c665bf1b54',1,'rtabmap::Parameters']]], + ['kodomfovisupdatetargetfeatureswithrefined_249',['kOdomFovisUpdateTargetFeaturesWithRefined',['../classrtabmap_1_1Parameters.html#a90aeeb8779b98ebc6f2ed37ccff65706',1,'rtabmap::Parameters']]], + ['kodomfovisuseadaptivethreshold_250',['kOdomFovisUseAdaptiveThreshold',['../classrtabmap_1_1Parameters.html#a58658c4845925903fcd7648b3eec1b4a',1,'rtabmap::Parameters']]], + ['kodomfovisusebucketing_251',['kOdomFovisUseBucketing',['../classrtabmap_1_1Parameters.html#ae462378abc3d679003488a9ce53b469e',1,'rtabmap::Parameters']]], + ['kodomfovisusehomographyinitialization_252',['kOdomFovisUseHomographyInitialization',['../classrtabmap_1_1Parameters.html#a20fc95398f95398ccc6f05b114f5ca67',1,'rtabmap::Parameters']]], + ['kodomfovisuseimagenormalization_253',['kOdomFovisUseImageNormalization',['../classrtabmap_1_1Parameters.html#aa1be833e830a748beada3b28ec6ac08d',1,'rtabmap::Parameters']]], + ['kodomfovisusesubpixelrefinement_254',['kOdomFovisUseSubpixelRefinement',['../classrtabmap_1_1Parameters.html#aae0a36ddfa53108e0364e78028ff8bb8',1,'rtabmap::Parameters']]], + ['kodomguessmotion_255',['kOdomGuessMotion',['../classrtabmap_1_1Parameters.html#aa8aacc8ff9b434b5a48ab7eabe5c63a6',1,'rtabmap::Parameters']]], + ['kodomguesssmoothingdelay_256',['kOdomGuessSmoothingDelay',['../classrtabmap_1_1Parameters.html#aabd0b7d996517264f6ce43db1aa6ed05',1,'rtabmap::Parameters']]], + ['kodomholonomic_257',['kOdomHolonomic',['../classrtabmap_1_1Parameters.html#ad684e56c2ae46549ad5353856353b1bb',1,'rtabmap::Parameters']]], + ['kodomimagebuffersize_258',['kOdomImageBufferSize',['../classrtabmap_1_1Parameters.html#a30cefe955bb9d7b08c979ad3f952a67f',1,'rtabmap::Parameters']]], + ['kodomimagedecimation_259',['kOdomImageDecimation',['../classrtabmap_1_1Parameters.html#a63ec6b90d6059736eee8892e041c14ac',1,'rtabmap::Parameters']]], + ['kodomkalmanmeasurementnoise_260',['kOdomKalmanMeasurementNoise',['../classrtabmap_1_1Parameters.html#aefc194010c06d28f0cbbcb388b616e36',1,'rtabmap::Parameters']]], + ['kodomkalmanprocessnoise_261',['kOdomKalmanProcessNoise',['../classrtabmap_1_1Parameters.html#a1059215b26f49a5009b0b1282dc26f1d',1,'rtabmap::Parameters']]], + ['kodomkeyframethr_262',['kOdomKeyFrameThr',['../classrtabmap_1_1Parameters.html#a09dc498e4a45882548ee3fd0096437b2',1,'rtabmap::Parameters']]], + ['kodomliosamangvar_263',['kOdomLIOSAMAngVar',['../classrtabmap_1_1Parameters.html#ae28d1bf81e35c7efb5c4ef046f0ed992',1,'rtabmap::Parameters']]], + ['kodomliosamconfigpath_264',['kOdomLIOSAMConfigPath',['../classrtabmap_1_1Parameters.html#ae7ce134a23996f591fd25009c76a35cc',1,'rtabmap::Parameters']]], + ['kodomliosamedgethreshold_265',['kOdomLIOSAMEdgeThreshold',['../classrtabmap_1_1Parameters.html#a2b833e994021defea70616fbf9b2d4a8',1,'rtabmap::Parameters']]], + ['kodomliosamhorizonscan_266',['kOdomLIOSAMHorizonScan',['../classrtabmap_1_1Parameters.html#a5a95908105f5d021a14408d3eec45b6c',1,'rtabmap::Parameters']]], + ['kodomliosamimuaccbiasn_267',['kOdomLIOSAMImuAccBiasN',['../classrtabmap_1_1Parameters.html#aff3db8de86740f9fc32e8fd58d0bf802',1,'rtabmap::Parameters']]], + ['kodomliosamimuaccnoise_268',['kOdomLIOSAMImuAccNoise',['../classrtabmap_1_1Parameters.html#a31c60191b5bc678c79a82ca761ac3a48',1,'rtabmap::Parameters']]], + ['kodomliosamimugravity_269',['kOdomLIOSAMImuGravity',['../classrtabmap_1_1Parameters.html#ad73dc484450f36a7c48b07d1cce44a0d',1,'rtabmap::Parameters']]], + ['kodomliosamimugyrbiasn_270',['kOdomLIOSAMImuGyrBiasN',['../classrtabmap_1_1Parameters.html#a2c3d56f1670bf084c5cbd160a8be8910',1,'rtabmap::Parameters']]], + ['kodomliosamimugyrnoise_271',['kOdomLIOSAMImuGyrNoise',['../classrtabmap_1_1Parameters.html#a036d6db0050b4fc379c2db741d3bfd41',1,'rtabmap::Parameters']]], + ['kodomliosamlinvar_272',['kOdomLIOSAMLinVar',['../classrtabmap_1_1Parameters.html#a11ad24dadfe5dde517b609670f0ebf7b',1,'rtabmap::Parameters']]], + ['kodomliosamnscan_273',['kOdomLIOSAMNScan',['../classrtabmap_1_1Parameters.html#af401123102635a35bc777f490a6e1957',1,'rtabmap::Parameters']]], + ['kodomliosamsensor_274',['kOdomLIOSAMSensor',['../classrtabmap_1_1Parameters.html#a215590b4d2fc18ed0787d28a7e163236',1,'rtabmap::Parameters']]], + ['kodomliosamsurfthreshold_275',['kOdomLIOSAMSurfThreshold',['../classrtabmap_1_1Parameters.html#a9c1e3efc4b39629b870df2740ab197e9',1,'rtabmap::Parameters']]], + ['kodomloamangvar_276',['kOdomLOAMAngVar',['../classrtabmap_1_1Parameters.html#a550ec3874edea033a5b5233749fe25ad',1,'rtabmap::Parameters']]], + ['kodomloamlinvar_277',['kOdomLOAMLinVar',['../classrtabmap_1_1Parameters.html#ade3ae9dbcffaee6ddee578df0b1f195c',1,'rtabmap::Parameters']]], + ['kodomloamlocalmapping_278',['kOdomLOAMLocalMapping',['../classrtabmap_1_1Parameters.html#a1cd4a929870ee08a96751824fa4b6488',1,'rtabmap::Parameters']]], + ['kodomloamresolution_279',['kOdomLOAMResolution',['../classrtabmap_1_1Parameters.html#a1090dbec15707c3b4a4f17bb910cd8f7',1,'rtabmap::Parameters']]], + ['kodomloamscanperiod_280',['kOdomLOAMScanPeriod',['../classrtabmap_1_1Parameters.html#a5376cc7310b2c21fca0bdce08941a088',1,'rtabmap::Parameters']]], + ['kodomloamsensor_281',['kOdomLOAMSensor',['../classrtabmap_1_1Parameters.html#af35265b29bae9493f52b8fa9a0d34173',1,'rtabmap::Parameters']]], + ['kodommonoinitminflow_282',['kOdomMonoInitMinFlow',['../classrtabmap_1_1Parameters.html#a99923433ee8de71ca37647163bb6f85e',1,'rtabmap::Parameters']]], + ['kodommonoinitmintranslation_283',['kOdomMonoInitMinTranslation',['../classrtabmap_1_1Parameters.html#a86423103ab9ba4aec563e963bd72d664',1,'rtabmap::Parameters']]], + ['kodommonomaxvariance_284',['kOdomMonoMaxVariance',['../classrtabmap_1_1Parameters.html#a05fb10e20f11bdb85a45b4f5c6fd6499',1,'rtabmap::Parameters']]], + ['kodommonomintranslation_285',['kOdomMonoMinTranslation',['../classrtabmap_1_1Parameters.html#af152770f40cbebe08c36b3f4d737d113',1,'rtabmap::Parameters']]], + ['kodommsckffastthreshold_286',['kOdomMSCKFFastThreshold',['../classrtabmap_1_1Parameters.html#aaf287c576d2c5adff97ea2ae307cac1c',1,'rtabmap::Parameters']]], + ['kodommsckfgridcol_287',['kOdomMSCKFGridCol',['../classrtabmap_1_1Parameters.html#a73a4a976d34cd5281d1cbaff776cb439',1,'rtabmap::Parameters']]], + ['kodommsckfgridmaxfeaturenum_288',['kOdomMSCKFGridMaxFeatureNum',['../classrtabmap_1_1Parameters.html#aea2f2394e02784418067a3cbb2eba452',1,'rtabmap::Parameters']]], + ['kodommsckfgridminfeaturenum_289',['kOdomMSCKFGridMinFeatureNum',['../classrtabmap_1_1Parameters.html#a40b2d33377e238ec95854ffdceb78ba5',1,'rtabmap::Parameters']]], + ['kodommsckfgridrow_290',['kOdomMSCKFGridRow',['../classrtabmap_1_1Parameters.html#ae0f8a2fff7c230a8e36d336d59faed6f',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovaccbias_291',['kOdomMSCKFInitCovAccBias',['../classrtabmap_1_1Parameters.html#ad71578b33c054acb036326083d35f09c',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovexrot_292',['kOdomMSCKFInitCovExRot',['../classrtabmap_1_1Parameters.html#a4548c5ff88f4d5ca657d0717d4ef74fa',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovextrans_293',['kOdomMSCKFInitCovExTrans',['../classrtabmap_1_1Parameters.html#ae8a214f7a7562f3cd445d2811484ddc2',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovgyrobias_294',['kOdomMSCKFInitCovGyroBias',['../classrtabmap_1_1Parameters.html#a77ae4a5fd18592700240e7344ad0344d',1,'rtabmap::Parameters']]], + ['kodommsckfinitcovvel_295',['kOdomMSCKFInitCovVel',['../classrtabmap_1_1Parameters.html#a2ef3975e17c1e215f0d1dcf5cff20d24',1,'rtabmap::Parameters']]], + ['kodommsckfmaxcamstatesize_296',['kOdomMSCKFMaxCamStateSize',['../classrtabmap_1_1Parameters.html#aaab6359b5620a95b1c967dff2ab72de4',1,'rtabmap::Parameters']]], + ['kodommsckfmaxiteration_297',['kOdomMSCKFMaxIteration',['../classrtabmap_1_1Parameters.html#a2ff10b93d973eb90e37a7afb189f061b',1,'rtabmap::Parameters']]], + ['kodommsckfnoiseacc_298',['kOdomMSCKFNoiseAcc',['../classrtabmap_1_1Parameters.html#acd7337159a241b04e9fac54088d04a1f',1,'rtabmap::Parameters']]], + ['kodommsckfnoiseaccbias_299',['kOdomMSCKFNoiseAccBias',['../classrtabmap_1_1Parameters.html#a9edab849122244f2b11ef4af1ce860b2',1,'rtabmap::Parameters']]], + ['kodommsckfnoisefeature_300',['kOdomMSCKFNoiseFeature',['../classrtabmap_1_1Parameters.html#adea08e24e51fe243942eb8c37b810891',1,'rtabmap::Parameters']]], + ['kodommsckfnoisegyro_301',['kOdomMSCKFNoiseGyro',['../classrtabmap_1_1Parameters.html#a04dc7de74cc871bce963f07828e7e1f3',1,'rtabmap::Parameters']]], + ['kodommsckfnoisegyrobias_302',['kOdomMSCKFNoiseGyroBias',['../classrtabmap_1_1Parameters.html#ac6ef522958c4e243e747791a43c4bd06',1,'rtabmap::Parameters']]], + ['kodommsckfopttranslationthreshold_303',['kOdomMSCKFOptTranslationThreshold',['../classrtabmap_1_1Parameters.html#a3efe4962858f2b19bd3e1fc89becb31f',1,'rtabmap::Parameters']]], + ['kodommsckfpatchsize_304',['kOdomMSCKFPatchSize',['../classrtabmap_1_1Parameters.html#a516a633d52369f909d9d0d73dbbc6ccb',1,'rtabmap::Parameters']]], + ['kodommsckfpositionstdthreshold_305',['kOdomMSCKFPositionStdThreshold',['../classrtabmap_1_1Parameters.html#a3309b0dce94e4543b0044cc9c7412e5e',1,'rtabmap::Parameters']]], + ['kodommsckfpyramidlevels_306',['kOdomMSCKFPyramidLevels',['../classrtabmap_1_1Parameters.html#a2c16ca59dc1c5dd9a57fad95e4bb334c',1,'rtabmap::Parameters']]], + ['kodommsckfransacthreshold_307',['kOdomMSCKFRansacThreshold',['../classrtabmap_1_1Parameters.html#acdd404b323afa2146c0e00d1d13d4fed',1,'rtabmap::Parameters']]], + ['kodommsckfrotationthreshold_308',['kOdomMSCKFRotationThreshold',['../classrtabmap_1_1Parameters.html#aa790d6612eb50a969759099c6f37531b',1,'rtabmap::Parameters']]], + ['kodommsckfstereothreshold_309',['kOdomMSCKFStereoThreshold',['../classrtabmap_1_1Parameters.html#a64faaac653e93fe672e5710066a046d1',1,'rtabmap::Parameters']]], + ['kodommsckftrackingratethreshold_310',['kOdomMSCKFTrackingRateThreshold',['../classrtabmap_1_1Parameters.html#a173c34cdf5d376054a077369c1dc877e',1,'rtabmap::Parameters']]], + ['kodommsckftrackprecision_311',['kOdomMSCKFTrackPrecision',['../classrtabmap_1_1Parameters.html#a5072892ce86ad4335cf120f6b292af65',1,'rtabmap::Parameters']]], + ['kodommsckftranslationthreshold_312',['kOdomMSCKFTranslationThreshold',['../classrtabmap_1_1Parameters.html#a6c1a216b9db3c31f32ce230cd5ef29d4',1,'rtabmap::Parameters']]], + ['kodomokvisconfigpath_313',['kOdomOKVISConfigPath',['../classrtabmap_1_1Parameters.html#acd5cb2b77739ac361d5697054849f34d',1,'rtabmap::Parameters']]], + ['kodomopen3dmaxdepth_314',['kOdomOpen3DMaxDepth',['../classrtabmap_1_1Parameters.html#a9d17a7c4785bb56e78de44991ce084a1',1,'rtabmap::Parameters']]], + ['kodomopen3dmethod_315',['kOdomOpen3DMethod',['../classrtabmap_1_1Parameters.html#ab4468a9f811ecb9d61dc9d9830f6713b',1,'rtabmap::Parameters']]], + ['kodomopenvinsaccelerometernoisedensity_316',['kOdomOpenVINSAccelerometerNoiseDensity',['../classrtabmap_1_1Parameters.html#a03c79ba04e7a6fc99a95e52ef6202e49',1,'rtabmap::Parameters']]], + ['kodomopenvinsaccelerometerrandomwalk_317',['kOdomOpenVINSAccelerometerRandomWalk',['../classrtabmap_1_1Parameters.html#a5b2948cbe311579bf9487fd9d803a7d9',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibcamextrinsics_318',['kOdomOpenVINSCalibCamExtrinsics',['../classrtabmap_1_1Parameters.html#a1d2879fe2d595a561fe24e957c5d8d5b',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibcamintrinsics_319',['kOdomOpenVINSCalibCamIntrinsics',['../classrtabmap_1_1Parameters.html#a8e9fe6dbacb3205e6ec30ba261da2d86',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibcamtimeoffset_320',['kOdomOpenVINSCalibCamTimeoffset',['../classrtabmap_1_1Parameters.html#ab5b3936fac2822d08581807bb156cef8',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibimugsensitivity_321',['kOdomOpenVINSCalibIMUGSensitivity',['../classrtabmap_1_1Parameters.html#a767adc5ac036a3877f03aed0ae409f57',1,'rtabmap::Parameters']]], + ['kodomopenvinscalibimuintrinsics_322',['kOdomOpenVINSCalibIMUIntrinsics',['../classrtabmap_1_1Parameters.html#a35974b70e2316ed21f4b4093d314bde2',1,'rtabmap::Parameters']]], + ['kodomopenvinsconfigpath_323',['kOdomOpenVINSConfigPath',['../classrtabmap_1_1Parameters.html#a02d9ea1d2455ea336d4b9d63f233de55',1,'rtabmap::Parameters']]], + ['kodomopenvinsdtslamdelay_324',['kOdomOpenVINSDtSLAMDelay',['../classrtabmap_1_1Parameters.html#a5ed128310066c0899723f893951fce65',1,'rtabmap::Parameters']]], + ['kodomopenvinsfeatrepmsckf_325',['kOdomOpenVINSFeatRepMSCKF',['../classrtabmap_1_1Parameters.html#a17b098830298626405687884bd2c3c4a',1,'rtabmap::Parameters']]], + ['kodomopenvinsfeatrepslam_326',['kOdomOpenVINSFeatRepSLAM',['../classrtabmap_1_1Parameters.html#a90ef9d8a0991272708468d92dbd18d6a',1,'rtabmap::Parameters']]], + ['kodomopenvinsfimaxbaseline_327',['kOdomOpenVINSFiMaxBaseline',['../classrtabmap_1_1Parameters.html#a7eaf290406c8aa94a1747a35167b7999',1,'rtabmap::Parameters']]], + ['kodomopenvinsfimaxcondnumber_328',['kOdomOpenVINSFiMaxCondNumber',['../classrtabmap_1_1Parameters.html#abc77793e626341417d494b575e91a9ba',1,'rtabmap::Parameters']]], + ['kodomopenvinsfimaxruns_329',['kOdomOpenVINSFiMaxRuns',['../classrtabmap_1_1Parameters.html#a9aa274f0521b23aa11fb4f0e002be04b',1,'rtabmap::Parameters']]], + ['kodomopenvinsfirefinefeatures_330',['kOdomOpenVINSFiRefineFeatures',['../classrtabmap_1_1Parameters.html#a97b1a3b121207f3c8f44fc6952efae02',1,'rtabmap::Parameters']]], + ['kodomopenvinsfitriangulate1d_331',['kOdomOpenVINSFiTriangulate1d',['../classrtabmap_1_1Parameters.html#a7f3109884f7e284e4be84fcbb2f1c602',1,'rtabmap::Parameters']]], + ['kodomopenvinsgravitymag_332',['kOdomOpenVINSGravityMag',['../classrtabmap_1_1Parameters.html#a914137b26df1f4bca974a184dd232f81',1,'rtabmap::Parameters']]], + ['kodomopenvinsgyroscopenoisedensity_333',['kOdomOpenVINSGyroscopeNoiseDensity',['../classrtabmap_1_1Parameters.html#a34a573ddd7efa314fa9db6ffd9674dd0',1,'rtabmap::Parameters']]], + ['kodomopenvinsgyroscoperandomwalk_334',['kOdomOpenVINSGyroscopeRandomWalk',['../classrtabmap_1_1Parameters.html#ac92cb81aca03b6fd017a18d897fe5294',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationba_335',['kOdomOpenVINSInitDynInflationBa',['../classrtabmap_1_1Parameters.html#add075de0b2f9113398bc129531e99f11',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationbg_336',['kOdomOpenVINSInitDynInflationBg',['../classrtabmap_1_1Parameters.html#a262d61c15d9f4767b7dbcd280bd67339',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationori_337',['kOdomOpenVINSInitDynInflationOri',['../classrtabmap_1_1Parameters.html#a14c9c1f9694b8c2f1e68167107a82b93',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdyninflationvel_338',['kOdomOpenVINSInitDynInflationVel',['../classrtabmap_1_1Parameters.html#a4de220b423dcd3ab37f339c13dff07ce',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmindeg_339',['kOdomOpenVINSInitDynMinDeg',['../classrtabmap_1_1Parameters.html#a8a536d333787c518517a52c7f7fb3982',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynminreccond_340',['kOdomOpenVINSInitDynMinRecCond',['../classrtabmap_1_1Parameters.html#aad31fe30adc719b24d45e1101ca78d8e',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmlemaxiter_341',['kOdomOpenVINSInitDynMLEMaxIter',['../classrtabmap_1_1Parameters.html#a4521e8dd715d864f7db81b6f338ba116',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmlemaxthreads_342',['kOdomOpenVINSInitDynMLEMaxThreads',['../classrtabmap_1_1Parameters.html#a8823827872d96094c9ae7626590aa3e9',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmlemaxtime_343',['kOdomOpenVINSInitDynMLEMaxTime',['../classrtabmap_1_1Parameters.html#adec78fa253e919225c7088bb15f2e53e',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynmleoptcalib_344',['kOdomOpenVINSInitDynMLEOptCalib',['../classrtabmap_1_1Parameters.html#ac34c14ffa84d06cfe386fd5a127f0cfb',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynnumpose_345',['kOdomOpenVINSInitDynNumPose',['../classrtabmap_1_1Parameters.html#a210d5826bfe8a3253cdc106b18eb1d5d',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitdynuse_346',['kOdomOpenVINSInitDynUse',['../classrtabmap_1_1Parameters.html#a4892f91c6d8962e7ce1215c60c6b6d4b',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitimuthresh_347',['kOdomOpenVINSInitIMUThresh',['../classrtabmap_1_1Parameters.html#a1d4fb25962131a372b385e99643747c1',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitmaxdisparity_348',['kOdomOpenVINSInitMaxDisparity',['../classrtabmap_1_1Parameters.html#ae61270c0977dcbc8b8cbfc5d422f1241',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitmaxfeatures_349',['kOdomOpenVINSInitMaxFeatures',['../classrtabmap_1_1Parameters.html#a4fcad487c009c6c6775a349add123034',1,'rtabmap::Parameters']]], + ['kodomopenvinsinitwindowtime_350',['kOdomOpenVINSInitWindowTime',['../classrtabmap_1_1Parameters.html#ad5203cd2ec8c90722c41d607d7c5fc1b',1,'rtabmap::Parameters']]], + ['kodomopenvinsintegration_351',['kOdomOpenVINSIntegration',['../classrtabmap_1_1Parameters.html#a43aab47c1125f7ef30d7363e2bdb8d17',1,'rtabmap::Parameters']]], + ['kodomopenvinsleftmaskpath_352',['kOdomOpenVINSLeftMaskPath',['../classrtabmap_1_1Parameters.html#a6e2b3d8c7b3d04fe4b0fe466109849ed',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxclones_353',['kOdomOpenVINSMaxClones',['../classrtabmap_1_1Parameters.html#a467f15f0d8574c37d1cbe8ea040dfee6',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxmsckfinupdate_354',['kOdomOpenVINSMaxMSCKFInUpdate',['../classrtabmap_1_1Parameters.html#ab1402f8aa1efe4fe38d975005a9c2189',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxslam_355',['kOdomOpenVINSMaxSLAM',['../classrtabmap_1_1Parameters.html#a296543931af0ad1598fb8d75f6230a8b',1,'rtabmap::Parameters']]], + ['kodomopenvinsmaxslaminupdate_356',['kOdomOpenVINSMaxSLAMInUpdate',['../classrtabmap_1_1Parameters.html#a3eba5d0054793999bf5cc9bba92e179c',1,'rtabmap::Parameters']]], + ['kodomopenvinsminpxdist_357',['kOdomOpenVINSMinPxDist',['../classrtabmap_1_1Parameters.html#a505c545574ec997805503e0b905cb93c',1,'rtabmap::Parameters']]], + ['kodomopenvinsnumpts_358',['kOdomOpenVINSNumPts',['../classrtabmap_1_1Parameters.html#ae798271632b8e5b71e037360a85ee625',1,'rtabmap::Parameters']]], + ['kodomopenvinsrightmaskpath_359',['kOdomOpenVINSRightMaskPath',['../classrtabmap_1_1Parameters.html#a426a78bc8d1ed73f440f30ab0c1e8b05',1,'rtabmap::Parameters']]], + ['kodomopenvinstryzupt_360',['kOdomOpenVINSTryZUPT',['../classrtabmap_1_1Parameters.html#a9165fec9a5f395956386056686aa1551',1,'rtabmap::Parameters']]], + ['kodomopenvinsupmsckfchi2multiplier_361',['kOdomOpenVINSUpMSCKFChi2Multiplier',['../classrtabmap_1_1Parameters.html#a413bca9ea8077c3494326085f4e0419f',1,'rtabmap::Parameters']]], + ['kodomopenvinsupmsckfsigmapx_362',['kOdomOpenVINSUpMSCKFSigmaPx',['../classrtabmap_1_1Parameters.html#a4b9220ddafc8076db666e3d651f8a24c',1,'rtabmap::Parameters']]], + ['kodomopenvinsupslamchi2multiplier_363',['kOdomOpenVINSUpSLAMChi2Multiplier',['../classrtabmap_1_1Parameters.html#a85e55e34a7da45dcde5cbde1b352625e',1,'rtabmap::Parameters']]], + ['kodomopenvinsupslamsigmapx_364',['kOdomOpenVINSUpSLAMSigmaPx',['../classrtabmap_1_1Parameters.html#aba423db2b1b21bf3606739f5c620c1d9',1,'rtabmap::Parameters']]], + ['kodomopenvinsusefej_365',['kOdomOpenVINSUseFEJ',['../classrtabmap_1_1Parameters.html#a852273bd55c4c2f46214d4de7abcbf2d',1,'rtabmap::Parameters']]], + ['kodomopenvinsuseklt_366',['kOdomOpenVINSUseKLT',['../classrtabmap_1_1Parameters.html#a396c73201a82e2ec776f239c9aa16ba9',1,'rtabmap::Parameters']]], + ['kodomopenvinsusestereo_367',['kOdomOpenVINSUseStereo',['../classrtabmap_1_1Parameters.html#a42cad5f0579fa899d12bab4684d226db',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptchi2multiplier_368',['kOdomOpenVINSZUPTChi2Multiplier',['../classrtabmap_1_1Parameters.html#a1454692f97497713169349a38127ff03',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptmaxdisparity_369',['kOdomOpenVINSZUPTMaxDisparity',['../classrtabmap_1_1Parameters.html#ad711b7bcb9f9a78ba57af7844b8578f1',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptmaxvelodicy_370',['kOdomOpenVINSZUPTMaxVelodicy',['../classrtabmap_1_1Parameters.html#abe019be98f92dfd61a7a87c70408c2ca',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptnoisemultiplier_371',['kOdomOpenVINSZUPTNoiseMultiplier',['../classrtabmap_1_1Parameters.html#a37ec93a53f7c5c24b5876bddd8b34ced',1,'rtabmap::Parameters']]], + ['kodomopenvinszuptonlyatbeginning_372',['kOdomOpenVINSZUPTOnlyAtBeginning',['../classrtabmap_1_1Parameters.html#a1f5c72075961392d3c011e26faf8b96f',1,'rtabmap::Parameters']]], + ['kodomorbslamaccnoise_373',['kOdomORBSLAMAccNoise',['../classrtabmap_1_1Parameters.html#a0964b424a4f9a7efbddc35c638fcff8c',1,'rtabmap::Parameters']]], + ['kodomorbslamaccwalk_374',['kOdomORBSLAMAccWalk',['../classrtabmap_1_1Parameters.html#a6a33f0e078d6616b6267c291ec78e5b8',1,'rtabmap::Parameters']]], + ['kodomorbslambf_375',['kOdomORBSLAMBf',['../classrtabmap_1_1Parameters.html#aefa4d23029b47e21adb6b594f74fea2d',1,'rtabmap::Parameters']]], + ['kodomorbslamfps_376',['kOdomORBSLAMFps',['../classrtabmap_1_1Parameters.html#a4a1f776765c4b78acc4eee1b32e9342e',1,'rtabmap::Parameters']]], + ['kodomorbslamgyronoise_377',['kOdomORBSLAMGyroNoise',['../classrtabmap_1_1Parameters.html#afcb8ed42c61b74b5e12f6bc95deba078',1,'rtabmap::Parameters']]], + ['kodomorbslamgyrowalk_378',['kOdomORBSLAMGyroWalk',['../classrtabmap_1_1Parameters.html#aa55b0d37ff8c7ac814a4d911d80329d8',1,'rtabmap::Parameters']]], + ['kodomorbslaminertial_379',['kOdomORBSLAMInertial',['../classrtabmap_1_1Parameters.html#a6846d7fb6b2eb02d03e96044e9375c3b',1,'rtabmap::Parameters']]], + ['kodomorbslammapsize_380',['kOdomORBSLAMMapSize',['../classrtabmap_1_1Parameters.html#ad33d1bec811fb6c0f533251f16ecf089',1,'rtabmap::Parameters']]], + ['kodomorbslammaxfeatures_381',['kOdomORBSLAMMaxFeatures',['../classrtabmap_1_1Parameters.html#a914140a86638c393fcd098f0896436fd',1,'rtabmap::Parameters']]], + ['kodomorbslamsamplingrate_382',['kOdomORBSLAMSamplingRate',['../classrtabmap_1_1Parameters.html#afb0188eab89d395209fe258e81b591c1',1,'rtabmap::Parameters']]], + ['kodomorbslamthdepth_383',['kOdomORBSLAMThDepth',['../classrtabmap_1_1Parameters.html#acbfabdf7b28d66cc07e75a62967d458d',1,'rtabmap::Parameters']]], + ['kodomorbslamvocpath_384',['kOdomORBSLAMVocPath',['../classrtabmap_1_1Parameters.html#aa4849b73de6df4f4008147536e7f05d6',1,'rtabmap::Parameters']]], + ['kodomparticlelambdar_385',['kOdomParticleLambdaR',['../classrtabmap_1_1Parameters.html#a8d81c9157fac237bc3383900798feb3f',1,'rtabmap::Parameters']]], + ['kodomparticlelambdat_386',['kOdomParticleLambdaT',['../classrtabmap_1_1Parameters.html#ab4ca374efe8802d596bdf2d1291821fb',1,'rtabmap::Parameters']]], + ['kodomparticlenoiser_387',['kOdomParticleNoiseR',['../classrtabmap_1_1Parameters.html#a4762b235967e01f873be062d75c0b8b7',1,'rtabmap::Parameters']]], + ['kodomparticlenoiset_388',['kOdomParticleNoiseT',['../classrtabmap_1_1Parameters.html#adeed4435e6d7c25de108b92d5062850d',1,'rtabmap::Parameters']]], + ['kodomparticlesize_389',['kOdomParticleSize',['../classrtabmap_1_1Parameters.html#a273fe8ab8fcb79f08f3a41a9b4cf6dce',1,'rtabmap::Parameters']]], + ['kodomresetcountdown_390',['kOdomResetCountdown',['../classrtabmap_1_1Parameters.html#abae6f31914c37fddd2c36ea78d1447fb',1,'rtabmap::Parameters']]], + ['kodomscankeyframethr_391',['kOdomScanKeyFrameThr',['../classrtabmap_1_1Parameters.html#af172b6f629a62b37ea7ab151eee8058b',1,'rtabmap::Parameters']]], + ['kodomstrategy_392',['kOdomStrategy',['../classrtabmap_1_1Parameters.html#abba8d5778f27ab7cdf90a900b71916ad',1,'rtabmap::Parameters']]], + ['kodomvinsfusionconfigpath_393',['kOdomVINSFusionConfigPath',['../classrtabmap_1_1Parameters.html#acf6e02f152acab60ee7e978c41de0bd9',1,'rtabmap::Parameters']]], + ['kodomviskeyframethr_394',['kOdomVisKeyFrameThr',['../classrtabmap_1_1Parameters.html#aa9fcc2aef568b4c3c822bbe9c48b318e',1,'rtabmap::Parameters']]], + ['kodomviso2bucketheight_395',['kOdomViso2BucketHeight',['../classrtabmap_1_1Parameters.html#a5f25f50240e1e3827151e95f4622ec40',1,'rtabmap::Parameters']]], + ['kodomviso2bucketmaxfeatures_396',['kOdomViso2BucketMaxFeatures',['../classrtabmap_1_1Parameters.html#a3b7bc10547f6331f4b29583420247868',1,'rtabmap::Parameters']]], + ['kodomviso2bucketwidth_397',['kOdomViso2BucketWidth',['../classrtabmap_1_1Parameters.html#a1e44368b11befeacd5f2b81f927bc264',1,'rtabmap::Parameters']]], + ['kodomviso2inlierthreshold_398',['kOdomViso2InlierThreshold',['../classrtabmap_1_1Parameters.html#a6df260c6fee4c79204a55cf6414e84f9',1,'rtabmap::Parameters']]], + ['kodomviso2matchbinsize_399',['kOdomViso2MatchBinsize',['../classrtabmap_1_1Parameters.html#afa1fc497e502ddce4e2c944b22ea78b5',1,'rtabmap::Parameters']]], + ['kodomviso2matchdisptolerance_400',['kOdomViso2MatchDispTolerance',['../classrtabmap_1_1Parameters.html#a683676d32c1853924b2fc6be856cc4ec',1,'rtabmap::Parameters']]], + ['kodomviso2matchhalfresolution_401',['kOdomViso2MatchHalfResolution',['../classrtabmap_1_1Parameters.html#a694f3e472c6eb6ded795f787f501c433',1,'rtabmap::Parameters']]], + ['kodomviso2matchmultistage_402',['kOdomViso2MatchMultiStage',['../classrtabmap_1_1Parameters.html#a639f307301271ee14560f6710acd08e3',1,'rtabmap::Parameters']]], + ['kodomviso2matchnmsn_403',['kOdomViso2MatchNmsN',['../classrtabmap_1_1Parameters.html#a267d44faa480f50704240c014178ae5b',1,'rtabmap::Parameters']]], + ['kodomviso2matchnmstau_404',['kOdomViso2MatchNmsTau',['../classrtabmap_1_1Parameters.html#acc7aa8d9e87743cb09d22265238490ef',1,'rtabmap::Parameters']]], + ['kodomviso2matchoutlierdisptolerance_405',['kOdomViso2MatchOutlierDispTolerance',['../classrtabmap_1_1Parameters.html#ae9b2a74aed41955e99f6317f169b0e8e',1,'rtabmap::Parameters']]], + ['kodomviso2matchoutlierflowtolerance_406',['kOdomViso2MatchOutlierFlowTolerance',['../classrtabmap_1_1Parameters.html#ae820a3c499db31e53434bd725c7cdb92',1,'rtabmap::Parameters']]], + ['kodomviso2matchradius_407',['kOdomViso2MatchRadius',['../classrtabmap_1_1Parameters.html#a2548c5378caaa49253138ee8951bbec8',1,'rtabmap::Parameters']]], + ['kodomviso2matchrefinement_408',['kOdomViso2MatchRefinement',['../classrtabmap_1_1Parameters.html#a66a7f99bc201875398d5c7d76cca7a59',1,'rtabmap::Parameters']]], + ['kodomviso2ransaciters_409',['kOdomViso2RansacIters',['../classrtabmap_1_1Parameters.html#a9db27765084194ee50fc8f1055533e2e',1,'rtabmap::Parameters']]], + ['kodomviso2reweighting_410',['kOdomViso2Reweighting',['../classrtabmap_1_1Parameters.html#a82053352b9945b97ecd99d16ae4d7bda',1,'rtabmap::Parameters']]], + ['koptimizerbaseline_411',['kOptimizerBaseline',['../classrtabmap_1_1Parameters.html#aebaeec1482001e2caac613633a73bbba',1,'rtabmap::Parameters']]], + ['koptimizerdisparityvariance_412',['kOptimizerDisparityVariance',['../classrtabmap_1_1Parameters.html#a1a6053a3f56ee705dd2d880e9394542d',1,'rtabmap::Parameters']]], + ['koptimizerepsilon_413',['kOptimizerEpsilon',['../classrtabmap_1_1Parameters.html#a0da495637cf28437df451e3a9befe09c',1,'rtabmap::Parameters']]], + ['koptimizergravitysigma_414',['kOptimizerGravitySigma',['../classrtabmap_1_1Parameters.html#ae30f9e3d2e17c3543801cdd9fa51ffcc',1,'rtabmap::Parameters']]], + ['koptimizeriterations_415',['kOptimizerIterations',['../classrtabmap_1_1Parameters.html#a8be61aae74f02931c8c224d98629dfc1',1,'rtabmap::Parameters']]], + ['koptimizerlandmarksignored_416',['kOptimizerLandmarksIgnored',['../classrtabmap_1_1Parameters.html#a8941f737a9ec74b5a64c6a31d26dc5b1',1,'rtabmap::Parameters']]], + ['koptimizerpixelvariance_417',['kOptimizerPixelVariance',['../classrtabmap_1_1Parameters.html#af8ad0ad86c152e736820805aad2203c7',1,'rtabmap::Parameters']]], + ['koptimizerpriorsignored_418',['kOptimizerPriorsIgnored',['../classrtabmap_1_1Parameters.html#a9a27e63a9a70179573a6898049957d31',1,'rtabmap::Parameters']]], + ['koptimizerrobust_419',['kOptimizerRobust',['../classrtabmap_1_1Parameters.html#a2f90cb87e114d6f10a33e0b3d79c730f',1,'rtabmap::Parameters']]], + ['koptimizerrobustkerneldelta_420',['kOptimizerRobustKernelDelta',['../classrtabmap_1_1Parameters.html#a5900adc0a8a2d5bf42963e4e5bee7855',1,'rtabmap::Parameters']]], + ['koptimizerstrategy_421',['kOptimizerStrategy',['../classrtabmap_1_1Parameters.html#a092fe8cb5454baf939cfb405fbce966f',1,'rtabmap::Parameters']]], + ['koptimizervarianceignored_422',['kOptimizerVarianceIgnored',['../classrtabmap_1_1Parameters.html#a5b7491368ae85dc42f066192a99312a2',1,'rtabmap::Parameters']]], + ['korbedgethreshold_423',['kORBEdgeThreshold',['../classrtabmap_1_1Parameters.html#ae047e8d2f7226ac161863b0ec4620561',1,'rtabmap::Parameters']]], + ['korbfirstlevel_424',['kORBFirstLevel',['../classrtabmap_1_1Parameters.html#a8deaf647a92da914a8b761bfa9891da4',1,'rtabmap::Parameters']]], + ['korbgpu_425',['kORBGpu',['../classrtabmap_1_1Parameters.html#a75ad893a9fb12411d07292be6f3cf151',1,'rtabmap::Parameters']]], + ['korbnlevels_426',['kORBNLevels',['../classrtabmap_1_1Parameters.html#aaf67b8a7e28d72ede90a60a83f50c10b',1,'rtabmap::Parameters']]], + ['korbpatchsize_427',['kORBPatchSize',['../classrtabmap_1_1Parameters.html#a576d49f934e6251be0f1cdb2f666d21e',1,'rtabmap::Parameters']]], + ['korbscalefactor_428',['kORBScaleFactor',['../classrtabmap_1_1Parameters.html#a4ef6ac6e5357d25a907abb87cf5995c9',1,'rtabmap::Parameters']]], + ['korbscoretype_429',['kORBScoreType',['../classrtabmap_1_1Parameters.html#a23a44d5437d484fd74936029301f2f91',1,'rtabmap::Parameters']]], + ['korbwta_5fk_430',['kORBWTA_K',['../classrtabmap_1_1Parameters.html#a413fa34f8410b30423b0321398d7c658',1,'rtabmap::Parameters']]], + ['kpydescriptordim_431',['kPyDescriptorDim',['../classrtabmap_1_1Parameters.html#aea51e2c74f29d39e1688a592962cf9ad',1,'rtabmap::Parameters']]], + ['kpydescriptorpath_432',['kPyDescriptorPath',['../classrtabmap_1_1Parameters.html#a135caed3c87f8234184d2d72743b98ab',1,'rtabmap::Parameters']]], + ['kpydetectorcuda_433',['kPyDetectorCuda',['../classrtabmap_1_1Parameters.html#afdbdfe89192b8c4b332d457fdd83620a',1,'rtabmap::Parameters']]], + ['kpydetectorpath_434',['kPyDetectorPath',['../classrtabmap_1_1Parameters.html#a84e976161e1a10728be331f9efd31a03',1,'rtabmap::Parameters']]], + ['kpymatchercuda_435',['kPyMatcherCuda',['../classrtabmap_1_1Parameters.html#a0a9773bee6d69350aa362ea8ce9e2d13',1,'rtabmap::Parameters']]], + ['kpymatcheriterations_436',['kPyMatcherIterations',['../classrtabmap_1_1Parameters.html#a4beabce2704fef444c200c84a58af650',1,'rtabmap::Parameters']]], + ['kpymatchermodel_437',['kPyMatcherModel',['../classrtabmap_1_1Parameters.html#a577a5fd2e1bd55f481fb3996237e7c86',1,'rtabmap::Parameters']]], + ['kpymatcherpath_438',['kPyMatcherPath',['../classrtabmap_1_1Parameters.html#aa3ff26394ce7611e63f7b8abdc3d8816',1,'rtabmap::Parameters']]], + ['kpymatcherthreshold_439',['kPyMatcherThreshold',['../classrtabmap_1_1Parameters.html#a0af1276884adf9994e2c664f8aacd9bb',1,'rtabmap::Parameters']]], + ['kregforce3dof_440',['kRegForce3DoF',['../classrtabmap_1_1Parameters.html#adeb11e4b89634351a54bab99b3aeb68c',1,'rtabmap::Parameters']]], + ['kregrepeatonce_441',['kRegRepeatOnce',['../classrtabmap_1_1Parameters.html#ac1d6e5b571fe7348f484f531b3a30814',1,'rtabmap::Parameters']]], + ['kregstrategy_442',['kRegStrategy',['../classrtabmap_1_1Parameters.html#abb01f566041dff1ca1ff47b4a6716b48',1,'rtabmap::Parameters']]], + ['krgbdaggressiveloopthr_443',['kRGBDAggressiveLoopThr',['../classrtabmap_1_1Parameters.html#a93cee2efa1fd89d2757db81c9ed8beb1',1,'rtabmap::Parameters']]], + ['krgbdangularspeedupdate_444',['kRGBDAngularSpeedUpdate',['../classrtabmap_1_1Parameters.html#aacd017b088a3c6f6c552116a21a68216',1,'rtabmap::Parameters']]], + ['krgbdangularupdate_445',['kRGBDAngularUpdate',['../classrtabmap_1_1Parameters.html#a9a7fc32cc99f77446f1918113aa8b5bb',1,'rtabmap::Parameters']]], + ['krgbdcreateoccupancygrid_446',['kRGBDCreateOccupancyGrid',['../classrtabmap_1_1Parameters.html#ad46e3bb3b9e42c989763832a1f7b0f3e',1,'rtabmap::Parameters']]], + ['krgbdenabled_447',['kRGBDEnabled',['../classrtabmap_1_1Parameters.html#a660983e23247cd39034f2ea07cfcd54b',1,'rtabmap::Parameters']]], + ['krgbdforceodom3dof_448',['kRGBDForceOdom3DoF',['../classrtabmap_1_1Parameters.html#a74cbbfcf605e6c6babb199125b2462e3',1,'rtabmap::Parameters']]], + ['krgbdgoalreachedradius_449',['kRGBDGoalReachedRadius',['../classrtabmap_1_1Parameters.html#ad3d06d249bb099a9175c824a6e57e5d4',1,'rtabmap::Parameters']]], + ['krgbdgoalssavedinuserdata_450',['kRGBDGoalsSavedInUserData',['../classrtabmap_1_1Parameters.html#abeaa5d81e6e1f348ddece14f98c52b39',1,'rtabmap::Parameters']]], + ['krgbdinvertedreg_451',['kRGBDInvertedReg',['../classrtabmap_1_1Parameters.html#ab51566bd1519b3fcb23a458e9d99c675',1,'rtabmap::Parameters']]], + ['krgbdlinearspeedupdate_452',['kRGBDLinearSpeedUpdate',['../classrtabmap_1_1Parameters.html#aac12c089f2e5ff8c47768bfba7a1399c',1,'rtabmap::Parameters']]], + ['krgbdlinearupdate_453',['kRGBDLinearUpdate',['../classrtabmap_1_1Parameters.html#a2337801b29bb94ce58ae386c6fbfb1ea',1,'rtabmap::Parameters']]], + ['krgbdlocalbundleonloopclosure_454',['kRGBDLocalBundleOnLoopClosure',['../classrtabmap_1_1Parameters.html#a9213f69de86d869fa81162648865a33c',1,'rtabmap::Parameters']]], + ['krgbdlocalimmunizationratio_455',['kRGBDLocalImmunizationRatio',['../classrtabmap_1_1Parameters.html#a7197e89c24af786042c4f3854c14627f',1,'rtabmap::Parameters']]], + ['krgbdlocalizationpriorerror_456',['kRGBDLocalizationPriorError',['../classrtabmap_1_1Parameters.html#aa8bd1ce286f5afde20a406b573286adb',1,'rtabmap::Parameters']]], + ['krgbdlocalizationsecondtrywithoutproximitylinks_457',['kRGBDLocalizationSecondTryWithoutProximityLinks',['../classrtabmap_1_1Parameters.html#ac4de49ab93465d61d21885e0326a5f9a',1,'rtabmap::Parameters']]], + ['krgbdlocalizationsmoothing_458',['kRGBDLocalizationSmoothing',['../classrtabmap_1_1Parameters.html#a4e5e1c201b237cad64754fca3761d1aa',1,'rtabmap::Parameters']]], + ['krgbdlocalradius_459',['kRGBDLocalRadius',['../classrtabmap_1_1Parameters.html#adaa87cec765f9674a12382392a60a4fe',1,'rtabmap::Parameters']]], + ['krgbdloopclosureidentityguess_460',['kRGBDLoopClosureIdentityGuess',['../classrtabmap_1_1Parameters.html#aa4426569ed21d2e0aebea26e8e3fb2cf',1,'rtabmap::Parameters']]], + ['krgbdloopclosurereextractfeatures_461',['kRGBDLoopClosureReextractFeatures',['../classrtabmap_1_1Parameters.html#a63caa078c0eb4a5ee3710e48fd1f6054',1,'rtabmap::Parameters']]], + ['krgbdloopcovlimited_462',['kRGBDLoopCovLimited',['../classrtabmap_1_1Parameters.html#a2f0e34d58229d94e6368223be2dd4fc6',1,'rtabmap::Parameters']]], + ['krgbdmarkerdetection_463',['kRGBDMarkerDetection',['../classrtabmap_1_1Parameters.html#a35ff1769e99027505db6a8bf33b56ae7',1,'rtabmap::Parameters']]], + ['krgbdmaxlocalretrieved_464',['kRGBDMaxLocalRetrieved',['../classrtabmap_1_1Parameters.html#a0ba27238802e7bbd1a7c0327bbc11d99',1,'rtabmap::Parameters']]], + ['krgbdmaxloopclosuredistance_465',['kRGBDMaxLoopClosureDistance',['../classrtabmap_1_1Parameters.html#a024e42d2f111589492a2c5bbbb40dbec',1,'rtabmap::Parameters']]], + ['krgbdmaxodomcachesize_466',['kRGBDMaxOdomCacheSize',['../classrtabmap_1_1Parameters.html#ab27d52631ccdf0055b55fee66f811cd7',1,'rtabmap::Parameters']]], + ['krgbdneighborlinkrefining_467',['kRGBDNeighborLinkRefining',['../classrtabmap_1_1Parameters.html#a8d13f13e22263d457b9d73df896ddeaa',1,'rtabmap::Parameters']]], + ['krgbdnewmapodomchangedistance_468',['kRGBDNewMapOdomChangeDistance',['../classrtabmap_1_1Parameters.html#a7bdee3f01a127c794ee7bcf7b06e612c',1,'rtabmap::Parameters']]], + ['krgbdoptimizefromgraphend_469',['kRGBDOptimizeFromGraphEnd',['../classrtabmap_1_1Parameters.html#ae0e66e60cda07b9b87b9f5aed3097f18',1,'rtabmap::Parameters']]], + ['krgbdoptimizemaxerror_470',['kRGBDOptimizeMaxError',['../classrtabmap_1_1Parameters.html#a48e9bda458af10a4649c88b92ba7a6fd',1,'rtabmap::Parameters']]], + ['krgbdoptimizemaxerrorrepairradius_471',['kRGBDOptimizeMaxErrorRepairRadius',['../classrtabmap_1_1Parameters.html#aa2135c05c99fdb3b5f257f1162779e31',1,'rtabmap::Parameters']]], + ['krgbdplanangularvelocity_472',['kRGBDPlanAngularVelocity',['../classrtabmap_1_1Parameters.html#a040963ee60367bb11bb9301aea4fba9e',1,'rtabmap::Parameters']]], + ['krgbdplanlinearvelocity_473',['kRGBDPlanLinearVelocity',['../classrtabmap_1_1Parameters.html#aee8b71c6e5d647c818d07d2c70a5d7e8',1,'rtabmap::Parameters']]], + ['krgbdplanstuckiterations_474',['kRGBDPlanStuckIterations',['../classrtabmap_1_1Parameters.html#ab5e4fa31504d61a85113991dfcf8d7bf',1,'rtabmap::Parameters']]], + ['krgbdproximityangle_475',['kRGBDProximityAngle',['../classrtabmap_1_1Parameters.html#a71dead47d5719dd53f1239e597a8c215',1,'rtabmap::Parameters']]], + ['krgbdproximitybyspace_476',['kRGBDProximityBySpace',['../classrtabmap_1_1Parameters.html#a0bf742f8f518f6c63d1bb78a0f009515',1,'rtabmap::Parameters']]], + ['krgbdproximitybytime_477',['kRGBDProximityByTime',['../classrtabmap_1_1Parameters.html#aa91fac5c1ba929f562de205d287d79e3',1,'rtabmap::Parameters']]], + ['krgbdproximityglobalscanmap_478',['kRGBDProximityGlobalScanMap',['../classrtabmap_1_1Parameters.html#a00a7b454f5a1425ed3f51c9c0a3e8fda',1,'rtabmap::Parameters']]], + ['krgbdproximitymaxgraphdepth_479',['kRGBDProximityMaxGraphDepth',['../classrtabmap_1_1Parameters.html#a8522bc32417706aa533c1d2451dd34dd',1,'rtabmap::Parameters']]], + ['krgbdproximitymaxpaths_480',['kRGBDProximityMaxPaths',['../classrtabmap_1_1Parameters.html#ae49216949cfa3aea8e4c77b2870328fc',1,'rtabmap::Parameters']]], + ['krgbdproximitymergedscancovfactor_481',['kRGBDProximityMergedScanCovFactor',['../classrtabmap_1_1Parameters.html#a177ab21121656a2d6bc07a24e3a9b0ad',1,'rtabmap::Parameters']]], + ['krgbdproximityodomguess_482',['kRGBDProximityOdomGuess',['../classrtabmap_1_1Parameters.html#a92e06fe4846c78b0eb6e834f8d0845c4',1,'rtabmap::Parameters']]], + ['krgbdproximitypathfilteringradius_483',['kRGBDProximityPathFilteringRadius',['../classrtabmap_1_1Parameters.html#ab4c35cd16a70d5b929bf28ec5a4dd83d',1,'rtabmap::Parameters']]], + ['krgbdproximitypathmaxneighbors_484',['kRGBDProximityPathMaxNeighbors',['../classrtabmap_1_1Parameters.html#a1a6c82e3762a844dab0cc9db220adb8c',1,'rtabmap::Parameters']]], + ['krgbdproximitypathrawposesused_485',['kRGBDProximityPathRawPosesUsed',['../classrtabmap_1_1Parameters.html#a5d31ff1788e59bcbf0b07fe50f3aae5f',1,'rtabmap::Parameters']]], + ['krgbdscanmatchingidssavedinlinks_486',['kRGBDScanMatchingIdsSavedInLinks',['../classrtabmap_1_1Parameters.html#af39a49c3db927a995eec3540ea3a11c8',1,'rtabmap::Parameters']]], + ['krgbdstartatorigin_487',['kRGBDStartAtOrigin',['../classrtabmap_1_1Parameters.html#afd7b349d5f354c290ef2e37e917182ee',1,'rtabmap::Parameters']]], + ['krtabmapcomputermse_488',['kRtabmapComputeRMSE',['../classrtabmap_1_1Parameters.html#a072d8f6538025610d97af792df533c6c',1,'rtabmap::Parameters']]], + ['krtabmapcreateintermediatenodes_489',['kRtabmapCreateIntermediateNodes',['../classrtabmap_1_1Parameters.html#a563ebee29786f2168b90306ded8ee17c',1,'rtabmap::Parameters']]], + ['krtabmapdetectionrate_490',['kRtabmapDetectionRate',['../classrtabmap_1_1Parameters.html#ab4330bb97358203a6e229a7e7d3b3160',1,'rtabmap::Parameters']]], + ['krtabmapimagebuffersize_491',['kRtabmapImageBufferSize',['../classrtabmap_1_1Parameters.html#ad2924fa9a31709c3cc88e2079e1c9b43',1,'rtabmap::Parameters']]], + ['krtabmapimagesalreadyrectified_492',['kRtabmapImagesAlreadyRectified',['../classrtabmap_1_1Parameters.html#aaa7af43515eedb88d1e7083e82e59bae',1,'rtabmap::Parameters']]], + ['krtabmaploopgps_493',['kRtabmapLoopGPS',['../classrtabmap_1_1Parameters.html#a13b324675d9b2fa2c3cc6fbcc2788a89',1,'rtabmap::Parameters']]], + ['krtabmaploopratio_494',['kRtabmapLoopRatio',['../classrtabmap_1_1Parameters.html#ab7aef90318656235ddd31731110658f5',1,'rtabmap::Parameters']]], + ['krtabmaploopthr_495',['kRtabmapLoopThr',['../classrtabmap_1_1Parameters.html#a423d0878fce30f6ad8a0da41b27f6505',1,'rtabmap::Parameters']]], + ['krtabmapmaxrepublished_496',['kRtabmapMaxRepublished',['../classrtabmap_1_1Parameters.html#aebca6ea8c99890a56702c65a972483dc',1,'rtabmap::Parameters']]], + ['krtabmapmaxretrieved_497',['kRtabmapMaxRetrieved',['../classrtabmap_1_1Parameters.html#ae42b8a843c6830eff62087a9e0df72b1',1,'rtabmap::Parameters']]], + ['krtabmapmemorythr_498',['kRtabmapMemoryThr',['../classrtabmap_1_1Parameters.html#a66882ccd6f0a49f2c23db8718d12a59c',1,'rtabmap::Parameters']]], + ['krtabmappublishlastsignature_499',['kRtabmapPublishLastSignature',['../classrtabmap_1_1Parameters.html#a1476c605d078b36f19b41617159fcc05',1,'rtabmap::Parameters']]], + ['krtabmappublishlikelihood_500',['kRtabmapPublishLikelihood',['../classrtabmap_1_1Parameters.html#a1c6b54c14e6b94d81d75a9c33d3cbc3b',1,'rtabmap::Parameters']]], + ['krtabmappublishpdf_501',['kRtabmapPublishPdf',['../classrtabmap_1_1Parameters.html#aa08a5f492676a2323ca8989ba8e4f963',1,'rtabmap::Parameters']]], + ['krtabmappublishramusage_502',['kRtabmapPublishRAMUsage',['../classrtabmap_1_1Parameters.html#ad3b28ede4e665edf57689abb7e445438',1,'rtabmap::Parameters']]], + ['krtabmappublishstats_503',['kRtabmapPublishStats',['../classrtabmap_1_1Parameters.html#ac946ad95d43dbfaaf3c38e0570cda48c',1,'rtabmap::Parameters']]], + ['krtabmaprectifyonlyfeatures_504',['kRtabmapRectifyOnlyFeatures',['../classrtabmap_1_1Parameters.html#a0e4d7b62ce5960c45d1866c369b1df0e',1,'rtabmap::Parameters']]], + ['krtabmapsavewmstate_505',['kRtabmapSaveWMState',['../classrtabmap_1_1Parameters.html#a53f1ec32cd0d35478671b6d386f16410',1,'rtabmap::Parameters']]], + ['krtabmapstartnewmapongoodsignature_506',['kRtabmapStartNewMapOnGoodSignature',['../classrtabmap_1_1Parameters.html#ab430b5acdd801cfd9f65850c057c2506',1,'rtabmap::Parameters']]], + ['krtabmapstartnewmaponloopclosure_507',['kRtabmapStartNewMapOnLoopClosure',['../classrtabmap_1_1Parameters.html#af3ea91bf60d712c5abf28c42ab259f1b',1,'rtabmap::Parameters']]], + ['krtabmapstatisticlogged_508',['kRtabmapStatisticLogged',['../classrtabmap_1_1Parameters.html#af4e099159b6dd6d923fbf2be0d850f82',1,'rtabmap::Parameters']]], + ['krtabmapstatisticloggedheaders_509',['kRtabmapStatisticLoggedHeaders',['../classrtabmap_1_1Parameters.html#ad96e85af556697640588b98f5ca388a4',1,'rtabmap::Parameters']]], + ['krtabmapstatisticlogsbufferedinram_510',['kRtabmapStatisticLogsBufferedInRAM',['../classrtabmap_1_1Parameters.html#a037720a78af4592c80c8d1bd374fdec5',1,'rtabmap::Parameters']]], + ['krtabmaptimethr_511',['kRtabmapTimeThr',['../classrtabmap_1_1Parameters.html#a8ee7e153cfb26574c7d1c7b427593f8a',1,'rtabmap::Parameters']]], + ['krtabmapvirtualplacelikelihoodratio_512',['kRtabmapVirtualPlaceLikelihoodRatio',['../classrtabmap_1_1Parameters.html#aef900d9efe01dcbfbe5348b131d9ff46',1,'rtabmap::Parameters']]], + ['krtabmapworkingdirectory_513',['kRtabmapWorkingDirectory',['../classrtabmap_1_1Parameters.html#a42233cb8e32e704f7dd79d0208fa9d07',1,'rtabmap::Parameters']]], + ['ksiftcontrastthreshold_514',['kSIFTContrastThreshold',['../classrtabmap_1_1Parameters.html#a7fc158cc35ce7669f8c9ec9cc9414e0b',1,'rtabmap::Parameters']]], + ['ksiftedgethreshold_515',['kSIFTEdgeThreshold',['../classrtabmap_1_1Parameters.html#a3c911352e276c3c47174fdc1f7183625',1,'rtabmap::Parameters']]], + ['ksiftgaussianthreshold_516',['kSIFTGaussianThreshold',['../classrtabmap_1_1Parameters.html#a50531b46ba309446940e19208b286da4',1,'rtabmap::Parameters']]], + ['ksiftgpu_517',['kSIFTGpu',['../classrtabmap_1_1Parameters.html#a467e1aa0c4119a3d5b0f5b03927c7419',1,'rtabmap::Parameters']]], + ['ksiftmaxgaussianthreshold_518',['kSIFTMaxGaussianThreshold',['../classrtabmap_1_1Parameters.html#a6ad8efa6d293b1c38eda1364a4aeda90',1,'rtabmap::Parameters']]], + ['ksiftnoctavelayers_519',['kSIFTNOctaveLayers',['../classrtabmap_1_1Parameters.html#a461bde9b899136a89785c3036d074047',1,'rtabmap::Parameters']]], + ['ksiftpreciseupscale_520',['kSIFTPreciseUpscale',['../classrtabmap_1_1Parameters.html#a7ebbd5a100874ba29e135436714ea465',1,'rtabmap::Parameters']]], + ['ksiftrootsift_521',['kSIFTRootSIFT',['../classrtabmap_1_1Parameters.html#ac3af38f8eb6e60dc1beb9957eaa69ead',1,'rtabmap::Parameters']]], + ['ksiftsigma_522',['kSIFTSigma',['../classrtabmap_1_1Parameters.html#ac1d35339287e0ccd26c25677b010653a',1,'rtabmap::Parameters']]], + ['ksiftupscale_523',['kSIFTUpscale',['../classrtabmap_1_1Parameters.html#a7dd0d575bac18d9db0c3fdb61860f034',1,'rtabmap::Parameters']]], + ['kstereobmblocksize_524',['kStereoBMBlockSize',['../classrtabmap_1_1Parameters.html#a19264fbd2a0f9441c10cc06ffe4023b8',1,'rtabmap::Parameters']]], + ['kstereobmdisp12maxdiff_525',['kStereoBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#adfa753955fde235a1368dd679b75ee56',1,'rtabmap::Parameters']]], + ['kstereobmmindisparity_526',['kStereoBMMinDisparity',['../classrtabmap_1_1Parameters.html#a619cb0a6210079348902c069cc1c614a',1,'rtabmap::Parameters']]], + ['kstereobmnumdisparities_527',['kStereoBMNumDisparities',['../classrtabmap_1_1Parameters.html#ae4d531d7472f534c00fb8b5aae5fc723',1,'rtabmap::Parameters']]], + ['kstereobmprefiltercap_528',['kStereoBMPreFilterCap',['../classrtabmap_1_1Parameters.html#abcf20058345e9e63f2a099348a27447c',1,'rtabmap::Parameters']]], + ['kstereobmprefiltersize_529',['kStereoBMPreFilterSize',['../classrtabmap_1_1Parameters.html#a5c8d75ee0c4f9a4c8eb033e9e47f5fdc',1,'rtabmap::Parameters']]], + ['kstereobmspecklerange_530',['kStereoBMSpeckleRange',['../classrtabmap_1_1Parameters.html#a42ec227016e22c6b05c8f0a5f6bdc4e9',1,'rtabmap::Parameters']]], + ['kstereobmspecklewindowsize_531',['kStereoBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#af47f8797f5a9b3827b9e4115ca7d3fd2',1,'rtabmap::Parameters']]], + ['kstereobmtexturethreshold_532',['kStereoBMTextureThreshold',['../classrtabmap_1_1Parameters.html#a3b18299607c2d3e13b4193eab70981da',1,'rtabmap::Parameters']]], + ['kstereobmuniquenessratio_533',['kStereoBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#aecd9a6f9ae9f1982a24ccfae3173d884',1,'rtabmap::Parameters']]], + ['kstereodensestrategy_534',['kStereoDenseStrategy',['../classrtabmap_1_1Parameters.html#a3d90e8ab6857becd7e2c3bf9e35ab261',1,'rtabmap::Parameters']]], + ['kstereoeps_535',['kStereoEps',['../classrtabmap_1_1Parameters.html#a5690d54cd1982ac7f2a9ad5865749080',1,'rtabmap::Parameters']]], + ['kstereoerrorthreshold_536',['kStereoErrorThreshold',['../classrtabmap_1_1Parameters.html#a65e8f08b8a439432f59325aba7988a54',1,'rtabmap::Parameters']]], + ['kstereogpu_537',['kStereoGpu',['../classrtabmap_1_1Parameters.html#a4c428b3cf9ef87a8a1b7c229abe8f894',1,'rtabmap::Parameters']]], + ['kstereoiterations_538',['kStereoIterations',['../classrtabmap_1_1Parameters.html#a9e9c277fa721913a43a674690c8873aa',1,'rtabmap::Parameters']]], + ['kstereomaxdisparity_539',['kStereoMaxDisparity',['../classrtabmap_1_1Parameters.html#a83e72c20844ef412aaebfb76c64a88d4',1,'rtabmap::Parameters']]], + ['kstereomaxlevel_540',['kStereoMaxLevel',['../classrtabmap_1_1Parameters.html#a1dc98c5dceadcdad9b51755f2e3dd8a0',1,'rtabmap::Parameters']]], + ['kstereomindisparity_541',['kStereoMinDisparity',['../classrtabmap_1_1Parameters.html#a7bdfbe42d80d37e4ea46f85e88c8fb7d',1,'rtabmap::Parameters']]], + ['kstereomineigthreshold_542',['kStereoMinEigThreshold',['../classrtabmap_1_1Parameters.html#a1926f50c8e2e40b757cea4a34c6f1b37',1,'rtabmap::Parameters']]], + ['kstereoopticalflow_543',['kStereoOpticalFlow',['../classrtabmap_1_1Parameters.html#ad470670e0402cd380b121ace088af0ce',1,'rtabmap::Parameters']]], + ['kstereosgbmblocksize_544',['kStereoSGBMBlockSize',['../classrtabmap_1_1Parameters.html#af7af5bf00901eb262fcd7c500b3299f5',1,'rtabmap::Parameters']]], + ['kstereosgbmdisp12maxdiff_545',['kStereoSGBMDisp12MaxDiff',['../classrtabmap_1_1Parameters.html#ab9fe06e3d5154acf8e7f5c8e3060cf5a',1,'rtabmap::Parameters']]], + ['kstereosgbmmindisparity_546',['kStereoSGBMMinDisparity',['../classrtabmap_1_1Parameters.html#a059488258e147cb8e84d0f5c68df9851',1,'rtabmap::Parameters']]], + ['kstereosgbmmode_547',['kStereoSGBMMode',['../classrtabmap_1_1Parameters.html#a838ec79552e7506f983ff71cbd6fb56d',1,'rtabmap::Parameters']]], + ['kstereosgbmnumdisparities_548',['kStereoSGBMNumDisparities',['../classrtabmap_1_1Parameters.html#a858454a74b148915173794e5f1e01dcb',1,'rtabmap::Parameters']]], + ['kstereosgbmp1_549',['kStereoSGBMP1',['../classrtabmap_1_1Parameters.html#a60f76920fd1d7ac7035124fa44728f2d',1,'rtabmap::Parameters']]], + ['kstereosgbmp2_550',['kStereoSGBMP2',['../classrtabmap_1_1Parameters.html#acec8ab4699a7d0a9c771b640f0b94c55',1,'rtabmap::Parameters']]], + ['kstereosgbmprefiltercap_551',['kStereoSGBMPreFilterCap',['../classrtabmap_1_1Parameters.html#aa5fb712638b3512045b5d2ba11cc38d3',1,'rtabmap::Parameters']]], + ['kstereosgbmspecklerange_552',['kStereoSGBMSpeckleRange',['../classrtabmap_1_1Parameters.html#aab23b5c08f1c13c6d213129a2b047d8c',1,'rtabmap::Parameters']]], + ['kstereosgbmspecklewindowsize_553',['kStereoSGBMSpeckleWindowSize',['../classrtabmap_1_1Parameters.html#a94dbc68ba825a4e309065d7d91422c08',1,'rtabmap::Parameters']]], + ['kstereosgbmuniquenessratio_554',['kStereoSGBMUniquenessRatio',['../classrtabmap_1_1Parameters.html#a00ce4bb082b7be1e614472d55114ac3c',1,'rtabmap::Parameters']]], + ['kstereossd_555',['kStereoSSD',['../classrtabmap_1_1Parameters.html#a43ba1fe4dc96d2206f2d435faada0faa',1,'rtabmap::Parameters']]], + ['kstereousemineigenvals_556',['kStereoUseMinEigenVals',['../classrtabmap_1_1Parameters.html#afcadfdcc2913f378799b4706017b16df',1,'rtabmap::Parameters']]], + ['kstereowinheight_557',['kStereoWinHeight',['../classrtabmap_1_1Parameters.html#a99b81c7a85099acdbe4607529284c49d',1,'rtabmap::Parameters']]], + ['kstereowinwidth_558',['kStereoWinWidth',['../classrtabmap_1_1Parameters.html#a8e640d7ef0c460cc5a351281a555906d',1,'rtabmap::Parameters']]], + ['ksuperpointcuda_559',['kSuperPointCuda',['../classrtabmap_1_1Parameters.html#a2b81d483c201d3aa7191b6e4fb5ad7a5',1,'rtabmap::Parameters']]], + ['ksuperpointmodelpath_560',['kSuperPointModelPath',['../classrtabmap_1_1Parameters.html#a8ba47acc58362bcd4345acdb87235da3',1,'rtabmap::Parameters']]], + ['ksuperpointnms_561',['kSuperPointNMS',['../classrtabmap_1_1Parameters.html#adcaf3d26a606f5d4e372f15fe636a527',1,'rtabmap::Parameters']]], + ['ksuperpointnmsradius_562',['kSuperPointNMSRadius',['../classrtabmap_1_1Parameters.html#ade883817139fed2d49cfc474b40278fe',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratcuda_563',['kSuperPointRpautratCuda',['../classrtabmap_1_1Parameters.html#a3f06822bbaedae5abe23a74309a19387',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratmodelpath_564',['kSuperPointRpautratModelPath',['../classrtabmap_1_1Parameters.html#a2eb6b4f6ddb3c45f9e443bb65e1ce703',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratnms_565',['kSuperPointRpautratNMS',['../classrtabmap_1_1Parameters.html#a7d36cf00b709fd1d300c60c6c0dbc533',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratnmsradius_566',['kSuperPointRpautratNMSRadius',['../classrtabmap_1_1Parameters.html#a3ec47a14df4e48ca6db7eac1da5bf4f0',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratthreshold_567',['kSuperPointRpautratThreshold',['../classrtabmap_1_1Parameters.html#af15cbea36a89e00cc95e16b4c1af223b',1,'rtabmap::Parameters']]], + ['ksuperpointrpautratweightspath_568',['kSuperPointRpautratWeightsPath',['../classrtabmap_1_1Parameters.html#a33df36074c92dfed9c1884a9d94e03cb',1,'rtabmap::Parameters']]], + ['ksuperpointthreshold_569',['kSuperPointThreshold',['../classrtabmap_1_1Parameters.html#ac217878ee7574e3251d46f73ce230eb1',1,'rtabmap::Parameters']]], + ['ksurfextended_570',['kSURFExtended',['../classrtabmap_1_1Parameters.html#a009d70ce3f5f64e81dcf3573d8cee6f9',1,'rtabmap::Parameters']]], + ['ksurfgpukeypointsratio_571',['kSURFGpuKeypointsRatio',['../classrtabmap_1_1Parameters.html#ac854e7a9427ce1400a3188e939ec0b6e',1,'rtabmap::Parameters']]], + ['ksurfgpuversion_572',['kSURFGpuVersion',['../classrtabmap_1_1Parameters.html#a6a05b7688f0a15226f70989c597884cd',1,'rtabmap::Parameters']]], + ['ksurfhessianthreshold_573',['kSURFHessianThreshold',['../classrtabmap_1_1Parameters.html#adcbb73ba0c4fa8dc205c15a1f3ccc74e',1,'rtabmap::Parameters']]], + ['ksurfoctavelayers_574',['kSURFOctaveLayers',['../classrtabmap_1_1Parameters.html#a7df13d2802282d3c23e30223e129baad',1,'rtabmap::Parameters']]], + ['ksurfoctaves_575',['kSURFOctaves',['../classrtabmap_1_1Parameters.html#af26624a5972134c437d26400401d7381',1,'rtabmap::Parameters']]], + ['ksurfupright_576',['kSURFUpright',['../classrtabmap_1_1Parameters.html#a41f0af4867885d1fb53c89cbd37e7f44',1,'rtabmap::Parameters']]], + ['kvhepenabled_577',['kVhEpEnabled',['../classrtabmap_1_1Parameters.html#ad277beaf60564db0ca51848349bd82f2',1,'rtabmap::Parameters']]], + ['kvhepmatchcountmin_578',['kVhEpMatchCountMin',['../classrtabmap_1_1Parameters.html#a0cee6f016f0b4e58f87aca7ef87d6b4b',1,'rtabmap::Parameters']]], + ['kvhepransacparam1_579',['kVhEpRansacParam1',['../classrtabmap_1_1Parameters.html#a52c5f76beb3fd9365c72578e04eed095',1,'rtabmap::Parameters']]], + ['kvhepransacparam2_580',['kVhEpRansacParam2',['../classrtabmap_1_1Parameters.html#aa8c6e571280a46e6d19996e1e7b23791',1,'rtabmap::Parameters']]], + ['kvisbundleadjustment_581',['kVisBundleAdjustment',['../classrtabmap_1_1Parameters.html#a0c02ea87b8364cb887d712388c88a8a0',1,'rtabmap::Parameters']]], + ['kviscorfloweps_582',['kVisCorFlowEps',['../classrtabmap_1_1Parameters.html#a1f769da5b63d6ee37a471efeeaff789b',1,'rtabmap::Parameters']]], + ['kviscorflowerrorthreshold_583',['kVisCorFlowErrorThreshold',['../classrtabmap_1_1Parameters.html#a9de08db858c9ce3a39909a16013814b7',1,'rtabmap::Parameters']]], + ['kviscorflowgpu_584',['kVisCorFlowGpu',['../classrtabmap_1_1Parameters.html#a24ff6d44d4c8fd70f900dd0090d7705c',1,'rtabmap::Parameters']]], + ['kviscorflowiterations_585',['kVisCorFlowIterations',['../classrtabmap_1_1Parameters.html#a8163d76bcd24f6b187f7a24c9cd3544b',1,'rtabmap::Parameters']]], + ['kviscorflowmaxlevel_586',['kVisCorFlowMaxLevel',['../classrtabmap_1_1Parameters.html#aa537af7d1d4c8e39c208f60441cff490',1,'rtabmap::Parameters']]], + ['kviscorflowmineigthreshold_587',['kVisCorFlowMinEigThreshold',['../classrtabmap_1_1Parameters.html#aded4ca74c05a8ac42f735fd234621f6c',1,'rtabmap::Parameters']]], + ['kviscorflowusemineigenvals_588',['kVisCorFlowUseMinEigenVals',['../classrtabmap_1_1Parameters.html#aadeaa0f61d4bf779d7b7c344c9d0ca80',1,'rtabmap::Parameters']]], + ['kviscorflowwinsize_589',['kVisCorFlowWinSize',['../classrtabmap_1_1Parameters.html#a28aedde79d78269bea20a84d2a37d046',1,'rtabmap::Parameters']]], + ['kviscorguessmatchtoprojection_590',['kVisCorGuessMatchToProjection',['../classrtabmap_1_1Parameters.html#a90ee2568bb4d9b5410291896adb5bc0b',1,'rtabmap::Parameters']]], + ['kviscorguesswinsize_591',['kVisCorGuessWinSize',['../classrtabmap_1_1Parameters.html#a089fa3defcef304735517d86fcf9b5fc',1,'rtabmap::Parameters']]], + ['kviscornndr_592',['kVisCorNNDR',['../classrtabmap_1_1Parameters.html#a381898b11ddb3d389c76a027f5e49bfd',1,'rtabmap::Parameters']]], + ['kviscornntype_593',['kVisCorNNType',['../classrtabmap_1_1Parameters.html#a341b0c15fe1fba640ad3aee76019a618',1,'rtabmap::Parameters']]], + ['kviscortype_594',['kVisCorType',['../classrtabmap_1_1Parameters.html#a1f1c5f9198da6ec1d43a36621b0e6687',1,'rtabmap::Parameters']]], + ['kvisdepthasmask_595',['kVisDepthAsMask',['../classrtabmap_1_1Parameters.html#af1be1e3b524da425b89b91efab0f90db',1,'rtabmap::Parameters']]], + ['kvisdepthmaskfloorthr_596',['kVisDepthMaskFloorThr',['../classrtabmap_1_1Parameters.html#accad66a5c779ac357228bad7dad0143f',1,'rtabmap::Parameters']]], + ['kvisepipolargeometryvar_597',['kVisEpipolarGeometryVar',['../classrtabmap_1_1Parameters.html#a91b4c9475ddaf077087b68693f2acf88',1,'rtabmap::Parameters']]], + ['kvisestimationtype_598',['kVisEstimationType',['../classrtabmap_1_1Parameters.html#af81c62fb25579c744d7d27bf80d5b6f3',1,'rtabmap::Parameters']]], + ['kvisfeaturetype_599',['kVisFeatureType',['../classrtabmap_1_1Parameters.html#a6bfd44775ced2f3dafa7f8c3ba63b528',1,'rtabmap::Parameters']]], + ['kvisgridcols_600',['kVisGridCols',['../classrtabmap_1_1Parameters.html#a472535dcd9c51d8cfd71ab415182336b',1,'rtabmap::Parameters']]], + ['kvisgridrows_601',['kVisGridRows',['../classrtabmap_1_1Parameters.html#a8c85794daf0dac582b11413f5b0ca2ab',1,'rtabmap::Parameters']]], + ['kvisinlierdistance_602',['kVisInlierDistance',['../classrtabmap_1_1Parameters.html#ac5b9348ae7c53f60e31910cef27c6ef5',1,'rtabmap::Parameters']]], + ['kvisiterations_603',['kVisIterations',['../classrtabmap_1_1Parameters.html#afa4bf3250434a53b0bb895bf6f73ad88',1,'rtabmap::Parameters']]], + ['kvismaxdepth_604',['kVisMaxDepth',['../classrtabmap_1_1Parameters.html#a5ccfad9205ccef4725767f6524a449fb',1,'rtabmap::Parameters']]], + ['kvismaxfeatures_605',['kVisMaxFeatures',['../classrtabmap_1_1Parameters.html#ad2414ad633ec13ebafce7b6e9d190db0',1,'rtabmap::Parameters']]], + ['kvismeaninliersdistance_606',['kVisMeanInliersDistance',['../classrtabmap_1_1Parameters.html#a7fe029be1bffc596b64f34f53f69f218',1,'rtabmap::Parameters']]], + ['kvismindepth_607',['kVisMinDepth',['../classrtabmap_1_1Parameters.html#acbf132fe641104533ecad585a1d2aaee',1,'rtabmap::Parameters']]], + ['kvismininliers_608',['kVisMinInliers',['../classrtabmap_1_1Parameters.html#a6f992e44096755469b1d477629b8527f',1,'rtabmap::Parameters']]], + ['kvismininliersdistribution_609',['kVisMinInliersDistribution',['../classrtabmap_1_1Parameters.html#a94ae0eca27e8dbfc87ecda4dce171aa9',1,'rtabmap::Parameters']]], + ['kvispnpflags_610',['kVisPnPFlags',['../classrtabmap_1_1Parameters.html#a3bda76c70b68efac7fe485cbad86a9dd',1,'rtabmap::Parameters']]], + ['kvispnpmaxvariance_611',['kVisPnPMaxVariance',['../classrtabmap_1_1Parameters.html#a854b07b9a076de68f374e62f7905941e',1,'rtabmap::Parameters']]], + ['kvispnprefineiterations_612',['kVisPnPRefineIterations',['../classrtabmap_1_1Parameters.html#a386e793f200057f8eb9240e78508ffd8',1,'rtabmap::Parameters']]], + ['kvispnpreprojerror_613',['kVisPnPReprojError',['../classrtabmap_1_1Parameters.html#a8efa7ffd2cab5d95f14fc632f505107c',1,'rtabmap::Parameters']]], + ['kvispnpsamplingpolicy_614',['kVisPnPSamplingPolicy',['../classrtabmap_1_1Parameters.html#a63f6b24143b35e86f9e75bef4a17b105',1,'rtabmap::Parameters']]], + ['kvispnpsplitlinearcovcomponents_615',['kVisPnPSplitLinearCovComponents',['../classrtabmap_1_1Parameters.html#a36a7df794eedc79a463b04b1160235f8',1,'rtabmap::Parameters']]], + ['kvispnpvariancemedianratio_616',['kVisPnPVarianceMedianRatio',['../classrtabmap_1_1Parameters.html#aacdfd9002b85b4e590e5323362ee741e',1,'rtabmap::Parameters']]], + ['kvisrefineiterations_617',['kVisRefineIterations',['../classrtabmap_1_1Parameters.html#a3e32f401181a1037963744a930bcd8d9',1,'rtabmap::Parameters']]], + ['kvisroiratios_618',['kVisRoiRatios',['../classrtabmap_1_1Parameters.html#abc1805691b776279f46591e95f937a4b',1,'rtabmap::Parameters']]], + ['kvisssc_619',['kVisSSC',['../classrtabmap_1_1Parameters.html#a088ec8f94301ffc89ac88c7843f927c8',1,'rtabmap::Parameters']]], + ['kvissubpixeps_620',['kVisSubPixEps',['../classrtabmap_1_1Parameters.html#a13000af22e8fbe5385a69fe6adc5039b',1,'rtabmap::Parameters']]], + ['kvissubpixiterations_621',['kVisSubPixIterations',['../classrtabmap_1_1Parameters.html#ac46c55c04fd88c8f268b0d583bf84e2c',1,'rtabmap::Parameters']]], + ['kvissubpixwinsize_622',['kVisSubPixWinSize',['../classrtabmap_1_1Parameters.html#ad2564dc0b3a79a40a17338dd0ddccdb6',1,'rtabmap::Parameters']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_b.js b/preview/pr-1773/api/latest/search/functions_b.js new file mode 100644 index 00000000..dd68d384 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_b.js @@ -0,0 +1,62 @@ +var searchData= +[ + ['labellocation_0',['labelLocation',['../classrtabmap_1_1Rtabmap.html#af1fe8ed393237bc9ffa1ea93adf0ec9b',1,'rtabmap::Rtabmap']]], + ['labels_1',['labels',['../classrtabmap_1_1Statistics.html#afeb2fd18d35f6a760ffa46ca0ebe4e49',1,'rtabmap::Statistics']]], + ['labelsignature_2',['labelSignature',['../classrtabmap_1_1Memory.html#abba1fbec2be0cfced6e14d723fc45794',1,'rtabmap::Memory']]], + ['landmark_3',['landmark',['../classrtabmap_1_1Landmark.html#a6ba2b53d996e0fa62a8023917e515a06',1,'rtabmap::Landmark::Landmark()'],['../classrtabmap_1_1Landmark.html#a1fda87c27ac931dcf9815921b53c1f19',1,'rtabmap::Landmark::Landmark(const int &id, const float &size, const Transform &pose, const cv::Mat &covariance)'],['../classrtabmap_1_1Landmark.html#a92311f7550e395fea804c5438e9085ff',1,'rtabmap::Landmark::Landmark(const int &id, const Transform &pose, const cv::Mat &covariance)']]], + ['landmarks_4',['landmarks',['../classrtabmap_1_1SensorData.html#a73ba0bb1cb31a3438b3ffee161b16ff8',1,'rtabmap::SensorData']]], + ['landmarksignored_5',['landmarksIgnored',['../classrtabmap_1_1Optimizer.html#a32f53d408ef0372c5c196ee89ff5ad79',1,'rtabmap::Optimizer']]], + ['laserscan_6',['laserscan',['../classrtabmap_1_1LaserScan.html#a0cb5ba7c590cea1b36c81804acdbf302',1,'rtabmap::LaserScan::LaserScan(const LaserScan &data, int maxPoints, float maxRange, Format format, const Transform &localTransform=Transform::getIdentity())'],['../classrtabmap_1_1LaserScan.html#aaf554921f866f90c48a6174d5f97a016',1,'rtabmap::LaserScan::LaserScan(const LaserScan &data, Format format, float minRange, float maxRange, float angleMin, float angleMax, float angleIncrement, const Transform &localTransform=Transform::getIdentity())']]], + ['laserscan2dfrompointcloud_7',['laserscan2dfrompointcloud',['../group__LaserScan2dFromPointCloud.html#gac0823dd28e488bef9499faee54ff8a4e',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#ga0898d06b1639f58ed92b66f311e786aa',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#gac278e2f3f54ed49b5d3a6afa606a466b',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#gae4e7c218a24fb8d5c3fd7143462d3070',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#ga6cb623d1b3ce9c244a7d4ef346a721db',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScan2dFromPointCloud.html#ga0354b321c4196232fb1183c3a322b5f8',1,'rtabmap::util3d::laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)']]], + ['laserscancompressed_8',['laserScanCompressed',['../classrtabmap_1_1SensorData.html#a1522af81a95c27b76e316919df95a869',1,'rtabmap::SensorData']]], + ['laserscanfromdepthimage_9',['laserScanFromDepthImage',['../namespacertabmap_1_1util3d.html#a39d4adb63b4bd06592e2c65641a32558',1,'rtabmap::util3d']]], + ['laserscanfromdepthimages_10',['laserScanFromDepthImages',['../namespacertabmap_1_1util3d.html#a07f8a125805ac013039b7fa0ddb623e0',1,'rtabmap::util3d']]], + ['laserscanfrompointcloud_11',['laserscanfrompointcloud',['../group__LaserScanFromPointCloud.html#gaf509a7c65e02d8690c971294c43bda47',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gab2d54043075851c5e23f487001adacb6',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gafb165d79d23620b42af0653ae045fb91',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga79e460158de1d3934abcd8fad488fb24',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga078f5eae0077169e636ec76e03973edc',1,'rtabmap::util3d::laserScanFromPointCloud(const PointCloud2T &cloud, bool filterNaNs=true, bool is2D=false, const Transform &transform=Transform())'],['../group__LaserScanFromPointCloud.html#ga16a77d267dc60b14b5bf48ca52547bae',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga75f96d3e3d5d62ce6a9d16a1753c775a',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga7a88e45c9bab555c6d1efd64be765c4d',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointNormal > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga9470f081e8de0a34550e91e2f74bacd5',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointNormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gad5764a399e3a8a5586b94490e0cd7d15',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga9933faab17e984b2789926abd2ba0caf',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gaa98ccb732868f5ab4e91cd6f82602852',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#gadeb1f66fd39cfcb39c2f152c36b3be62',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga51c683da166a9fcf7e7bf6c834ca03a4',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZI > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga655a37385c6ca40ec99e76045c04040b',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< rtabmap::PointXYZIRT > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga04169bd4b4488350b08709af9581b289',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< rtabmap::PointXYZIRT > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga75bf455d6cc912b4ee18785de71c50a5',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGB > &cloud, const pcl::PointCloud< pcl::Normal > &normals, const Transform &transform=Transform(), bool filterNaNs=true)'],['../group__LaserScanFromPointCloud.html#ga9344c712c57af92d7612b0af76226f06',1,'rtabmap::util3d::laserScanFromPointCloud(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const pcl::IndicesPtr &indices, const Transform &transform=Transform(), bool filterNaNs=true)']]], + ['laserscanraw_12',['laserScanRaw',['../classrtabmap_1_1SensorData.html#aeebafe56f302f9e8e4f06c5ad750248d',1,'rtabmap::SensorData']]], + ['laserscantopoint_13',['laserScanToPoint',['../group__LaserScanToPointCloud.html#gaeda3b4a673cb96e6421688e6c575e4e5',1,'rtabmap::util3d']]], + ['laserscantopointcloud_14',['laserScanToPointCloud',['../group__LaserScanToPointCloud.html#gac4aef207f79791db5064dc596e25513b',1,'rtabmap::util3d']]], + ['laserscantopointcloud2_15',['laserScanToPointCloud2',['../group__LaserScanToPointCloud.html#ga394ec840a58a1203fac9725d49a0013c',1,'rtabmap::util3d']]], + ['laserscantopointcloudi_16',['laserScanToPointCloudI',['../group__LaserScanToPointCloud.html#ga734628cdc1b15384476dc94d1c3dbb4d',1,'rtabmap::util3d']]], + ['laserscantopointcloudinormal_17',['laserScanToPointCloudINormal',['../group__LaserScanToPointCloud.html#ga8ee678c27ae59e2bb3fac8aeb55f9d92',1,'rtabmap::util3d']]], + ['laserscantopointcloudnormal_18',['laserScanToPointCloudNormal',['../group__LaserScanToPointCloud.html#gafe2b6826178bf0af878be67bddf3c9bd',1,'rtabmap::util3d']]], + ['laserscantopointcloudrgb_19',['laserScanToPointCloudRGB',['../group__LaserScanToPointCloud.html#gaee3e6a7ef23f6e5f9a19a0b033d7522c',1,'rtabmap::util3d']]], + ['laserscantopointcloudrgbnormal_20',['laserScanToPointCloudRGBNormal',['../group__LaserScanToPointCloud.html#ga741bd010511d5284831012194eab99b9',1,'rtabmap::util3d']]], + ['laserscantopointi_21',['laserScanToPointI',['../group__LaserScanToPointCloud.html#ga03b1c3a49aba08fcbc01b5991f25d0cc',1,'rtabmap::util3d']]], + ['laserscantopointinormal_22',['laserScanToPointINormal',['../group__LaserScanToPointCloud.html#gab69062f7ffd0f2192983c6d7afa4a171',1,'rtabmap::util3d']]], + ['laserscantopointnormal_23',['laserScanToPointNormal',['../group__LaserScanToPointCloud.html#ga4412f275d60b69f0f62db56321c5991c',1,'rtabmap::util3d']]], + ['laserscantopointrgb_24',['laserScanToPointRGB',['../group__LaserScanToPointCloud.html#gad0183648eae48143b33bfe969f8cbe43',1,'rtabmap::util3d']]], + ['laserscantopointrgbnormal_25',['laserScanToPointRGBNormal',['../group__LaserScanToPointCloud.html#ga675b84c6a6edde91883e38f49c087f31',1,'rtabmap::util3d']]], + ['latitude_26',['latitude',['../classrtabmap_1_1GPS.html#a9b20f8a5bf2cba909b53ecd83d2b4c08',1,'rtabmap::GPS::latitude()'],['../classrtabmap_1_1GeodeticCoords.html#ac6f662384e5b4ac613d5678307eb95a7',1,'rtabmap::GeodeticCoords::latitude()']]], + ['left_27',['left',['../classrtabmap_1_1StereoCameraModel.html#a064d29601c0ba13fc47584849e26b81b',1,'rtabmap::StereoCameraModel']]], + ['length_28',['length',['../classUFile.html#ae1415739da256633ad417ac7d5fc2c11',1,'UFile::length(const std::string &filePath)'],['../classUFile.html#a0c42f32c914b349d13103d0397c1b3c1',1,'UFile::length()']]], + ['lidar_29',['lidar',['../classrtabmap_1_1Lidar.html#a9d14987cd20918960d6b3705b66241ed',1,'rtabmap::Lidar::Lidar()'],['../classrtabmap_1_1SensorCaptureThread.html#aa6e5a6a53d621cda6e0b7f2ff35d33f0',1,'rtabmap::SensorCaptureThread::lidar()']]], + ['likelihood_30',['likelihood',['../classrtabmap_1_1Statistics.html#a4f3492b5cf6ff082d0061c9d7c67536f',1,'rtabmap::Statistics']]], + ['limitkeypoints_31',['limitKeypoints',['../classrtabmap_1_1Feature2D.html#aa5c0258ede589769bc50c6d6071d595c',1,'rtabmap::Feature2D']]], + ['linearacceleration_32',['linearAcceleration',['../classrtabmap_1_1IMU.html#a8fde3445664329d6432b632fca9db17a',1,'rtabmap::IMU']]], + ['linearaccelerationcovariance_33',['linearAccelerationCovariance',['../classrtabmap_1_1IMU.html#a2ee035bffb85f1681ad3525c32ba1243',1,'rtabmap::IMU']]], + ['link_34',['link',['../classrtabmap_1_1Link.html#a8f624aa84862d7abafae5cfc7175f885',1,'rtabmap::Link::Link(int from, int to, Type type, const Transform &transform, const cv::Mat &infMatrix=cv::Mat::eye(6, 6, CV_64FC1), const cv::Mat &userData=cv::Mat())'],['../classrtabmap_1_1Link.html#a2dce9c7a3ef04085d51f702002107c7b',1,'rtabmap::Link::Link()']]], + ['load_35',['load',['../classrtabmap_1_1StereoCameraModel.html#a9c2d94b9bc335fdec7f5fa4f4c45a07c',1,'rtabmap::StereoCameraModel::load()'],['../classrtabmap_1_1CameraModel.html#abe9b3c87c086fd33286c01361e454056',1,'rtabmap::CameraModel::load(const std::string &directory, const std::string &cameraName, bool initRectificationMaps=true)'],['../classrtabmap_1_1CameraModel.html#a2c2ff6db9029c3ee219642d7e48b04fa',1,'rtabmap::CameraModel::load(const std::string &filePath, bool initRectificationMaps=true)']]], + ['load2dmap_36',['load2dmap',['../classrtabmap_1_1Memory.html#a9a71f27d0de4f7e6400ca470a82be19d',1,'rtabmap::Memory::load2DMap()'],['../classrtabmap_1_1DBDriver.html#aa3d68850f4bb114e897e37af6b1c858a',1,'rtabmap::DBDriver::load2DMap()']]], + ['loadbincloud_37',['loadbincloud',['../namespacertabmap_1_1util3d.html#a636c56f4ab6e58044595f95e44f93d06',1,'rtabmap::util3d::loadBINCloud(const std::string &fileName)'],['../namespacertabmap_1_1util3d.html#ae112015538769a29c920da97096e0d17',1,'rtabmap::util3d::loadBINCloud(const std::string &fileName, int dim)']]], + ['loadbinscan_38',['loadBINScan',['../namespacertabmap_1_1util3d.html#a5ee08270b4a9e8ad93193721c7c71556',1,'rtabmap::util3d']]], + ['loadcloud_39',['loadCloud',['../namespacertabmap_1_1util3d.html#a86ba029bd916ab76dd5645ba7e1b2ef8',1,'rtabmap::util3d']]], + ['loadindex_40',['loadindex',['../classrtabmap_1_1FlannIndex.html#a028eac4aeef64d62b9edea1f7b38a71e',1,'rtabmap::FlannIndex::loadIndex(const unsigned char *indexData, size_t indexDataSize, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)'],['../classrtabmap_1_1FlannIndex.html#a826b3a33e22f455f04688df9d0d25b0b',1,'rtabmap::FlannIndex::loadIndex(const std::vector< unsigned char > &indexData, flann_algorithm_t algorithm, const cv::Mat &features, bool useDistanceL1=false, float rebalancingFactor=2.0f, std::string *errorMsg=NULL)']]], + ['loadlinks_41',['loadLinks',['../classrtabmap_1_1DBDriver.html#aab00d50127b8b5bb92f8605e35aaca4d',1,'rtabmap::DBDriver']]], + ['loadoptimizedmesh_42',['loadOptimizedMesh',['../classrtabmap_1_1Memory.html#a0827d1d23744b3693f00e518e1b0fda8',1,'rtabmap::Memory']]], + ['loadoptimizedposes_43',['loadoptimizedposes',['../classrtabmap_1_1DBDriver.html#a6ef8c39b350634d21b57b1c07b029e55',1,'rtabmap::DBDriver::loadOptimizedPoses()'],['../classrtabmap_1_1Memory.html#a9e2972a53619456d75ad923fb5e9bc7e',1,'rtabmap::Memory::loadOptimizedPoses()']]], + ['loadpreviewimage_44',['loadpreviewimage',['../classrtabmap_1_1DBDriver.html#aa1423596308a8baf123ecbc7fdfc1e82',1,'rtabmap::DBDriver::loadPreviewImage()'],['../classrtabmap_1_1Memory.html#abd0d7277526f06861df17e03fa13e817',1,'rtabmap::Memory::loadPreviewImage()']]], + ['loadscan_45',['loadScan',['../namespacertabmap_1_1util3d.html#aefffe4f3418377f85659e7546668b190',1,'rtabmap::util3d']]], + ['loadsignature_46',['loadSignature',['../classrtabmap_1_1DBDriver.html#a0a713d7a6dabdcfbb8d733dba2a20120',1,'rtabmap::DBDriver']]], + ['localgrid_47',['LocalGrid',['../classrtabmap_1_1LocalGrid.html#a42d930cf05d39ecbbd2e3678f8d0b47a',1,'rtabmap::LocalGrid']]], + ['localgridmaker_48',['LocalGridMaker',['../classrtabmap_1_1LocalGridMaker.html#a70040df32d1949125f24a193581b8183',1,'rtabmap::LocalGridMaker']]], + ['localizationcovariance_49',['localizationCovariance',['../classrtabmap_1_1Statistics.html#a4c05e2dd7412e875333f3edea70ffbb3',1,'rtabmap::Statistics']]], + ['localpath_50',['localPath',['../classrtabmap_1_1Statistics.html#a82f7c8f962fd5fcea9a5d4fc087cb2ce',1,'rtabmap::Statistics']]], + ['localtransform_51',['localtransform',['../classrtabmap_1_1StereoCameraModel.html#a5257cde3d51bbee7c51c3f36d0c7741f',1,'rtabmap::StereoCameraModel::localTransform()'],['../classrtabmap_1_1IMU.html#a10cfadbe31bbf80822a9ab92c0892b33',1,'rtabmap::IMU::localTransform()'],['../classrtabmap_1_1CameraModel.html#a8a1712ca95bf08c71b2bf2da1d635bc8',1,'rtabmap::CameraModel::localTransform()']]], + ['lock_52',['lock',['../classUMutex.html#af42d27a9379e6872e8cf2e5e171e820c',1,'UMutex']]], + ['locktry_53',['lockTry',['../classUMutex.html#a6237fbb3142023f92c11989b13207c32',1,'UMutex']]], + ['logodds_54',['logodds',['../classrtabmap_1_1GlobalMap.html#aff0b3450ec3db63b9dcb140ff0cbe77a',1,'rtabmap::GlobalMap']]], + ['longitude_55',['longitude',['../classrtabmap_1_1GPS.html#ac848af004f6581d42d55568d72332793',1,'rtabmap::GPS::longitude()'],['../classrtabmap_1_1GeodeticCoords.html#a68e16e48c8ede571e20e9889547fd509',1,'rtabmap::GeodeticCoords::longitude()']]], + ['loopclosureid_56',['loopClosureId',['../classrtabmap_1_1Statistics.html#a6a81189f2327a8b8f05a5f93d68fa3b7',1,'rtabmap::Statistics']]], + ['loopclosuremapid_57',['loopClosureMapId',['../classrtabmap_1_1Statistics.html#a1cf32a26d3ca103c22104015a3de8929',1,'rtabmap::Statistics']]], + ['loopclosuretransform_58',['loopClosureTransform',['../classrtabmap_1_1Statistics.html#a38c88cb8327baa290bf476326d24b54c',1,'rtabmap::Statistics']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_c.js b/preview/pr-1773/api/latest/search/functions_c.js new file mode 100644 index 00000000..50f7f2dc --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_c.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['mainloop_0',['mainloop',['../classrtabmap_1_1CompressionThread.html#a4948c2a9c84ee4e15699f08c2d4bac22',1,'rtabmap::CompressionThread::mainLoop()'],['../classUEventDispatcher.html#ad1aa4dc2ee29a9bfe5ee0422ad1c97f0',1,'UEventDispatcher::mainLoop()'],['../classUEventsManager.html#a7eec8b7a675e7093064f147a9f62bfb9',1,'UEventsManager::mainLoop()']]], + ['makedir_1',['makeDir',['../classUDirectory.html#a8d84cde6736b614a4396f16113f4d365',1,'UDirectory']]], + ['mapcorrection_2',['mapCorrection',['../classrtabmap_1_1Statistics.html#a775992631cd8d976a94ea6c1560dad0d',1,'rtabmap::Statistics']]], + ['mapid_3',['mapId',['../classrtabmap_1_1Signature.html#ac6a75872fb4cb64bd088794df6e897bb',1,'rtabmap::Signature']]], + ['maxdisparity_4',['maxDisparity',['../classrtabmap_1_1Stereo.html#a83319186c8c434ad0482d2eb911ecd31',1,'rtabmap::Stereo']]], + ['maxlevel_5',['maxLevel',['../classrtabmap_1_1Stereo.html#a3834923d75c9453e885bea01cb5ecfa5',1,'rtabmap::Stereo']]], + ['memory_6',['Memory',['../classrtabmap_1_1Memory.html#a24d451cdf46a9cc04cce995142a101d4',1,'rtabmap::Memory']]], + ['memorychanged_7',['memoryChanged',['../classrtabmap_1_1Memory.html#a8720df55fa6f8be933827808d364f20a',1,'rtabmap::Memory']]], + ['memoryused_8',['memoryUsed',['../classrtabmap_1_1FlannIndex.html#a5a2eed18fe1216142d09c05243e9d06f',1,'rtabmap::FlannIndex']]], + ['merge_9',['merge',['../classrtabmap_1_1Link.html#a953a029f601d7ca3efbb12ca22da4542',1,'rtabmap::Link']]], + ['mergetextures_10',['mergeTextures',['../namespacertabmap_1_1util3d.html#aeec8dd0024231c36c089340895609238',1,'rtabmap::util3d']]], + ['mindisparity_11',['minDisparity',['../classrtabmap_1_1Stereo.html#aaeec1e0e5470b1b1268b4e04bff81742',1,'rtabmap::Stereo']]], + ['multibandtexturing_12',['multiBandTexturing',['../namespacertabmap_1_1util3d.html#a695eb29e9b2679634edb6b8c36a11942',1,'rtabmap::util3d']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_d.js b/preview/pr-1773/api/latest/search/functions_d.js new file mode 100644 index 00000000..b2f269d6 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['name_0',['name',['../classrtabmap_1_1CameraModel.html#aa152828f20e1cf0ffab7bb25178191b5',1,'rtabmap::CameraModel::name()'],['../classrtabmap_1_1StereoCameraModel.html#ae759fe4ff0862f5305cf85257e0367a1',1,'rtabmap::StereoCameraModel::name()']]], + ['nms_1',['NMS',['../namespacertabmap_1_1util2d.html#aafa9a426c8e7dd0359adf40e1b45ee1c',1,'rtabmap::util2d']]], + ['nnstrategyname_2',['nnStrategyName',['../classrtabmap_1_1VWDictionary.html#a7092a6a6af93772ce89793c5e54a17cc',1,'rtabmap::VWDictionary']]], + ['normalfiltering_3',['normalfiltering',['../group__PointNormalFiltering.html#ga7c7e3de2ff24fc3aadfb3eb0ae05314d',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#gad37b605f0f26190c95450c878ca51ece',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#gabfeacf2f8a261abd98a9c6728f02324b',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#ga5c15577ccd70487c3ccd53c16b00648b',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#gad821858315d7e1e1868d6314d65a9f89',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#ga96711db9864b121ab9e2bcbf2cf44658',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#ga91fd9701dea9ebc4b7265b12b357aba1',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)'],['../group__PointNormalFiltering.html#gae3831a32e21738a381ea789e9e3e3996',1,'rtabmap::util3d::normalFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)']]], + ['normalizerotation_4',['normalizeRotation',['../classrtabmap_1_1Transform.html#acbdd19971643c7400cb59055ec64d3cf',1,'rtabmap::Transform']]], + ['now_5',['now',['../classUTimer.html#ad10fce2a4901bf5d6a460ca7b158cb3a',1,'UTimer']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_e.js b/preview/pr-1773/api/latest/search/functions_e.js new file mode 100644 index 00000000..65f8805f --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_e.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['o14_0',['o14',['../classrtabmap_1_1Transform.html#adbdb9063808e63830cbcbd99e1e84d3d',1,'rtabmap::Transform']]], + ['o24_1',['o24',['../classrtabmap_1_1Transform.html#aa68c9c3b75ad7b66ca8bbf66742b0cc5',1,'rtabmap::Transform']]], + ['o34_2',['o34',['../classrtabmap_1_1Transform.html#a39184351ff5625030b6d1019c0e3d93f',1,'rtabmap::Transform']]], + ['occupancy2dfromcloud3d_3',['occupancy2dfromcloud3d',['../namespacertabmap_1_1util3d.html#a7d90f3a00301f9f7c79cd6fc6cd663c2',1,'rtabmap::util3d::occupancy2DFromCloud3D(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)'],['../namespacertabmap_1_1util3d.html#a969e2d135e91a6e2ace68850086ae0e9',1,'rtabmap::util3d::occupancy2DFromCloud3D(const typename pcl::PointCloud< PointT >::Ptr &cloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize=0.05f, float groundNormalAngle=M_PI_4, int minClusterSize=20, bool segmentFlatObstacles=false, float maxGroundHeight=0.0f)']]], + ['occupancy2dfromgroundobstacles_4',['occupancy2dfromgroundobstacles',['../namespacertabmap_1_1util3d.html#a9b93d07997a94a78b6be6bd573e39148',1,'rtabmap::util3d::occupancy2DFromGroundObstacles(const typename pcl::PointCloud< PointT >::Ptr &groundCloud, const typename pcl::PointCloud< PointT >::Ptr &obstaclesCloud, cv::Mat &ground, cv::Mat &obstacles, float cellSize)'],['../namespacertabmap_1_1util3d.html#ab156e4308c21e118ea0aa164a5ae9812',1,'rtabmap::util3d::occupancy2DFromGroundObstacles(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &groundIndices, const pcl::IndicesPtr &obstaclesIndices, cv::Mat &ground, cv::Mat &obstacles, float cellSize)']]], + ['occupancy2dfromlaserscan_5',['occupancy2dfromlaserscan',['../namespacertabmap_1_1util3d.html#a2d2f6d5adead09c6f87ef3f7cdebc65e',1,'rtabmap::util3d::occupancy2DFromLaserScan(const cv::Mat &scanHit, const cv::Mat &scanNoHit, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#aa1c9dfd681662ff1c164956a83e30b57',1,'rtabmap::util3d::occupancy2DFromLaserScan(const cv::Mat &scan, const cv::Point3f &viewpoint, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)'],['../namespacertabmap_1_1util3d.html#a4f1002c1825baf4b7606a94b4ea9b15d',1,'rtabmap::util3d::occupancy2DFromLaserScan(const cv::Mat &scan, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)']]], + ['odomcacheconstraints_6',['odomCacheConstraints',['../classrtabmap_1_1Statistics.html#a44b7a6c4d5b8bd58efcce2fdf3f2a9fd',1,'rtabmap::Statistics']]], + ['odomcacheposes_7',['odomCachePoses',['../classrtabmap_1_1Statistics.html#a8d88d70935ef4e110cd2c92b07ed74b2',1,'rtabmap::Statistics']]], + ['odometry_8',['Odometry',['../classrtabmap_1_1Odometry.html#af2d9cf4c207d6628b0890064a385856b',1,'rtabmap::Odometry']]], + ['odometryevent_9',['odometryevent',['../classrtabmap_1_1OdometryEvent.html#aaf1fc834b6016a79b28883d20f336020',1,'rtabmap::OdometryEvent::OdometryEvent()'],['../classrtabmap_1_1OdometryEvent.html#a0667339a1f0135ac2b67180b663a028f',1,'rtabmap::OdometryEvent::OdometryEvent(const SensorData &data, const Transform &pose, const OdometryInfo &info=OdometryInfo())']]], + ['odometryresetevent_10',['OdometryResetEvent',['../classrtabmap_1_1OdometryResetEvent.html#a035eee412d9bda7da321523baff799f3',1,'rtabmap::OdometryResetEvent']]], + ['odometrythread_11',['OdometryThread',['../classrtabmap_1_1OdometryThread.html#a66435ffb547d7d59faa9224fe030934b',1,'rtabmap::OdometryThread']]], + ['odomprovided_12',['odomprovided',['../classrtabmap_1_1CameraSeerSense.html#aa3bfa6e619c5845d4994809281c9a4b5',1,'rtabmap::CameraSeerSense::odomProvided()'],['../classrtabmap_1_1CameraStereoZed.html#ac57ca4d52b5a0a3c3911ffa4a139564c',1,'rtabmap::CameraStereoZed::odomProvided()'],['../classrtabmap_1_1DBReader.html#a24351b1eb5776a83548a1d972e489dba',1,'rtabmap::DBReader::odomProvided()'],['../classrtabmap_1_1SensorCapture.html#aee217767808a9df9c63a27b284461c89',1,'rtabmap::SensorCapture::odomProvided()'],['../classrtabmap_1_1SensorCaptureThread.html#a88269150d6fd6fd39685fe9e926d98e6',1,'rtabmap::SensorCaptureThread::odomProvided()'],['../classrtabmap_1_1CameraRealSense2.html#a3b5aa7434457e09cbc6f01b985440183',1,'rtabmap::CameraRealSense2::odomProvided()'],['../classrtabmap_1_1CameraRealSense.html#a1ce069a366db4c98fe757acca7bf5b79',1,'rtabmap::CameraRealSense::odomProvided()'],['../classrtabmap_1_1CameraMyntEye.html#abc869cbd8b1106374a1f8734715d965d',1,'rtabmap::CameraMyntEye::odomProvided()'],['../classrtabmap_1_1CameraImages.html#aea0811d6305eec32fda10f46344c825f',1,'rtabmap::CameraImages::odomProvided()']]], + ['odomsensor_13',['odomSensor',['../classrtabmap_1_1SensorCaptureThread.html#a0f4e3814d203ded5735ebb7abba1451e',1,'rtabmap::SensorCaptureThread']]], + ['openconnection_14',['openConnection',['../classrtabmap_1_1DBDriver.html#ac6c0a2260ba2c3cc030136c9609142f5',1,'rtabmap::DBDriver']]], + ['opengl_5ft_5frtabmap_15',['opengl_T_rtabmap',['../classrtabmap_1_1Transform.html#abd5f003e72ad31ebc9124385030fce59',1,'rtabmap::Transform']]], + ['operator_2a_16',['operator*',['../classrtabmap_1_1Transform.html#a4d70ff21bbb61cd65c2d00130d8f84a7',1,'rtabmap::Transform']]], + ['operator_2b_17',['operator+',['../classrtabmap_1_1LaserScan.html#ab952e27e94b2fa942efe98ea651f4475',1,'rtabmap::LaserScan']]], + ['operator_2b_3d_18',['operator+=',['../classrtabmap_1_1LaserScan.html#af9f9a32f97cfbac321fc2509f0d1bd04',1,'rtabmap::LaserScan']]], + ['operator_3c_3c_19',['operator<<',['../namespacertabmap.html#a087b7a1b89acb679edee23883653f1a7',1,'rtabmap::operator<<(std::ostream &os, const CameraModel &model)'],['../namespacertabmap.html#a6138748ef83b742105e47c9275885e4a',1,'rtabmap::operator<<(std::ostream &os, const StereoCameraModel &model)'],['../namespacertabmap.html#aef0e1f1b121a9199e7511becbc8f1e32',1,'rtabmap::operator<<(std::ostream &os, const Transform &s)']]], + ['opticalrotation_20',['opticalRotation',['../classrtabmap_1_1CameraModel.html#a0853af9d0117565311da4ffc3965f8d2',1,'rtabmap::CameraModel']]], + ['optimize_21',['optimize',['../classrtabmap_1_1Optimizer.html#a7e3aff943e77603493a358ff522fa2dc',1,'rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)'],['../classrtabmap_1_1Optimizer.html#af59c8340394268f9a1eb76fd5709f2c3',1,'rtabmap::Optimizer::optimize(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)'],['../classrtabmap_1_1OptimizerCeres.html#ab988decf55da4a8821931855ddaa1c1a',1,'rtabmap::OptimizerCeres::optimize()'],['../classrtabmap_1_1OptimizerG2O.html#a9400bdf57331af310cf6b02e661d0a03',1,'rtabmap::OptimizerG2O::optimize()'],['../classrtabmap_1_1OptimizerGTSAM.html#a4905d84cfc59516eef21ea89064c31ba',1,'rtabmap::OptimizerGTSAM::optimize()'],['../classrtabmap_1_1OptimizerTORO.html#a025b40902f0ea048bdbfee9ed4ebc0f3',1,'rtabmap::OptimizerTORO::optimize()']]], + ['optimizeba_22',['optimizeba',['../classrtabmap_1_1Optimizer.html#a2f7cbdebed9787ffa6b0b30536dfa1a0',1,'rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())'],['../classrtabmap_1_1Optimizer.html#a1122f017f10105f7e6c14039d41709e5',1,'rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)'],['../classrtabmap_1_1Optimizer.html#aedaeb7cc371f3685f8595d9a151f6605',1,'rtabmap::Optimizer::optimizeBA(const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)'],['../classrtabmap_1_1Optimizer.html#aab99f045516162944ad68fdabacb53dc',1,'rtabmap::Optimizer::optimizeBA(int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())'],['../classrtabmap_1_1OptimizerGTSAM.html#a8009ace7ad9f50214bc359421546a54b',1,'rtabmap::OptimizerGTSAM::optimizeBA()'],['../classrtabmap_1_1OptimizerG2O.html#af808c77c716d30691670c18955f08f61',1,'rtabmap::OptimizerG2O::optimizeBA()'],['../classrtabmap_1_1OptimizerCVSBA.html#a48fce33707a004a0d89db99c1c39d999',1,'rtabmap::OptimizerCVSBA::optimizeBA()'],['../classrtabmap_1_1OptimizerCeres.html#af5c6d465dc4fa7c9045cd241dae5d077',1,'rtabmap::OptimizerCeres::optimizeBA()']]], + ['optimizeincremental_23',['optimizeIncremental',['../classrtabmap_1_1Optimizer.html#a278f42e0d250085ac6fe9ed425627acf',1,'rtabmap::Optimizer']]], + ['orientation_24',['orientation',['../classrtabmap_1_1IMU.html#a2160e6d59e4f9e3ffc84a2b7d62bdabd',1,'rtabmap::IMU']]], + ['orientationcovariance_25',['orientationCovariance',['../classrtabmap_1_1IMU.html#ab7668040b92bfa5532c5e1c19ddbf429',1,'rtabmap::IMU']]] +]; diff --git a/preview/pr-1773/api/latest/search/functions_f.js b/preview/pr-1773/api/latest/search/functions_f.js new file mode 100644 index 00000000..d97147a0 --- /dev/null +++ b/preview/pr-1773/api/latest/search/functions_f.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['p_0',['P',['../classrtabmap_1_1CameraModel.html#acda5d9c4eeeaaad69e950f5ea630430a',1,'rtabmap::CameraModel']]], + ['parseparameters_1',['parseparameters',['../classrtabmap_1_1StereoOpticalFlow.html#aac2df770eba89ed2607c024c91d82c78',1,'rtabmap::StereoOpticalFlow::parseParameters()'],['../classrtabmap_1_1VWDictionary.html#a89893faef6c96e3b19bfeab86094af81',1,'rtabmap::VWDictionary::parseParameters()'],['../classrtabmap_1_1StereoDense.html#ac2f693ca52897501450f2bda985c5cf5',1,'rtabmap::StereoDense::parseParameters()'],['../classrtabmap_1_1StereoSGBM.html#a73934f5953650089ac337316f3d3137c',1,'rtabmap::StereoSGBM::parseParameters()'],['../classrtabmap_1_1StereoBM.html#ab3960fcf495a6dcacfab58ed144b4cc7',1,'rtabmap::StereoBM::parseParameters()'],['../classrtabmap_1_1Stereo.html#a405d17f179327670251fca395728584b',1,'rtabmap::Stereo::parseParameters()'],['../classrtabmap_1_1Rtabmap.html#a5a461ed88e83d2dbebee819ab6690e7a',1,'rtabmap::Rtabmap::parseParameters()'],['../classrtabmap_1_1RegistrationVis.html#a6560046940995044d7a51cb0066d420e',1,'rtabmap::RegistrationVis::parseParameters()'],['../classrtabmap_1_1RegistrationIcp.html#abd60fffd946201723c35beebc7bfea6a',1,'rtabmap::RegistrationIcp::parseParameters()'],['../classrtabmap_1_1Registration.html#a0f409a8f0973667ef1687fe102bbf930',1,'rtabmap::Registration::parseParameters()'],['../classrtabmap_1_1OptimizerG2O.html#a07b598444b99584b6f2bed6baca5e8bb',1,'rtabmap::OptimizerG2O::parseParameters()'],['../classrtabmap_1_1BayesFilter.html#a6d7d48b32c853f46eee9290d5c82cd28',1,'rtabmap::BayesFilter::parseParameters()'],['../classrtabmap_1_1DBDriver.html#a3c73e045d9bdf8cad1c58efc9d930427',1,'rtabmap::DBDriver::parseParameters()'],['../classrtabmap_1_1DBDriverSqlite3.html#ab1933c0cad6c69c3ae788854731cdeec',1,'rtabmap::DBDriverSqlite3::parseParameters()'],['../classrtabmap_1_1IMUFilter.html#a26022384205491695e5fbea349e6363a',1,'rtabmap::IMUFilter::parseParameters()'],['../classrtabmap_1_1LocalGridMaker.html#a6395948673108c87dd371cb7b4a29026',1,'rtabmap::LocalGridMaker::parseParameters()'],['../classrtabmap_1_1Memory.html#abbf54d2a34838cc13ce98d41a9991918',1,'rtabmap::Memory::parseParameters()'],['../classrtabmap_1_1Optimizer.html#a0a942bd7902c8d2f9444b8eba6a648a3',1,'rtabmap::Optimizer::parseParameters()'],['../classrtabmap_1_1OptimizerCeres.html#aaa1128eeb38451086c7abd58ae6142ac',1,'rtabmap::OptimizerCeres::parseParameters()'],['../classrtabmap_1_1OptimizerGTSAM.html#a9ac24a2315e15b16270151c3aae9d8f0',1,'rtabmap::OptimizerGTSAM::parseParameters()']]], + ['passthrough_2',['passthrough',['../group__PassThrough.html#ga551c7a9b75aaf6f087f81e52f326e182',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gafe76c7bd4f68d8fe1518509564bf1f3d',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gad8ced1799837b05e34ec4bd871a129ba',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga18c88abdd186757533cd7c9e825f540f',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga2d23fe7a7205247ae3152525d19a18ec',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga9c4f395f1105d3c36861e922108bfbf0',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gadb551e7530b9fa63b588e11704827b7b',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gad674cecbb2b80e50ad8680265dd50905',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga7bfc95ed4f7fca124b00707708223473',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#ga4cef6e6f7cb447719417f118ff4e367d',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gaa6907857c69443b1bd879fcf6beef8a9',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)'],['../group__PassThrough.html#gab942c5914142128bce518c869f49f94d',1,'rtabmap::util3d::passThrough(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::string &axis, float min, float max, bool negative=false)']]], + ['pose_3',['pose',['../classrtabmap_1_1Landmark.html#ac6bfc77e153b0877c4c1cc3d97327a88',1,'rtabmap::Landmark::pose()'],['../classrtabmap_1_1OdometryEvent.html#ac7aaf59c0f005b6ac1497c870179fd25',1,'rtabmap::OdometryEvent::pose()']]], + ['poses_4',['poses',['../classrtabmap_1_1Statistics.html#acb80fff8690d88228ebda369e0e06289',1,'rtabmap::Statistics']]], + ['post_5',['post',['../classUEventsManager.html#a956353a8006abe2edb0be2e1fc1846cb',1,'UEventsManager::post()'],['../classUEventsSender.html#ab03886c42164f2f9bf89fd3da641526f',1,'UEventsSender::post()']]], + ['posterior_6',['posterior',['../classrtabmap_1_1Statistics.html#ac50fb91120fdc16266460678088ac12f',1,'rtabmap::Statistics']]], + ['postupdate_7',['postUpdate',['../classrtabmap_1_1SensorCaptureThread.html#a43cb04de41b589b3f6069fff553a4dd7',1,'rtabmap::SensorCaptureThread']]], + ['prettyprint_8',['prettyPrint',['../classrtabmap_1_1Transform.html#a61ff0bf933e0e7f220f20745df3d0818',1,'rtabmap::Transform']]], + ['previousstamp_9',['previousStamp',['../classrtabmap_1_1Odometry.html#a36aa5447b7791c88a2799c99923be393',1,'rtabmap::Odometry']]], + ['previousvelocitytransform_10',['previousVelocityTransform',['../classrtabmap_1_1Odometry.html#a35d69a27271b798da6640295a98b9785',1,'rtabmap::Odometry']]], + ['priorsignored_11',['priorsIgnored',['../classrtabmap_1_1Optimizer.html#aeebd0d5575ab7e9f492b095c05ddb237',1,'rtabmap::Optimizer']]], + ['probability_12',['probability',['../classrtabmap_1_1GlobalMap.html#a54fd556aa295938077539e85b2be829a',1,'rtabmap::GlobalMap']]], + ['process_13',['process',['../classrtabmap_1_1Odometry.html#a4fcbe67de2ec6f23829e3962ee586315',1,'rtabmap::Odometry::process()'],['../classrtabmap_1_1Rtabmap.html#a35cf8fd93f77d1c148ae6d3107725750',1,'rtabmap::Rtabmap::process(const cv::Mat &image, int id=0, const std::map< std::string, float > &externalStats=std::map< std::string, float >())'],['../classrtabmap_1_1Rtabmap.html#a91cedf4574a557cadf6daded489e4dbe',1,'rtabmap::Rtabmap::process(const SensorData &data, Transform odomPose, float odomLinearVariance, float odomAngularVariance, const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())'],['../classrtabmap_1_1Rtabmap.html#ad7f085b6ae0fd3c7077c500c028fd5c3',1,'rtabmap::Rtabmap::process(const SensorData &data, Transform odomPose, const cv::Mat &odomCovariance=cv::Mat::eye(6, 6, CV_64FC1), const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())'],['../classrtabmap_1_1Odometry.html#a0c2d39ed9b76c2c411a9e62e16e3bce1',1,'rtabmap::Odometry::process()']]], + ['project_14',['project',['../classrtabmap_1_1CameraModel.html#a01de9a3cdc993275b2fbcf21d6e29833',1,'rtabmap::CameraModel']]], + ['projectcloudonxyplane_15',['projectCloudOnXYPlane',['../namespacertabmap_1_1util3d.html#a3bdae076cc5054f35393b744f478b980',1,'rtabmap::util3d']]], + ['projectcloudtocamera_16',['projectcloudtocamera',['../namespacertabmap_1_1util3d.html#a826310ce938a13b9fff64f71e7ecc057',1,'rtabmap::util3d::projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const cv::Mat &laserScan, const rtabmap::Transform &cameraTransform)'],['../namespacertabmap_1_1util3d.html#a7dea084f1dbb77c8f5bc2a7241c3b566',1,'rtabmap::util3d::projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PointCloud< pcl::PointXYZ >::Ptr laserScan, const rtabmap::Transform &cameraTransform)'],['../namespacertabmap_1_1util3d.html#a285e01226d60613ffd77d929780069ba',1,'rtabmap::util3d::projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const pcl::PCLPointCloud2::Ptr laserScan, const rtabmap::Transform &cameraTransform)']]], + ['projectcloudtocameras_17',['projectcloudtocameras',['../namespacertabmap_1_1util3d.html#aa5a81a30a05507cb5d222f2f23c111ea',1,'rtabmap::util3d::projectCloudToCameras(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::map< int, Transform > &cameraPoses, const std::map< int, std::vector< CameraModel > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const ProgressState *state=0)'],['../namespacertabmap_1_1util3d.html#ae29c5a7ba359682e2430f55318226b39',1,'rtabmap::util3d::projectCloudToCameras(const pcl::PointCloud< pcl::PointXYZINormal > &cloud, const std::map< int, Transform > &cameraPoses, const std::map< int, std::vector< CameraModel > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const ProgressState *state=0)']]], + ['projectdepthto3d_18',['projectDepthTo3D',['../namespacertabmap_1_1util3d.html#a4a95aa3704280ecff8ae50db2fdb03b5',1,'rtabmap::util3d']]], + ['projectdepthto3dray_19',['projectDepthTo3DRay',['../namespacertabmap_1_1util3d.html#a791904051b63ab0da4d972166a25ae5f',1,'rtabmap::util3d']]], + ['projectdisparityto3d_20',['projectdisparityto3d',['../namespacertabmap_1_1util3d.html#a42fb0c483553db3b06e78d85106b8ee5',1,'rtabmap::util3d::projectDisparityTo3D(const cv::Point2f &pt, float disparity, const StereoCameraModel &model)'],['../namespacertabmap_1_1util3d.html#a05a022ff5229033fc248bc497edd5449',1,'rtabmap::util3d::projectDisparityTo3D(const cv::Point2f &pt, const cv::Mat &disparity, const StereoCameraModel &model)']]], + ['proportionalradiusfiltering_21',['proportionalradiusfiltering',['../group__ProportionalRadiusFiltering.html#gacdc66ecd05ab55d9c3eba62846f1cc5d',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gac355ea4ecf36de86425b3dcd7794b4e1',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZINormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga0b1bda3085510fd29162d6f511f14903',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga532ecb60ddd5c72d6c2930648da37621',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga9def3599aeff33e3d2a733020f713310',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga5e6659182a671665d293afb05461bdbd',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gad54efb4e02c820af7d480c157a7c5ae8',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gaa3e3f8d0bdc8bfa7e070b7ef73541ddb',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZI >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#gac755f189d29b0ed14e48e7f241103176',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga5382e5aa1b2db5ee59cda070d02030f7',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga76e80e9da74feba84271c52b06065b7f',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)'],['../group__ProportionalRadiusFiltering.html#ga3ce176a96606fd506d3ff28a0a4cdc2a',1,'rtabmap::util3d::proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)']]], + ['proximitydetectionid_22',['proximityDetectionId',['../classrtabmap_1_1Statistics.html#a0aeff90b40410ef769e63ef6b000328b',1,'rtabmap::Statistics']]], + ['proximitydetectionmapid_23',['proximityDetectionMapId',['../classrtabmap_1_1Statistics.html#ae973bc5dc35b89888a67d5e416536c53',1,'rtabmap::Statistics']]], + ['prunenode_24',['pruneNode',['../classrtabmap_1_1RtabmapColorOcTree.html#aea61a0ef99b3c56ecf5178c6d6eeb847',1,'rtabmap::RtabmapColorOcTree']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_0.js b/preview/pr-1773/api/latest/search/groups_0.js new file mode 100644 index 00000000..052e8a6c --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['2d_20laserscan_0',['PCL to 2D LaserScan',['../group__LaserScan2dFromPointCloud.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_1.js b/preview/pr-1773/api/latest/search/groups_1.js new file mode 100644 index 00000000..06713a9c --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['3d_20laserscan_0',['PCL to 3D LaserScan',['../group__LaserScanFromPointCloud.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_10.js b/preview/pr-1773/api/latest/search/groups_10.js new file mode 100644 index 00000000..bb04f957 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['utilite_0',['UtiLite',['../group__UtiLite.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_11.js b/preview/pr-1773/api/latest/search/groups_11.js new file mode 100644 index 00000000..cc658ba5 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['variance_20and_20correspondences_20of_20two_20point_20clouds_0',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['voxel_20filtering_1',['Voxel Filtering',['../group__VoxelFiltering.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_12.js b/preview/pr-1773/api/latest/search/groups_12.js new file mode 100644 index 00000000..bb5310f4 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['with_20normals_0',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_2.js b/preview/pr-1773/api/latest/search/groups_2.js new file mode 100644 index 00000000..7266a3d8 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['a_20point_20cloud_0',['a point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['a_20point_20cloud_20with_20normals_1',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['a_20single_20point_2',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['and_20correspondences_20of_20two_20point_20clouds_3',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_3.js b/preview/pr-1773/api/latest/search/groups_3.js new file mode 100644 index 00000000..047b89cf --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['box_20filtering_0',['Crop Box Filtering',['../group__CropBox.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_4.js b/preview/pr-1773/api/latest/search/groups_4.js new file mode 100644 index 00000000..0b2941eb --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_4.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['cloud_0',['cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['cloud_20cluster_20extraction_1',['Point Cloud Cluster Extraction',['../group__ExtractClusters.html',1,'']]], + ['cloud_20downsampling_2',['Point Cloud Downsampling',['../group__PointCloudDownSampling.html',1,'']]], + ['cloud_20indices_20extraction_3',['Point Cloud Indices Extraction',['../group__ExtractIndices.html',1,'']]], + ['cloud_20with_20normals_4',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['clouds_5',['clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'Compute Variance and Correspondences of Two Point Clouds'],['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds'],['../group__TransformPointcloud.html',1,'Transform PCL Point Clouds']]], + ['cluster_20extraction_6',['Point Cloud Cluster Extraction',['../group__ExtractClusters.html',1,'']]], + ['complexity_20of_20a_20point_20cloud_20with_20normals_7',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['computation_8',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['compute_20structural_20complexity_20of_20a_20point_20cloud_20with_20normals_9',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['compute_20variance_20and_20correspondences_20of_20two_20point_20clouds_10',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['correspondences_20of_20two_20point_20clouds_11',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]], + ['crop_20box_20filtering_12',['Crop Box Filtering',['../group__CropBox.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_5.js b/preview/pr-1773/api/latest/search/groups_5.js new file mode 100644 index 00000000..482b5b24 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['downsampling_0',['Point Cloud Downsampling',['../group__PointCloudDownSampling.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_6.js b/preview/pr-1773/api/latest/search/groups_6.js new file mode 100644 index 00000000..f86cab0c --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['extraction_0',['extraction',['../group__ExtractClusters.html',1,'Point Cloud Cluster Extraction'],['../group__ExtractIndices.html',1,'Point Cloud Indices Extraction']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_7.js b/preview/pr-1773/api/latest/search/groups_7.js new file mode 100644 index 00000000..65061a5d --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['filtering_0',['filtering',['../group__CropBox.html',1,'Crop Box Filtering'],['../group__FrustumFiltering.html',1,'Frustum Filtering'],['../group__PassThrough.html',1,'Pass-through Filtering'],['../group__PointNormalFiltering.html',1,'Point Normal Filtering'],['../group__ProportionalRadiusFiltering.html',1,'Proportional Radius Filtering'],['../group__RadiusFiltering.html',1,'Radius Filtering'],['../group__SubtractFiltering.html',1,'Subtract Filtering'],['../group__VoxelFiltering.html',1,'Voxel Filtering']]], + ['filtering_20of_20pcl_20point_20clouds_1',['filtering of pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds']]], + ['from_20a_20point_20cloud_2',['from a point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['frustum_20filtering_3',['Frustum Filtering',['../group__FrustumFiltering.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_8.js b/preview/pr-1773/api/latest/search/groups_8.js new file mode 100644 index 00000000..53dfb1ad --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['indices_20extraction_0',['Point Cloud Indices Extraction',['../group__ExtractIndices.html',1,'']]], + ['interest_20roi_20computation_1',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_9.js b/preview/pr-1773/api/latest/search/groups_9.js new file mode 100644 index 00000000..5a1340eb --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['laserscan_0',['laserscan',['../group__LaserScan2dFromPointCloud.html',1,'PCL to 2D LaserScan'],['../group__LaserScanFromPointCloud.html',1,'PCL to 3D LaserScan']]], + ['laserscan_20to_20pcl_1',['LaserScan to PCL',['../group__LaserScanToPointCloud.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_a.js b/preview/pr-1773/api/latest/search/groups_a.js new file mode 100644 index 00000000..cbe33264 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nan_20points_20from_20a_20point_20cloud_0',['nan points from a point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['normal_20filtering_1',['Point Normal Filtering',['../group__PointNormalFiltering.html',1,'']]], + ['normals_2',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_b.js b/preview/pr-1773/api/latest/search/groups_b.js new file mode 100644 index 00000000..2b3fae46 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['of_20a_20point_20cloud_20with_20normals_0',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['of_20interest_20roi_20computation_1',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['of_20pcl_20point_20clouds_2',['of pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds']]], + ['of_20two_20point_20clouds_3',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_c.js b/preview/pr-1773/api/latest/search/groups_c.js new file mode 100644 index 00000000..d0d9bc50 --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_c.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['pass_20through_20filtering_0',['Pass-through Filtering',['../group__PassThrough.html',1,'']]], + ['pcl_1',['LaserScan to PCL',['../group__LaserScanToPointCloud.html',1,'']]], + ['pcl_20point_20clouds_2',['pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds'],['../group__TransformPointcloud.html',1,'Transform PCL Point Clouds']]], + ['pcl_20to_202d_20laserscan_3',['PCL to 2D LaserScan',['../group__LaserScan2dFromPointCloud.html',1,'']]], + ['pcl_20to_203d_20laserscan_4',['PCL to 3D LaserScan',['../group__LaserScanFromPointCloud.html',1,'']]], + ['point_5',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['point_20cloud_6',['point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['point_20cloud_20cluster_20extraction_7',['Point Cloud Cluster Extraction',['../group__ExtractClusters.html',1,'']]], + ['point_20cloud_20downsampling_8',['Point Cloud Downsampling',['../group__PointCloudDownSampling.html',1,'']]], + ['point_20cloud_20indices_20extraction_9',['Point Cloud Indices Extraction',['../group__ExtractIndices.html',1,'']]], + ['point_20cloud_20with_20normals_10',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['point_20clouds_11',['point clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'Compute Variance and Correspondences of Two Point Clouds'],['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds'],['../group__TransformPointcloud.html',1,'Transform PCL Point Clouds']]], + ['point_20normal_20filtering_12',['Point Normal Filtering',['../group__PointNormalFiltering.html',1,'']]], + ['points_20from_20a_20point_20cloud_13',['points from a point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['proportional_20radius_20filtering_14',['Proportional Radius Filtering',['../group__ProportionalRadiusFiltering.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_d.js b/preview/pr-1773/api/latest/search/groups_d.js new file mode 100644 index 00000000..3a31c84f --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['radius_20filtering_0',['radius filtering',['../group__ProportionalRadiusFiltering.html',1,'Proportional Radius Filtering'],['../group__RadiusFiltering.html',1,'Radius Filtering']]], + ['random_20sampling_1',['Random Sampling',['../group__RandomSampling.html',1,'']]], + ['range_20filtering_20of_20pcl_20point_20clouds_2',['range filtering of pcl point clouds',['../group__PointCloudRangeFiltering.html',1,'Range Filtering of PCL Point Clouds'],['../group__PointCloudSplitRangeFiltering.html',1,'Split Range Filtering of PCL Point Clouds']]], + ['region_20of_20interest_20roi_20computation_3',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]], + ['remove_20nan_20points_20from_20a_20point_20cloud_4',['remove nan points from a point cloud',['../group__RemoveNaNFromPointCloud.html',1,'Remove NaN Points from a Point Cloud'],['../group__RemoveNaNNormalsFromPointCloud.html',1,'Remove NaN Points from a Point Cloud']]], + ['roi_20computation_5',['Region of Interest (ROI) Computation',['../group__RoiComputation.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_e.js b/preview/pr-1773/api/latest/search/groups_e.js new file mode 100644 index 00000000..a67c98aa --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['sampling_0',['Random Sampling',['../group__RandomSampling.html',1,'']]], + ['single_20point_1',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['split_20range_20filtering_20of_20pcl_20point_20clouds_2',['Split Range Filtering of PCL Point Clouds',['../group__PointCloudSplitRangeFiltering.html',1,'']]], + ['structural_20complexity_20of_20a_20point_20cloud_20with_20normals_3',['Compute Structural Complexity of a Point Cloud with Normals',['../group__ComputeNormalsComplexity.html',1,'']]], + ['subtract_20filtering_4',['Subtract Filtering',['../group__SubtractFiltering.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/groups_f.js b/preview/pr-1773/api/latest/search/groups_f.js new file mode 100644 index 00000000..b48e1f6e --- /dev/null +++ b/preview/pr-1773/api/latest/search/groups_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['through_20filtering_0',['Pass-through Filtering',['../group__PassThrough.html',1,'']]], + ['to_202d_20laserscan_1',['PCL to 2D LaserScan',['../group__LaserScan2dFromPointCloud.html',1,'']]], + ['to_203d_20laserscan_2',['PCL to 3D LaserScan',['../group__LaserScanFromPointCloud.html',1,'']]], + ['to_20pcl_3',['LaserScan to PCL',['../group__LaserScanToPointCloud.html',1,'']]], + ['transform_20a_20single_20point_4',['Transform a single point',['../group__TransformPoint.html',1,'']]], + ['transform_20pcl_20point_20clouds_5',['Transform PCL Point Clouds',['../group__TransformPointcloud.html',1,'']]], + ['two_20point_20clouds_6',['Compute Variance and Correspondences of Two Point Clouds',['../group__ComputeVarianceAndCorrespondences.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/mag.svg b/preview/pr-1773/api/latest/search/mag.svg new file mode 100644 index 00000000..ffb6cf0d --- /dev/null +++ b/preview/pr-1773/api/latest/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/search/mag_d.svg b/preview/pr-1773/api/latest/search/mag_d.svg new file mode 100644 index 00000000..4122773f --- /dev/null +++ b/preview/pr-1773/api/latest/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/preview/pr-1773/api/latest/search/mag_sel.svg b/preview/pr-1773/api/latest/search/mag_sel.svg new file mode 100644 index 00000000..553dba87 --- /dev/null +++ b/preview/pr-1773/api/latest/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/search/mag_seld.svg b/preview/pr-1773/api/latest/search/mag_seld.svg new file mode 100644 index 00000000..c906f84c --- /dev/null +++ b/preview/pr-1773/api/latest/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/search/namespaces_0.js b/preview/pr-1773/api/latest/search/namespaces_0.js new file mode 100644 index 00000000..ed0b0a1f --- /dev/null +++ b/preview/pr-1773/api/latest/search/namespaces_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rtabmap_0',['rtabmap',['../namespacertabmap.html',1,'']]], + ['rtabmap_3a_3agraph_1',['graph',['../namespacertabmap_1_1graph.html',1,'rtabmap']]], + ['rtabmap_3a_3autil2d_2',['util2d',['../namespacertabmap_1_1util2d.html',1,'rtabmap']]], + ['rtabmap_3a_3autil3d_3',['util3d',['../namespacertabmap_1_1util3d.html',1,'rtabmap']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_0.js b/preview/pr-1773/api/latest/search/pages_0.js new file mode 100644 index 00000000..59c0a02e --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['RTAB-Map C++ API',['../index.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_1.js b/preview/pr-1773/api/latest/search/pages_1.js new file mode 100644 index 00000000..a45d3a7e --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['c_20api_0',['RTAB-Map C++ API',['../index.html',1,'']]], + ['command_20line_20tools_1',['Command-line tools',['../tools.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_2.js b/preview/pr-1773/api/latest/search/pages_2.js new file mode 100644 index 00000000..4d858458 --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_3.js b/preview/pr-1773/api/latest/search/pages_3.js new file mode 100644 index 00000000..2a34a765 --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['line_20tools_0',['Command-line tools',['../tools.html',1,'']]], + ['list_1',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_4.js b/preview/pr-1773/api/latest/search/pages_4.js new file mode 100644 index 00000000..2ea62d88 --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['map_20c_20api_0',['RTAB-Map C++ API',['../index.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_5.js b/preview/pr-1773/api/latest/search/pages_5.js new file mode 100644 index 00000000..5fb11f7d --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['parameter_20reference_0',['Parameter reference',['../parameters.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_6.js b/preview/pr-1773/api/latest/search/pages_6.js new file mode 100644 index 00000000..eab65bf3 --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reference_0',['Parameter reference',['../parameters.html',1,'']]], + ['rtab_20map_20c_20api_1',['RTAB-Map C++ API',['../index.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_7.js b/preview/pr-1773/api/latest/search/pages_7.js new file mode 100644 index 00000000..cee210a7 --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tools_0',['Command-line tools',['../tools.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/pages_8.js b/preview/pr-1773/api/latest/search/pages_8.js new file mode 100644 index 00000000..1775b8de --- /dev/null +++ b/preview/pr-1773/api/latest/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uresourcegenerator_0',['uResourceGenerator',['../uResourceGeneratorPage.html',1,'']]] +]; diff --git a/preview/pr-1773/api/latest/search/related_0.js b/preview/pr-1773/api/latest/search/related_0.js new file mode 100644 index 00000000..874247ef --- /dev/null +++ b/preview/pr-1773/api/latest/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ueventsmanager_0',['UEventsManager',['../classUEventsHandler.html#a977152b27d4c918d79a2db23ed85bfa6',1,'UEventsHandler']]] +]; diff --git a/preview/pr-1773/api/latest/search/search.css b/preview/pr-1773/api/latest/search/search.css new file mode 100644 index 00000000..d7b0f90b --- /dev/null +++ b/preview/pr-1773/api/latest/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: url('mag_sel.svg'); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: url('mag.svg'); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial,Verdana,sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: black; +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial,Verdana,sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: black; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: black; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: white; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid black; + background-color: #EEF1F7; + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: #EEF1F7; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial,Verdana,sans-serif; + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial,Verdana,sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial,Verdana,sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/preview/pr-1773/api/latest/search/search.js b/preview/pr-1773/api/latest/search/search.js new file mode 100644 index 00000000..6fd40c67 --- /dev/null +++ b/preview/pr-1773/api/latest/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/clams/slam_calibrator.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    slam_calibrator.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2013, Alex Teichman and Stephen Miller (Stanford University)
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the <organization> nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26
    +
    27RTAB-Map integration: Mathieu Labbe
    +
    28*/
    +
    29
    +
    30#ifndef SLAM_CALIBRATOR_H
    +
    31#define SLAM_CALIBRATOR_H
    +
    32
    +
    33#include <rtabmap/core/clams/discrete_depth_distortion_model.h>
    +
    34#include <rtabmap/core/SensorData.h>
    +
    35#include <pcl/point_cloud.h>
    +
    36#include <pcl/point_types.h>
    +
    37
    +
    38namespace clams
    +
    39{
    +
    40
    +
    41DiscreteDepthDistortionModel RTABMAP_CORE_EXPORT calibrate(
    +
    42 const std::map<int, rtabmap::SensorData> & sequence,
    +
    43 const std::map<int, rtabmap::Transform> & trajectory,
    +
    44 const pcl::PointCloud<pcl::PointXYZ>::Ptr & map,
    +
    45 double coneRadius = 0.02,
    +
    46 double coneStdevThresh = 0.03);
    +
    47
    +
    48}
    +
    49
    +
    50#endif // SLAM_CALIBRATOR_H
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/splitbar.png b/preview/pr-1773/api/latest/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/splitbard.png b/preview/pr-1773/api/latest/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/stereoRectifyFisheye_8h_source.html b/preview/pr-1773/api/latest/stereoRectifyFisheye_8h_source.html new file mode 100644 index 00000000..ed5fd2da --- /dev/null +++ b/preview/pr-1773/api/latest/stereoRectifyFisheye_8h_source.html @@ -0,0 +1,1373 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/stereo/stereoRectifyFisheye.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    stereoRectifyFisheye.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5This code is the same has cv::stereoRectify() but accepting fisheye distortion model:
    +
    6All cvUndistortPoints() have been replaced by cv::fisheye::undistortPoints()
    +
    7See https://github.com/opencv/opencv/blob/master/modules/calib3d/src/calibration.cpp
    +
    8
    +
    9Redistribution and use in source and binary forms, with or without
    +
    10modification, are permitted provided that the following conditions are met:
    +
    11 * Redistributions of source code must retain the above copyright
    +
    12 notice, this list of conditions and the following disclaimer.
    +
    13 * Redistributions in binary form must reproduce the above copyright
    +
    14 notice, this list of conditions and the following disclaimer in the
    +
    15 documentation and/or other materials provided with the distribution.
    +
    16 * Neither the name of the Universite de Sherbrooke nor the
    +
    17 names of its contributors may be used to endorse or promote products
    +
    18 derived from this software without specific prior written permission.
    +
    19
    +
    20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    21ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    22WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    23DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    24DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    25(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    26LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    27ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    28(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    29SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    30*/
    +
    31
    +
    32#ifndef CORELIB_SRC_OPENCV_STEREORECTIFYFISHEYE_H_
    +
    33#define CORELIB_SRC_OPENCV_STEREORECTIFYFISHEYE_H_
    +
    34
    +
    35// This header relies on the OpenCV C API (cvRodrigues2, cvProjectPoints2, ...)
    +
    36// which was removed in OpenCV 5. Pull in only the version macros (available in
    +
    37// all OpenCV versions) so we can fail early with a clear message rather than
    +
    38// with cryptic errors from the includes below.
    +
    39#include <opencv2/core/version.hpp>
    +
    40#if CV_MAJOR_VERSION >= 5
    +
    41#error "stereoRectifyFisheye.h is not supported with OpenCV 5 or later (it uses the removed OpenCV C API). Use cv::fisheye::stereoRectify() instead, or guard your include with '#if CV_MAJOR_VERSION < 5'."
    +
    42#endif
    +
    43
    +
    44#include <opencv2/calib3d/calib3d.hpp>
    +
    45#if CV_MAJOR_VERSION >= 3
    +
    46#include <opencv2/calib3d/calib3d_c.h>
    +
    47
    +
    48#if CV_MAJOR_VERSION >= 4
    +
    49#include <opencv2/core/core_c.h>
    +
    50
    +
    51// Opencv4 doesn't expose those functions below anymore, we should recopy all of them!
    +
    52int cvRodrigues2( const CvMat* src, CvMat* dst, CvMat* jacobian CV_DEFAULT(0))
    +
    53{
    +
    54 int depth, elem_size;
    +
    55 int i, k;
    +
    56 double J[27] = {0};
    +
    57 CvMat matJ = cvMat( 3, 9, CV_64F, J );
    +
    58
    +
    59 if( !CV_IS_MAT(src) )
    +
    60 CV_Error( !src ? CV_StsNullPtr : CV_StsBadArg, "Input argument is not a valid matrix" );
    +
    61
    +
    62 if( !CV_IS_MAT(dst) )
    +
    63 CV_Error( !dst ? CV_StsNullPtr : CV_StsBadArg,
    +
    64 "The first output argument is not a valid matrix" );
    +
    65
    +
    66 depth = CV_MAT_DEPTH(src->type);
    +
    67 elem_size = CV_ELEM_SIZE(depth);
    +
    68
    +
    69 if( depth != CV_32F && depth != CV_64F )
    +
    70 CV_Error( CV_StsUnsupportedFormat, "The matrices must have 32f or 64f data type" );
    +
    71
    +
    72 if( !CV_ARE_DEPTHS_EQ(src, dst) )
    +
    73 CV_Error( CV_StsUnmatchedFormats, "All the matrices must have the same data type" );
    +
    74
    +
    75 if( jacobian )
    +
    76 {
    +
    77 if( !CV_IS_MAT(jacobian) )
    +
    78 CV_Error( CV_StsBadArg, "Jacobian is not a valid matrix" );
    +
    79
    +
    80 if( !CV_ARE_DEPTHS_EQ(src, jacobian) || CV_MAT_CN(jacobian->type) != 1 )
    +
    81 CV_Error( CV_StsUnmatchedFormats, "Jacobian must have 32fC1 or 64fC1 datatype" );
    +
    82
    +
    83 if( (jacobian->rows != 9 || jacobian->cols != 3) &&
    +
    84 (jacobian->rows != 3 || jacobian->cols != 9))
    +
    85 CV_Error( CV_StsBadSize, "Jacobian must be 3x9 or 9x3" );
    +
    86 }
    +
    87
    +
    88 if( src->cols == 1 || src->rows == 1 )
    +
    89 {
    +
    90 int step = src->rows > 1 ? src->step / elem_size : 1;
    +
    91
    +
    92 if( src->rows + src->cols*CV_MAT_CN(src->type) - 1 != 3 )
    +
    93 CV_Error( CV_StsBadSize, "Input matrix must be 1x3, 3x1 or 3x3" );
    +
    94
    +
    95 if( dst->rows != 3 || dst->cols != 3 || CV_MAT_CN(dst->type) != 1 )
    +
    96 CV_Error( CV_StsBadSize, "Output matrix must be 3x3, single-channel floating point matrix" );
    +
    97
    +
    98 cv::Point3d r;
    +
    99 if( depth == CV_32F )
    +
    100 {
    +
    101 r.x = src->data.fl[0];
    +
    102 r.y = src->data.fl[step];
    +
    103 r.z = src->data.fl[step*2];
    +
    104 }
    +
    105 else
    +
    106 {
    +
    107 r.x = src->data.db[0];
    +
    108 r.y = src->data.db[step];
    +
    109 r.z = src->data.db[step*2];
    +
    110 }
    +
    111
    +
    112 double theta = cv::norm(r);
    +
    113
    +
    114 if( theta < DBL_EPSILON )
    +
    115 {
    +
    116 cvSetIdentity( dst );
    +
    117
    +
    118 if( jacobian )
    +
    119 {
    +
    120 memset( J, 0, sizeof(J) );
    +
    121 J[5] = J[15] = J[19] = -1;
    +
    122 J[7] = J[11] = J[21] = 1;
    +
    123 }
    +
    124 }
    +
    125 else
    +
    126 {
    +
    127 double c = cos(theta);
    +
    128 double s = sin(theta);
    +
    129 double c1 = 1. - c;
    +
    130 double itheta = theta ? 1./theta : 0.;
    +
    131
    +
    132 r *= itheta;
    +
    133
    +
    134 cv::Matx33d rrt( r.x*r.x, r.x*r.y, r.x*r.z, r.x*r.y, r.y*r.y, r.y*r.z, r.x*r.z, r.y*r.z, r.z*r.z );
    +
    135 cv::Matx33d r_x( 0, -r.z, r.y,
    +
    136 r.z, 0, -r.x,
    +
    137 -r.y, r.x, 0 );
    +
    138
    +
    139 // R = cos(theta)*I + (1 - cos(theta))*r*rT + sin(theta)*[r_x]
    +
    140 cv::Matx33d R = c*cv::Matx33d::eye() + c1*rrt + s*r_x;
    +
    141
    +
    142 cv::Mat(R).convertTo(cv::cvarrToMat(dst), dst->type);
    +
    143
    +
    144 if( jacobian )
    +
    145 {
    +
    146 const double I[] = { 1, 0, 0, 0, 1, 0, 0, 0, 1 };
    +
    147 double drrt[] = { r.x+r.x, r.y, r.z, r.y, 0, 0, r.z, 0, 0,
    +
    148 0, r.x, 0, r.x, r.y+r.y, r.z, 0, r.z, 0,
    +
    149 0, 0, r.x, 0, 0, r.y, r.x, r.y, r.z+r.z };
    +
    150 double d_r_x_[] = { 0, 0, 0, 0, 0, -1, 0, 1, 0,
    +
    151 0, 0, 1, 0, 0, 0, -1, 0, 0,
    +
    152 0, -1, 0, 1, 0, 0, 0, 0, 0 };
    +
    153 for( i = 0; i < 3; i++ )
    +
    154 {
    +
    155 double ri = i == 0 ? r.x : i == 1 ? r.y : r.z;
    +
    156 double a0 = -s*ri, a1 = (s - 2*c1*itheta)*ri, a2 = c1*itheta;
    +
    157 double a3 = (c - s*itheta)*ri, a4 = s*itheta;
    +
    158 for( k = 0; k < 9; k++ )
    +
    159 J[i*9+k] = a0*I[k] + a1*rrt.val[k] + a2*drrt[i*9+k] +
    +
    160 a3*r_x.val[k] + a4*d_r_x_[i*9+k];
    +
    161 }
    +
    162 }
    +
    163 }
    +
    164 }
    +
    165 else if( src->cols == 3 && src->rows == 3 )
    +
    166 {
    +
    167 cv::Matx33d U, Vt;
    +
    168 cv::Vec3d W;
    +
    169 double theta, s, c;
    +
    170 int step = dst->rows > 1 ? dst->step / elem_size : 1;
    +
    171
    +
    172 if( (dst->rows != 1 || dst->cols*CV_MAT_CN(dst->type) != 3) &&
    +
    173 (dst->rows != 3 || dst->cols != 1 || CV_MAT_CN(dst->type) != 1))
    +
    174 CV_Error( CV_StsBadSize, "Output matrix must be 1x3 or 3x1" );
    +
    175
    +
    176 cv::Matx33d R = cv::cvarrToMat(src);
    +
    177
    +
    178 if( !cv::checkRange(R, true, NULL, -100, 100) )
    +
    179 {
    +
    180 cvZero(dst);
    +
    181 if( jacobian )
    +
    182 cvZero(jacobian);
    +
    183 return 0;
    +
    184 }
    +
    185
    +
    186 cv::SVD::compute(R, W, U, Vt);
    +
    187 R = U*Vt;
    +
    188
    +
    189 cv::Point3d r(R(2, 1) - R(1, 2), R(0, 2) - R(2, 0), R(1, 0) - R(0, 1));
    +
    190
    +
    191 s = std::sqrt((r.x*r.x + r.y*r.y + r.z*r.z)*0.25);
    +
    192 c = (R(0, 0) + R(1, 1) + R(2, 2) - 1)*0.5;
    +
    193 c = c > 1. ? 1. : c < -1. ? -1. : c;
    +
    194 theta = acos(c);
    +
    195
    +
    196 if( s < 1e-5 )
    +
    197 {
    +
    198 double t;
    +
    199
    +
    200 if( c > 0 )
    +
    201 r = cv::Point3d(0, 0, 0);
    +
    202 else
    +
    203 {
    +
    204 t = (R(0, 0) + 1)*0.5;
    +
    205 r.x = std::sqrt(MAX(t,0.));
    +
    206 t = (R(1, 1) + 1)*0.5;
    +
    207 r.y = std::sqrt(MAX(t,0.))*(R(0, 1) < 0 ? -1. : 1.);
    +
    208 t = (R(2, 2) + 1)*0.5;
    +
    209 r.z = std::sqrt(MAX(t,0.))*(R(0, 2) < 0 ? -1. : 1.);
    +
    210 if( fabs(r.x) < fabs(r.y) && fabs(r.x) < fabs(r.z) && (R(1, 2) > 0) != (r.y*r.z > 0) )
    +
    211 r.z = -r.z;
    +
    212 theta /= cv::norm(r);
    +
    213 r *= theta;
    +
    214 }
    +
    215
    +
    216 if( jacobian )
    +
    217 {
    +
    218 memset( J, 0, sizeof(J) );
    +
    219 if( c > 0 )
    +
    220 {
    +
    221 J[5] = J[15] = J[19] = -0.5;
    +
    222 J[7] = J[11] = J[21] = 0.5;
    +
    223 }
    +
    224 }
    +
    225 }
    +
    226 else
    +
    227 {
    +
    228 double vth = 1/(2*s);
    +
    229
    +
    230 if( jacobian )
    +
    231 {
    +
    232 double t, dtheta_dtr = -1./s;
    +
    233 // var1 = [vth;theta]
    +
    234 // var = [om1;var1] = [om1;vth;theta]
    +
    235 double dvth_dtheta = -vth*c/s;
    +
    236 double d1 = 0.5*dvth_dtheta*dtheta_dtr;
    +
    237 double d2 = 0.5*dtheta_dtr;
    +
    238 // dvar1/dR = dvar1/dtheta*dtheta/dR = [dvth/dtheta; 1] * dtheta/dtr * dtr/dR
    +
    239 double dvardR[5*9] =
    +
    240 {
    +
    241 0, 0, 0, 0, 0, 1, 0, -1, 0,
    +
    242 0, 0, -1, 0, 0, 0, 1, 0, 0,
    +
    243 0, 1, 0, -1, 0, 0, 0, 0, 0,
    +
    244 d1, 0, 0, 0, d1, 0, 0, 0, d1,
    +
    245 d2, 0, 0, 0, d2, 0, 0, 0, d2
    +
    246 };
    +
    247 // var2 = [om;theta]
    +
    248 double dvar2dvar[] =
    +
    249 {
    +
    250 vth, 0, 0, r.x, 0,
    +
    251 0, vth, 0, r.y, 0,
    +
    252 0, 0, vth, r.z, 0,
    +
    253 0, 0, 0, 0, 1
    +
    254 };
    +
    255 double domegadvar2[] =
    +
    256 {
    +
    257 theta, 0, 0, r.x*vth,
    +
    258 0, theta, 0, r.y*vth,
    +
    259 0, 0, theta, r.z*vth
    +
    260 };
    +
    261
    +
    262 CvMat _dvardR = cvMat( 5, 9, CV_64FC1, dvardR );
    +
    263 CvMat _dvar2dvar = cvMat( 4, 5, CV_64FC1, dvar2dvar );
    +
    264 CvMat _domegadvar2 = cvMat( 3, 4, CV_64FC1, domegadvar2 );
    +
    265 double t0[3*5];
    +
    266 CvMat _t0 = cvMat( 3, 5, CV_64FC1, t0 );
    +
    267
    +
    268 cvMatMul( &_domegadvar2, &_dvar2dvar, &_t0 );
    +
    269 cvMatMul( &_t0, &_dvardR, &matJ );
    +
    270
    +
    271 // transpose every row of matJ (treat the rows as 3x3 matrices)
    +
    272 CV_SWAP(J[1], J[3], t); CV_SWAP(J[2], J[6], t); CV_SWAP(J[5], J[7], t);
    +
    273 CV_SWAP(J[10], J[12], t); CV_SWAP(J[11], J[15], t); CV_SWAP(J[14], J[16], t);
    +
    274 CV_SWAP(J[19], J[21], t); CV_SWAP(J[20], J[24], t); CV_SWAP(J[23], J[25], t);
    +
    275 }
    +
    276
    +
    277 vth *= theta;
    +
    278 r *= vth;
    +
    279 }
    +
    280
    +
    281 if( depth == CV_32F )
    +
    282 {
    +
    283 dst->data.fl[0] = (float)r.x;
    +
    284 dst->data.fl[step] = (float)r.y;
    +
    285 dst->data.fl[step*2] = (float)r.z;
    +
    286 }
    +
    287 else
    +
    288 {
    +
    289 dst->data.db[0] = r.x;
    +
    290 dst->data.db[step] = r.y;
    +
    291 dst->data.db[step*2] = r.z;
    +
    292 }
    +
    293 }
    +
    294
    +
    295 if( jacobian )
    +
    296 {
    +
    297 if( depth == CV_32F )
    +
    298 {
    +
    299 if( jacobian->rows == matJ.rows )
    +
    300 cvConvert( &matJ, jacobian );
    +
    301 else
    +
    302 {
    +
    303 float Jf[3*9];
    +
    304 CvMat _Jf = cvMat( matJ.rows, matJ.cols, CV_32FC1, Jf );
    +
    305 cvConvert( &matJ, &_Jf );
    +
    306 cvTranspose( &_Jf, jacobian );
    +
    307 }
    +
    308 }
    +
    309 else if( jacobian->rows == matJ.rows )
    +
    310 cvCopy( &matJ, jacobian );
    +
    311 else
    +
    312 cvTranspose( &matJ, jacobian );
    +
    313 }
    +
    314
    +
    315 return 1;
    +
    316}
    +
    317
    +
    318template <typename FLOAT>
    +
    319void computeTiltProjectionMatrix(FLOAT tauX,
    +
    320 FLOAT tauY,
    +
    321 cv::Matx<FLOAT, 3, 3>* matTilt = 0,
    +
    322 cv::Matx<FLOAT, 3, 3>* dMatTiltdTauX = 0,
    +
    323 cv::Matx<FLOAT, 3, 3>* dMatTiltdTauY = 0,
    +
    324 cv::Matx<FLOAT, 3, 3>* invMatTilt = 0)
    +
    325{
    +
    326 FLOAT cTauX = cos(tauX);
    +
    327 FLOAT sTauX = sin(tauX);
    +
    328 FLOAT cTauY = cos(tauY);
    +
    329 FLOAT sTauY = sin(tauY);
    +
    330 cv::Matx<FLOAT, 3, 3> matRotX = cv::Matx<FLOAT, 3, 3>(1,0,0,0,cTauX,sTauX,0,-sTauX,cTauX);
    +
    331 cv::Matx<FLOAT, 3, 3> matRotY = cv::Matx<FLOAT, 3, 3>(cTauY,0,-sTauY,0,1,0,sTauY,0,cTauY);
    +
    332 cv::Matx<FLOAT, 3, 3> matRotXY = matRotY * matRotX;
    +
    333 cv::Matx<FLOAT, 3, 3> matProjZ = cv::Matx<FLOAT, 3, 3>(matRotXY(2,2),0,-matRotXY(0,2),0,matRotXY(2,2),-matRotXY(1,2),0,0,1);
    +
    334 if (matTilt)
    +
    335 {
    +
    336 // Matrix for trapezoidal distortion of tilted image sensor
    +
    337 *matTilt = matProjZ * matRotXY;
    +
    338 }
    +
    339 if (dMatTiltdTauX)
    +
    340 {
    +
    341 // Derivative with respect to tauX
    +
    342 cv::Matx<FLOAT, 3, 3> dMatRotXYdTauX = matRotY * cv::Matx<FLOAT, 3, 3>(0,0,0,0,-sTauX,cTauX,0,-cTauX,-sTauX);
    +
    343 cv::Matx<FLOAT, 3, 3> dMatProjZdTauX = cv::Matx<FLOAT, 3, 3>(dMatRotXYdTauX(2,2),0,-dMatRotXYdTauX(0,2),
    +
    344 0,dMatRotXYdTauX(2,2),-dMatRotXYdTauX(1,2),0,0,0);
    +
    345 *dMatTiltdTauX = (matProjZ * dMatRotXYdTauX) + (dMatProjZdTauX * matRotXY);
    +
    346 }
    +
    347 if (dMatTiltdTauY)
    +
    348 {
    +
    349 // Derivative with respect to tauY
    +
    350 cv::Matx<FLOAT, 3, 3> dMatRotXYdTauY = cv::Matx<FLOAT, 3, 3>(-sTauY,0,-cTauY,0,0,0,cTauY,0,-sTauY) * matRotX;
    +
    351 cv::Matx<FLOAT, 3, 3> dMatProjZdTauY = cv::Matx<FLOAT, 3, 3>(dMatRotXYdTauY(2,2),0,-dMatRotXYdTauY(0,2),
    +
    352 0,dMatRotXYdTauY(2,2),-dMatRotXYdTauY(1,2),0,0,0);
    +
    353 *dMatTiltdTauY = (matProjZ * dMatRotXYdTauY) + (dMatProjZdTauY * matRotXY);
    +
    354 }
    +
    355 if (invMatTilt)
    +
    356 {
    +
    357 FLOAT inv = 1./matRotXY(2,2);
    +
    358 cv::Matx<FLOAT, 3, 3> invMatProjZ = cv::Matx<FLOAT, 3, 3>(inv,0,inv*matRotXY(0,2),0,inv,inv*matRotXY(1,2),0,0,1);
    +
    359 *invMatTilt = matRotXY.t()*invMatProjZ;
    +
    360 }
    +
    361}
    +
    362
    +
    363void cvProjectPoints2Internal( const CvMat* objectPoints,
    +
    364 const CvMat* r_vec,
    +
    365 const CvMat* t_vec,
    +
    366 const CvMat* A,
    +
    367 const CvMat* distCoeffs,
    +
    368 CvMat* imagePoints, CvMat* dpdr CV_DEFAULT(NULL),
    +
    369 CvMat* dpdt CV_DEFAULT(NULL), CvMat* dpdf CV_DEFAULT(NULL),
    +
    370 CvMat* dpdc CV_DEFAULT(NULL), CvMat* dpdk CV_DEFAULT(NULL),
    +
    371 CvMat* dpdo CV_DEFAULT(NULL),
    +
    372 double aspectRatio CV_DEFAULT(0) )
    +
    373{
    +
    374 cv::Ptr<CvMat> matM, _m;
    +
    375 cv::Ptr<CvMat> _dpdr, _dpdt, _dpdc, _dpdf, _dpdk;
    +
    376 cv::Ptr<CvMat> _dpdo;
    +
    377
    +
    378 int i, j, count;
    +
    379 int calc_derivatives;
    +
    380 const CvPoint3D64f* M;
    +
    381 CvPoint2D64f* m;
    +
    382 double r[3], R[9], dRdr[27], t[3], a[9], k[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, fx, fy, cx, cy;
    +
    383 cv::Matx33d matTilt = cv::Matx33d::eye();
    +
    384 cv::Matx33d dMatTiltdTauX(0,0,0,0,0,0,0,-1,0);
    +
    385 cv::Matx33d dMatTiltdTauY(0,0,0,0,0,0,1,0,0);
    +
    386 CvMat _r, _t, _a = cvMat( 3, 3, CV_64F, a ), _k;
    +
    387 CvMat matR = cvMat( 3, 3, CV_64F, R ), _dRdr = cvMat( 3, 9, CV_64F, dRdr );
    +
    388 double *dpdr_p = 0, *dpdt_p = 0, *dpdk_p = 0, *dpdf_p = 0, *dpdc_p = 0;
    +
    389 double* dpdo_p = 0;
    +
    390 int dpdr_step = 0, dpdt_step = 0, dpdk_step = 0, dpdf_step = 0, dpdc_step = 0;
    +
    391 int dpdo_step = 0;
    +
    392 bool fixedAspectRatio = aspectRatio > FLT_EPSILON;
    +
    393
    +
    394 if( !CV_IS_MAT(objectPoints) || !CV_IS_MAT(r_vec) ||
    +
    395 !CV_IS_MAT(t_vec) || !CV_IS_MAT(A) ||
    + !CV_IS_MAT(imagePoints) )
    397 CV_Error( CV_StsBadArg, "One of required arguments is not a valid matrix" );
    +
    398
    +
    399 int total = objectPoints->rows * objectPoints->cols * CV_MAT_CN(objectPoints->type);
    +
    400 if(total % 3 != 0)
    +
    401 {
    +
    402 //we have stopped support of homogeneous coordinates because it cause ambiguity in interpretation of the input data
    +
    403 CV_Error( CV_StsBadArg, "Homogeneous coordinates are not supported" );
    +
    404 }
    +
    405 count = total / 3;
    +
    406
    +
    407 if( CV_IS_CONT_MAT(objectPoints->type) &&
    +
    408 (CV_MAT_DEPTH(objectPoints->type) == CV_32F || CV_MAT_DEPTH(objectPoints->type) == CV_64F)&&
    +
    409 ((objectPoints->rows == 1 && CV_MAT_CN(objectPoints->type) == 3) ||
    +
    410 (objectPoints->rows == count && CV_MAT_CN(objectPoints->type)*objectPoints->cols == 3) ||
    +
    411 (objectPoints->rows == 3 && CV_MAT_CN(objectPoints->type) == 1 && objectPoints->cols == count)))
    +
    412 {
    +
    413 matM.reset(cvCreateMat( objectPoints->rows, objectPoints->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(objectPoints->type)) ));
    +
    414 cvConvert(objectPoints, matM);
    +
    415 }
    +
    416 else
    +
    417 {
    +
    418// matM = cvCreateMat( 1, count, CV_64FC3 );
    +
    419// cvConvertPointsHomogeneous( objectPoints, matM );
    +
    420 CV_Error( CV_StsBadArg, "Homogeneous coordinates are not supported" );
    +
    421 }
    +
    422
    +
    423 if( CV_IS_CONT_MAT(imagePoints->type) &&
    +
    424 (CV_MAT_DEPTH(imagePoints->type) == CV_32F || CV_MAT_DEPTH(imagePoints->type) == CV_64F) &&
    +
    425 ((imagePoints->rows == 1 && CV_MAT_CN(imagePoints->type) == 2) ||
    +
    426 (imagePoints->rows == count && CV_MAT_CN(imagePoints->type)*imagePoints->cols == 2) ||
    +
    427 (imagePoints->rows == 2 && CV_MAT_CN(imagePoints->type) == 1 && imagePoints->cols == count)))
    +
    428 {
    +
    429 _m.reset(cvCreateMat( imagePoints->rows, imagePoints->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(imagePoints->type)) ));
    +
    430 cvConvert(imagePoints, _m);
    +
    431 }
    +
    432 else
    +
    433 {
    +
    434// _m = cvCreateMat( 1, count, CV_64FC2 );
    +
    435 CV_Error( CV_StsBadArg, "Homogeneous coordinates are not supported" );
    +
    436 }
    +
    437
    +
    438 M = (CvPoint3D64f*)matM->data.db;
    +
    439 m = (CvPoint2D64f*)_m->data.db;
    +
    440
    +
    441 if( (CV_MAT_DEPTH(r_vec->type) != CV_64F && CV_MAT_DEPTH(r_vec->type) != CV_32F) ||
    +
    442 (((r_vec->rows != 1 && r_vec->cols != 1) ||
    +
    443 r_vec->rows*r_vec->cols*CV_MAT_CN(r_vec->type) != 3) &&
    +
    444 ((r_vec->rows != 3 && r_vec->cols != 3) || CV_MAT_CN(r_vec->type) != 1)))
    +
    445 CV_Error( CV_StsBadArg, "Rotation must be represented by 1x3 or 3x1 "
    +
    446 "floating-point rotation vector, or 3x3 rotation matrix" );
    +
    447
    +
    448 if( r_vec->rows == 3 && r_vec->cols == 3 )
    +
    449 {
    +
    450 _r = cvMat( 3, 1, CV_64FC1, r );
    +
    451 cvRodrigues2( r_vec, &_r );
    +
    452 cvRodrigues2( &_r, &matR, &_dRdr );
    +
    453 cvCopy( r_vec, &matR );
    +
    454 }
    +
    455 else
    +
    456 {
    +
    457 _r = cvMat( r_vec->rows, r_vec->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(r_vec->type)), r );
    +
    458 cvConvert( r_vec, &_r );
    +
    459 cvRodrigues2( &_r, &matR, &_dRdr );
    +
    460 }
    +
    461
    +
    462 if( (CV_MAT_DEPTH(t_vec->type) != CV_64F && CV_MAT_DEPTH(t_vec->type) != CV_32F) ||
    +
    463 (t_vec->rows != 1 && t_vec->cols != 1) ||
    +
    464 t_vec->rows*t_vec->cols*CV_MAT_CN(t_vec->type) != 3 )
    +
    465 CV_Error( CV_StsBadArg,
    +
    466 "Translation vector must be 1x3 or 3x1 floating-point vector" );
    +
    467
    +
    468 _t = cvMat( t_vec->rows, t_vec->cols, CV_MAKETYPE(CV_64F,CV_MAT_CN(t_vec->type)), t );
    +
    469 cvConvert( t_vec, &_t );
    +
    470
    +
    471 if( (CV_MAT_TYPE(A->type) != CV_64FC1 && CV_MAT_TYPE(A->type) != CV_32FC1) ||
    +
    472 A->rows != 3 || A->cols != 3 )
    +
    473 CV_Error( CV_StsBadArg, "Instrinsic parameters must be 3x3 floating-point matrix" );
    +
    474
    +
    475 cvConvert( A, &_a );
    +
    476 fx = a[0]; fy = a[4];
    +
    477 cx = a[2]; cy = a[5];
    +
    478
    +
    479 if( fixedAspectRatio )
    +
    480 fx = fy*aspectRatio;
    +
    481
    +
    482 if( distCoeffs )
    +
    483 {
    +
    484 if( !CV_IS_MAT(distCoeffs) ||
    +
    485 (CV_MAT_DEPTH(distCoeffs->type) != CV_64F &&
    +
    486 CV_MAT_DEPTH(distCoeffs->type) != CV_32F) ||
    +
    487 (distCoeffs->rows != 1 && distCoeffs->cols != 1) ||
    +
    488 (distCoeffs->rows*distCoeffs->cols*CV_MAT_CN(distCoeffs->type) != 4 &&
    +
    489 distCoeffs->rows*distCoeffs->cols*CV_MAT_CN(distCoeffs->type) != 5 &&
    +
    490 distCoeffs->rows*distCoeffs->cols*CV_MAT_CN(distCoeffs->type) != 8 &&
    +
    491 distCoeffs->rows*distCoeffs->cols*CV_MAT_CN(distCoeffs->type) != 12 &&
    +
    492 distCoeffs->rows*distCoeffs->cols*CV_MAT_CN(distCoeffs->type) != 14) )
    +
    493 CV_Error( CV_StsBadArg, "Distortion coefficients must be 1x4, 4x1, 1x5, 5x1, 1x8, 8x1, 1x12, 12x1, 1x14 or 14x1 floating-point vector");
    +
    494
    +
    495 _k = cvMat( distCoeffs->rows, distCoeffs->cols,
    +
    496 CV_MAKETYPE(CV_64F,CV_MAT_CN(distCoeffs->type)), k );
    +
    497 cvConvert( distCoeffs, &_k );
    +
    498 if(k[12] != 0 || k[13] != 0)
    +
    499 {
    +
    500 computeTiltProjectionMatrix(k[12], k[13],
    +
    501 &matTilt, &dMatTiltdTauX, &dMatTiltdTauY);
    +
    502 }
    +
    503 }
    +
    504
    +
    505 if( dpdr )
    +
    506 {
    +
    507 if( !CV_IS_MAT(dpdr) ||
    +
    508 (CV_MAT_TYPE(dpdr->type) != CV_32FC1 &&
    +
    509 CV_MAT_TYPE(dpdr->type) != CV_64FC1) ||
    +
    510 dpdr->rows != count*2 || dpdr->cols != 3 )
    +
    511 CV_Error( CV_StsBadArg, "dp/drot must be 2Nx3 floating-point matrix" );
    +
    512
    +
    513 if( CV_MAT_TYPE(dpdr->type) == CV_64FC1 )
    +
    514 {
    +
    515 _dpdr.reset(cvCloneMat(dpdr));
    +
    516 }
    +
    517 else
    +
    518 _dpdr.reset(cvCreateMat( 2*count, 3, CV_64FC1 ));
    +
    519 dpdr_p = _dpdr->data.db;
    +
    520 dpdr_step = _dpdr->step/sizeof(dpdr_p[0]);
    +
    521 }
    +
    522
    +
    523 if( dpdt )
    +
    524 {
    +
    525 if( !CV_IS_MAT(dpdt) ||
    +
    526 (CV_MAT_TYPE(dpdt->type) != CV_32FC1 &&
    +
    527 CV_MAT_TYPE(dpdt->type) != CV_64FC1) ||
    +
    528 dpdt->rows != count*2 || dpdt->cols != 3 )
    +
    529 CV_Error( CV_StsBadArg, "dp/dT must be 2Nx3 floating-point matrix" );
    +
    530
    +
    531 if( CV_MAT_TYPE(dpdt->type) == CV_64FC1 )
    +
    532 {
    +
    533 _dpdt.reset(cvCloneMat(dpdt));
    +
    534 }
    +
    535 else
    +
    536 _dpdt.reset(cvCreateMat( 2*count, 3, CV_64FC1 ));
    +
    537 dpdt_p = _dpdt->data.db;
    +
    538 dpdt_step = _dpdt->step/sizeof(dpdt_p[0]);
    +
    539 }
    +
    540
    +
    541 if( dpdf )
    +
    542 {
    +
    543 if( !CV_IS_MAT(dpdf) ||
    +
    544 (CV_MAT_TYPE(dpdf->type) != CV_32FC1 && CV_MAT_TYPE(dpdf->type) != CV_64FC1) ||
    +
    545 dpdf->rows != count*2 || dpdf->cols != 2 )
    +
    546 CV_Error( CV_StsBadArg, "dp/df must be 2Nx2 floating-point matrix" );
    +
    547
    +
    548 if( CV_MAT_TYPE(dpdf->type) == CV_64FC1 )
    +
    549 {
    +
    550 _dpdf.reset(cvCloneMat(dpdf));
    +
    551 }
    +
    552 else
    +
    553 _dpdf.reset(cvCreateMat( 2*count, 2, CV_64FC1 ));
    +
    554 dpdf_p = _dpdf->data.db;
    +
    555 dpdf_step = _dpdf->step/sizeof(dpdf_p[0]);
    +
    556 }
    +
    557
    +
    558 if( dpdc )
    +
    559 {
    +
    560 if( !CV_IS_MAT(dpdc) ||
    +
    561 (CV_MAT_TYPE(dpdc->type) != CV_32FC1 && CV_MAT_TYPE(dpdc->type) != CV_64FC1) ||
    +
    562 dpdc->rows != count*2 || dpdc->cols != 2 )
    +
    563 CV_Error( CV_StsBadArg, "dp/dc must be 2Nx2 floating-point matrix" );
    +
    564
    +
    565 if( CV_MAT_TYPE(dpdc->type) == CV_64FC1 )
    +
    566 {
    +
    567 _dpdc.reset(cvCloneMat(dpdc));
    +
    568 }
    +
    569 else
    +
    570 _dpdc.reset(cvCreateMat( 2*count, 2, CV_64FC1 ));
    +
    571 dpdc_p = _dpdc->data.db;
    +
    572 dpdc_step = _dpdc->step/sizeof(dpdc_p[0]);
    +
    573 }
    +
    574
    +
    575 if( dpdk )
    +
    576 {
    +
    577 if( !CV_IS_MAT(dpdk) ||
    +
    578 (CV_MAT_TYPE(dpdk->type) != CV_32FC1 && CV_MAT_TYPE(dpdk->type) != CV_64FC1) ||
    +
    579 dpdk->rows != count*2 || (dpdk->cols != 14 && dpdk->cols != 12 && dpdk->cols != 8 && dpdk->cols != 5 && dpdk->cols != 4 && dpdk->cols != 2) )
    +
    580 CV_Error( CV_StsBadArg, "dp/df must be 2Nx14, 2Nx12, 2Nx8, 2Nx5, 2Nx4 or 2Nx2 floating-point matrix" );
    +
    581
    +
    582 if( !distCoeffs )
    +
    583 CV_Error( CV_StsNullPtr, "distCoeffs is NULL while dpdk is not" );
    +
    584
    +
    585 if( CV_MAT_TYPE(dpdk->type) == CV_64FC1 )
    +
    586 {
    +
    587 _dpdk.reset(cvCloneMat(dpdk));
    +
    588 }
    +
    589 else
    +
    590 _dpdk.reset(cvCreateMat( dpdk->rows, dpdk->cols, CV_64FC1 ));
    +
    591 dpdk_p = _dpdk->data.db;
    +
    592 dpdk_step = _dpdk->step/sizeof(dpdk_p[0]);
    +
    593 }
    +
    594
    +
    595 if( dpdo )
    +
    596 {
    +
    597 if( !CV_IS_MAT( dpdo ) || ( CV_MAT_TYPE( dpdo->type ) != CV_32FC1
    +
    598 && CV_MAT_TYPE( dpdo->type ) != CV_64FC1 )
    +
    599 || dpdo->rows != count * 2 || dpdo->cols != count * 3 )
    +
    600 CV_Error( CV_StsBadArg, "dp/do must be 2Nx3N floating-point matrix" );
    +
    601
    +
    602 if( CV_MAT_TYPE( dpdo->type ) == CV_64FC1 )
    +
    603 {
    +
    604 _dpdo.reset( cvCloneMat( dpdo ) );
    +
    605 }
    +
    606 else
    +
    607 _dpdo.reset( cvCreateMat( 2 * count, 3 * count, CV_64FC1 ) );
    +
    608 cvZero(_dpdo);
    +
    609 dpdo_p = _dpdo->data.db;
    +
    610 dpdo_step = _dpdo->step / sizeof( dpdo_p[0] );
    +
    611 }
    +
    612
    +
    613 calc_derivatives = dpdr || dpdt || dpdf || dpdc || dpdk || dpdo;
    +
    614
    +
    615 for( i = 0; i < count; i++ )
    +
    616 {
    +
    617 double X = M[i].x, Y = M[i].y, Z = M[i].z;
    +
    618 double x = R[0]*X + R[1]*Y + R[2]*Z + t[0];
    +
    619 double y = R[3]*X + R[4]*Y + R[5]*Z + t[1];
    +
    620 double z = R[6]*X + R[7]*Y + R[8]*Z + t[2];
    +
    621 double r2, r4, r6, a1, a2, a3, cdist, icdist2;
    +
    622 double xd, yd, xd0, yd0, invProj;
    +
    623 cv::Vec3d vecTilt;
    +
    624 cv::Vec3d dVecTilt;
    +
    625 cv::Matx22d dMatTilt;
    +
    626 cv::Vec2d dXdYd;
    +
    627
    +
    628 double z0 = z;
    +
    629 z = z ? 1./z : 1;
    +
    630 x *= z; y *= z;
    +
    631
    +
    632 r2 = x*x + y*y;
    +
    633 r4 = r2*r2;
    +
    634 r6 = r4*r2;
    +
    635 a1 = 2*x*y;
    +
    636 a2 = r2 + 2*x*x;
    +
    637 a3 = r2 + 2*y*y;
    +
    638 cdist = 1 + k[0]*r2 + k[1]*r4 + k[4]*r6;
    +
    639 icdist2 = 1./(1 + k[5]*r2 + k[6]*r4 + k[7]*r6);
    +
    640 xd0 = x*cdist*icdist2 + k[2]*a1 + k[3]*a2 + k[8]*r2+k[9]*r4;
    +
    641 yd0 = y*cdist*icdist2 + k[2]*a3 + k[3]*a1 + k[10]*r2+k[11]*r4;
    +
    642
    +
    643 // additional distortion by projecting onto a tilt plane
    +
    644 vecTilt = matTilt*cv::Vec3d(xd0, yd0, 1);
    +
    645 invProj = vecTilt(2) ? 1./vecTilt(2) : 1;
    +
    646 xd = invProj * vecTilt(0);
    +
    647 yd = invProj * vecTilt(1);
    +
    648
    +
    649 m[i].x = xd*fx + cx;
    +
    650 m[i].y = yd*fy + cy;
    +
    651
    +
    652 if( calc_derivatives )
    +
    653 {
    +
    654 if( dpdc_p )
    +
    655 {
    +
    656 dpdc_p[0] = 1; dpdc_p[1] = 0; // dp_xdc_x; dp_xdc_y
    +
    657 dpdc_p[dpdc_step] = 0;
    +
    658 dpdc_p[dpdc_step+1] = 1;
    +
    659 dpdc_p += dpdc_step*2;
    +
    660 }
    +
    661
    +
    662 if( dpdf_p )
    +
    663 {
    +
    664 if( fixedAspectRatio )
    +
    665 {
    +
    666 dpdf_p[0] = 0; dpdf_p[1] = xd*aspectRatio; // dp_xdf_x; dp_xdf_y
    +
    667 dpdf_p[dpdf_step] = 0;
    +
    668 dpdf_p[dpdf_step+1] = yd;
    +
    669 }
    +
    670 else
    +
    671 {
    +
    672 dpdf_p[0] = xd; dpdf_p[1] = 0;
    +
    673 dpdf_p[dpdf_step] = 0;
    +
    674 dpdf_p[dpdf_step+1] = yd;
    +
    675 }
    +
    676 dpdf_p += dpdf_step*2;
    +
    677 }
    +
    678 for (int row = 0; row < 2; ++row)
    +
    679 for (int col = 0; col < 2; ++col)
    +
    680 dMatTilt(row,col) = matTilt(row,col)*vecTilt(2)
    +
    681 - matTilt(2,col)*vecTilt(row);
    +
    682 double invProjSquare = (invProj*invProj);
    +
    683 dMatTilt *= invProjSquare;
    +
    684 if( dpdk_p )
    +
    685 {
    +
    686 dXdYd = dMatTilt*cv::Vec2d(x*icdist2*r2, y*icdist2*r2);
    +
    687 dpdk_p[0] = fx*dXdYd(0);
    +
    688 dpdk_p[dpdk_step] = fy*dXdYd(1);
    +
    689 dXdYd = dMatTilt*cv::Vec2d(x*icdist2*r4, y*icdist2*r4);
    +
    690 dpdk_p[1] = fx*dXdYd(0);
    +
    691 dpdk_p[dpdk_step+1] = fy*dXdYd(1);
    +
    692 if( _dpdk->cols > 2 )
    +
    693 {
    +
    694 dXdYd = dMatTilt*cv::Vec2d(a1, a3);
    +
    695 dpdk_p[2] = fx*dXdYd(0);
    +
    696 dpdk_p[dpdk_step+2] = fy*dXdYd(1);
    +
    697 dXdYd = dMatTilt*cv::Vec2d(a2, a1);
    +
    698 dpdk_p[3] = fx*dXdYd(0);
    +
    699 dpdk_p[dpdk_step+3] = fy*dXdYd(1);
    +
    700 if( _dpdk->cols > 4 )
    +
    701 {
    +
    702 dXdYd = dMatTilt*cv::Vec2d(x*icdist2*r6, y*icdist2*r6);
    +
    703 dpdk_p[4] = fx*dXdYd(0);
    +
    704 dpdk_p[dpdk_step+4] = fy*dXdYd(1);
    +
    705
    +
    706 if( _dpdk->cols > 5 )
    +
    707 {
    +
    708 dXdYd = dMatTilt*cv::Vec2d(
    +
    709 x*cdist*(-icdist2)*icdist2*r2, y*cdist*(-icdist2)*icdist2*r2);
    +
    710 dpdk_p[5] = fx*dXdYd(0);
    +
    711 dpdk_p[dpdk_step+5] = fy*dXdYd(1);
    +
    712 dXdYd = dMatTilt*cv::Vec2d(
    +
    713 x*cdist*(-icdist2)*icdist2*r4, y*cdist*(-icdist2)*icdist2*r4);
    +
    714 dpdk_p[6] = fx*dXdYd(0);
    +
    715 dpdk_p[dpdk_step+6] = fy*dXdYd(1);
    +
    716 dXdYd = dMatTilt*cv::Vec2d(
    +
    717 x*cdist*(-icdist2)*icdist2*r6, y*cdist*(-icdist2)*icdist2*r6);
    +
    718 dpdk_p[7] = fx*dXdYd(0);
    +
    719 dpdk_p[dpdk_step+7] = fy*dXdYd(1);
    +
    720 if( _dpdk->cols > 8 )
    +
    721 {
    +
    722 dXdYd = dMatTilt*cv::Vec2d(r2, 0);
    +
    723 dpdk_p[8] = fx*dXdYd(0); //s1
    +
    724 dpdk_p[dpdk_step+8] = fy*dXdYd(1); //s1
    +
    725 dXdYd = dMatTilt*cv::Vec2d(r4, 0);
    +
    726 dpdk_p[9] = fx*dXdYd(0); //s2
    +
    727 dpdk_p[dpdk_step+9] = fy*dXdYd(1); //s2
    +
    728 dXdYd = dMatTilt*cv::Vec2d(0, r2);
    +
    729 dpdk_p[10] = fx*dXdYd(0);//s3
    +
    730 dpdk_p[dpdk_step+10] = fy*dXdYd(1); //s3
    +
    731 dXdYd = dMatTilt*cv::Vec2d(0, r4);
    +
    732 dpdk_p[11] = fx*dXdYd(0);//s4
    +
    733 dpdk_p[dpdk_step+11] = fy*dXdYd(1); //s4
    +
    734 if( _dpdk->cols > 12 )
    +
    735 {
    +
    736 dVecTilt = dMatTiltdTauX * cv::Vec3d(xd0, yd0, 1);
    +
    737 dpdk_p[12] = fx * invProjSquare * (
    +
    738 dVecTilt(0) * vecTilt(2) - dVecTilt(2) * vecTilt(0));
    +
    739 dpdk_p[dpdk_step+12] = fy*invProjSquare * (
    +
    740 dVecTilt(1) * vecTilt(2) - dVecTilt(2) * vecTilt(1));
    +
    741 dVecTilt = dMatTiltdTauY * cv::Vec3d(xd0, yd0, 1);
    +
    742 dpdk_p[13] = fx * invProjSquare * (
    +
    743 dVecTilt(0) * vecTilt(2) - dVecTilt(2) * vecTilt(0));
    +
    744 dpdk_p[dpdk_step+13] = fy * invProjSquare * (
    +
    745 dVecTilt(1) * vecTilt(2) - dVecTilt(2) * vecTilt(1));
    +
    746 }
    +
    747 }
    +
    748 }
    +
    749 }
    +
    750 }
    +
    751 dpdk_p += dpdk_step*2;
    +
    752 }
    +
    753
    +
    754 if( dpdt_p )
    +
    755 {
    +
    756 double dxdt[] = { z, 0, -x*z }, dydt[] = { 0, z, -y*z };
    +
    757 for( j = 0; j < 3; j++ )
    +
    758 {
    +
    759 double dr2dt = 2*x*dxdt[j] + 2*y*dydt[j];
    +
    760 double dcdist_dt = k[0]*dr2dt + 2*k[1]*r2*dr2dt + 3*k[4]*r4*dr2dt;
    +
    761 double dicdist2_dt = -icdist2*icdist2*(k[5]*dr2dt + 2*k[6]*r2*dr2dt + 3*k[7]*r4*dr2dt);
    +
    762 double da1dt = 2*(x*dydt[j] + y*dxdt[j]);
    +
    763 double dmxdt = (dxdt[j]*cdist*icdist2 + x*dcdist_dt*icdist2 + x*cdist*dicdist2_dt +
    +
    764 k[2]*da1dt + k[3]*(dr2dt + 4*x*dxdt[j]) + k[8]*dr2dt + 2*r2*k[9]*dr2dt);
    +
    765 double dmydt = (dydt[j]*cdist*icdist2 + y*dcdist_dt*icdist2 + y*cdist*dicdist2_dt +
    +
    766 k[2]*(dr2dt + 4*y*dydt[j]) + k[3]*da1dt + k[10]*dr2dt + 2*r2*k[11]*dr2dt);
    +
    767 dXdYd = dMatTilt*cv::Vec2d(dmxdt, dmydt);
    +
    768 dpdt_p[j] = fx*dXdYd(0);
    +
    769 dpdt_p[dpdt_step+j] = fy*dXdYd(1);
    +
    770 }
    +
    771 dpdt_p += dpdt_step*2;
    +
    772 }
    +
    773
    +
    774 if( dpdr_p )
    +
    775 {
    +
    776 double dx0dr[] =
    +
    777 {
    +
    778 X*dRdr[0] + Y*dRdr[1] + Z*dRdr[2],
    +
    779 X*dRdr[9] + Y*dRdr[10] + Z*dRdr[11],
    +
    780 X*dRdr[18] + Y*dRdr[19] + Z*dRdr[20]
    +
    781 };
    +
    782 double dy0dr[] =
    +
    783 {
    +
    784 X*dRdr[3] + Y*dRdr[4] + Z*dRdr[5],
    +
    785 X*dRdr[12] + Y*dRdr[13] + Z*dRdr[14],
    +
    786 X*dRdr[21] + Y*dRdr[22] + Z*dRdr[23]
    +
    787 };
    +
    788 double dz0dr[] =
    +
    789 {
    +
    790 X*dRdr[6] + Y*dRdr[7] + Z*dRdr[8],
    +
    791 X*dRdr[15] + Y*dRdr[16] + Z*dRdr[17],
    +
    792 X*dRdr[24] + Y*dRdr[25] + Z*dRdr[26]
    +
    793 };
    +
    794 for( j = 0; j < 3; j++ )
    +
    795 {
    +
    796 double dxdr = z*(dx0dr[j] - x*dz0dr[j]);
    +
    797 double dydr = z*(dy0dr[j] - y*dz0dr[j]);
    +
    798 double dr2dr = 2*x*dxdr + 2*y*dydr;
    +
    799 double dcdist_dr = (k[0] + 2*k[1]*r2 + 3*k[4]*r4)*dr2dr;
    +
    800 double dicdist2_dr = -icdist2*icdist2*(k[5] + 2*k[6]*r2 + 3*k[7]*r4)*dr2dr;
    +
    801 double da1dr = 2*(x*dydr + y*dxdr);
    +
    802 double dmxdr = (dxdr*cdist*icdist2 + x*dcdist_dr*icdist2 + x*cdist*dicdist2_dr +
    +
    803 k[2]*da1dr + k[3]*(dr2dr + 4*x*dxdr) + (k[8] + 2*r2*k[9])*dr2dr);
    +
    804 double dmydr = (dydr*cdist*icdist2 + y*dcdist_dr*icdist2 + y*cdist*dicdist2_dr +
    +
    805 k[2]*(dr2dr + 4*y*dydr) + k[3]*da1dr + (k[10] + 2*r2*k[11])*dr2dr);
    +
    806 dXdYd = dMatTilt*cv::Vec2d(dmxdr, dmydr);
    +
    807 dpdr_p[j] = fx*dXdYd(0);
    +
    808 dpdr_p[dpdr_step+j] = fy*dXdYd(1);
    +
    809 }
    +
    810 dpdr_p += dpdr_step*2;
    +
    811 }
    +
    812
    +
    813 if( dpdo_p )
    +
    814 {
    +
    815 double dxdo[] = { z * ( R[0] - x * z * z0 * R[6] ),
    +
    816 z * ( R[1] - x * z * z0 * R[7] ),
    +
    817 z * ( R[2] - x * z * z0 * R[8] ) };
    +
    818 double dydo[] = { z * ( R[3] - y * z * z0 * R[6] ),
    +
    819 z * ( R[4] - y * z * z0 * R[7] ),
    +
    820 z * ( R[5] - y * z * z0 * R[8] ) };
    +
    821 for( j = 0; j < 3; j++ )
    +
    822 {
    +
    823 double dr2do = 2 * x * dxdo[j] + 2 * y * dydo[j];
    +
    824 double dr4do = 2 * r2 * dr2do;
    +
    825 double dr6do = 3 * r4 * dr2do;
    +
    826 double da1do = 2 * y * dxdo[j] + 2 * x * dydo[j];
    +
    827 double da2do = dr2do + 4 * x * dxdo[j];
    +
    828 double da3do = dr2do + 4 * y * dydo[j];
    +
    829 double dcdist_do
    +
    830 = k[0] * dr2do + k[1] * dr4do + k[4] * dr6do;
    +
    831 double dicdist2_do = -icdist2 * icdist2
    +
    832 * ( k[5] * dr2do + k[6] * dr4do + k[7] * dr6do );
    +
    833 double dxd0_do = cdist * icdist2 * dxdo[j]
    +
    834 + x * icdist2 * dcdist_do + x * cdist * dicdist2_do
    +
    835 + k[2] * da1do + k[3] * da2do + k[8] * dr2do
    +
    836 + k[9] * dr4do;
    +
    837 double dyd0_do = cdist * icdist2 * dydo[j]
    +
    838 + y * icdist2 * dcdist_do + y * cdist * dicdist2_do
    +
    839 + k[2] * da3do + k[3] * da1do + k[10] * dr2do
    +
    840 + k[11] * dr4do;
    +
    841 dXdYd = dMatTilt * cv::Vec2d( dxd0_do, dyd0_do );
    +
    842 dpdo_p[i * 3 + j] = fx * dXdYd( 0 );
    +
    843 dpdo_p[dpdo_step + i * 3 + j] = fy * dXdYd( 1 );
    +
    844 }
    +
    845 dpdo_p += dpdo_step * 2;
    +
    846 }
    +
    847 }
    +
    848 }
    +
    849
    +
    850 if( _m != imagePoints )
    +
    851 cvConvert( _m, imagePoints );
    +
    852
    +
    853 if( _dpdr != dpdr )
    +
    854 cvConvert( _dpdr, dpdr );
    +
    855
    +
    856 if( _dpdt != dpdt )
    +
    857 cvConvert( _dpdt, dpdt );
    +
    858
    +
    859 if( _dpdf != dpdf )
    +
    860 cvConvert( _dpdf, dpdf );
    +
    861
    +
    862 if( _dpdc != dpdc )
    +
    863 cvConvert( _dpdc, dpdc );
    +
    864
    +
    865 if( _dpdk != dpdk )
    +
    866 cvConvert( _dpdk, dpdk );
    +
    867
    +
    868 if( _dpdo != dpdo )
    +
    869 cvConvert( _dpdo, dpdo );
    +
    870}
    +
    871
    +
    872void cvProjectPoints2( const CvMat* objectPoints,
    +
    873 const CvMat* r_vec,
    +
    874 const CvMat* t_vec,
    +
    875 const CvMat* A,
    +
    876 const CvMat* distCoeffs,
    +
    877 CvMat* imagePoints, CvMat* dpdr CV_DEFAULT(NULL),
    +
    878 CvMat* dpdt CV_DEFAULT(NULL), CvMat* dpdf CV_DEFAULT(NULL),
    +
    879 CvMat* dpdc CV_DEFAULT(NULL), CvMat* dpdk CV_DEFAULT(NULL),
    +
    880 double aspectRatio CV_DEFAULT(0))
    +
    881{
    +
    882 cvProjectPoints2Internal( objectPoints, r_vec, t_vec, A, distCoeffs, imagePoints, dpdr, dpdt,
    +
    883 dpdf, dpdc, dpdk, NULL, aspectRatio );
    +
    884}
    +
    885
    +
    886void cvConvertPointsHomogeneous( const CvMat* _src, CvMat* _dst )
    +
    887{
    +
    888 cv::Mat src = cv::cvarrToMat(_src), dst = cv::cvarrToMat(_dst);
    +
    889 const cv::Mat dst0 = dst;
    +
    890
    +
    891 int d0 = src.channels() > 1 ? src.channels() : MIN(src.cols, src.rows);
    +
    892
    +
    893 if( src.channels() == 1 && src.cols > d0 )
    +
    894 cv::transpose(src, src);
    +
    895
    +
    896 int d1 = dst.channels() > 1 ? dst.channels() : MIN(dst.cols, dst.rows);
    +
    897
    +
    898 if( d0 == d1 )
    +
    899 src.copyTo(dst);
    +
    900 else if( d0 < d1 )
    +
    901 cv::convertPointsToHomogeneous(src, dst);
    +
    902 else
    +
    903 cv::convertPointsFromHomogeneous(src, dst);
    +
    904
    +
    905 bool tflag = dst0.channels() == 1 && dst0.cols > d1;
    +
    906 dst = dst.reshape(dst0.channels(), (tflag ? dst0.cols : dst0.rows));
    +
    907
    +
    908 if( tflag )
    +
    909 {
    +
    910 CV_Assert( dst.rows == dst0.cols && dst.cols == dst0.rows );
    +
    911 if( dst0.type() == dst.type() )
    +
    912 transpose( dst, dst0 );
    +
    913 else
    +
    914 {
    +
    915 transpose( dst, dst );
    +
    916 dst.convertTo( dst0, dst0.type() );
    +
    917 }
    +
    918 }
    +
    919 else
    +
    920 {
    +
    921 CV_Assert( dst.size() == dst0.size() );
    +
    922 if( dst.data != dst0.data )
    +
    923 dst.convertTo(dst0, dst0.type());
    +
    924 }
    +
    925}
    +
    926
    +
    927#endif // OpenCV4
    +
    928
    +
    929#endif // OpenCV3
    +
    930
    +
    931namespace rtabmap
    +
    932{
    +
    933
    +
    934void
    +
    935icvGetRectanglesFisheye( const CvMat* cameraMatrix, const CvMat* distCoeffs,
    +
    936 const CvMat* R, const CvMat* newCameraMatrix, CvSize imgSize,
    +
    937 cv::Rect_<float>& inner, cv::Rect_<float>& outer )
    +
    938{
    +
    939 const int N = 9;
    +
    940 int x, y, k;
    +
    941 cv::Mat _pts(1, N*N, CV_32FC2);
    +
    942 CvPoint2D32f* pts = (CvPoint2D32f*)(_pts.data);
    +
    943
    +
    944 for( y = k = 0; y < N; y++ )
    +
    945 for( x = 0; x < N; x++ )
    +
    946 pts[k++] = cvPoint2D32f((float)x*imgSize.width/(N-1),
    +
    947 (float)y*imgSize.height/(N-1));
    +
    948
    +
    949 cv::Mat cameraMatrixM(cameraMatrix->rows, cameraMatrix->cols, cameraMatrix->type, cameraMatrix->data.ptr);
    +
    950 cv::Mat distCoeffsM(distCoeffs->rows, distCoeffs->cols, distCoeffs->type, distCoeffs->data.ptr);
    +
    951 cv::Mat RM(R->rows, R->cols, R->type, R->data.ptr);
    +
    952 cv::Mat newCameraMatrixM(newCameraMatrix->rows, newCameraMatrix->cols, newCameraMatrix->type, newCameraMatrix->data.ptr);
    +
    953 cv::fisheye::undistortPoints(_pts, _pts, cameraMatrixM, distCoeffsM, RM, newCameraMatrixM);
    +
    954 float iX0=-FLT_MAX, iX1=FLT_MAX, iY0=-FLT_MAX, iY1=FLT_MAX;
    +
    955 float oX0=FLT_MAX, oX1=-FLT_MAX, oY0=FLT_MAX, oY1=-FLT_MAX;
    +
    956 // find the inscribed rectangle.
    +
    957 // the code will likely not work with extreme rotation matrices (R) (>45%)
    +
    958 for( y = k = 0; y < N; y++ )
    +
    959 for( x = 0; x < N; x++ )
    +
    960 {
    +
    961 CvPoint2D32f p = pts[k++];
    +
    962 oX0 = MIN(oX0, p.x);
    +
    963 oX1 = MAX(oX1, p.x);
    +
    964 oY0 = MIN(oY0, p.y);
    +
    965 oY1 = MAX(oY1, p.y);
    +
    966
    +
    967 if( x == 0 )
    +
    968 iX0 = MAX(iX0, p.x);
    +
    969 if( x == N-1 )
    +
    970 iX1 = MIN(iX1, p.x);
    +
    971 if( y == 0 )
    +
    972 iY0 = MAX(iY0, p.y);
    +
    973 if( y == N-1 )
    +
    974 iY1 = MIN(iY1, p.y);
    +
    975 }
    +
    976 inner = cv::Rect_<float>(iX0, iY0, iX1-iX0, iY1-iY0);
    +
    977 outer = cv::Rect_<float>(oX0, oY0, oX1-oX0, oY1-oY0);
    +
    978}
    +
    979
    +
    980void cvStereoRectifyFisheye( const CvMat* _cameraMatrix1, const CvMat* _cameraMatrix2,
    +
    981 const CvMat* _distCoeffs1, const CvMat* _distCoeffs2,
    +
    982 CvSize imageSize, const CvMat* matR, const CvMat* matT,
    +
    983 CvMat* _R1, CvMat* _R2, CvMat* _P1, CvMat* _P2,
    +
    984 CvMat* matQ, int flags, double alpha, CvSize newImgSize )
    +
    985{
    +
    986 double _om[3], _t[3] = {0}, _uu[3]={0,0,0}, _r_r[3][3], _pp[3][4];
    +
    987 double _ww[3], _wr[3][3], _z[3] = {0,0,0}, _ri[3][3], _w3[3];
    +
    988 cv::Rect_<float> inner1, inner2, outer1, outer2;
    +
    989
    +
    990 CvMat om = cvMat(3, 1, CV_64F, _om);
    +
    991 CvMat t = cvMat(3, 1, CV_64F, _t);
    +
    992 CvMat uu = cvMat(3, 1, CV_64F, _uu);
    +
    993 CvMat r_r = cvMat(3, 3, CV_64F, _r_r);
    +
    994 CvMat pp = cvMat(3, 4, CV_64F, _pp);
    +
    995 CvMat ww = cvMat(3, 1, CV_64F, _ww); // temps
    +
    996 CvMat w3 = cvMat(3, 1, CV_64F, _w3); // temps
    +
    997 CvMat wR = cvMat(3, 3, CV_64F, _wr);
    +
    998 CvMat Z = cvMat(3, 1, CV_64F, _z);
    +
    999 CvMat Ri = cvMat(3, 3, CV_64F, _ri);
    +
    1000 double nx = imageSize.width, ny = imageSize.height;
    +
    1001 int i, k;
    +
    1002 double nt, nw;
    +
    1003
    +
    1004 if( matR->rows == 3 && matR->cols == 3 )
    +
    1005 cvRodrigues2(matR, &om); // get vector rotation
    +
    1006 else
    +
    1007 cvConvert(matR, &om); // it's already a rotation vector
    +
    1008 cvConvertScale(&om, &om, -0.5); // get average rotation
    +
    1009 cvRodrigues2(&om, &r_r); // rotate cameras to same orientation by averaging
    +
    1010
    +
    1011 cvMatMul(&r_r, matT, &t);
    +
    1012 int idx = fabs(_t[0]) > fabs(_t[1]) ? 0 : 1;
    +
    1013 // if idx == 0
    +
    1014 // e1 = T / ||T||
    +
    1015 // e2 = e1 x [0,0,1]
    +
    1016
    +
    1017 // if idx == 1
    +
    1018 // e2 = T / ||T||
    +
    1019 // e1 = e2 x [0,0,1]
    +
    1020
    +
    1021 // e3 = e1 x e2
    +
    1022 _uu[2] = 1;
    +
    1023 cvCrossProduct(&uu, &t, &ww);
    +
    1024 nt = cvNorm(&t, 0, CV_L2);
    +
    1025 CV_Assert(fabs(nt) > 0);
    +
    1026 nw = cvNorm(&ww, 0, CV_L2);
    +
    1027 CV_Assert(fabs(nw) > 0);
    +
    1028 cvConvertScale(&ww, &ww, 1 / nw);
    +
    1029 cvCrossProduct(&t, &ww, &w3);
    +
    1030 nw = cvNorm(&w3, 0, CV_L2);
    +
    1031 CV_Assert(fabs(nw) > 0);
    +
    1032 cvConvertScale(&w3, &w3, 1 / nw);
    +
    1033 _uu[2] = 0;
    +
    1034 for (i = 0; i < 3; ++i)
    +
    1035 {
    +
    1036 _wr[idx][i] = -_t[i] / nt;
    +
    1037 _wr[idx ^ 1][i] = -_ww[i];
    +
    1038 _wr[2][i] = _w3[i] * (1 - 2 * idx); // if idx == 1 -> opposite direction
    +
    1039 }
    +
    1040 // apply to both views
    +
    1041 cvGEMM(&wR, &r_r, 1, 0, 0, &Ri, CV_GEMM_B_T);
    +
    1042 cvConvert( &Ri, _R1 );
    +
    1043 cvGEMM(&wR, &r_r, 1, 0, 0, &Ri, 0);
    +
    1044 cvConvert( &Ri, _R2 );
    +
    1045 cvMatMul(&Ri, matT, &t);
    +
    1046 // calculate projection/camera matrices
    +
    1047 // these contain the relevant rectified image internal params (fx, fy=fx, cx, cy)
    +
    1048 double fc_new = DBL_MAX;
    +
    1049 CvPoint2D64f cc_new[2] = {};
    +
    1050
    +
    1051 newImgSize = newImgSize.width * newImgSize.height != 0 ? newImgSize : imageSize;
    +
    1052 const double ratio_x = (double)newImgSize.width / imageSize.width / 2;
    +
    1053 const double ratio_y = (double)newImgSize.height / imageSize.height / 2;
    +
    1054 const double ratio = idx == 1 ? ratio_x : ratio_y;
    +
    1055 fc_new = (cvmGet(_cameraMatrix1, idx ^ 1, idx ^ 1) + cvmGet(_cameraMatrix2, idx ^ 1, idx ^ 1)) * ratio;
    +
    1056 for( k = 0; k < 2; k++ )
    +
    1057 {
    +
    1058 const CvMat* A = k == 0 ? _cameraMatrix1 : _cameraMatrix2;
    +
    1059 const CvMat* Dk = k == 0 ? _distCoeffs1 : _distCoeffs2;
    +
    1060 CvPoint2D32f _pts[4] = {};
    +
    1061 CvPoint3D32f _pts_3[4] = {};
    +
    1062 CvMat pts = cvMat(1, 4, CV_32FC2, _pts);
    +
    1063 CvMat pts_3 = cvMat(1, 4, CV_32FC3, _pts_3);
    +
    1064
    +
    1065 for( i = 0; i < 4; i++ )
    +
    1066 {
    +
    1067 int j = (i<2) ? 0 : 1;
    +
    1068 _pts[i].x = (float)((i % 2)*(nx));
    +
    1069 _pts[i].y = (float)(j*(ny));
    +
    1070 }
    +
    1071 cv::Mat ptsM(pts.rows, pts.cols, pts.type, pts.data.ptr);
    +
    1072 cv::Mat A_m(A->rows, A->cols, A->type, A->data.ptr);
    +
    1073 cv::Mat Dk_m(Dk->rows, Dk->cols, Dk->type, Dk->data.ptr);
    +
    1074 cv::fisheye::undistortPoints( ptsM, ptsM, A_m, Dk_m, cv::Mat(), cv::Mat() );
    +
    1075 cvConvertPointsHomogeneous( &pts, &pts_3 );
    +
    1076
    +
    1077 //Change camera matrix to have cc=[0,0] and fc = fc_new
    +
    1078 double _a_tmp[3][3];
    +
    1079 CvMat A_tmp = cvMat(3, 3, CV_64F, _a_tmp);
    +
    1080 _a_tmp[0][0]=fc_new;
    +
    1081 _a_tmp[1][1]=fc_new;
    +
    1082 _a_tmp[0][2]=0.0;
    +
    1083 _a_tmp[1][2]=0.0;
    +
    1084
    +
    1085 cvProjectPoints2( &pts_3, k == 0 ? _R1 : _R2, &Z, &A_tmp, 0, &pts );
    +
    1086 CvScalar avg = cvAvg(&pts);
    +
    1087
    +
    1088 cc_new[k].x = (nx)/2 - avg.val[0];
    +
    1089 cc_new[k].y = (ny)/2 - avg.val[1];
    +
    1090 }
    +
    1091
    +
    1092 // vertical focal length must be the same for both images to keep the epipolar constraint
    +
    1093 // (for horizontal epipolar lines -- TBD: check for vertical epipolar lines)
    +
    1094 // use fy for fx also, for simplicity
    +
    1095
    +
    1096 // For simplicity, set the principal points for both cameras to be the average
    +
    1097 // of the two principal points (either one of or both x- and y- coordinates)
    +
    1098 if( flags & cv::CALIB_ZERO_DISPARITY )
    +
    1099 {
    +
    1100 cc_new[0].x = cc_new[1].x = (cc_new[0].x + cc_new[1].x)*0.5;
    +
    1101 cc_new[0].y = cc_new[1].y = (cc_new[0].y + cc_new[1].y)*0.5;
    +
    1102 }
    +
    1103 else if( idx == 0 ) // horizontal stereo
    +
    1104 cc_new[0].y = cc_new[1].y = (cc_new[0].y + cc_new[1].y)*0.5;
    +
    1105 else // vertical stereo
    +
    1106 cc_new[0].x = cc_new[1].x = (cc_new[0].x + cc_new[1].x)*0.5;
    +
    1107
    +
    1108 cvZero( &pp );
    +
    1109 _pp[0][0] = _pp[1][1] = fc_new;
    +
    1110 _pp[0][2] = cc_new[0].x;
    +
    1111 _pp[1][2] = cc_new[0].y;
    +
    1112 _pp[2][2] = 1;
    +
    1113 cvConvert(&pp, _P1);
    +
    1114
    +
    1115 _pp[0][2] = cc_new[1].x;
    +
    1116 _pp[1][2] = cc_new[1].y;
    +
    1117 _pp[idx][3] = _t[idx]*fc_new; // baseline * focal length
    +
    1118 cvConvert(&pp, _P2);
    +
    1119
    +
    1120 alpha = MIN(alpha, 1.);
    +
    1121
    +
    1122 icvGetRectanglesFisheye( _cameraMatrix1, _distCoeffs1, _R1, _P1, imageSize, inner1, outer1 );
    +
    1123 icvGetRectanglesFisheye( _cameraMatrix2, _distCoeffs2, _R2, _P2, imageSize, inner2, outer2 );
    +
    1124
    +
    1125 {
    +
    1126 newImgSize = newImgSize.width*newImgSize.height != 0 ? newImgSize : imageSize;
    +
    1127 double cx1_0 = cc_new[0].x;
    +
    1128 double cy1_0 = cc_new[0].y;
    +
    1129 double cx2_0 = cc_new[1].x;
    +
    1130 double cy2_0 = cc_new[1].y;
    +
    1131 double cx1 = newImgSize.width*cx1_0/imageSize.width;
    +
    1132 double cy1 = newImgSize.height*cy1_0/imageSize.height;
    +
    1133 double cx2 = newImgSize.width*cx2_0/imageSize.width;
    +
    1134 double cy2 = newImgSize.height*cy2_0/imageSize.height;
    +
    1135 double s = 1.;
    +
    1136
    +
    1137 if( alpha >= 0 )
    +
    1138 {
    +
    1139 double s0 = std::max(std::max(std::max((double)cx1/(cx1_0 - inner1.x), (double)cy1/(cy1_0 - inner1.y)),
    +
    1140 (double)(newImgSize.width - cx1)/(inner1.x + inner1.width - cx1_0)),
    +
    1141 (double)(newImgSize.height - cy1)/(inner1.y + inner1.height - cy1_0));
    +
    1142 s0 = std::max(std::max(std::max(std::max((double)cx2/(cx2_0 - inner2.x), (double)cy2/(cy2_0 - inner2.y)),
    +
    1143 (double)(newImgSize.width - cx2)/(inner2.x + inner2.width - cx2_0)),
    +
    1144 (double)(newImgSize.height - cy2)/(inner2.y + inner2.height - cy2_0)),
    +
    1145 s0);
    +
    1146
    +
    1147 double s1 = std::min(std::min(std::min((double)cx1/(cx1_0 - outer1.x), (double)cy1/(cy1_0 - outer1.y)),
    +
    1148 (double)(newImgSize.width - cx1)/(outer1.x + outer1.width - cx1_0)),
    +
    1149 (double)(newImgSize.height - cy1)/(outer1.y + outer1.height - cy1_0));
    +
    1150 s1 = std::min(std::min(std::min(std::min((double)cx2/(cx2_0 - outer2.x), (double)cy2/(cy2_0 - outer2.y)),
    +
    1151 (double)(newImgSize.width - cx2)/(outer2.x + outer2.width - cx2_0)),
    +
    1152 (double)(newImgSize.height - cy2)/(outer2.y + outer2.height - cy2_0)),
    +
    1153 s1);
    +
    1154
    +
    1155 s = s0*(1 - alpha) + s1*alpha;
    +
    1156 }
    +
    1157
    +
    1158 fc_new *= s;
    +
    1159 cc_new[0] = cvPoint2D64f(cx1, cy1);
    +
    1160 cc_new[1] = cvPoint2D64f(cx2, cy2);
    +
    1161
    +
    1162 cvmSet(_P1, 0, 0, fc_new);
    +
    1163 cvmSet(_P1, 1, 1, fc_new);
    +
    1164 cvmSet(_P1, 0, 2, cx1);
    +
    1165 cvmSet(_P1, 1, 2, cy1);
    +
    1166
    +
    1167 cvmSet(_P2, 0, 0, fc_new);
    +
    1168 cvmSet(_P2, 1, 1, fc_new);
    +
    1169 cvmSet(_P2, 0, 2, cx2);
    +
    1170 cvmSet(_P2, 1, 2, cy2);
    +
    1171 cvmSet(_P2, idx, 3, s*cvmGet(_P2, idx, 3));
    +
    1172
    +
    1173 }
    +
    1174
    +
    1175 if( matQ )
    +
    1176 {
    +
    1177 double q[] =
    +
    1178 {
    +
    1179 1, 0, 0, -cc_new[0].x,
    +
    1180 0, 1, 0, -cc_new[0].y,
    +
    1181 0, 0, 0, fc_new,
    +
    1182 0, 0, -1./_t[idx],
    +
    1183 (idx == 0 ? cc_new[0].x - cc_new[1].x : cc_new[0].y - cc_new[1].y)/_t[idx]
    +
    1184 };
    +
    1185 CvMat Q = cvMat(4, 4, CV_64F, q);
    +
    1186 cvConvert( &Q, matQ );
    +
    1187 }
    +
    1188}
    +
    1189
    +
    1190void stereoRectifyFisheye( cv::InputArray _cameraMatrix1, cv::InputArray _distCoeffs1,
    +
    1191 cv::InputArray _cameraMatrix2, cv::InputArray _distCoeffs2,
    +
    1192 cv::Size imageSize, cv::InputArray _Rmat, cv::InputArray _Tmat,
    +
    1193 cv::OutputArray _Rmat1, cv::OutputArray _Rmat2,
    +
    1194 cv::OutputArray _Pmat1, cv::OutputArray _Pmat2,
    +
    1195 cv::OutputArray _Qmat, int flags,
    +
    1196 double alpha, cv::Size newImageSize)
    +
    1197{
    +
    1198 cv::Mat cameraMatrix1 = _cameraMatrix1.getMat(), cameraMatrix2 = _cameraMatrix2.getMat();
    +
    1199 cv::Mat distCoeffs1 = _distCoeffs1.getMat(), distCoeffs2 = _distCoeffs2.getMat();
    +
    1200 cv::Mat Rmat = _Rmat.getMat(), Tmat = _Tmat.getMat();
    +
    1201
    +
    1202#if CV_MAJOR_VERSION > 3 || (CV_MAJOR_VERSION >= 3 && (CV_MINOR_VERSION>4 || (CV_MINOR_VERSION>=4 && CV_SUBMINOR_VERSION>=4)))
    +
    1203 CvMat c_cameraMatrix1 = cvMat(cameraMatrix1);
    +
    1204 CvMat c_cameraMatrix2 = cvMat(cameraMatrix2);
    +
    1205 CvMat c_distCoeffs1 = cvMat(distCoeffs1);
    +
    1206 CvMat c_distCoeffs2 = cvMat(distCoeffs2);
    +
    1207 CvMat c_R = cvMat(Rmat), c_T = cvMat(Tmat);
    +
    1208#else
    +
    1209 CvMat c_cameraMatrix1 = CvMat(cameraMatrix1);
    +
    1210 CvMat c_cameraMatrix2 = CvMat(cameraMatrix2);
    +
    1211 CvMat c_distCoeffs1 = CvMat(distCoeffs1);
    +
    1212 CvMat c_distCoeffs2 = CvMat(distCoeffs2);
    +
    1213 CvMat c_R = CvMat(Rmat), c_T = CvMat(Tmat);
    +
    1214#endif
    +
    1215
    +
    1216 int rtype = CV_64F;
    +
    1217 _Rmat1.create(3, 3, rtype);
    +
    1218 _Rmat2.create(3, 3, rtype);
    +
    1219 _Pmat1.create(3, 4, rtype);
    +
    1220 _Pmat2.create(3, 4, rtype);
    +
    1221 cv::Mat R1 = _Rmat1.getMat(), R2 = _Rmat2.getMat(), P1 = _Pmat1.getMat(), P2 = _Pmat2.getMat(), Q;
    +
    1222#if CV_MAJOR_VERSION > 3 || (CV_MAJOR_VERSION >= 3 && (CV_MINOR_VERSION>4 || (CV_MINOR_VERSION>=4 && CV_SUBMINOR_VERSION>=4)))
    +
    1223 CvMat c_R1 = cvMat(R1), c_R2 = cvMat(R2), c_P1 = cvMat(P1), c_P2 = cvMat(P2);
    +
    1224#else
    +
    1225 CvMat c_R1 = CvMat(R1), c_R2 = CvMat(R2), c_P1 = CvMat(P1), c_P2 = CvMat(P2);
    +
    1226#endif
    +
    1227 CvMat c_Q, *p_Q = 0;
    +
    1228
    +
    1229 if( _Qmat.needed() )
    +
    1230 {
    +
    1231 _Qmat.create(4, 4, rtype);
    +
    1232#if CV_MAJOR_VERSION > 3 || (CV_MAJOR_VERSION >= 3 && (CV_MINOR_VERSION>4 || (CV_MINOR_VERSION>=4 && CV_SUBMINOR_VERSION>=4)))
    +
    1233 p_Q = &(c_Q = cvMat(Q = _Qmat.getMat()));
    +
    1234#else
    +
    1235 p_Q = &(c_Q = CvMat(Q = _Qmat.getMat()));
    +
    1236#endif
    +
    1237 }
    +
    1238
    +
    1239 CvMat *p_distCoeffs1 = distCoeffs1.empty() ? NULL : &c_distCoeffs1;
    +
    1240 CvMat *p_distCoeffs2 = distCoeffs2.empty() ? NULL : &c_distCoeffs2;
    +
    1241 cvStereoRectifyFisheye( &c_cameraMatrix1, &c_cameraMatrix2, p_distCoeffs1, p_distCoeffs2,
    +
    1242#if CV_MAJOR_VERSION > 3 || (CV_MAJOR_VERSION >= 3 && (CV_MINOR_VERSION>4 || (CV_MINOR_VERSION>=4 && CV_SUBMINOR_VERSION>=4)))
    +
    1243 cvSize(imageSize), &c_R, &c_T, &c_R1, &c_R2, &c_P1, &c_P2, p_Q, flags, alpha,
    +
    1244 cvSize(newImageSize));
    +
    1245#else
    +
    1246 CvSize(imageSize), &c_R, &c_T, &c_R1, &c_R2, &c_P1, &c_P2, p_Q, flags, alpha,
    +
    1247 CvSize(newImageSize));
    +
    1248#endif
    +
    1249}
    +
    1250
    +
    1251}
    +
    1252
    +
    1253
    +
    1254#endif /* CORELIB_SRC_OPENCV_STEREORECTIFYFISHEYE_H_ */
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT-members.html b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT-members.html new file mode 100644 index 00000000..4ab5f383 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT-members.html @@ -0,0 +1,120 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    rtabmap::PointXYZIRT Member List
    +
    +
    + +

    This is the complete list of members for rtabmap::PointXYZIRT, including all inherited members.

    + + + + + +
    intensity (defined in rtabmap::PointXYZIRT)rtabmap::PointXYZIRT
    PCL_ADD_POINT4D (defined in rtabmap::PointXYZIRT)rtabmap::PointXYZIRT
    ring (defined in rtabmap::PointXYZIRT)rtabmap::PointXYZIRT
    time (defined in rtabmap::PointXYZIRT)rtabmap::PointXYZIRT
    +
    + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT.html b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT.html new file mode 100644 index 00000000..37f95f00 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIRT.html @@ -0,0 +1,206 @@ + + + + + + + + +RTAB-Map: rtabmap::PointXYZIRT Struct Reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rtabmap::PointXYZIRT Struct Reference
    +
    +
    + +

    This namespace contains 3D point cloud processing utilities. + More...

    + +

    #include <util3d.h>

    + + + + + + + + + + +

    +Public Attributes

     PCL_ADD_POINT4D
     
    float intensity
     
    std::uint16_t ring
     
    float time
     
    +

    Detailed Description

    +

    This namespace contains 3D point cloud processing utilities.

    + +

    Definition at line 57 of file util3d.h.

    +

    Member Data Documentation

    + +

    ◆ PCL_ADD_POINT4D

    + +
    +
    + + + + +
    rtabmap::PointXYZIRT::PCL_ADD_POINT4D
    +
    + +

    Definition at line 59 of file util3d.h.

    + +
    +
    + +

    ◆ intensity

    + +
    +
    + + + + +
    float rtabmap::PointXYZIRT::intensity
    +
    + +

    Definition at line 60 of file util3d.h.

    + +
    +
    + +

    ◆ ring

    + +
    +
    + + + + +
    std::uint16_t rtabmap::PointXYZIRT::ring
    +
    + +

    Definition at line 61 of file util3d.h.

    + +
    +
    + +

    ◆ time

    + +
    +
    + + + + +
    float rtabmap::PointXYZIRT::time
    +
    + +

    Definition at line 62 of file util3d.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • corelib/include/rtabmap/core/util3d.h
    • +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT-members.html b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT-members.html new file mode 100644 index 00000000..6feeee99 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT-members.html @@ -0,0 +1,121 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    rtabmap::PointXYZIT Member List
    +
    +
    + +

    This is the complete list of members for rtabmap::PointXYZIT, including all inherited members.

    + + + + + + +
    i (defined in rtabmap::PointXYZIT)rtabmap::PointXYZIT
    t (defined in rtabmap::PointXYZIT)rtabmap::PointXYZIT
    x (defined in rtabmap::PointXYZIT)rtabmap::PointXYZIT
    y (defined in rtabmap::PointXYZIT)rtabmap::PointXYZIT
    z (defined in rtabmap::PointXYZIT)rtabmap::PointXYZIT
    +
    + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT.html b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT.html new file mode 100644 index 00000000..80cec9b4 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1PointXYZIT.html @@ -0,0 +1,218 @@ + + + + + + + + +RTAB-Map: rtabmap::PointXYZIT Struct Reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rtabmap::PointXYZIT Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    float x
     
    float y
     
    float z
     
    float i
     
    float t
     
    +

    Detailed Description

    +
    +

    Definition at line 53 of file LidarVLP16.h.

    +

    Member Data Documentation

    + +

    ◆ x

    + +
    +
    + + + + +
    float rtabmap::PointXYZIT::x
    +
    + +

    Definition at line 54 of file LidarVLP16.h.

    + +
    +
    + +

    ◆ y

    + +
    +
    + + + + +
    float rtabmap::PointXYZIT::y
    +
    + +

    Definition at line 55 of file LidarVLP16.h.

    + +
    +
    + +

    ◆ z

    + +
    +
    + + + + +
    float rtabmap::PointXYZIT::z
    +
    + +

    Definition at line 56 of file LidarVLP16.h.

    + +
    +
    + +

    ◆ i

    + +
    +
    + + + + +
    float rtabmap::PointXYZIT::i
    +
    + +

    Definition at line 57 of file LidarVLP16.h.

    + +
    +
    + +

    ◆ t

    + +
    +
    + + + + +
    float rtabmap::PointXYZIT::t
    +
    + +

    Definition at line 58 of file LidarVLP16.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors-members.html b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors-members.html new file mode 100644 index 00000000..55c02f54 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors-members.html @@ -0,0 +1,122 @@ + + + + + + + + +RTAB-Map: Member List + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    rtabmap::graph::MaxGraphErrors Member List
    +
    + +
    + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.html b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.html new file mode 100644 index 00000000..95186d26 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.html @@ -0,0 +1,271 @@ + + + + + + + + +RTAB-Map: rtabmap::graph::MaxGraphErrors Struct Reference + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    rtabmap::graph::MaxGraphErrors Struct Reference
    +
    +
    + +

    Largest pose-graph constraint violations after optimization. + More...

    + +

    #include <Graph.h>

    +
    +Collaboration diagram for rtabmap::graph::MaxGraphErrors:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    float linear =-1.0f
     Absolute linear error (m) of the worst link.
     
    float angular =-1.0f
     Absolute angular error (rad) of the worst link.
     
    float linearRatio =-1.0f
     linear / sqrt(trans variance) of the worst link.
     
    float angularRatio =-1.0f
     angular / sqrt(rot variance) of the worst link.
     
    Link linearLink
     Link with largest linearRatio.
     
    Link angularLink
     Link with largest angularRatio.
     
    +

    Detailed Description

    +

    Largest pose-graph constraint violations after optimization.

    +

    For each non-self-referenced link (from != to), compares the relative pose implied by poses to the link measurement and tracks the worst linear/angular error and error/std ratios.

    + +

    Definition at line 231 of file Graph.h.

    +

    Member Data Documentation

    + +

    ◆ linear

    + +
    +
    + + + + +
    float rtabmap::graph::MaxGraphErrors::linear =-1.0f
    +
    + +

    Absolute linear error (m) of the worst link.

    + +

    Definition at line 233 of file Graph.h.

    + +
    +
    + +

    ◆ angular

    + +
    +
    + + + + +
    float rtabmap::graph::MaxGraphErrors::angular =-1.0f
    +
    + +

    Absolute angular error (rad) of the worst link.

    + +

    Definition at line 234 of file Graph.h.

    + +
    +
    + +

    ◆ linearRatio

    + +
    +
    + + + + +
    float rtabmap::graph::MaxGraphErrors::linearRatio =-1.0f
    +
    + +

    linear / sqrt(trans variance) of the worst link.

    + +

    Definition at line 235 of file Graph.h.

    + +
    +
    + +

    ◆ angularRatio

    + +
    +
    + + + + +
    float rtabmap::graph::MaxGraphErrors::angularRatio =-1.0f
    +
    + +

    angular / sqrt(rot variance) of the worst link.

    + +

    Definition at line 236 of file Graph.h.

    + +
    +
    + +

    ◆ linearLink

    + +
    +
    + + + + +
    Link rtabmap::graph::MaxGraphErrors::linearLink
    +
    + +

    Link with largest linearRatio.

    + +

    Definition at line 237 of file Graph.h.

    + +
    +
    + +

    ◆ angularLink

    + +
    +
    + + + + +
    Link rtabmap::graph::MaxGraphErrors::angularLink
    +
    + +

    Link with largest angularRatio.

    + +

    Definition at line 238 of file Graph.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • corelib/include/rtabmap/core/Graph.h
    • +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.js b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.js new file mode 100644 index 00000000..1cc3b7c3 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors.js @@ -0,0 +1,9 @@ +var structrtabmap_1_1graph_1_1MaxGraphErrors = +[ + [ "linear", "structrtabmap_1_1graph_1_1MaxGraphErrors.html#a81e053c54198c0c57dba6ef65d1c3a8c", null ], + [ "angular", "structrtabmap_1_1graph_1_1MaxGraphErrors.html#a08918b252e5814477beff38b423df39b", null ], + [ "linearRatio", "structrtabmap_1_1graph_1_1MaxGraphErrors.html#a2a49ed004369d9a6670781d7f3b3cae9", null ], + [ "angularRatio", "structrtabmap_1_1graph_1_1MaxGraphErrors.html#a97bead9a8191f2746e2586a965ca3c80", null ], + [ "linearLink", "structrtabmap_1_1graph_1_1MaxGraphErrors.html#ae51dd46bd7d7f6779b681eb906654321", null ], + [ "angularLink", "structrtabmap_1_1graph_1_1MaxGraphErrors.html#a95dc5269dfe47ed56b315cebe3389ab6", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.map b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.map new file mode 100644 index 00000000..038b5db5 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.md5 b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.md5 new file mode 100644 index 00000000..78eb8da5 --- /dev/null +++ b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.md5 @@ -0,0 +1 @@ +aba588279bb547a09173d8174a481899 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.png b/preview/pr-1773/api/latest/structrtabmap_1_1graph_1_1MaxGraphErrors__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8869368a9d683e560431eb84a3df6898db39c6 GIT binary patch literal 6450 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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/sync_off.png b/preview/pr-1773/api/latest/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/sync_on.png b/preview/pr-1773/api/latest/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/tab_a.png b/preview/pr-1773/api/latest/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/tab_ad.png b/preview/pr-1773/api/latest/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/tab_s.png b/preview/pr-1773/api/latest/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/tab_sd.png b/preview/pr-1773/api/latest/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/tabs.css b/preview/pr-1773/api/latest/tabs.css new file mode 100644 index 00000000..f33d6f4a --- /dev/null +++ b/preview/pr-1773/api/latest/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important;color:#555555;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} diff --git a/preview/pr-1773/api/latest/tools.html b/preview/pr-1773/api/latest/tools.html new file mode 100644 index 00000000..e1630ef7 --- /dev/null +++ b/preview/pr-1773/api/latest/tools.html @@ -0,0 +1,196 @@ + + + + + + + + +RTAB-Map: Command-line tools + + + + + + + + + + + + + + + + + + + + +

    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Command-line tools
    +
    +
    +

    Building RTAB-Map installs a set of executables next to the libraries. They are built on the same API these pages document, so each one is also a worked example of it – and the quickest way to inspect, replay or convert a map without writing code.

    +

    All of them take the --Param Group/Name value arguments described in the Parameter reference, and print their options with --help.

    +

    +Working with a map

    + + + + + + + + + + + + + + + + + + + + + +
    Command What it does
    rtabmap-info Prints a database summary: version, sizes, parameters and per-node statistics. --diff shows only the parameters that differ from the defaults, or from another database.
    rtabmap-export Exports the map: assembled point cloud, mesh or textured mesh (.ply, .pcd, .obj), 2D occupancy grid, poses and camera images. Filtering, decimation, colour and texturing are all options.
    rtabmap-report Reports the statistics recorded in one or several databases: RMSE against ground truth, timings, loop closures. Plots them when built with Qt.
    rtabmap-recovery Repairs a database whose session was not closed properly (e.g. after a crash), by rebuilding it from the nodes and links that can still be read. The original is kept as *.backup.db unless -d is given.
    rtabmap-reprocess Replays the data of a database through a fresh Rtabmap instance, with different parameters, and writes a new database. Several databases can be merged in one run. The way to try a new configuration on recorded data.
    rtabmap-detectMoreLoopClosures Looks for additional loop closures in an existing map, by clustering nodes that are close in the optimized graph, and re-optimizes it.
    rtabmap-globalBundleAdjustment Runs a global bundle adjustment over the whole graph and saves the refined poses.
    rtabmap-reduceGraph Merges nodes of the same location to shrink the graph, keeping the map usable for localization.
    rtabmap-cleanupLocalGrids Clears from the local occupancy grids the space that the assembled global grid shows as empty, so that removed obstacles do not reappear when the map is regenerated.
    +

    +Recording and datasets

    + + + + + + + + + + + + + + + + + +
    Command What it does
    rtabmap-console Runs loop closure detection without a GUI on a directory of images, a video or a database, and reports the loop closures found. Appearance-only: it forces RGBD/Enabled to false and feeds images without a pose, so there is no odometry, no graph optimization and no metric map – unlike the dataset tools below, which run the whole SLAM pipeline.
    rtabmap-dataRecorder Records a live sensor into a database, using a configuration file exported from the GUI preferences.
    rtabmap-kitti_dataset Runs a KITTI odometry sequence (stereo, optionally Velodyne) and reports the KITTI errors against ground truth.
    rtabmap-rgbd_dataset Same for a TUM RGB-D sequence.
    rtabmap-euroc_dataset Same for a EuRoC MAV sequence (stereo and IMU).
    rtabmap-cidsims_dataset Same for a CID-SIMS sequence (RGB-D, IMU and wheel odometry).
    rtabmap-imagesJoiner Joins images of two directories side by side, to build a stereo sequence out of two monocular ones.
    +

    +Sensors and calibration

    +

    These need the GUI library (Qt), so they are only built when it is available.

    + + + + + + + + + + + + + + + +
    Command What it does
    rtabmap-camera Streams a USB camera, a video file or a directory of images, and shows what the driver delivers.
    rtabmap-rgbd_camera Same for the RGB-D and stereo drivers (OpenNI, Freenect, RealSense, Kinect for Azure, ZED...), to check a device before mapping with it.
    rtabmap-lidar_viewer Shows the scans of a network lidar (VLP-16).
    rtabmap-calibration Calibrates a camera or a stereo pair from a chessboard, and saves the model RTAB-Map reads.
    rtabmap-odometryViewer Runs Odometry alone on a live sensor and shows the features, the local map and the estimated trajectory. Useful to tune the Odom/ and Vis/ parameters.
    rtabmap-databaseViewer Inspects a database: browse the nodes and their data, the graph and its links, add or remove constraints, re-optimize, regenerate the grids and export.
    +

    +Algorithm evaluation

    + + + + + + + + + + + + + +
    Command What it does
    rtabmap-matcher Registers two images with the visual or ICP pipeline and draws the correspondences. The direct way to compare feature detectors and matching parameters on a hard pair.
    rtabmap-stereoEval Evaluates the stereo correspondence parameters against a ground truth disparity map (Middlebury format).
    rtabmap-epipolar_geometry Shows the epipolar geometry between two images.
    rtabmap-extractObject Extracts an object lying on a plane from a point cloud file.
    rtabmap-vocabularyComparison Compares the nearest-neighbour strategies of the visual dictionary on a saved vocabulary. Built only with the OpenCV non-free module.
    +

    The GUI application itself is rtabmap; everything the tools above do offline is also reachable from its menus.

    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/topics.html b/preview/pr-1773/api/latest/topics.html new file mode 100644 index 00000000..a13b96bf --- /dev/null +++ b/preview/pr-1773/api/latest/topics.html @@ -0,0 +1,142 @@ + + + + + + + + +RTAB-Map: Topics + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Topics
    +
    +
    +
    Here is a list of all topics with brief descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Region of Interest (ROI) Computation
     PCL to 3D LaserScanConverts various PCL point cloud types into a unified LaserScan format
     PCL to 2D LaserScanConverts various PCL point cloud types into a unified 2D LaserScan format
     LaserScan to PCLFunctions to convert LaserScan data to various PCL point cloud formats
     Range Filtering of PCL Point CloudsFilters a point cloud based on a minimum and maximum Euclidean range
     Split Range Filtering of PCL Point CloudsSplits a point cloud into two groups based on a distance threshold
     Point Cloud DownsamplingDownsamples a point cloud or LaserScan by keeping only every N-th point
     Voxel FilteringPerforms voxel grid downsampling on a point cloud with optional index filtering
     Random SamplingRandomly samples a subset of points from the input point cloud
     Pass-through FilteringFilters points from the input point cloud using a pass-through filter along a specified axis
     Crop Box FilteringFilters points from a point cloud using a 3D crop box
     Frustum FilteringFilters points from a point cloud based on a camera frustum
     Remove NaN Points from a Point CloudRemoves NaN (Not-a-Number) points from an organized point cloud
     Remove NaN Points from a Point CloudRemoves points with NaN normal values from a point cloud
     Radius FilteringFilters points based on the number of neighbors within a given radius
     Proportional Radius FilteringPerforms proportional radius outlier filtering using viewpoint-dependent adaptive radii
     Subtract FilteringFilters a point cloud by removing points that have a sufficient number of neighbors within a given radius in a second point cloud
     Point Normal FilteringFilters points in a point cloud based on the angle between their estimated surface normals and a given reference normal
     Point Cloud Cluster ExtractionPerforms Euclidean cluster extraction on a point cloud
     Point Cloud Indices ExtractionExtracts a subset of points from a point cloud based on specified indices
     Compute Variance and Correspondences of Two Point CloudsComputes the geometric variance and number of valid correspondences between two point clouds
     Compute Structural Complexity of a Point Cloud with NormalsComputes the complexity of surface normals in a point cloud using PCA
     Transform PCL Point CloudsTransforms various PCL point cloud types using the given transform
     Transform a single pointTransforms various point types using the given transform
     UtiLite
    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/topics.js b/preview/pr-1773/api/latest/topics.js new file mode 100644 index 00000000..8f6ea061 --- /dev/null +++ b/preview/pr-1773/api/latest/topics.js @@ -0,0 +1,28 @@ +var topics = +[ + [ "Region of Interest (ROI) Computation", "group__RoiComputation.html", null ], + [ "PCL to 3D LaserScan", "group__LaserScanFromPointCloud.html", null ], + [ "PCL to 2D LaserScan", "group__LaserScan2dFromPointCloud.html", null ], + [ "LaserScan to PCL", "group__LaserScanToPointCloud.html", null ], + [ "Range Filtering of PCL Point Clouds", "group__PointCloudRangeFiltering.html", null ], + [ "Split Range Filtering of PCL Point Clouds", "group__PointCloudSplitRangeFiltering.html", null ], + [ "Point Cloud Downsampling", "group__PointCloudDownSampling.html", null ], + [ "Voxel Filtering", "group__VoxelFiltering.html", null ], + [ "Random Sampling", "group__RandomSampling.html", null ], + [ "Pass-through Filtering", "group__PassThrough.html", null ], + [ "Crop Box Filtering", "group__CropBox.html", null ], + [ "Frustum Filtering", "group__FrustumFiltering.html", null ], + [ "Remove NaN Points from a Point Cloud", "group__RemoveNaNFromPointCloud.html", null ], + [ "Remove NaN Points from a Point Cloud", "group__RemoveNaNNormalsFromPointCloud.html", null ], + [ "Radius Filtering", "group__RadiusFiltering.html", null ], + [ "Proportional Radius Filtering", "group__ProportionalRadiusFiltering.html", null ], + [ "Subtract Filtering", "group__SubtractFiltering.html", null ], + [ "Point Normal Filtering", "group__PointNormalFiltering.html", null ], + [ "Point Cloud Cluster Extraction", "group__ExtractClusters.html", null ], + [ "Point Cloud Indices Extraction", "group__ExtractIndices.html", null ], + [ "Compute Variance and Correspondences of Two Point Clouds", "group__ComputeVarianceAndCorrespondences.html", null ], + [ "Compute Structural Complexity of a Point Cloud with Normals", "group__ComputeNormalsComplexity.html", null ], + [ "Transform PCL Point Clouds", "group__TransformPointcloud.html", null ], + [ "Transform a single point", "group__TransformPoint.html", null ], + [ "UtiLite", "group__UtiLite.html", null ] +]; \ No newline at end of file diff --git a/preview/pr-1773/api/latest/uResourceGeneratorPage.html b/preview/pr-1773/api/latest/uResourceGeneratorPage.html new file mode 100644 index 00000000..7be47830 --- /dev/null +++ b/preview/pr-1773/api/latest/uResourceGeneratorPage.html @@ -0,0 +1,137 @@ + + + + + + + + +RTAB-Map: uResourceGenerator + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    uResourceGenerator
    +
    +
    +

    UtiLite provides a utility application called uResourceGenerator to generate resources to include in an executable. For example:

    $ rtabmap-res_tool DatabaseSchema.sql
    + +

    This will generate a HEX file "DatabaseSchema_sql.h" which can be included in source files. Data of the file is global and can be accessed by the generated const char * DATABASESCHEMA_SQL.

    #include "DatabaseSchema_sql.h"
    +
    ...
    +
    std::string hex = DATABASESCHEMA_SQL;
    +
    // Assuming there are only ASCII characters, we can directly convert to a string:
    +
    std::string schema = uHex2Str(hex);
    +
    // For binary data:
    +
    std::vector<char> bytes = uHex2Bytes(hex);
    +
    std::string UTILITE_EXPORT uHex2Str(const std::string &hex)
    +
    std::vector< char > UTILITE_EXPORT uHex2Bytes(const std::string &hex)
    +

    The generator can be automated in a CMake build like:

    ADD_CUSTOM_COMMAND(
    +
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/DatabaseSchema_sql.h
    +
    COMMAND ${RTABMAP_RES_TOOL} -n my_namespace -p ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/DatabaseSchema.sql
    +
    COMMENT "[Creating database resource]"
    +
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/DatabaseSchema.sql
    +
    )
    +
    SET(RESOURCES
    +
    ${CMAKE_CURRENT_BINARY_DIR}/DatabaseSchema_sql.h
    +
    )
    +
    ADD_LIBRARY(mylib ${SRC_FILES} ${RESOURCES})
    +
    ADD_EXECUTABLE(myexecutable ${SRC_FILES} ${RESOURCES})
    +

    The tool is installed as rtabmap-res_tool. It is not exported by FIND_PACKAGE(RTABMap), so locate it with FIND_PROGRAM(RTABMAP_RES_TOOL rtabmap-res_tool). Inside RTAB-Map's own build, the res_tool CMake target can be used directly as the COMMAND instead.

    +
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util2d_8h_source.html b/preview/pr-1773/api/latest/util2d_8h_source.html new file mode 100644 index 00000000..5ad91f94 --- /dev/null +++ b/preview/pr-1773/api/latest/util2d_8h_source.html @@ -0,0 +1,346 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util2d.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util2d.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2025, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL2D_H_
    +
    29#define UTIL2D_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32
    +
    33#include <opencv2/core/core.hpp>
    +
    34#include <rtabmap/core/Transform.h>
    +
    35#include <rtabmap/core/Parameters.h>
    +
    36#include <rtabmap/core/CameraModel.h>
    +
    37#include <vector>
    +
    38
    +
    39namespace rtabmap
    +
    40{
    +
    41
    +
    50namespace util2d
    +
    51{
    +
    52
    +
    71float RTABMAP_CORE_EXPORT ssd(const cv::Mat & windowLeft, const cv::Mat & windowRight);
    +
    72
    +
    91float RTABMAP_CORE_EXPORT sad(const cv::Mat & windowLeft, const cv::Mat & windowRight);
    +
    92
    +
    125std::vector<cv::Point2f> RTABMAP_CORE_EXPORT calcStereoCorrespondences(
    +
    126 const cv::Mat & leftImage,
    +
    127 const cv::Mat & rightImage,
    +
    128 const std::vector<cv::Point2f> & leftCorners,
    +
    129 std::vector<unsigned char> & status,
    +
    130 cv::Size winSize = cv::Size(6,3),
    +
    131 int maxLevel = 3,
    +
    132 int iterations = 5,
    +
    133 float minDisparity = 0.0f,
    +
    134 float maxDisparity = 64.0f,
    +
    135 bool ssdApproach = true);
    +
    136
    +
    176void RTABMAP_CORE_EXPORT calcOpticalFlowPyrLKStereo( cv::InputArray _prevImg, cv::InputArray _nextImg,
    +
    177 cv::InputArray _prevPts, cv::InputOutputArray _nextPts,
    +
    178 cv::OutputArray _status, cv::OutputArray _err,
    +
    179 cv::Size winSize = cv::Size(15,3), int maxLevel = 3,
    +
    180 cv::TermCriteria criteria = cv::TermCriteria(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, 30, 0.01),
    +
    181 int flags = 0, double minEigThreshold = 1e-4 );
    +
    182
    +
    212cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoImages(
    +
    213 const cv::Mat & leftImage,
    +
    214 const cv::Mat & rightImage,
    +
    215 const ParametersMap & parameters = ParametersMap());
    +
    216
    +
    237cv::Mat RTABMAP_CORE_EXPORT depthFromDisparity(const cv::Mat & disparity,
    +
    238 float fx, float baseline,
    +
    239 int type = CV_32FC1); // CV_32FC1 or CV_16UC1
    +
    240
    +
    263cv::Mat RTABMAP_CORE_EXPORT depthFromStereoImages(
    +
    264 const cv::Mat & leftImage,
    +
    265 const cv::Mat & rightImage,
    +
    266 const std::vector<cv::Point2f> & leftCorners,
    +
    267 float fx,
    +
    268 float baseline,
    +
    269 int flowWinSize = 9,
    +
    270 int flowMaxLevel = 4,
    +
    271 int flowIterations = 20,
    +
    272 double flowEps = 0.02);
    +
    273
    +
    298cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoCorrespondences(
    +
    299 const cv::Size & disparitySize,
    +
    300 const std::vector<cv::Point2f> & leftCorners,
    +
    301 const std::vector<cv::Point2f> & rightCorners,
    +
    302 const std::vector<unsigned char> & mask);
    +
    303
    +
    326cv::Mat RTABMAP_CORE_EXPORT depthFromStereoCorrespondences(
    +
    327 const cv::Mat & leftImage,
    +
    328 const std::vector<cv::Point2f> & leftCorners,
    +
    329 const std::vector<cv::Point2f> & rightCorners,
    +
    330 const std::vector<unsigned char> & mask,
    +
    331 float fx, float baseline);
    +
    332
    +
    354cv::Mat RTABMAP_CORE_EXPORT cvtDepthFromFloat(const cv::Mat & depth32F);
    +
    355
    +
    373cv::Mat RTABMAP_CORE_EXPORT cvtDepthToFloat(const cv::Mat & depth16U);
    +
    374
    +
    400float RTABMAP_CORE_EXPORT getDepth(
    +
    401 const cv::Mat & depthImage,
    +
    402 float x, float y,
    +
    403 bool smoothing,
    +
    404 float depthErrorRatio = 0.02f, //ratio
    +
    405 bool estWithNeighborsIfNull = false);
    +
    406
    +
    423cv::Rect RTABMAP_CORE_EXPORT computeRoi(const cv::Mat & image, const std::string & roiRatios);
    +
    424
    +
    433cv::Rect RTABMAP_CORE_EXPORT computeRoi(const cv::Size & imageSize, const std::string & roiRatios);
    +
    434
    +
    443cv::Rect RTABMAP_CORE_EXPORT computeRoi(const cv::Mat & image, const std::vector<float> & roiRatios);
    +
    444
    +
    454cv::Rect RTABMAP_CORE_EXPORT computeRoi(const cv::Size & imageSize, const std::vector<float> & roiRatios);
    +
    455
    + // end of RoiComputation group
    457
    +
    472cv::Mat RTABMAP_CORE_EXPORT decimate(const cv::Mat & image, int d);
    +
    473
    +
    490cv::Mat RTABMAP_CORE_EXPORT interpolate(const cv::Mat & image, int factor, float depthErrorRatio = 0.02f);
    +
    491
    +
    515cv::Mat RTABMAP_CORE_EXPORT registerDepth(
    +
    516 const cv::Mat & depth,
    +
    517 const cv::Mat & depthK,
    +
    518 const cv::Size & colorSize,
    +
    519 const cv::Mat & colorK,
    +
    520 const rtabmap::Transform & transform);
    +
    521cv::Mat RTABMAP_CORE_EXPORT registerDepth(
    +
    522 const cv::Mat & depth,
    +
    523 const cv::Mat & confidence,
    +
    524 const cv::Mat & depthK,
    +
    525 const cv::Size & colorSize,
    +
    526 const cv::Mat & colorK,
    +
    527 const rtabmap::Transform & transform,
    +
    528 cv::Mat & registeredConfidence);
    +
    529
    +
    547cv::Mat RTABMAP_CORE_EXPORT fillDepthHoles(
    +
    548 const cv::Mat & depth,
    +
    549 int maximumHoleSize = 1,
    +
    550 float errorRatio = 0.02f);
    +
    551
    +
    579void RTABMAP_CORE_EXPORT fillRegisteredDepthHoles(
    +
    580 cv::Mat & depthRegistered,
    +
    581 bool vertical,
    +
    582 bool horizontal,
    +
    583 bool fillDoubleHoles = false);
    +
    584
    +
    608cv::Mat RTABMAP_CORE_EXPORT fastBilateralFiltering(
    +
    609 const cv::Mat & depth,
    +
    610 float sigmaS = 15.0f,
    +
    611 float sigmaR = 0.05f,
    +
    612 bool earlyDivision = false);
    +
    613
    +
    629void RTABMAP_CORE_EXPORT depthBleedingFiltering(
    +
    630 cv::Mat & depth,
    +
    631 float maxDepthError);
    +
    632
    +
    654cv::Mat RTABMAP_CORE_EXPORT brightnessAndContrastAuto(
    +
    655 const cv::Mat & src,
    +
    656 const cv::Mat & mask,
    +
    657 float clipLowHistPercent=0,
    +
    658 float clipHighHistPercent=0,
    +
    659 float * alphaOut = 0,
    +
    660 float * betaOut = 0);
    +
    661
    +
    680cv::Mat RTABMAP_CORE_EXPORT exposureFusion(
    +
    681 const std::vector<cv::Mat> & images);
    +
    682
    +
    701void RTABMAP_CORE_EXPORT HSVtoRGB( float *r, float *g, float *b, float h, float s, float v );
    +
    702
    +
    722void RTABMAP_CORE_EXPORT NMS(
    +
    723 const std::vector<cv::KeyPoint> & ptsIn,
    +
    724 const cv::Mat & descriptorsIn,
    +
    725 std::vector<cv::KeyPoint> & ptsOut,
    +
    726 cv::Mat & descriptorsOut,
    +
    727 int dist_thresh, int img_width, int img_height);
    +
    728
    +
    757std::vector<int> RTABMAP_CORE_EXPORT SSC(
    +
    758 const std::vector<cv::KeyPoint> & keypoints,
    +
    759 int maxKeypoints,
    +
    760 float tolerance,
    +
    761 int cols,
    +
    762 int rows,
    +
    763 const std::vector<int> & indx = {});
    +
    764
    +
    789bool RTABMAP_CORE_EXPORT rotateImagesUpsideUpIfNecessary(
    +
    790 CameraModel & model,
    +
    791 cv::Mat & rgb,
    +
    792 cv::Mat & depth);
    +
    793
    +
    794} // namespace util2d
    +
    795} // namespace rtabmap
    +
    796
    +
    797#endif /* UTIL2D_H_ */
    +
    Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
    Definition CameraModel.h:53
    +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    cv::Rect RTABMAP_CORE_EXPORT computeRoi(const cv::Mat &image, const std::string &roiRatios)
    Computes a region of interest (ROI) in the image using string-defined ratios.
    +
    cv::Mat RTABMAP_CORE_EXPORT fastBilateralFiltering(const cv::Mat &depth, float sigmaS=15.0f, float sigmaR=0.05f, bool earlyDivision=false)
    Applies a 2D fast bilateral filter to a depth image.
    +
    cv::Mat RTABMAP_CORE_EXPORT decimate(const cv::Mat &image, int d)
    Downsamples an image by a given decimation factor.
    +
    cv::Mat RTABMAP_CORE_EXPORT cvtDepthToFloat(const cv::Mat &depth16U)
    Converts a 16-bit unsigned depth image (in millimeters) to a 32-bit float depth image (in meters).
    +
    cv::Mat RTABMAP_CORE_EXPORT depthFromDisparity(const cv::Mat &disparity, float fx, float baseline, int type=CV_32FC1)
    Converts a disparity map to a depth map using stereo camera parameters.
    +
    bool RTABMAP_CORE_EXPORT rotateImagesUpsideUpIfNecessary(CameraModel &model, cv::Mat &rgb, cv::Mat &depth)
    Rotates the input RGB and depth images to make them appear upright based on the camera's roll angle.
    +
    float RTABMAP_CORE_EXPORT ssd(const cv::Mat &windowLeft, const cv::Mat &windowRight)
    Computes the Sum of Squared Differences (SSD) between two image patches.
    +
    void RTABMAP_CORE_EXPORT calcOpticalFlowPyrLKStereo(cv::InputArray _prevImg, cv::InputArray _nextImg, cv::InputArray _prevPts, cv::InputOutputArray _nextPts, cv::OutputArray _status, cv::OutputArray _err, cv::Size winSize=cv::Size(15, 3), int maxLevel=3, cv::TermCriteria criteria=cv::TermCriteria(cv::TermCriteria::COUNT+cv::TermCriteria::EPS, 30, 0.01), int flags=0, double minEigThreshold=1e-4)
    Computes sparse optical flow using a pyramidal Lucas-Kanade method constrained to the x-axis.
    +
    cv::Mat RTABMAP_CORE_EXPORT registerDepth(const cv::Mat &depth, const cv::Mat &depthK, const cv::Size &colorSize, const cv::Mat &colorK, const rtabmap::Transform &transform)
    Registers a depth image to a different camera frame (typically RGB).
    +
    float RTABMAP_CORE_EXPORT getDepth(const cv::Mat &depthImage, float x, float y, bool smoothing, float depthErrorRatio=0.02f, bool estWithNeighborsIfNull=false)
    Retrieves a depth value from a depth image at a subpixel coordinate.
    +
    float RTABMAP_CORE_EXPORT sad(const cv::Mat &windowLeft, const cv::Mat &windowRight)
    Computes the Sum of Absolute Differences (SAD) between two image patches.
    +
    cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoCorrespondences(const cv::Size &disparitySize, const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const std::vector< unsigned char > &mask)
    Computes a disparity map from stereo correspondences between two images.
    +
    std::vector< cv::Point2f > RTABMAP_CORE_EXPORT calcStereoCorrespondences(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, std::vector< unsigned char > &status, cv::Size winSize=cv::Size(6, 3), int maxLevel=3, int iterations=5, float minDisparity=0.0f, float maxDisparity=64.0f, bool ssdApproach=true)
    Computes stereo correspondences between left and right images using a pyramidal window-based matching...
    +
    cv::Mat RTABMAP_CORE_EXPORT cvtDepthFromFloat(const cv::Mat &depth32F)
    Converts a 32-bit float depth image (in meters) to a 16-bit unsigned depth image (in millimeters).
    +
    void RTABMAP_CORE_EXPORT depthBleedingFiltering(cv::Mat &depth, float maxDepthError)
    Filters out depth bleeding artifacts in a depth image.
    +
    cv::Mat RTABMAP_CORE_EXPORT brightnessAndContrastAuto(const cv::Mat &src, const cv::Mat &mask, float clipLowHistPercent=0, float clipHighHistPercent=0, float *alphaOut=0, float *betaOut=0)
    Automatic brightness and contrast optimization with optional histogram clipping.
    +
    std::vector< int > RTABMAP_CORE_EXPORT SSC(const std::vector< cv::KeyPoint > &keypoints, int maxKeypoints, float tolerance, int cols, int rows, const std::vector< int > &indx={})
    Applies the SSC (Suppression via Square Covering) algorithm to spatially select keypoints.
    +
    cv::Mat RTABMAP_CORE_EXPORT depthFromStereoImages(const cv::Mat &leftImage, const cv::Mat &rightImage, const std::vector< cv::Point2f > &leftCorners, float fx, float baseline, int flowWinSize=9, int flowMaxLevel=4, int flowIterations=20, double flowEps=0.02)
    Computes a depth map from stereo image pairs using optical flow tracking.
    +
    void RTABMAP_CORE_EXPORT NMS(const std::vector< cv::KeyPoint > &ptsIn, const cv::Mat &descriptorsIn, std::vector< cv::KeyPoint > &ptsOut, cv::Mat &descriptorsOut, int dist_thresh, int img_width, int img_height)
    Applies Non-Maximum Suppression (NMS) to a set of keypoints.
    +
    void RTABMAP_CORE_EXPORT HSVtoRGB(float *r, float *g, float *b, float h, float s, float v)
    Converts a color from HSV (Hue, Saturation, Value) to RGB.
    +
    cv::Mat RTABMAP_CORE_EXPORT exposureFusion(const std::vector< cv::Mat > &images)
    Performs exposure fusion on a set of input images.
    +
    cv::Mat RTABMAP_CORE_EXPORT disparityFromStereoImages(const cv::Mat &leftImage, const cv::Mat &rightImage, const ParametersMap &parameters=ParametersMap())
    Computes the disparity map from a pair of stereo images.
    +
    cv::Mat RTABMAP_CORE_EXPORT depthFromStereoCorrespondences(const cv::Mat &leftImage, const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const std::vector< unsigned char > &mask, float fx, float baseline)
    Computes a sparse depth map from corresponding stereo feature points.
    +
    cv::Mat RTABMAP_CORE_EXPORT fillDepthHoles(const cv::Mat &depth, int maximumHoleSize=1, float errorRatio=0.02f)
    Fills holes in the depth image using linear interpolation.
    +
    cv::Mat RTABMAP_CORE_EXPORT interpolate(const cv::Mat &image, int factor, float depthErrorRatio=0.02f)
    Upsamples a depth image using bilinear interpolation with depth consistency check.
    +
    void RTABMAP_CORE_EXPORT fillRegisteredDepthHoles(cv::Mat &depthRegistered, bool vertical, bool horizontal, bool fillDoubleHoles=false)
    Fill holes in a registered depth image using linear interpolation.
    + +
    std::map< std::string, std::string > ParametersMap
    Parameter keys mapped to their values, as used by every configurable class (see Parameters).
    Definition Parameters.h:44
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d_8h_source.html b/preview/pr-1773/api/latest/util3d_8h_source.html new file mode 100644 index 00000000..9d07adde --- /dev/null +++ b/preview/pr-1773/api/latest/util3d_8h_source.html @@ -0,0 +1,570 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2025, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_H_
    +
    29#define UTIL3D_H_
    +
    30
    +
    31#include "rtabmap/core/rtabmap_core_export.h"
    +
    32
    +
    33#include <pcl/point_cloud.h>
    +
    34#include <pcl/point_types.h>
    +
    35#include <pcl/pcl_base.h>
    +
    36#include <pcl/TextureMesh.h>
    +
    37#include <rtabmap/core/Transform.h>
    +
    38#include <rtabmap/core/SensorData.h>
    +
    39#include <rtabmap/core/Parameters.h>
    +
    40#include <opencv2/core/core.hpp>
    +
    41#include <rtabmap/core/ProgressState.h>
    +
    42#include <cstdint>
    +
    43#include <map>
    +
    44#include <list>
    +
    45
    +
    46namespace rtabmap
    +
    47{
    +
    48
    +
    53// Point type carrying xyz + intensity + ring (laser line index) + time
    +
    54// (per-point acquisition offset, seconds from the scan start). Matches the
    +
    55// layout expected by LIO-SAM's Velodyne feature extractor so it can be fed
    +
    56// directly via util3d::laserScanFromPointCloud().
    +
    +
    57struct EIGEN_ALIGN16 PointXYZIRT
    +
    58{
    +
    59 PCL_ADD_POINT4D;
    +
    60 float intensity;
    +
    61 std::uint16_t ring;
    +
    62 float time;
    +
    63 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
    +
    64};
    +
    +
    65
    +
    74namespace util3d
    +
    75{
    +
    76
    +
    93cv::Mat RTABMAP_CORE_EXPORT rgbFromCloud(
    +
    94 const pcl::PointCloud<pcl::PointXYZRGBA> & cloud,
    +
    95 bool bgrOrder = true);
    +
    96
    +
    111cv::Mat RTABMAP_CORE_EXPORT depthFromCloud(
    +
    112 const pcl::PointCloud<pcl::PointXYZRGBA> & cloud,
    +
    113 bool depth16U = true);
    +
    114
    +
    130void RTABMAP_CORE_EXPORT rgbdFromCloud(
    +
    131 const pcl::PointCloud<pcl::PointXYZRGBA> & cloud,
    +
    132 cv::Mat & rgb,
    +
    133 cv::Mat & depth,
    +
    134 bool bgrOrder = true,
    +
    135 bool depth16U = true);
    +
    136
    +
    155pcl::PointXYZ RTABMAP_CORE_EXPORT projectDepthTo3D(
    +
    156 const cv::Mat & depthImage,
    +
    157 float x, float y,
    +
    158 float cx, float cy,
    +
    159 float fx, float fy,
    +
    160 bool smoothing,
    +
    161 float depthErrorRatio = 0.02f);
    +
    162
    +
    179Eigen::Vector3f RTABMAP_CORE_EXPORT projectDepthTo3DRay(
    +
    180 const cv::Size & imageSize,
    +
    181 float x, float y,
    +
    182 float cx, float cy,
    +
    183 float fx, float fy);
    +
    184
    +
    207RTABMAP_DEPRECATED pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT cloudFromDepth(
    +
    208 const cv::Mat & imageDepth,
    +
    209 float cx, float cy,
    +
    210 float fx, float fy,
    +
    211 int decimation = 1,
    +
    212 float maxDepth = 0.0f,
    +
    213 float minDepth = 0.0f,
    +
    214 std::vector<int> * validIndices = 0);
    +
    230pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT cloudFromDepth(
    +
    231 const cv::Mat & imageDepth,
    +
    232 const CameraModel & model,
    +
    233 int decimation = 1,
    +
    234 float maxDepth = 0.0f,
    +
    235 float minDepth = 0.0f,
    +
    236 std::vector<int> * validIndices = 0);
    +
    237pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT cloudFromDepth(
    +
    238 const cv::Mat & imageDepth,
    +
    239 const cv::Mat & imageDepthConfidence,
    +
    240 const CameraModel & model,
    +
    241 int decimation = 1,
    +
    242 float maxDepth = 0.0f,
    +
    243 float minDepth = 0.0f,
    +
    244 unsigned char confidenceThr = 0,
    +
    245 std::vector<int> * validIndices = 0);
    +
    246
    +
    272RTABMAP_DEPRECATED pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB(
    +
    273 const cv::Mat & imageRgb,
    +
    274 const cv::Mat & imageDepth,
    +
    275 float cx, float cy,
    +
    276 float fx, float fy,
    +
    277 int decimation = 1,
    +
    278 float maxDepth = 0.0f,
    +
    279 float minDepth = 0.0f,
    +
    280 std::vector<int> * validIndices = 0);
    +
    281
    +
    303pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB(
    +
    304 const cv::Mat & imageRgb,
    +
    305 const cv::Mat & imageDepth,
    +
    306 const CameraModel & model,
    +
    307 int decimation = 1,
    +
    308 float maxDepth = 0.0f,
    +
    309 float minDepth = 0.0f,
    +
    310 std::vector<int> * validIndices = 0);
    +
    311pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB(
    +
    312 const cv::Mat & imageRgb,
    +
    313 const cv::Mat & imageDepth,
    +
    314 const cv::Mat & imageDepthConfidence,
    +
    315 const CameraModel & model,
    +
    316 int decimation = 1,
    +
    317 float maxDepth = 0.0f,
    +
    318 float minDepth = 0.0f,
    +
    319 unsigned char confidenceThr = 0, // 0=low, 100=high
    +
    320 std::vector<int> * validIndices = 0);
    +
    321
    +
    351pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT cloudFromDisparity(
    +
    352 const cv::Mat & imageDisparity,
    +
    353 const StereoCameraModel & model,
    +
    354 int decimation = 1,
    +
    355 float maxDepth = 0.0f,
    +
    356 float minDepth = 0.0f,
    +
    357 std::vector<int> * validIndices = 0);
    +
    358
    +
    392pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cloudFromDisparityRGB(
    +
    393 const cv::Mat & imageRgb,
    +
    394 const cv::Mat & imageDisparity,
    +
    395 const StereoCameraModel & model,
    +
    396 int decimation = 1,
    +
    397 float maxDepth = 0.0f,
    +
    398 float minDepth = 0.0f,
    +
    399 std::vector<int> * validIndices = 0);
    +
    400
    +
    437pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cloudFromStereoImages(
    +
    438 const cv::Mat & imageLeft,
    +
    439 const cv::Mat & imageRight,
    +
    440 const StereoCameraModel & model,
    +
    441 int decimation = 1,
    +
    442 float maxDepth = 0.0f,
    +
    443 float minDepth = 0.0f,
    +
    444 std::vector<int> * validIndices = 0,
    +
    445 const ParametersMap & parameters = ParametersMap());
    +
    446
    +
    485std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> RTABMAP_CORE_EXPORT cloudsFromSensorData(
    +
    486 const SensorData & sensorData,
    +
    487 int decimation = 1,
    +
    488 float maxDepth = 0.0f,
    +
    489 float minDepth = 0.0f,
    +
    490 std::vector<pcl::IndicesPtr> * validIndices = 0,
    +
    491 const ParametersMap & stereoParameters = ParametersMap(),
    +
    492 const std::vector<float> & roiRatios = std::vector<float>(), // ignored for stereo
    +
    493 unsigned char confidenceThr = 0); // ignored for stereo
    +
    494
    +
    523pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT cloudFromSensorData(
    +
    524 const SensorData & sensorData,
    +
    525 int decimation = 1,
    +
    526 float maxDepth = 0.0f,
    +
    527 float minDepth = 0.0f,
    +
    528 std::vector<int> * validIndices = 0,
    +
    529 const ParametersMap & stereoParameters = ParametersMap(),
    +
    530 const std::vector<float> & roiRatios = std::vector<float>(), // ignored for stereo
    +
    531 unsigned char confidenceThr = 0); // ignored for stereo
    +
    532
    +
    565std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> RTABMAP_CORE_EXPORT cloudsRGBFromSensorData(
    +
    566 const SensorData & sensorData,
    +
    567 int decimation = 1,
    +
    568 float maxDepth = 0.0f,
    +
    569 float minDepth = 0.0f,
    +
    570 std::vector<pcl::IndicesPtr > * validIndices = 0,
    +
    571 const ParametersMap & stereoParameters = ParametersMap(),
    +
    572 const std::vector<float> & roiRatios = std::vector<float>(), // ignored for stereo
    +
    573 unsigned char confidenceThr = 0); // ignored for stereo
    +
    574
    +
    601pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cloudRGBFromSensorData(
    +
    602 const SensorData & sensorData,
    +
    603 int decimation = 1,
    +
    604 float maxDepth = 0.0f,
    +
    605 float minDepth = 0.0f,
    +
    606 std::vector<int> * validIndices = 0,
    +
    607 const ParametersMap & stereoParameters = ParametersMap(),
    +
    608 const std::vector<float> & roiRatios = std::vector<float>(), // ignored for stereo
    +
    609 unsigned char confidenceThr = 0); // ignored for stereo
    +
    610
    +
    633pcl::PointCloud<pcl::PointXYZ> RTABMAP_CORE_EXPORT laserScanFromDepthImage(
    +
    634 const cv::Mat & depthImage,
    +
    635 float fx,
    +
    636 float fy,
    +
    637 float cx,
    +
    638 float cy,
    +
    639 float maxDepth = 0,
    +
    640 float minDepth = 0,
    +
    641 const Transform & localTransform = Transform::getIdentity());
    +
    661pcl::PointCloud<pcl::PointXYZ> RTABMAP_CORE_EXPORT laserScanFromDepthImages(
    +
    662 const cv::Mat & depthImages,
    +
    663 const std::vector<CameraModel> & cameraModels,
    +
    664 float maxDepth,
    +
    665 float minDepth);
    +
    666
    +
    695LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZ> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    697LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZ> & cloud, const pcl::IndicesPtr & indices, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    699LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointNormal> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    701LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointNormal> & cloud, const pcl::IndicesPtr & indices, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    703LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZ> & cloud, const pcl::PointCloud<pcl::Normal> & normals, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    705LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZRGB> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    707LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZRGB> & cloud, const pcl::IndicesPtr & indices, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    709LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZI> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    711LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZI> & cloud, const pcl::IndicesPtr & indices, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    713LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<rtabmap::PointXYZIRT> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    715LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<rtabmap::PointXYZIRT> & cloud, const pcl::IndicesPtr & indices, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    717LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZRGB> & cloud, const pcl::PointCloud<pcl::Normal> & normals, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    719LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZRGBNormal> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    721LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZRGBNormal> & cloud, const pcl::IndicesPtr & indices, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    723LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZI> & cloud, const pcl::PointCloud<pcl::Normal> & normals, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    725LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZINormal> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    727LaserScan RTABMAP_CORE_EXPORT laserScanFromPointCloud(const pcl::PointCloud<pcl::PointXYZINormal> & cloud, const pcl::IndicesPtr & indices, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    728
    +
    730template<typename PointCloud2T>
    +
    731LaserScan laserScanFromPointCloud(const PointCloud2T & cloud, bool filterNaNs = true, bool is2D = false, const Transform & transform = Transform());
    +
    756LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud(const pcl::PointCloud<pcl::PointXYZ> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    758LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud(const pcl::PointCloud<pcl::PointXYZI> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    760LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud(const pcl::PointCloud<pcl::PointNormal> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    762LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud(const pcl::PointCloud<pcl::PointXYZ> & cloud, const pcl::PointCloud<pcl::Normal> & normals, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    764LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud(const pcl::PointCloud<pcl::PointXYZINormal> & cloud, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    766LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud(const pcl::PointCloud<pcl::PointXYZI> & cloud, const pcl::PointCloud<pcl::Normal> & normals, const Transform & transform = Transform(), bool filterNaNs = true);
    +
    785pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud2(const LaserScan & laserScan, const Transform & transform = Transform());
    +
    787pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud(const LaserScan & laserScan, const Transform & transform = Transform());
    +
    789pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudNormal(const LaserScan & laserScan, const Transform & transform = Transform());
    +
    791pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGB(const LaserScan & laserScan, const Transform & transform = Transform(), unsigned char r = 100, unsigned char g = 100, unsigned char b = 100);
    +
    793pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudI(const LaserScan & laserScan, const Transform & transform = Transform(), float intensity = 0.0f);
    +
    795pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGBNormal(const LaserScan & laserScan, const Transform & transform = Transform(), unsigned char r = 100, unsigned char g = 100, unsigned char b = 100);
    +
    797pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudINormal(const LaserScan & laserScan, const Transform & transform = Transform(), float intensity = 0.0f);
    +
    798
    +
    799
    +
    801pcl::PointXYZ RTABMAP_CORE_EXPORT laserScanToPoint(const LaserScan & laserScan, int index);
    +
    803pcl::PointNormal RTABMAP_CORE_EXPORT laserScanToPointNormal(const LaserScan & laserScan, int index);
    +
    805pcl::PointXYZRGB RTABMAP_CORE_EXPORT laserScanToPointRGB(const LaserScan & laserScan, int index, unsigned char r = 100, unsigned char g = 100, unsigned char b = 100);
    +
    807pcl::PointXYZI RTABMAP_CORE_EXPORT laserScanToPointI(const LaserScan & laserScan, int index, float intensity);
    +
    809pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT laserScanToPointRGBNormal(const LaserScan & laserScan, int index, unsigned char r, unsigned char g, unsigned char b);
    +
    811pcl::PointXYZINormal RTABMAP_CORE_EXPORT laserScanToPointINormal(const LaserScan & laserScan, int index, float intensity);
    +
    812
    +
    834void RTABMAP_CORE_EXPORT getMinMax3D(const cv::Mat & laserScan, cv::Point3f & min, cv::Point3f & max);
    +
    835
    +
    849void RTABMAP_CORE_EXPORT getMinMax3D(const cv::Mat & laserScan, pcl::PointXYZ & min, pcl::PointXYZ & max);
    +
    850
    +
    873cv::Point3f RTABMAP_CORE_EXPORT projectDisparityTo3D(
    +
    874 const cv::Point2f & pt,
    +
    875 float disparity,
    +
    876 const StereoCameraModel & model);
    +
    877
    +
    896cv::Point3f RTABMAP_CORE_EXPORT projectDisparityTo3D(
    +
    897 const cv::Point2f & pt,
    +
    898 const cv::Mat & disparity,
    +
    899 const StereoCameraModel & model);
    +
    900
    +
    921cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera(
    +
    922 const cv::Size & imageSize,
    +
    923 const cv::Mat & cameraMatrixK,
    +
    924 const cv::Mat & laserScan,
    +
    925 const rtabmap::Transform & cameraTransform);
    +
    926
    +
    947cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera(
    +
    948 const cv::Size & imageSize,
    +
    949 const cv::Mat & cameraMatrixK,
    +
    950 const pcl::PointCloud<pcl::PointXYZ>::Ptr laserScan,
    +
    951 const rtabmap::Transform & cameraTransform);
    +
    952
    +
    973cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera(
    +
    974 const cv::Size & imageSize,
    +
    975 const cv::Mat & cameraMatrixK,
    +
    976 const pcl::PCLPointCloud2::Ptr laserScan,
    +
    977 const rtabmap::Transform & cameraTransform);
    +
    978
    +
    998void RTABMAP_CORE_EXPORT fillProjectedCloudHoles(
    +
    999 cv::Mat & depthRegistered,
    +
    1000 bool verticalDirection,
    +
    1001 bool fillToBorder);
    +
    1002
    +
    1031cv::Mat RTABMAP_CORE_EXPORT filterFloor(
    +
    1032 const cv::Mat & depth,
    +
    1033 const std::vector<CameraModel> & cameraModels,
    +
    1034 float threshold,
    +
    1035 cv::Mat * depthBelow = 0);
    +
    1036
    +
    1057std::vector<std::pair< std::pair<int, int>, pcl::PointXY> > RTABMAP_CORE_EXPORT projectCloudToCameras (
    +
    1058 const pcl::PointCloud<pcl::PointXYZRGBNormal> & cloud,
    +
    1059 const std::map<int, Transform> & cameraPoses,
    +
    1060 const std::map<int, std::vector<CameraModel> > & cameraModels,
    +
    1061 float maxDistance = 0.0f,
    +
    1062 float maxAngle = 0.0f,
    +
    1063 float maxDepthError = 0.0f,
    +
    1064 const std::vector<float> & roiRatios = std::vector<float>(),
    +
    1065 const cv::Mat & projMask = cv::Mat(),
    +
    1066 bool distanceToCamPolicy = false,
    +
    1067 const ProgressState * state = 0);
    +
    1088std::vector<std::pair< std::pair<int, int>, pcl::PointXY> > RTABMAP_CORE_EXPORT projectCloudToCameras (
    +
    1089 const pcl::PointCloud<pcl::PointXYZINormal> & cloud,
    +
    1090 const std::map<int, Transform> & cameraPoses,
    +
    1091 const std::map<int, std::vector<CameraModel> > & cameraModels,
    +
    1092 float maxDistance = 0.0f,
    +
    1093 float maxAngle = 0.0f,
    +
    1094 float maxDepthError = 0.0f,
    +
    1095 const std::vector<float> & roiRatios = std::vector<float>(),
    +
    1096 const cv::Mat & projMask = cv::Mat(),
    +
    1097 bool distanceToCamPolicy = false,
    +
    1098 const ProgressState * state = 0);
    +
    1099
    +
    1109bool RTABMAP_CORE_EXPORT isFinite(const cv::Point3f & pt);
    +
    1110
    +
    1120pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT concatenateClouds(
    +
    1121 const std::list<pcl::PointCloud<pcl::PointXYZ>::Ptr> & clouds);
    +
    1131pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT concatenateClouds(
    +
    1132 const std::list<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> & clouds);
    +
    1133
    +
    1148pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate(
    +
    1149 const std::vector<pcl::IndicesPtr> & indices);
    +
    1150
    +
    1165pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate(
    +
    1166 const pcl::IndicesPtr & indicesA,
    +
    1167 const pcl::IndicesPtr & indicesB);
    +
    1168
    +
    1180void RTABMAP_CORE_EXPORT savePCDWords(
    +
    1181 const std::string & fileName,
    +
    1182 const std::multimap<int, pcl::PointXYZ> & words,
    +
    1183 const Transform & transform = Transform::getIdentity());
    +
    1184
    +
    1196void RTABMAP_CORE_EXPORT savePCDWords(
    +
    1197 const std::string & fileName,
    +
    1198 const std::multimap<int, cv::Point3f> & words,
    +
    1199 const Transform & transform = Transform::getIdentity());
    +
    1200
    +
    1211cv::Mat RTABMAP_CORE_EXPORT loadBINScan(const std::string & fileName);
    +
    1220pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT loadBINCloud(const std::string & fileName);
    +
    1229RTABMAP_DEPRECATED pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT loadBINCloud(const std::string & fileName, int dim);
    +
    1230
    +
    1241LaserScan RTABMAP_CORE_EXPORT loadScan(const std::string & path);
    +
    1242
    +
    1256RTABMAP_DEPRECATED pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT loadCloud(
    +
    1257 const std::string & path,
    +
    1258 const Transform & transform = Transform::getIdentity(),
    +
    1259 int downsampleStep = 1,
    +
    1260 float voxelSize = 0.0f);
    +
    1261
    +
    1293LaserScan RTABMAP_CORE_EXPORT deskew(
    +
    1294 const LaserScan & input,
    +
    1295 double inputStamp,
    +
    1296 const rtabmap::Transform & velocity);
    +
    1297
    +
    1298} // namespace util3d
    +
    1299} // namespace rtabmap
    +
    1300
    +
    1301POINT_CLOUD_REGISTER_POINT_STRUCT(rtabmap::PointXYZIRT,
    +
    1302 (float, x, x)
    +
    1303 (float, y, y)
    +
    1304 (float, z, z)
    +
    1305 (float, intensity, intensity)
    +
    1306 (std::uint16_t, ring, ring)
    +
    1307 (float, time, time)
    +
    1308)
    +
    1309
    +
    1310#include "rtabmap/core/impl/util3d.hpp"
    +
    1311
    +
    1312#endif /* UTIL3D_H_ */
    +
    Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
    Definition CameraModel.h:53
    +
    Represents 2D or 3D laser scan data with support for multiple point data formats.
    Definition LaserScan.h:46
    + +
    Container class for all sensor data captured at a specific time.
    Definition SensorData.h:97
    +
    A class representing a calibrated stereo camera system.
    +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    static Transform getIdentity()
    Returns identity transform.
    +
    LaserScan RTABMAP_CORE_EXPORT laserScan2dFromPointCloud(const pcl::PointCloud< pcl::PointXYZ > &cloud, const Transform &transform=Transform(), bool filterNaNs=true)
    PointXYZ → LaserScan::kXY
    +
    LaserScan laserScanFromPointCloud(const PointCloud2T &cloud, bool filterNaNs, bool is2D, const Transform &transform)
    Convert pcl::PCLPointCloud2 to rtabmap::LaserScan with all supported fields (see rtabmap::LaserScan::...
    Definition util3d.hpp:37
    +
    pcl::PointXYZI RTABMAP_CORE_EXPORT laserScanToPointI(const LaserScan &laserScan, int index, float intensity)
    The point at index of the scan, as PointXYZI.
    +
    pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud2(const LaserScan &laserScan, const Transform &transform=Transform())
    Convert rtabmap::LaserScan to pcl::PCLPointCloud2 with all supported fields (see rtabmap::LaserScan::...
    +
    pcl::PointNormal RTABMAP_CORE_EXPORT laserScanToPointNormal(const LaserScan &laserScan, int index)
    The point at index of the scan, as PointNormal.
    +
    pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT laserScanToPointRGBNormal(const LaserScan &laserScan, int index, unsigned char r, unsigned char g, unsigned char b)
    The point at index of the scan, as PointXYZRGBNormal.
    +
    pcl::PointCloud< pcl::PointXYZI >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudI(const LaserScan &laserScan, const Transform &transform=Transform(), float intensity=0.0f)
    LaserScan → PointXYZI (x, y, z, intensity); intensity is used if the scan has none.
    +
    pcl::PointCloud< pcl::PointXYZRGBNormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGBNormal(const LaserScan &laserScan, const Transform &transform=Transform(), unsigned char r=100, unsigned char g=100, unsigned char b=100)
    LaserScan → PointXYZRGBNormal (x, y, z, rgb, nx, ny, nz); missing color and normals are filled as abo...
    +
    pcl::PointCloud< pcl::PointXYZINormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudINormal(const LaserScan &laserScan, const Transform &transform=Transform(), float intensity=0.0f)
    LaserScan → PointXYZINormal (x, y, z, intensity, nx, ny, nz); missing intensity and normals are fille...
    +
    pcl::PointXYZINormal RTABMAP_CORE_EXPORT laserScanToPointINormal(const LaserScan &laserScan, int index, float intensity)
    The point at index of the scan, as PointXYZINormal.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloud(const LaserScan &laserScan, const Transform &transform=Transform())
    LaserScan → PointXYZ (x, y, z); any other field of the scan is dropped.
    +
    pcl::PointXYZRGB RTABMAP_CORE_EXPORT laserScanToPointRGB(const LaserScan &laserScan, int index, unsigned char r=100, unsigned char g=100, unsigned char b=100)
    The point at index of the scan, as PointXYZRGB.
    +
    pcl::PointXYZ RTABMAP_CORE_EXPORT laserScanToPoint(const LaserScan &laserScan, int index)
    The point at index of the scan, as PointXYZ.
    +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudRGB(const LaserScan &laserScan, const Transform &transform=Transform(), unsigned char r=100, unsigned char g=100, unsigned char b=100)
    LaserScan → PointXYZRGB (x, y, z, rgb); r, g and b are used if the scan has no color.
    +
    pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT laserScanToPointCloudNormal(const LaserScan &laserScan, const Transform &transform=Transform())
    LaserScan → PointNormal (x, y, z, nx, ny, nz); normals are zeroed if the scan has none.
    +
    pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT laserScanFromDepthImages(const cv::Mat &depthImages, const std::vector< CameraModel > &cameraModels, float maxDepth, float minDepth)
    Converts multiple depth images (e.g., from a stereo or multi-camera setup) into a single laser scan (...
    +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDisparityRGB(const cv::Mat &imageRgb, const cv::Mat &imageDisparity, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
    Converts a disparity image and an RGB image to a 3D point cloud with color.
    +
    std::vector< pcl::PointCloud< pcl::PointXYZRGB >::Ptr > RTABMAP_CORE_EXPORT cloudsRGBFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
    Generates a point cloud with RGB color data from sensor data.
    +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudRGBFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
    Generates a point cloud of type pcl::PointXYZRGB from sensor data.
    +
    cv::Mat RTABMAP_CORE_EXPORT rgbFromCloud(const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, bool bgrOrder=true)
    Converts a PCL point cloud with RGBA information to an OpenCV RGB or BGR image.
    +
    pcl::PointCloud< pcl::PointXYZ > RTABMAP_CORE_EXPORT laserScanFromDepthImage(const cv::Mat &depthImage, float fx, float fy, float cx, float cy, float maxDepth=0, float minDepth=0, const Transform &localTransform=Transform::getIdentity())
    Converts the middle row of a depth image into a laser scan (point cloud) using camera intrinsics and ...
    +
    pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromStereoImages(const cv::Mat &imageLeft, const cv::Mat &imageRight, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &parameters=ParametersMap())
    Converts a pair of stereo images (left and right) into a 3D point cloud with RGB color information.
    +
    cv::Point3f RTABMAP_CORE_EXPORT projectDisparityTo3D(const cv::Point2f &pt, float disparity, const StereoCameraModel &model)
    Projects a 2D point from the left image and its disparity into 3D space.
    +
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDepth(const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
    Converts a depth image to a 3D point cloud.
    +
    pcl::PointXYZ RTABMAP_CORE_EXPORT projectDepthTo3D(const cv::Mat &depthImage, float x, float y, float cx, float cy, float fx, float fy, bool smoothing, float depthErrorRatio=0.02f)
    Projects a single depth pixel into 3D space.
    +
    void RTABMAP_CORE_EXPORT savePCDWords(const std::string &fileName, const std::multimap< int, pcl::PointXYZ > &words, const Transform &transform=Transform::getIdentity())
    Saves 3D word points to a PCD file, applying a transform to each point.
    +
    void RTABMAP_CORE_EXPORT rgbdFromCloud(const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, cv::Mat &rgb, cv::Mat &depth, bool bgrOrder=true, bool depth16U=true)
    Converts a PCL point cloud (with RGBA colors) into aligned RGB and depth OpenCV images.
    +
    cv::Mat RTABMAP_CORE_EXPORT loadBINScan(const std::string &fileName)
    Loads a KITTI-style Velodyne binary scan file into an OpenCV matrix.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT loadBINCloud(const std::string &fileName)
    Loads a KITTI-style Velodyne binary scan and converts it to a PCL point cloud.
    +
    Eigen::Vector3f RTABMAP_CORE_EXPORT projectDepthTo3DRay(const cv::Size &imageSize, float x, float y, float cx, float cy, float fx, float fy)
    Projects pixel coordinates to a normalized 3D ray in camera coordinates.
    +
    cv::Mat RTABMAP_CORE_EXPORT projectCloudToCamera(const cv::Size &imageSize, const cv::Mat &cameraMatrixK, const cv::Mat &laserScan, const rtabmap::Transform &cameraTransform)
    Register a point cloud (laser scan) to the camera's frame of reference and return a registered depth ...
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT concatenateClouds(const std::list< pcl::PointCloud< pcl::PointXYZ >::Ptr > &clouds)
    Concatenates a list of PointXYZ point clouds into a single point cloud.
    +
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT loadCloud(const std::string &path, const Transform &transform=Transform::getIdentity(), int downsampleStep=1, float voxelSize=0.0f)
    Loads and optionally transforms/downsamples/voxelizes a point cloud.
    +
    RTABMAP_DEPRECATED pcl::PointCloud< pcl::PointXYZRGB >::Ptr RTABMAP_CORE_EXPORT cloudFromDepthRGB(const cv::Mat &imageRgb, const cv::Mat &imageDepth, float cx, float cy, float fx, float fy, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
    Creates a point cloud from an RGB image and a depth image.
    +
    void RTABMAP_CORE_EXPORT fillProjectedCloudHoles(cv::Mat &depthRegistered, bool verticalDirection, bool fillToBorder)
    Fills holes (missing depth values) in a depth image by interpolating between non-zero values.
    +
    std::vector< std::pair< std::pair< int, int >, pcl::PointXY > > RTABMAP_CORE_EXPORT projectCloudToCameras(const pcl::PointCloud< pcl::PointXYZRGBNormal > &cloud, const std::map< int, Transform > &cameraPoses, const std::map< int, std::vector< CameraModel > > &cameraModels, float maxDistance=0.0f, float maxAngle=0.0f, float maxDepthError=0.0f, const std::vector< float > &roiRatios=std::vector< float >(), const cv::Mat &projMask=cv::Mat(), bool distanceToCamPolicy=false, const ProgressState *state=0)
    Projects a 3D point cloud to the best camera (NodeID -> CameraIndex) for each point based on a policy...
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
    Generates a point cloud from sensor data.
    +
    cv::Mat RTABMAP_CORE_EXPORT depthFromCloud(const pcl::PointCloud< pcl::PointXYZRGBA > &cloud, bool depth16U=true)
    Generates a depth image from a PCL organized point cloud.
    +
    bool RTABMAP_CORE_EXPORT isFinite(const cv::Point3f &pt)
    Checks if all coordinates of a 3D point are finite.
    +
    void RTABMAP_CORE_EXPORT getMinMax3D(const cv::Mat &laserScan, cv::Point3f &min, cv::Point3f &max)
    Computes the minimum and maximum 3D points from a laser scan matrix.
    +
    std::vector< pcl::PointCloud< pcl::PointXYZ >::Ptr > RTABMAP_CORE_EXPORT cloudsFromSensorData(const SensorData &sensorData, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< pcl::IndicesPtr > *validIndices=0, const ParametersMap &stereoParameters=ParametersMap(), const std::vector< float > &roiRatios=std::vector< float >(), unsigned char confidenceThr=0)
    Generates a set of point clouds from sensor data.
    +
    cv::Mat RTABMAP_CORE_EXPORT filterFloor(const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, float threshold, cv::Mat *depthBelow=0)
    Filters out points below a certain threshold in a depth image based on camera models.
    +
    LaserScan RTABMAP_CORE_EXPORT deskew(const LaserScan &input, double inputStamp, const rtabmap::Transform &velocity)
    Lidar deskewing.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT cloudFromDisparity(const cv::Mat &imageDisparity, const StereoCameraModel &model, int decimation=1, float maxDepth=0.0f, float minDepth=0.0f, std::vector< int > *validIndices=0)
    Converts a disparity image to a 3D point cloud.
    +
    LaserScan RTABMAP_CORE_EXPORT loadScan(const std::string &path)
    Loads a 3D scan from a file (.pcd, .ply, or .bin format).
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate(const std::vector< pcl::IndicesPtr > &indices)
    Concatenates multiple sets of indices into a single index vector.
    + +
    std::map< std::string, std::string > ParametersMap
    Parameter keys mapped to their values, as used by every configurable class (see Parameters).
    Definition Parameters.h:44
    +
    This namespace contains 3D point cloud processing utilities.
    Definition util3d.h:58
    +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d_8hpp_source.html b/preview/pr-1773/api/latest/util3d_8hpp_source.html new file mode 100644 index 00000000..fa6b2695 --- /dev/null +++ b/preview/pr-1773/api/latest/util3d_8hpp_source.html @@ -0,0 +1,553 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/impl/util3d.hpp Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d.hpp
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_HPP_
    +
    29#define UTIL3D_HPP_
    +
    30
    +
    31#include <rtabmap/core/util3d_transforms.h>
    +
    32
    +
    33namespace rtabmap{
    +
    +
    34namespace util3d{
    +
    35
    +
    36template<typename PointCloud2T>
    +
    +
    37LaserScan laserScanFromPointCloud(const PointCloud2T & cloud, bool filterNaNs, bool is2D, const Transform & transform)
    +
    38{
    +
    39 if(cloud.data.empty())
    +
    40 {
    +
    41 return LaserScan();
    +
    42 }
    +
    43 //determine the output type
    +
    44 int fieldStates[10] = {0}; // x,y,z,normal_x,normal_y,normal_z,rgb,intensity,time,ring
    +
    45#if PCL_VERSION_COMPARE(>=, 1, 10, 0)
    +
    46 std::uint32_t fieldOffsets[10] = {0};
    +
    47#else
    +
    48 pcl::uint32_t fieldOffsets[10] = {0};
    +
    49#endif
    +
    50 for(unsigned int i=0; i<cloud.fields.size(); ++i)
    +
    51 {
    +
    52 if(cloud.fields[i].name.compare("x") == 0)
    +
    53 {
    +
    54 fieldStates[0] = 1;
    +
    55 fieldOffsets[0] = cloud.fields[i].offset;
    +
    56 }
    +
    57 else if(cloud.fields[i].name.compare("y") == 0)
    +
    58 {
    +
    59 fieldStates[1] = 1;
    +
    60 fieldOffsets[1] = cloud.fields[i].offset;
    +
    61 }
    +
    62 else if(cloud.fields[i].name.compare("z") == 0 && !is2D)
    +
    63 {
    +
    64 fieldStates[2] = 1;
    +
    65 fieldOffsets[2] = cloud.fields[i].offset;
    +
    66 }
    +
    67 else if(cloud.fields[i].name.compare("normal_x") == 0)
    +
    68 {
    +
    69 fieldStates[3] = 1;
    +
    70 fieldOffsets[3] = cloud.fields[i].offset;
    +
    71 }
    +
    72 else if(cloud.fields[i].name.compare("normal_y") == 0)
    +
    73 {
    +
    74 fieldStates[4] = 1;
    +
    75 fieldOffsets[4] = cloud.fields[i].offset;
    +
    76 }
    +
    77 else if(cloud.fields[i].name.compare("normal_z") == 0)
    +
    78 {
    +
    79 fieldStates[5] = 1;
    +
    80 fieldOffsets[5] = cloud.fields[i].offset;
    +
    81 }
    +
    82 else if(cloud.fields[i].name.compare("rgb") == 0 || cloud.fields[i].name.compare("rgba") == 0)
    +
    83 {
    +
    84 fieldStates[6] = 1;
    +
    85 fieldOffsets[6] = cloud.fields[i].offset;
    +
    86 }
    +
    87 else if(cloud.fields[i].name.compare("intensity") == 0)
    +
    88 {
    +
    89 if(cloud.fields[i].datatype != pcl::PCLPointField::FLOAT32)
    +
    90 {
    +
    91 static bool warningShown = false;
    +
    92 if(!warningShown)
    +
    93 {
    +
    94 UWARN("The input scan cloud has an \"intensity\" field "
    +
    95 "but the datatype (%d) is not supported. Intensity will be ignored. "
    +
    96 "This message is only shown once.", cloud.fields[i].datatype);
    +
    97 warningShown = true;
    +
    98 }
    +
    99 continue;
    +
    100 }
    +
    101
    +
    102 fieldStates[7] = 1;
    +
    103 fieldOffsets[7] = cloud.fields[i].offset;
    +
    104 }
    +
    105 else if(cloud.fields[i].name.compare("time") == 0)
    +
    106 {
    +
    107 if(cloud.fields[i].datatype != pcl::PCLPointField::FLOAT32)
    +
    108 {
    +
    109 static bool warningShown = false;
    +
    110 if(!warningShown)
    +
    111 {
    +
    112 UWARN("The input scan cloud has an \"time\" field "
    +
    113 "but the datatype (%d) is not supported. Time will be ignored. "
    +
    114 "This message is only shown once.", cloud.fields[i].datatype);
    +
    115 warningShown = true;
    +
    116 }
    +
    117 continue;
    +
    118 }
    +
    119
    +
    120 fieldStates[8] = 1;
    +
    121 fieldOffsets[8] = cloud.fields[i].offset;
    +
    122 }
    +
    123 else if(cloud.fields[i].name.compare("ring") == 0)
    +
    124 {
    +
    125 if(cloud.fields[i].datatype != pcl::PCLPointField::UINT16)
    +
    126 {
    +
    127 static bool warningShown = false;
    +
    128 if(!warningShown)
    +
    129 {
    +
    130 UWARN("The input scan cloud has an \"ring\" field "
    +
    131 "but the datatype (%d) is not supported. Ring will be ignored. "
    +
    132 "This message is only shown once.", cloud.fields[i].datatype);
    +
    133 warningShown = true;
    +
    134 }
    +
    135 continue;
    +
    136 }
    +
    137
    +
    138 fieldStates[9] = 1;
    +
    139 fieldOffsets[9] = cloud.fields[i].offset;
    +
    140 }
    +
    141 else
    +
    142 {
    +
    143 UDEBUG("Ignoring \"%s\" field", cloud.fields[i].name.c_str());
    +
    144 }
    +
    145 }
    +
    146 if(fieldStates[0]==0 || fieldStates[1]==0)
    +
    147 {
    +
    148 //should have at least x and y set
    +
    149 UERROR("Cloud has not corresponding fields to laser scan!");
    +
    150 return LaserScan();
    +
    151 }
    +
    152
    +
    153 bool hasNormals = fieldStates[3] || fieldStates[4] || fieldStates[5];
    +
    154 bool hasIntensity = fieldStates[7];
    +
    155 bool hasRGB = !hasIntensity&&fieldStates[6];
    +
    156 bool hasTime = hasIntensity&&fieldStates[8];
    +
    157 bool hasRing = hasIntensity&&fieldStates[9];
    +
    158 bool is3D = fieldStates[0] && fieldStates[1] && fieldStates[2];
    +
    159
    +
    160 LaserScan::Format format;
    +
    161 int outputNormalOffset = 0;
    +
    162 if(is3D)
    +
    163 {
    +
    164 if(hasNormals && hasIntensity)
    +
    165 {
    +
    166 format = LaserScan::kXYZINormal;
    +
    167 outputNormalOffset = 4;
    +
    168 }
    +
    169 else if(hasNormals && !hasIntensity && !hasRGB)
    +
    170 {
    +
    171 format = LaserScan::kXYZNormal;
    +
    172 outputNormalOffset = 3;
    +
    173 }
    +
    174 else if(hasNormals && hasRGB)
    +
    175 {
    + +
    177 outputNormalOffset = 4;
    +
    178 }
    +
    179 else if(!hasNormals && hasIntensity)
    +
    180 {
    +
    181 if(hasTime && hasRing)
    +
    182 {
    +
    183 format = LaserScan::kXYZIRT;
    +
    184 }
    +
    185 else if(hasTime)
    +
    186 {
    +
    187 format = LaserScan::kXYZIT;
    +
    188 }
    +
    189 else
    +
    190 {
    +
    191 format = LaserScan::kXYZI;
    +
    192 }
    +
    193 }
    +
    194 else if(!hasNormals && hasRGB)
    +
    195 {
    +
    196 format = LaserScan::kXYZRGB;
    +
    197 }
    +
    198 else
    +
    199 {
    +
    200 format = LaserScan::kXYZ;
    +
    201 }
    +
    202 }
    +
    203 else
    +
    204 {
    +
    205 if(hasNormals && hasIntensity)
    +
    206 {
    +
    207 format = LaserScan::kXYINormal;
    +
    208 outputNormalOffset = 3;
    +
    209 }
    +
    210 else if(hasNormals && !hasIntensity)
    +
    211 {
    +
    212 format = LaserScan::kXYNormal;
    +
    213 outputNormalOffset = 2;
    +
    214 }
    +
    215 else if(!hasNormals && hasIntensity)
    +
    216 {
    +
    217 format = LaserScan::kXYI;
    +
    218 }
    +
    219 else
    +
    220 {
    +
    221 format = LaserScan::kXY;
    +
    222 }
    +
    223 }
    +
    224
    +
    225 UASSERT(cloud.data.size()/cloud.point_step == (uint32_t)cloud.height*cloud.width);
    +
    226 cv::Mat laserScan = cv::Mat(1, (int)cloud.data.size()/cloud.point_step, CV_32FC(LaserScan::channels(format)));
    +
    227
    +
    228 bool transformValid = !transform.isNull() && !transform.isIdentity();
    +
    229 Transform transformRot;
    +
    230 if(transformValid)
    +
    231 {
    +
    232 transformRot = transform.rotation();
    +
    233 }
    +
    234 int oi=0;
    +
    235 UASSERT(cloud.height == 1 || cloud.row_step != 0);
    +
    236 for (uint32_t row = 0; row < (uint32_t)cloud.height; ++row)
    +
    237 {
    +
    238 const uint8_t* row_data = &cloud.data[row * cloud.row_step];
    +
    239 for (uint32_t col = 0; col < (uint32_t)cloud.width; ++col)
    +
    240 {
    +
    241 const uint8_t* msg_data = row_data + col * cloud.point_step;
    +
    242
    +
    243 float * ptr = laserScan.ptr<float>(0, oi);
    +
    244
    +
    245 bool valid = true;
    +
    246 if(laserScan.channels() == 2)
    +
    247 {
    +
    248 ptr[0] = *(float*)(msg_data + fieldOffsets[0]);
    +
    249 ptr[1] = *(float*)(msg_data + fieldOffsets[1]);
    +
    250 valid = uIsFinite(ptr[0]) && uIsFinite(ptr[1]);
    +
    251 }
    +
    252 else if(laserScan.channels() == 3)
    +
    253 {
    +
    254 ptr[0] = *(float*)(msg_data + fieldOffsets[0]);
    +
    255 ptr[1] = *(float*)(msg_data + fieldOffsets[1]);
    +
    256 if(format == LaserScan::kXYI)
    +
    257 {
    +
    258 ptr[2] = *(float*)(msg_data + fieldOffsets[7]);
    +
    259 }
    +
    260 else // XYZ
    +
    261 {
    +
    262 ptr[2] = *(float*)(msg_data + fieldOffsets[2]);
    +
    263 valid = uIsFinite(ptr[0]) && uIsFinite(ptr[1]) && uIsFinite(ptr[2]);
    +
    264 }
    +
    265 }
    +
    266 else if(laserScan.channels() == 4)
    +
    267 {
    +
    268 ptr[0] = *(float*)(msg_data + fieldOffsets[0]);
    +
    269 ptr[1] = *(float*)(msg_data + fieldOffsets[1]);
    +
    270 ptr[2] = *(float*)(msg_data + fieldOffsets[2]);
    +
    271 if(format == LaserScan::kXYZI)
    +
    272 {
    +
    273 ptr[3] = *(float*)(msg_data + fieldOffsets[7]);
    +
    274 }
    +
    275 else // XYZRGB
    +
    276 {
    +
    277#if PCL_VERSION_COMPARE(>=, 1, 10, 0)
    +
    278 std::uint8_t b=*(msg_data + fieldOffsets[6]);
    +
    279 std::uint8_t g=*(msg_data + fieldOffsets[6]+1);
    +
    280 std::uint8_t r=*(msg_data + fieldOffsets[6]+2);
    +
    281#else
    +
    282 pcl::uint8_t b=*(msg_data + fieldOffsets[6]);
    +
    283 pcl::uint8_t g=*(msg_data + fieldOffsets[6]+1);
    +
    284 pcl::uint8_t r=*(msg_data + fieldOffsets[6]+2);
    +
    285#endif
    +
    286 int * ptrInt = (int*)ptr;
    +
    287 ptrInt[3] = int(b) | (int(g) << 8) | (int(r) << 16);
    +
    288 }
    +
    289 valid = uIsFinite(ptr[0]) && uIsFinite(ptr[1]) && uIsFinite(ptr[2]);
    +
    290 }
    +
    291 else if(laserScan.channels() == 5)
    +
    292 {
    +
    293 ptr[0] = *(float*)(msg_data + fieldOffsets[0]);
    +
    294 ptr[1] = *(float*)(msg_data + fieldOffsets[1]);
    +
    295 if(format == LaserScan::kXYZIT)
    +
    296 {
    +
    297 ptr[2] = *(float*)(msg_data + fieldOffsets[2]);
    +
    298 ptr[3] = *(float*)(msg_data + fieldOffsets[7]);
    +
    299 ptr[4] = *(float*)(msg_data + fieldOffsets[8]);
    +
    300 }
    +
    301 else // kXYNormal
    +
    302 {
    +
    303 ptr[2] = *(float*)(msg_data + fieldOffsets[3]);
    +
    304 ptr[3] = *(float*)(msg_data + fieldOffsets[4]);
    +
    305 ptr[4] = *(float*)(msg_data + fieldOffsets[5]);
    +
    306 }
    +
    307 valid = uIsFinite(ptr[0]) && uIsFinite(ptr[1]) && uIsFinite(ptr[2]) && uIsFinite(ptr[3]) && uIsFinite(ptr[4]);
    +
    308 }
    +
    309 else if(laserScan.channels() == 6)
    +
    310 {
    +
    311 ptr[0] = *(float*)(msg_data + fieldOffsets[0]);
    +
    312 ptr[1] = *(float*)(msg_data + fieldOffsets[1]);
    +
    313 if(format == LaserScan::kXYZIRT)
    +
    314 {
    +
    315 ptr[2] = *(float*)(msg_data + fieldOffsets[2]);
    +
    316 ptr[3] = *(float*)(msg_data + fieldOffsets[7]);
    +
    317 ptr[4] = float(*(unsigned short*)(msg_data + fieldOffsets[9])); // Convert 16U to float
    +
    318 ptr[5] = *(float*)(msg_data + fieldOffsets[8]);
    +
    319 }
    +
    320 else // with normal
    +
    321 {
    +
    322 if(format == LaserScan::kXYINormal)
    +
    323 {
    +
    324 ptr[2] = *(float*)(msg_data + fieldOffsets[7]);
    +
    325 }
    +
    326 else // XYZNormal
    +
    327 {
    +
    328 ptr[2] = *(float*)(msg_data + fieldOffsets[2]);
    +
    329 }
    +
    330 ptr[3] = *(float*)(msg_data + fieldOffsets[3]);
    +
    331 ptr[4] = *(float*)(msg_data + fieldOffsets[4]);
    +
    332 ptr[5] = *(float*)(msg_data + fieldOffsets[5]);
    +
    333 }
    +
    334 valid = uIsFinite(ptr[0]) && uIsFinite(ptr[1]) && uIsFinite(ptr[2]) && uIsFinite(ptr[3]) && uIsFinite(ptr[4]) && uIsFinite(ptr[5]);
    +
    335 }
    +
    336 else if(laserScan.channels() == 7)
    +
    337 {
    +
    338 ptr[0] = *(float*)(msg_data + fieldOffsets[0]);
    +
    339 ptr[1] = *(float*)(msg_data + fieldOffsets[1]);
    +
    340 ptr[2] = *(float*)(msg_data + fieldOffsets[2]);
    +
    341 if(format == LaserScan::kXYZINormal)
    +
    342 {
    +
    343 ptr[3] = *(float*)(msg_data + fieldOffsets[7]);
    +
    344 }
    +
    345 else // XYZRGBNormal
    +
    346 {
    +
    347#if PCL_VERSION_COMPARE(>=, 1, 10, 0)
    +
    348 std::uint8_t b=*(msg_data + fieldOffsets[6]);
    +
    349 std::uint8_t g=*(msg_data + fieldOffsets[6]+1);
    +
    350 std::uint8_t r=*(msg_data + fieldOffsets[6]+2);
    +
    351#else
    +
    352 pcl::uint8_t b=*(msg_data + fieldOffsets[6]);
    +
    353 pcl::uint8_t g=*(msg_data + fieldOffsets[6]+1);
    +
    354 pcl::uint8_t r=*(msg_data + fieldOffsets[6]+2);
    +
    355#endif
    +
    356 int * ptrInt = (int*)ptr;
    +
    357 ptrInt[3] = int(b) | (int(g) << 8) | (int(r) << 16);
    +
    358 }
    +
    359 ptr[4] = *(float*)(msg_data + fieldOffsets[3]);
    +
    360 ptr[5] = *(float*)(msg_data + fieldOffsets[4]);
    +
    361 ptr[6] = *(float*)(msg_data + fieldOffsets[5]);
    +
    362 valid = uIsFinite(ptr[0]) && uIsFinite(ptr[1]) && uIsFinite(ptr[2]) && uIsFinite(ptr[4]) && uIsFinite(ptr[5]) && uIsFinite(ptr[6]);
    +
    363 }
    +
    364 else
    +
    365 {
    +
    366 UFATAL("Cannot handle as many channels (%d)!", laserScan.channels());
    +
    367 }
    +
    368
    +
    369 if(!filterNaNs || valid)
    +
    370 {
    +
    371 if(valid && transformValid)
    +
    372 {
    +
    373 cv::Point3f pt = util3d::transformPoint(cv::Point3f(ptr[0], ptr[1], is3D?ptr[3]:0), transform);
    +
    374 ptr[0] = pt.x;
    +
    375 ptr[1] = pt.y;
    +
    376 if(is3D)
    +
    377 {
    +
    378 ptr[2] = pt.z;
    +
    379 }
    +
    380 if(hasNormals)
    +
    381 {
    +
    382 pt = util3d::transformPoint(cv::Point3f(ptr[outputNormalOffset], ptr[outputNormalOffset+1], ptr[outputNormalOffset+2]), transformRot);
    +
    383 ptr[outputNormalOffset] = pt.x;
    +
    384 ptr[outputNormalOffset+1] = pt.y;
    +
    385 ptr[outputNormalOffset+2] = pt.z;
    +
    386 }
    +
    387 }
    +
    388
    +
    389 ++oi;
    +
    390 }
    +
    391 }
    +
    392 }
    +
    393 if(oi == 0)
    +
    394 {
    +
    395 return LaserScan();
    +
    396 }
    +
    397 return LaserScan(laserScan(cv::Range::all(), cv::Range(0,oi)), 0, 0, format);
    +
    398}
    +
    +
    399
    +
    400}
    +
    +
    401}
    +
    402
    +
    403#endif /* UTIL3D_HPP_ */
    +
    #define UERROR(...)
    Definition ULogger.h:62
    +
    #define UDEBUG(...)
    Definition ULogger.h:59
    +
    #define UFATAL(...)
    Definition ULogger.h:63
    +
    #define UASSERT(condition)
    Definition ULogger.h:66
    +
    #define UWARN(...)
    Definition ULogger.h:61
    +
    bool uIsFinite(const T &value)
    Definition UMath.h:53
    +
    Represents 2D or 3D laser scan data with support for multiple point data formats.
    Definition LaserScan.h:46
    +
    Format
    Enumeration of possible formats for laser scan data.
    Definition LaserScan.h:55
    + + + + + + + + + + + + +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    bool isNull() const
    Checks whether the transform is null (all zeros).
    +
    bool isIdentity() const
    Checks whether the transform is identity.
    +
    Transform rotation() const
    Returns only the rotation component.
    +
    LaserScan laserScanFromPointCloud(const PointCloud2T &cloud, bool filterNaNs, bool is2D, const Transform &transform)
    Convert pcl::PCLPointCloud2 to rtabmap::LaserScan with all supported fields (see rtabmap::LaserScan::...
    Definition util3d.hpp:37
    +
    cv::Point3f RTABMAP_CORE_EXPORT transformPoint(const cv::Point3f &pt, const Transform &transform)
    Transforms cv::Point3f point type.
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__correspondences_8h_source.html b/preview/pr-1773/api/latest/util3d__correspondences_8h_source.html new file mode 100644 index 00000000..537afcbe --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__correspondences_8h_source.html @@ -0,0 +1,239 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_correspondences.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_correspondences.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_CORRESPONDENCES_H_
    +
    29#define UTIL3D_CORRESPONDENCES_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32
    +
    33#include <pcl/point_cloud.h>
    +
    34#include <pcl/point_types.h>
    +
    35#include <opencv2/core/version.hpp>
    +
    36#if CV_MAJOR_VERSION < 5
    +
    37#include <opencv2/features2d/features2d.hpp>
    +
    38#else
    +
    39#include <opencv2/features.hpp>
    +
    40#endif
    +
    41#include <set>
    +
    42#include <map>
    +
    43#include <list>
    +
    44
    +
    45namespace rtabmap
    +
    46{
    +
    47
    +
    48namespace util3d
    +
    49{
    +
    50
    +
    69void RTABMAP_CORE_EXPORT extractXYZCorrespondences(const std::multimap<int, pcl::PointXYZ> & words1,
    +
    70 const std::multimap<int, pcl::PointXYZ> & words2,
    +
    71 pcl::PointCloud<pcl::PointXYZ> & cloud1,
    +
    72 pcl::PointCloud<pcl::PointXYZ> & cloud2);
    +
    73
    +
    95void RTABMAP_CORE_EXPORT extractXYZCorrespondencesRANSAC(const std::multimap<int, pcl::PointXYZ> & words1,
    +
    96 const std::multimap<int, pcl::PointXYZ> & words2,
    +
    97 pcl::PointCloud<pcl::PointXYZ> & cloud1,
    +
    98 pcl::PointCloud<pcl::PointXYZ> & cloud2);
    +
    99
    +
    126void RTABMAP_CORE_EXPORT extractXYZCorrespondences(const std::list<std::pair<cv::Point2f, cv::Point2f> > & correspondences,
    +
    127 const cv::Mat & depthImage1,
    +
    128 const cv::Mat & depthImage2,
    +
    129 float cx, float cy,
    +
    130 float fx, float fy,
    +
    131 float maxDepth,
    +
    132 pcl::PointCloud<pcl::PointXYZ> & cloud1,
    +
    133 pcl::PointCloud<pcl::PointXYZ> & cloud2);
    +
    134
    +
    152void RTABMAP_CORE_EXPORT extractXYZCorrespondences(const std::list<std::pair<cv::Point2f, cv::Point2f> > & correspondences,
    +
    153 const pcl::PointCloud<pcl::PointXYZ> & cloud1,
    +
    154 const pcl::PointCloud<pcl::PointXYZ> & cloud2,
    +
    155 pcl::PointCloud<pcl::PointXYZ> & inliers1,
    +
    156 pcl::PointCloud<pcl::PointXYZ> & inliers2);
    +
    169void RTABMAP_CORE_EXPORT extractXYZCorrespondences(const std::list<std::pair<cv::Point2f, cv::Point2f> > & correspondences,
    +
    170 const pcl::PointCloud<pcl::PointXYZRGB> & cloud1,
    +
    171 const pcl::PointCloud<pcl::PointXYZRGB> & cloud2,
    +
    172 pcl::PointCloud<pcl::PointXYZ> & inliers1,
    +
    173 pcl::PointCloud<pcl::PointXYZ> & inliers2);
    +
    174
    +
    186int RTABMAP_CORE_EXPORT countUniquePairs(const std::multimap<int, pcl::PointXYZ> & wordsA,
    +
    187 const std::multimap<int, pcl::PointXYZ> & wordsB);
    +
    188
    +
    207void RTABMAP_CORE_EXPORT filterMaxDepth(pcl::PointCloud<pcl::PointXYZ> & inliers1,
    +
    208 pcl::PointCloud<pcl::PointXYZ> & inliers2,
    +
    209 float maxDepth,
    +
    210 char depthAxis,
    +
    211 bool removeDuplicates);
    +
    212
    +
    229void RTABMAP_CORE_EXPORT findCorrespondences(
    +
    230 const std::multimap<int, cv::KeyPoint> & wordsA,
    +
    231 const std::multimap<int, cv::KeyPoint> & wordsB,
    +
    232 std::list<std::pair<cv::Point2f, cv::Point2f> > & pairs);
    +
    233
    +
    250void RTABMAP_CORE_EXPORT findCorrespondences(
    +
    251 const std::multimap<int, cv::Point3f> & words1,
    +
    252 const std::multimap<int, cv::Point3f> & words2,
    +
    253 std::vector<cv::Point3f> & inliers1,
    +
    254 std::vector<cv::Point3f> & inliers2,
    +
    255 float maxDepth,
    +
    256 std::vector<int> * uniqueCorrespondences = 0);
    +
    257
    +
    273void RTABMAP_CORE_EXPORT findCorrespondences(
    +
    274 const std::map<int, cv::Point3f> & words1,
    +
    275 const std::map<int, cv::Point3f> & words2,
    +
    276 std::vector<cv::Point3f> & inliers1,
    +
    277 std::vector<cv::Point3f> & inliers2,
    +
    278 float maxDepth,
    +
    279 std::vector<int> * correspondences = 0);
    +
    280
    +
    281} // namespace util3d
    +
    282} // namespace rtabmap
    +
    283
    +
    284#endif /* UTIL3D_CORRESPONDENCES_H_ */
    +
    void RTABMAP_CORE_EXPORT findCorrespondences(const std::multimap< int, cv::KeyPoint > &wordsA, const std::multimap< int, cv::KeyPoint > &wordsB, std::list< std::pair< cv::Point2f, cv::Point2f > > &pairs)
    Finds 2D point correspondences between two sets of keypoints based on matching word IDs.
    +
    void RTABMAP_CORE_EXPORT extractXYZCorrespondences(const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)
    Extracts 3D point correspondences between two sets of labeled 3D points.
    +
    void RTABMAP_CORE_EXPORT filterMaxDepth(pcl::PointCloud< pcl::PointXYZ > &inliers1, pcl::PointCloud< pcl::PointXYZ > &inliers2, float maxDepth, char depthAxis, bool removeDuplicates)
    Filters pairs of 3D points by maximum depth along a specified axis and optionally removes duplicates.
    +
    void RTABMAP_CORE_EXPORT extractXYZCorrespondencesRANSAC(const std::multimap< int, pcl::PointXYZ > &words1, const std::multimap< int, pcl::PointXYZ > &words2, pcl::PointCloud< pcl::PointXYZ > &cloud1, pcl::PointCloud< pcl::PointXYZ > &cloud2)
    Extracts reliable 3D point correspondences between two sets of labeled 3D points using RANSAC filteri...
    +
    int RTABMAP_CORE_EXPORT countUniquePairs(const std::multimap< int, pcl::PointXYZ > &wordsA, const std::multimap< int, pcl::PointXYZ > &wordsB)
    Counts the number of unique 3D point correspondences between two sets of word-indexed features.
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__features_8h_source.html b/preview/pr-1773/api/latest/util3d__features_8h_source.html new file mode 100644 index 00000000..ab7c117c --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__features_8h_source.html @@ -0,0 +1,225 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_features.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_features.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_FEATURES_H_
    +
    29#define UTIL3D_FEATURES_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32
    +
    33#include <opencv2/core/version.hpp>
    +
    34#if CV_MAJOR_VERSION < 5
    +
    35#include <opencv2/calib3d/calib3d.hpp>
    +
    36#else
    +
    37#include <opencv2/calib.hpp>
    +
    38#endif
    +
    39#include <rtabmap/core/Transform.h>
    +
    40#include <rtabmap/core/CameraModel.h>
    +
    41#include <rtabmap/core/StereoCameraModel.h>
    +
    42#include <list>
    +
    43#include <map>
    +
    44
    +
    45namespace rtabmap
    +
    46{
    +
    47
    +
    48namespace util3d
    +
    49{
    +
    50
    +
    75std::vector<cv::Point3f> RTABMAP_CORE_EXPORT generateKeypoints3DDepth(
    +
    76 const std::vector<cv::KeyPoint> & keypoints,
    +
    77 const cv::Mat & depth,
    +
    78 const std::vector<CameraModel> & cameraModels,
    +
    79 float minDepth = 0,
    +
    80 float maxDepth = 0);
    +
    86std::vector<cv::Point3f> RTABMAP_CORE_EXPORT generateKeypoints3DDepth(
    +
    87 const std::vector<cv::KeyPoint> & keypoints,
    +
    88 const cv::Mat & depth,
    +
    89 const CameraModel & cameraModel,
    +
    90 float minDepth = 0,
    +
    91 float maxDepth = 0);
    +
    92
    +
    116std::vector<cv::Point3f> RTABMAP_CORE_EXPORT generateKeypoints3DDisparity(
    +
    117 const std::vector<cv::KeyPoint> & keypoints,
    +
    118 const cv::Mat & disparity,
    +
    119 const StereoCameraModel & stereoCameraModel,
    +
    120 float minDepth = 0,
    +
    121 float maxDepth = 0);
    +
    122
    +
    153std::vector<cv::Point3f> RTABMAP_CORE_EXPORT generateKeypoints3DStereo(
    +
    154 const std::vector<cv::Point2f> & leftCorners,
    +
    155 const std::vector<cv::Point2f> & rightCorners,
    +
    156 const StereoCameraModel & model,
    +
    157 const std::vector<unsigned char> & mask = std::vector<unsigned char>(),
    +
    158 float minDepth = 0,
    +
    159 float maxDepth = 0);
    +
    160
    +
    161std::map<int, cv::Point3f> RTABMAP_CORE_EXPORT generateWords3DMono(
    +
    162 const std::map<int, cv::KeyPoint> & kpts,
    +
    163 const std::map<int, cv::KeyPoint> & previousKpts,
    +
    164 const CameraModel & cameraModel,
    +
    165 Transform & cameraTransform,
    +
    166 float ransacReprojThreshold = 3.0f,
    +
    167 float ransacConfidence = 0.99f,
    +
    168 int varianceMedianRatio = 4,
    +
    169 const std::map<int, cv::Point3f> & refGuess3D = std::map<int, cv::Point3f>(),
    +
    170 double * variance = 0,
    +
    171 std::vector<int> * matchesOut = 0);
    +
    172
    +
    190std::multimap<int, cv::KeyPoint> RTABMAP_CORE_EXPORT aggregate(
    +
    191 const std::list<int> & wordIds,
    +
    192 const std::vector<cv::KeyPoint> & keypoints);
    +
    193
    +
    194} // namespace util3d
    +
    195} // namespace rtabmap
    +
    196
    +
    197#endif /* UTIL3D_FEATURES_H_ */
    +
    Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
    Definition CameraModel.h:53
    +
    A class representing a calibrated stereo camera system.
    +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT generateKeypoints3DDepth(const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &depth, const std::vector< CameraModel > &cameraModels, float minDepth=0, float maxDepth=0)
    Projects 2D keypoints to 3D space using the provided depth image and camera models.
    +
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT generateKeypoints3DStereo(const std::vector< cv::Point2f > &leftCorners, const std::vector< cv::Point2f > &rightCorners, const StereoCameraModel &model, const std::vector< unsigned char > &mask=std::vector< unsigned char >(), float minDepth=0, float maxDepth=0)
    Computes 3D keypoints from corresponding 2D points in a stereo image pair.
    +
    std::multimap< int, cv::KeyPoint > RTABMAP_CORE_EXPORT aggregate(const std::list< int > &wordIds, const std::vector< cv::KeyPoint > &keypoints)
    Aggregates word IDs and corresponding keypoints into a multimap.
    +
    std::vector< cv::Point3f > RTABMAP_CORE_EXPORT generateKeypoints3DDisparity(const std::vector< cv::KeyPoint > &keypoints, const cv::Mat &disparity, const StereoCameraModel &stereoCameraModel, float minDepth=0, float maxDepth=0)
    Projects 2D keypoints into 3D space using a disparity image and a stereo camera model.
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__filtering_8h_source.html b/preview/pr-1773/api/latest/util3d__filtering_8h_source.html new file mode 100644 index 00000000..6c3f1997 --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__filtering_8h_source.html @@ -0,0 +1,964 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_filtering.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_filtering.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_FILTERING_H_
    +
    29#define UTIL3D_FILTERING_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32#include <rtabmap/core/Transform.h>
    +
    33#include <pcl/point_cloud.h>
    +
    34#include <pcl/point_types.h>
    +
    35#include <pcl/pcl_base.h>
    +
    36#include <pcl/ModelCoefficients.h>
    +
    37#include <rtabmap/core/LaserScan.h>
    +
    38
    +
    39namespace rtabmap
    +
    40{
    +
    41
    +
    42namespace util3d
    +
    43{
    +
    44
    +
    79LaserScan RTABMAP_CORE_EXPORT commonFiltering(
    +
    80 const LaserScan & scan,
    +
    81 int downsamplingStep,
    +
    82 float rangeMin = 0.0f,
    +
    83 float rangeMax = 0.0f,
    +
    84 float voxelSize = 0.0f,
    +
    85 int normalK = 0,
    +
    86 float normalRadius = 0.0f,
    +
    87 float groundNormalsUp = 0.0f);
    +
    92RTABMAP_DEPRECATED LaserScan RTABMAP_CORE_EXPORT commonFiltering(
    +
    93 const LaserScan & scan,
    +
    94 int downsamplingStep,
    +
    95 float rangeMin,
    +
    96 float rangeMax,
    +
    97 float voxelSize,
    +
    98 int normalK,
    +
    99 float normalRadius,
    +
    100 bool forceGroundNormalsUp);
    +
    101
    +
    118LaserScan RTABMAP_CORE_EXPORT rangeFiltering(
    +
    119 const LaserScan & scan,
    +
    120 float rangeMin,
    +
    121 float rangeMax);
    +
    122
    +
    143pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
    +
    144 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    145 const pcl::IndicesPtr & indices,
    +
    146 float rangeMin,
    +
    147 float rangeMax);
    +
    149pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
    +
    150 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    151 const pcl::IndicesPtr & indices,
    +
    152 float rangeMin,
    +
    153 float rangeMax);
    +
    155pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
    +
    156 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    157 const pcl::IndicesPtr & indices,
    +
    158 float rangeMin,
    +
    159 float rangeMax);
    +
    161pcl::IndicesPtr RTABMAP_CORE_EXPORT rangeFiltering(
    +
    162 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    163 const pcl::IndicesPtr & indices,
    +
    164 float rangeMin,
    +
    165 float rangeMax);
    +
    188void RTABMAP_CORE_EXPORT rangeSplitFiltering(
    +
    189 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    190 const pcl::IndicesPtr & indices,
    +
    191 float range,
    +
    192 pcl::IndicesPtr & closeIndices,
    +
    193 pcl::IndicesPtr & farIndices);
    +
    195void RTABMAP_CORE_EXPORT rangeSplitFiltering(
    +
    196 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    197 const pcl::IndicesPtr & indices,
    +
    198 float range,
    +
    199 pcl::IndicesPtr & closeIndices,
    +
    200 pcl::IndicesPtr & farIndices);
    +
    202void RTABMAP_CORE_EXPORT rangeSplitFiltering(
    +
    203 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    204 const pcl::IndicesPtr & indices,
    +
    205 float range,
    +
    206 pcl::IndicesPtr & closeIndices,
    +
    207 pcl::IndicesPtr & farIndices);
    +
    209void RTABMAP_CORE_EXPORT rangeSplitFiltering(
    +
    210 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    211 const pcl::IndicesPtr & indices,
    +
    212 float range,
    +
    213 pcl::IndicesPtr & closeIndices,
    +
    214 pcl::IndicesPtr & farIndices);
    +
    239LaserScan RTABMAP_CORE_EXPORT downsample(
    +
    240 const LaserScan & cloud,
    +
    241 int step);
    +
    243pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT downsample(
    +
    244 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    245 int step);
    +
    247pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT downsample(
    +
    248 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    249 int step);
    +
    251pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT downsample(
    +
    252 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    253 int step);
    +
    255pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT downsample(
    +
    256 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    257 int step);
    +
    259pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT downsample(
    +
    260 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    261 int step);
    +
    263pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT downsample(
    +
    264 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    265 int step);
    +
    292pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    293 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    294 const pcl::IndicesPtr & indices,
    +
    295 float voxelSize);
    +
    297pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    298 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    299 const pcl::IndicesPtr & indices,
    +
    300 float voxelSize);
    +
    302pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    303 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    304 const pcl::IndicesPtr & indices,
    +
    305 float voxelSize);
    +
    307pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    308 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    309 const pcl::IndicesPtr & indices,
    +
    310 float voxelSize);
    +
    312pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    313 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    314 const pcl::IndicesPtr & indices,
    +
    315 float voxelSize);
    +
    317pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    318 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    319 const pcl::IndicesPtr & indices,
    +
    320 float voxelSize);
    +
    322pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    323 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    324 float voxelSize);
    +
    326pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    327 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    328 float voxelSize);
    +
    330pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    331 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    332 float voxelSize);
    +
    334pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    335 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    336 float voxelSize);
    +
    338pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    339 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    340 float voxelSize);
    +
    342pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT voxelize(
    +
    343 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    344 float voxelSize);
    +
    +
    359inline pcl::PointCloud<pcl::PointXYZ>::Ptr uniformSampling(
    +
    360 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    361 float voxelSize)
    +
    362{
    +
    363 return voxelize(cloud, voxelSize);
    +
    364}
    +
    +
    +
    377inline pcl::PointCloud<pcl::PointXYZRGB>::Ptr uniformSampling(
    +
    378 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    379 float voxelSize)
    +
    380{
    +
    381 return voxelize(cloud, voxelSize);
    +
    382}
    +
    +
    +
    395inline pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr uniformSampling(
    +
    396 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    397 float voxelSize)
    +
    398{
    +
    399 return voxelize(cloud, voxelSize);
    +
    400}
    +
    +
    401
    +
    402
    +
    419pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT randomSampling(
    +
    420 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    421 int samples);
    +
    423pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT randomSampling(
    +
    424 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    425 int samples);
    +
    427pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT randomSampling(
    +
    428 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    429 int samples);
    +
    431pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT randomSampling(
    +
    432 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    433 int samples);
    +
    435pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT randomSampling(
    +
    436 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    437 int samples);
    +
    439pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT randomSampling(
    +
    440 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    441 int samples);
    +
    468pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
    +
    469 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    470 const pcl::IndicesPtr & indices,
    +
    471 const std::string & axis,
    +
    472 float min,
    +
    473 float max,
    +
    474 bool negative = false);
    +
    476pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
    +
    477 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    478 const pcl::IndicesPtr & indices,
    +
    479 const std::string & axis,
    +
    480 float min,
    +
    481 float max,
    +
    482 bool negative = false);
    +
    484pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
    +
    485 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    486 const pcl::IndicesPtr & indices,
    +
    487 const std::string & axis,
    +
    488 float min,
    +
    489 float max,
    +
    490 bool negative = false);
    +
    492pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
    +
    493 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    494 const pcl::IndicesPtr & indices,
    +
    495 const std::string & axis,
    +
    496 float min,
    +
    497 float max,
    +
    498 bool negative = false);
    +
    500pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
    +
    501 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    502 const pcl::IndicesPtr & indices,
    +
    503 const std::string & axis,
    +
    504 float min,
    +
    505 float max,
    +
    506 bool negative = false);
    +
    508pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(
    +
    509 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    510 const pcl::IndicesPtr & indices,
    +
    511 const std::string & axis,
    +
    512 float min,
    +
    513 float max,
    +
    514 bool negative = false);
    +
    516pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT passThrough(
    +
    517 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    518 const std::string & axis,
    +
    519 float min,
    +
    520 float max,
    +
    521 bool negative = false);
    +
    523pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT passThrough(
    +
    524 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    525 const std::string & axis,
    +
    526 float min,
    +
    527 float max,
    +
    528 bool negative = false);
    +
    530pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT passThrough(
    +
    531 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    532 const std::string & axis,
    +
    533 float min,
    +
    534 float max,
    +
    535 bool negative = false);
    +
    537pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT passThrough(
    +
    538 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    539 const std::string & axis,
    +
    540 float min,
    +
    541 float max,
    +
    542 bool negative = false);
    +
    544pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT passThrough(
    +
    545 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    546 const std::string & axis,
    +
    547 float min,
    +
    548 float max,
    +
    549 bool negative = false);
    +
    551pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT passThrough(
    +
    552 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    553 const std::string & axis,
    +
    554 float min,
    +
    555 float max,
    +
    556 bool negative = false);
    +
    582pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
    +
    583 const pcl::PCLPointCloud2::Ptr & cloud,
    +
    584 const pcl::IndicesPtr & indices,
    +
    585 const Eigen::Vector4f & min,
    +
    586 const Eigen::Vector4f & max,
    +
    587 const Transform & transform = Transform::getIdentity(),
    +
    588 bool negative = false);
    +
    590pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
    +
    591 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    592 const pcl::IndicesPtr & indices,
    +
    593 const Eigen::Vector4f & min,
    +
    594 const Eigen::Vector4f & max,
    +
    595 const Transform & transform = Transform::getIdentity(),
    +
    596 bool negative = false);
    +
    598pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
    +
    599 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    600 const pcl::IndicesPtr & indices,
    +
    601 const Eigen::Vector4f & min,
    +
    602 const Eigen::Vector4f & max,
    +
    603 const Transform & transform = Transform::getIdentity(),
    +
    604 bool negative = false);
    +
    606pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
    +
    607 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    608 const pcl::IndicesPtr & indices,
    +
    609 const Eigen::Vector4f & min,
    +
    610 const Eigen::Vector4f & max,
    +
    611 const Transform & transform = Transform::getIdentity(),
    +
    612 bool negative = false);
    +
    614pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
    +
    615 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    616 const pcl::IndicesPtr & indices,
    +
    617 const Eigen::Vector4f & min,
    +
    618 const Eigen::Vector4f & max,
    +
    619 const Transform & transform = Transform::getIdentity(),
    +
    620 bool negative = false);
    +
    622pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
    +
    623 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    624 const pcl::IndicesPtr & indices,
    +
    625 const Eigen::Vector4f & min,
    +
    626 const Eigen::Vector4f & max,
    +
    627 const Transform & transform = Transform::getIdentity(),
    +
    628 bool negative = false);
    +
    630pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(
    +
    631 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    632 const pcl::IndicesPtr & indices,
    +
    633 const Eigen::Vector4f & min,
    +
    634 const Eigen::Vector4f & max,
    +
    635 const Transform & transform = Transform::getIdentity(),
    +
    636 bool negative = false);
    +
    638pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT cropBox(
    +
    639 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    640 const Eigen::Vector4f & min,
    +
    641 const Eigen::Vector4f & max,
    +
    642 const Transform & transform = Transform::getIdentity(),
    +
    643 bool negative = false);
    +
    645pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT cropBox(
    +
    646 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    647 const Eigen::Vector4f & min,
    +
    648 const Eigen::Vector4f & max,
    +
    649 const Transform & transform = Transform::getIdentity(),
    +
    650 bool negative = false);
    +
    652pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT cropBox(
    +
    653 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    654 const Eigen::Vector4f & min,
    +
    655 const Eigen::Vector4f & max,
    +
    656 const Transform & transform = Transform::getIdentity(),
    +
    657 bool negative = false);
    +
    659pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT cropBox(
    +
    660 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    661 const Eigen::Vector4f & min,
    +
    662 const Eigen::Vector4f & max,
    +
    663 const Transform & transform = Transform::getIdentity(),
    +
    664 bool negative = false);
    +
    666pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT cropBox(
    +
    667 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    668 const Eigen::Vector4f & min,
    +
    669 const Eigen::Vector4f & max,
    +
    670 const Transform & transform = Transform::getIdentity(),
    +
    671 bool negative = false);
    +
    673pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT cropBox(
    +
    674 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    675 const Eigen::Vector4f & min,
    +
    676 const Eigen::Vector4f & max,
    +
    677 const Transform & transform = Transform::getIdentity(),
    +
    678 bool negative = false);
    +
    713pcl::IndicesPtr RTABMAP_CORE_EXPORT frustumFiltering(
    +
    714 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    715 const pcl::IndicesPtr & indices,
    +
    716 const Transform & cameraPose,
    +
    717 float horizontalFOV,
    +
    718 float verticalFOV,
    +
    719 float nearClipPlaneDistance,
    +
    720 float farClipPlaneDistance,
    +
    721 bool negative = false);
    +
    723pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT frustumFiltering(
    +
    724 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    725 const Transform & cameraPose,
    +
    726 float horizontalFOV,
    +
    727 float verticalFOV,
    +
    728 float nearClipPlaneDistance,
    +
    729 float farClipPlaneDistance,
    +
    730 bool negative = false);
    +
    732pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT frustumFiltering(
    +
    733 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    734 const Transform & cameraPose,
    +
    735 float horizontalFOV,
    +
    736 float verticalFOV,
    +
    737 float nearClipPlaneDistance,
    +
    738 float farClipPlaneDistance,
    +
    739 bool negative = false);
    +
    759pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
    +
    760 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud);
    +
    762pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
    +
    763 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud);
    +
    765pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
    +
    766 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud);
    +
    768pcl::PCLPointCloud2::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(
    +
    769 const pcl::PCLPointCloud2::Ptr & cloud);
    +
    787pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(
    +
    788 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud);
    +
    790pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(
    +
    791 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud);
    +
    793pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(
    +
    794 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud);
    +
    821pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    822 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    823 float radiusSearch,
    +
    824 int minNeighborsInRadius);
    +
    826pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    827 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    828 float radiusSearch,
    +
    829 int minNeighborsInRadius);
    +
    831pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    832 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    833 float radiusSearch,
    +
    834 int minNeighborsInRadius);
    +
    836pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    837 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    838 float radiusSearch,
    +
    839 int minNeighborsInRadius);
    +
    841pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    842 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    843 float radiusSearch,
    +
    844 int minNeighborsInRadius);
    +
    846pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    847 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    848 float radiusSearch,
    +
    849 int minNeighborsInRadius);
    +
    851pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    852 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    853 const pcl::IndicesPtr & indices,
    +
    854 float radiusSearch,
    +
    855 int minNeighborsInRadius);
    +
    857pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    858 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    859 const pcl::IndicesPtr & indices,
    +
    860 float radiusSearch,
    +
    861 int minNeighborsInRadius);
    +
    863pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    864 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    865 const pcl::IndicesPtr & indices,
    +
    866 float radiusSearch,
    +
    867 int minNeighborsInRadius);
    +
    869pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    870 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    871 const pcl::IndicesPtr & indices,
    +
    872 float radiusSearch,
    +
    873 int minNeighborsInRadius);
    +
    875pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    876 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    877 const pcl::IndicesPtr & indices,
    +
    878 float radiusSearch,
    +
    879 int minNeighborsInRadius);
    +
    881pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(
    +
    882 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    883 const pcl::IndicesPtr & indices,
    +
    884 float radiusSearch,
    +
    885 int minNeighborsInRadius);
    +
    926pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    927 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    928 const std::vector<int> & viewpointIndices,
    +
    929 const std::map<int, Transform> & viewpoints,
    +
    930 float factor=0.01f,
    +
    931 float neighborScale=2.0f);
    +
    933pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    934 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    935 const std::vector<int> & viewpointIndices,
    +
    936 const std::map<int, Transform> & viewpoints,
    +
    937 float factor=0.01f,
    +
    938 float neighborScale=2.0f);
    +
    940pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    941 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    942 const std::vector<int> & viewpointIndices,
    +
    943 const std::map<int, Transform> & viewpoints,
    +
    944 float factor=0.01f,
    +
    945 float neighborScale=2.0f);
    +
    947pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    948 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    949 const std::vector<int> & viewpointIndices,
    +
    950 const std::map<int, Transform> & viewpoints,
    +
    951 float factor=0.01f,
    +
    952 float neighborScale=2.0f);
    +
    954pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    955 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    956 const std::vector<int> & viewpointIndices,
    +
    957 const std::map<int, Transform> & viewpoints,
    +
    958 float factor=0.01f,
    +
    959 float neighborScale=2.0f);
    +
    961pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    962 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    963 const std::vector<int> & viewpointIndices,
    +
    964 const std::map<int, Transform> & viewpoints,
    +
    965 float factor=0.01f,
    +
    966 float neighborScale=2.0f);
    +
    967
    +
    969pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    970 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    971 const pcl::IndicesPtr & indices,
    +
    972 const std::vector<int> & viewpointIndices,
    +
    973 const std::map<int, Transform> & viewpoints,
    +
    974 float factor=0.01f,
    +
    975 float neighborScale=2.0f);
    +
    977pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    978 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    979 const pcl::IndicesPtr & indices,
    +
    980 const std::vector<int> & viewpointIndices,
    +
    981 const std::map<int, Transform> & viewpoints,
    +
    982 float factor=0.01f,
    +
    983 float neighborScale=2.0f);
    +
    985pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    986 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    987 const pcl::IndicesPtr & indices,
    +
    988 const std::vector<int> & viewpointIndices,
    +
    989 const std::map<int, Transform> & viewpoints,
    +
    990 float factor=0.01f,
    +
    991 float neighborScale=2.0f);
    +
    993pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    994 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    995 const pcl::IndicesPtr & indices,
    +
    996 const std::vector<int> & viewpointIndices,
    +
    997 const std::map<int, Transform> & viewpoints,
    +
    998 float factor=0.01f,
    +
    999 float neighborScale=2.0f);
    +
    1001pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    1002 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    1003 const pcl::IndicesPtr & indices,
    +
    1004 const std::vector<int> & viewpointIndices,
    +
    1005 const std::map<int, Transform> & viewpoints,
    +
    1006 float factor=0.01f,
    +
    1007 float neighborScale=2.0f);
    +
    1009pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(
    +
    1010 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    1011 const pcl::IndicesPtr & indices,
    +
    1012 const std::vector<int> & viewpointIndices,
    +
    1013 const std::map<int, Transform> & viewpoints,
    +
    1014 float factor=0.01f,
    +
    1015 float neighborScale=2.0f);
    +
    1040pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1041 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1042 const pcl::IndicesPtr & indices,
    +
    1043 const pcl::PointCloud<pcl::PointXYZ>::Ptr & subtractCloud,
    +
    1044 const pcl::IndicesPtr & subtractIndices,
    +
    1045 float radiusSearch,
    +
    1046 int minNeighborsInRadius = 1);
    +
    1048pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1049 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1050 const pcl::IndicesPtr & indices,
    +
    1051 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & subtractCloud,
    +
    1052 const pcl::IndicesPtr & subtractIndices,
    +
    1053 float radiusSearch,
    +
    1054 int minNeighborsInRadius = 1);
    +
    1056pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1057 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    1058 const pcl::IndicesPtr & indices,
    +
    1059 const pcl::PointCloud<pcl::PointNormal>::Ptr & subtractCloud,
    +
    1060 const pcl::IndicesPtr & subtractIndices,
    +
    1061 float radiusSearch,
    +
    1062 float maxAngle = M_PI/4.0f,
    +
    1063 int minNeighborsInRadius = 1);
    +
    1065pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1066 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    1067 const pcl::IndicesPtr & indices,
    +
    1068 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & subtractCloud,
    +
    1069 const pcl::IndicesPtr & subtractIndices,
    +
    1070 float radiusSearch,
    +
    1071 float maxAngle = M_PI/4.0f,
    +
    1072 int minNeighborsInRadius = 1);
    +
    1074pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1075 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    1076 const pcl::IndicesPtr & indices,
    +
    1077 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & subtractCloud,
    +
    1078 const pcl::IndicesPtr & subtractIndices,
    +
    1079 float radiusSearch,
    +
    1080 float maxAngle = M_PI/4.0f,
    +
    1081 int minNeighborsInRadius = 1);
    +
    1083pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1084 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1085 const pcl::PointCloud<pcl::PointXYZ>::Ptr & subtractCloud,
    +
    1086 float radiusSearch,
    +
    1087 int minNeighborsInRadius = 1);
    +
    1089pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1090 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1091 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & subtractCloud,
    +
    1092 float radiusSearch,
    +
    1093 int minNeighborsInRadius = 1);
    +
    1095pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1096 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    1097 const pcl::PointCloud<pcl::PointNormal>::Ptr & subtractCloud,
    +
    1098 float radiusSearch,
    +
    1099 float maxAngle = M_PI/4.0f,
    +
    1100 int minNeighborsInRadius = 1);
    +
    1102pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1103 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    1104 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & subtractCloud,
    +
    1105 float radiusSearch,
    +
    1106 float maxAngle = M_PI/4.0f,
    +
    1107 int minNeighborsInRadius = 1);
    +
    1109pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT subtractFiltering(
    +
    1110 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    1111 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & subtractCloud,
    +
    1112 float radiusSearch,
    +
    1113 float maxAngle = M_PI/4.0f,
    +
    1114 int minNeighborsInRadius = 1);
    +
    1138pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering(
    +
    1139 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1140 const pcl::IndicesPtr & indices,
    +
    1141 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & subtractCloud,
    +
    1142 const pcl::IndicesPtr & subtractIndices,
    +
    1143 float radiusSearchRatio = 0.01,
    +
    1144 int minNeighborsInRadius = 1,
    +
    1145 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0));
    +
    1146
    +
    1174pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering(
    +
    1175 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    1176 const pcl::IndicesPtr & indices,
    +
    1177 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & subtractCloud,
    +
    1178 const pcl::IndicesPtr & subtractIndices,
    +
    1179 float radiusSearchRatio = 0.01,
    +
    1180 float maxAngle = M_PI/4.0f,
    +
    1181 int minNeighborsInRadius = 1,
    +
    1182 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0));
    +
    1183
    +
    1184
    +
    1215pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1216 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1217 float angleMax,
    +
    1218 const Eigen::Vector4f & normal,
    +
    1219 int normalKSearch,
    +
    1220 const Eigen::Vector4f & viewpoint,
    +
    1221 float groundNormalsUp = 0.0f);
    +
    1223pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1224 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1225 float angleMax,
    +
    1226 const Eigen::Vector4f & normal,
    +
    1227 int normalKSearch,
    +
    1228 const Eigen::Vector4f & viewpoint,
    +
    1229 float groundNormalsUp = 0.0f);
    +
    1231pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1232 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1233 const pcl::IndicesPtr & indices,
    +
    1234 float angleMax,
    +
    1235 const Eigen::Vector4f & normal,
    +
    1236 int normalKSearch,
    +
    1237 const Eigen::Vector4f & viewpoint,
    +
    1238 float groundNormalsUp = 0.0f);
    +
    1240pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1241 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1242 const pcl::IndicesPtr & indices,
    +
    1243 float angleMax,
    +
    1244 const Eigen::Vector4f & normal,
    +
    1245 int normalKSearch,
    +
    1246 const Eigen::Vector4f & viewpoint,
    +
    1247 float groundNormalsUp = 0.0f);
    +
    1249pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1250 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    1251 const pcl::IndicesPtr & indices,
    +
    1252 float angleMax,
    +
    1253 const Eigen::Vector4f & normal,
    +
    1254 int normalKSearch,
    +
    1255 const Eigen::Vector4f & viewpoint,
    +
    1256 float groundNormalsUp = 0.0f);
    +
    1258pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1259 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    1260 const pcl::IndicesPtr & indices,
    +
    1261 float angleMax,
    +
    1262 const Eigen::Vector4f & normal,
    +
    1263 int normalKSearch,
    +
    1264 const Eigen::Vector4f & viewpoint,
    +
    1265 float groundNormalsUp = 0.0f);
    +
    1267pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1268 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    1269 const pcl::IndicesPtr & indices,
    +
    1270 float angleMax,
    +
    1271 const Eigen::Vector4f & normal,
    +
    1272 int normalKSearch,
    +
    1273 const Eigen::Vector4f & viewpoint,
    +
    1274 float groundNormalsUp = 0.0f);
    +
    1276pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(
    +
    1277 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    1278 const pcl::IndicesPtr & indices,
    +
    1279 float angleMax,
    +
    1280 const Eigen::Vector4f & normal,
    +
    1281 int normalKSearch,
    +
    1282 const Eigen::Vector4f & viewpoint,
    +
    1283 float groundNormalsUp = 0.0f);
    +
    1311std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1312 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1313 float clusterTolerance,
    +
    1314 int minClusterSize,
    +
    1315 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1316 int * biggestClusterIndex = 0);
    +
    1318std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1319 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1320 float clusterTolerance,
    +
    1321 int minClusterSize,
    +
    1322 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1323 int * biggestClusterIndex = 0);
    +
    1325std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1326 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1327 const pcl::IndicesPtr & indices,
    +
    1328 float clusterTolerance,
    +
    1329 int minClusterSize,
    +
    1330 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1331 int * biggestClusterIndex = 0);
    +
    1333std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1334 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    1335 const pcl::IndicesPtr & indices,
    +
    1336 float clusterTolerance,
    +
    1337 int minClusterSize,
    +
    1338 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1339 int * biggestClusterIndex = 0);
    +
    1341std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1342 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1343 const pcl::IndicesPtr & indices,
    +
    1344 float clusterTolerance,
    +
    1345 int minClusterSize,
    +
    1346 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1347 int * biggestClusterIndex = 0);
    +
    1349std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1350 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    1351 const pcl::IndicesPtr & indices,
    +
    1352 float clusterTolerance,
    +
    1353 int minClusterSize,
    +
    1354 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1355 int * biggestClusterIndex = 0);
    +
    1357std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1358 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    1359 const pcl::IndicesPtr & indices,
    +
    1360 float clusterTolerance,
    +
    1361 int minClusterSize,
    +
    1362 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1363 int * biggestClusterIndex = 0);
    +
    1365std::vector<pcl::IndicesPtr> RTABMAP_CORE_EXPORT extractClusters(
    +
    1366 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    1367 const pcl::IndicesPtr & indices,
    +
    1368 float clusterTolerance,
    +
    1369 int minClusterSize,
    +
    1370 int maxClusterSize = std::numeric_limits<int>::max(),
    +
    1371 int * biggestClusterIndex = 0);
    +
    1398pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
    +
    1399 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1400 const pcl::IndicesPtr & indices,
    +
    1401 bool negative);
    +
    1403pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
    +
    1404 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    1405 const pcl::IndicesPtr & indices,
    +
    1406 bool negative);
    +
    1408pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
    +
    1409 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1410 const pcl::IndicesPtr & indices,
    +
    1411 bool negative);
    +
    1413pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
    +
    1414 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    1415 const pcl::IndicesPtr & indices,
    +
    1416 bool negative);
    +
    1418pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
    +
    1419 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    1420 const pcl::IndicesPtr & indices,
    +
    1421 bool negative);
    +
    1423pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(
    +
    1424 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    1425 const pcl::IndicesPtr & indices,
    +
    1426 bool negative);
    +
    1428pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT extractIndices(
    +
    1429 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1430 const pcl::IndicesPtr & indices,
    +
    1431 bool negative,
    +
    1432 bool keepOrganized);
    +
    1434pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT extractIndices(
    +
    1435 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    1436 const pcl::IndicesPtr & indices,
    +
    1437 bool negative,
    +
    1438 bool keepOrganized);
    +
    1440pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT extractIndices(
    +
    1441 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    1442 const pcl::IndicesPtr & indices,
    +
    1443 bool negative,
    +
    1444 bool keepOrganized);
    +
    1446pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT extractIndices(
    +
    1447 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    1448 const pcl::IndicesPtr & indices,
    +
    1449 bool negative,
    +
    1450 bool keepOrganized);
    +
    1452pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT extractIndices(
    +
    1453 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    1454 const pcl::IndicesPtr & indices,
    +
    1455 bool negative,
    +
    1456 bool keepOrganized);
    +
    1479pcl::IndicesPtr RTABMAP_CORE_EXPORT extractPlane(
    +
    1480 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1481 const pcl::IndicesPtr & indices,
    +
    1482 float distanceThreshold,
    +
    1483 int maxIterations = 100,
    +
    1484 pcl::ModelCoefficients * coefficientsOut = 0);
    +
    1485pcl::IndicesPtr RTABMAP_CORE_EXPORT extractPlane(
    +
    1486 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    1487 float distanceThreshold,
    +
    1488 int maxIterations = 100,
    +
    1489 pcl::ModelCoefficients * coefficientsOut = 0);
    +
    1490
    +
    1491} // namespace util3d
    +
    1492} // namespace rtabmap
    +
    1493
    +
    1494#endif /* UTIL3D_FILTERING_H_ */
    +
    Represents 2D or 3D laser scan data with support for multiple point data formats.
    Definition LaserScan.h:46
    +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    static Transform getIdentity()
    Returns identity transform.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT cropBox(const pcl::PCLPointCloud2::Ptr &cloud, const pcl::IndicesPtr &indices, const Eigen::Vector4f &min, const Eigen::Vector4f &max, const Transform &transform=Transform::getIdentity(), bool negative=false)
    Performs crop box filtering on a point cloud of type pcl::PCLPointCloud2 and returns filtered indices...
    +
    std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
    Extract clusters from point cloud of type pcl::PointXYZ.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
    Extract indices from point cloud of type pcl::PointXYZ.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT frustumFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const Transform &cameraPose, float horizontalFOV, float verticalFOV, float nearClipPlaneDistance, float farClipPlaneDistance, bool negative=false)
    Performs frustum filtering on a point cloud of type pcl::PointXYZ and returns filtered indices.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
    Performs pass-through filtering on a point cloud of type pcl::PointXYZ and returns filtered indices.
    +
    LaserScan RTABMAP_CORE_EXPORT downsample(const LaserScan &cloud, int step)
    Downsamples a LaserScan.
    +
    void RTABMAP_CORE_EXPORT rangeSplitFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float range, pcl::IndicesPtr &closeIndices, pcl::IndicesPtr &farIndices)
    Splits a point cloud of type pcl::PointXYZ.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
    Point normal filtering for point cloud of type pcl::PointXYZ.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT proportionalRadiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const std::vector< int > &viewpointIndices, const std::map< int, Transform > &viewpoints, float factor=0.01f, float neighborScale=2.0f)
    Proportional radius filtering for point cloud of type pcl::PointXYZ.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT radiusFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float radiusSearch, int minNeighborsInRadius)
    Radius filtering for point cloud of type pcl::PointXYZ.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT randomSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, int samples)
    Performs random sampling on a point cloud of type pcl::PointXYZ.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT removeNaNFromPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud)
    Remove NaN points from a point cloud of type pcl::PointXYZ.
    +
    pcl::PointCloud< pcl::PointNormal >::Ptr RTABMAP_CORE_EXPORT removeNaNNormalsFromPointCloud(const pcl::PointCloud< pcl::PointNormal >::Ptr &cloud)
    Removes points with NaN normal values from a point cloud of type pcl::PointNormal.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZ >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearch, int minNeighborsInRadius=1)
    Subtract filtering for point cloud of type pcl::PointXYZ, returning filtered indices.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
    Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT subtractAdaptiveFiltering(const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &cloud, const pcl::IndicesPtr &indices, const pcl::PointCloud< pcl::PointXYZRGB >::Ptr &subtractCloud, const pcl::IndicesPtr &subtractIndices, float radiusSearchRatio=0.01, int minNeighborsInRadius=1, const Eigen::Vector3f &viewpoint=Eigen::Vector3f(0, 0, 0))
    Performs adaptive radius-based subtraction filtering on a point cloud.
    +
    LaserScan RTABMAP_CORE_EXPORT commonFiltering(const LaserScan &scan, int downsamplingStep, float rangeMin=0.0f, float rangeMax=0.0f, float voxelSize=0.0f, int normalK=0, float normalRadius=0.0f, float groundNormalsUp=0.0f)
    Applies a common set of filters to a LaserScan, including downsampling, range limits,...
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr uniformSampling(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float voxelSize)
    DEPRECATED: Use voxelize() instead.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT extractPlane(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float distanceThreshold, int maxIterations=100, pcl::ModelCoefficients *coefficientsOut=0)
    Extracts the indices of the inliers that belong to a plane using RANSAC.
    +
    LaserScan RTABMAP_CORE_EXPORT rangeFiltering(const LaserScan &scan, float rangeMin, float rangeMax)
    Filters a LaserScan data on a minimum and maximum Euclidean range.
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__mapping_8h_source.html b/preview/pr-1773/api/latest/util3d__mapping_8h_source.html new file mode 100644 index 00000000..cf2d3d2f --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__mapping_8h_source.html @@ -0,0 +1,333 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_mapping.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_mapping.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_MAPPING_H_
    +
    29#define UTIL3D_MAPPING_H_
    +
    30
    +
    31#include "rtabmap/core/rtabmap_core_export.h"
    +
    32
    +
    33#include <opencv2/core/core.hpp>
    +
    34#include <map>
    +
    35#include <rtabmap/core/Transform.h>
    +
    36#include <pcl/pcl_base.h>
    +
    37#include <pcl/point_cloud.h>
    +
    38#include <pcl/point_types.h>
    +
    39
    +
    40namespace rtabmap
    +
    41{
    +
    42
    +
    43namespace util3d
    +
    44{
    +
    45
    +
    47RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT occupancy2DFromLaserScan(
    +
    48 const cv::Mat & scan, // in /base_link frame
    +
    49 cv::Mat & empty,
    +
    50 cv::Mat & occupied,
    +
    51 float cellSize,
    +
    52 bool unknownSpaceFilled = false,
    +
    53 float scanMaxRange = 0.0f);
    +
    54
    +
    56RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT occupancy2DFromLaserScan(
    +
    57 const cv::Mat & scan, // in /base_link frame
    +
    58 const cv::Point3f & viewpoint, // /base_link -> /base_scan
    +
    59 cv::Mat & empty,
    +
    60 cv::Mat & occupied,
    +
    61 float cellSize,
    +
    62 bool unknownSpaceFilled = false,
    +
    63 float scanMaxRange = 0.0f);
    +
    64
    +
    92void RTABMAP_CORE_EXPORT occupancy2DFromLaserScan(
    +
    93 const cv::Mat & scanHit, // in /base_link frame
    +
    94 const cv::Mat & scanNoHit, // in /base_link frame
    +
    95 const cv::Point3f & viewpoint, // /base_link -> /base_scan
    +
    96 cv::Mat & empty,
    +
    97 cv::Mat & occupied,
    +
    98 float cellSize,
    +
    99 bool unknownSpaceFilled = false,
    +
    100 float scanMaxRange = 0.0f); // would be set if unknownSpaceFilled=true
    +
    101
    +
    138cv::Mat RTABMAP_CORE_EXPORT create2DMapFromOccupancyLocalMaps(
    +
    139 const std::map<int, Transform> & poses,
    +
    140 const std::map<int, std::pair<cv::Mat, cv::Mat> > & occupancy,
    +
    141 float cellSize,
    +
    142 float & xMin,
    +
    143 float & yMin,
    +
    144 float minMapSize = 0.0f,
    +
    145 bool erode = false,
    +
    146 float footprintRadius = 0.0f);
    +
    147
    +
    149RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT create2DMap(const std::map<int, Transform> & poses,
    +
    150 const std::map<int, pcl::PointCloud<pcl::PointXYZ>::Ptr > & scans, // in /base_link frame
    +
    151 float cellSize,
    +
    152 bool unknownSpaceFilled,
    +
    153 float & xMin,
    +
    154 float & yMin,
    +
    155 float minMapSize = 0.0f,
    +
    156 float scanMaxRange = 0.0f);
    +
    157
    +
    159RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT create2DMap(const std::map<int, Transform> & poses,
    +
    160 const std::map<int, pcl::PointCloud<pcl::PointXYZ>::Ptr > & scans, // in /base_link frame
    +
    161 const std::map<int, cv::Point3f > & viewpoints, // /base_link -> /base_scan
    +
    162 float cellSize,
    +
    163 bool unknownSpaceFilled,
    +
    164 float & xMin,
    +
    165 float & yMin,
    +
    166 float minMapSize = 0.0f,
    +
    167 float scanMaxRange = 0.0f);
    +
    168
    +
    204cv::Mat RTABMAP_CORE_EXPORT create2DMap(const std::map<int, Transform> & poses,
    +
    205 const std::map<int, std::pair<cv::Mat, cv::Mat> > & scans, // <id, <hit, no hit> >, in /base_link frame
    +
    206 const std::map<int, cv::Point3f > & viewpoints, // /base_link -> /base_scan
    +
    207 float cellSize,
    +
    208 bool unknownSpaceFilled,
    +
    209 float & xMin,
    +
    210 float & yMin,
    +
    211 float minMapSize = 0.0f,
    +
    212 float scanMaxRange = 0.0f);
    +
    213
    +
    235void RTABMAP_CORE_EXPORT rayTrace(const cv::Point2i & start,
    +
    236 const cv::Point2i & end,
    +
    237 cv::Mat & grid,
    +
    238 bool stopOnObstacle);
    +
    239
    +
    263cv::Mat RTABMAP_CORE_EXPORT convertMap2Image8U(const cv::Mat & map8S, bool pgmFormat = false);
    +
    264
    +
    293cv::Mat RTABMAP_CORE_EXPORT convertImage8U2Map(const cv::Mat & map8U, bool pgmFormat = false);
    +
    294
    +
    312cv::Mat RTABMAP_CORE_EXPORT erodeMap(const cv::Mat & map);
    +
    313
    +
    314// templated methods
    +
    315
    +
    327template<typename PointT>
    +
    328typename pcl::PointCloud<PointT>::Ptr projectCloudOnXYPlane(
    +
    329 const typename pcl::PointCloud<PointT> & cloud);
    +
    330
    +
    331
    +
    362template<typename PointT>
    +
    363void segmentObstaclesFromGround(
    +
    364 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    365 const pcl::IndicesPtr & indices,
    +
    366 pcl::IndicesPtr & ground,
    +
    367 pcl::IndicesPtr & obstacles,
    +
    368 int normalKSearch,
    +
    369 float groundNormalAngle,
    +
    370 float clusterRadius,
    +
    371 int minClusterSize,
    +
    372 bool segmentFlatObstacles = false,
    +
    373 float maxGroundHeight = 0.0f,
    +
    374 pcl::IndicesPtr * flatObstacles = 0,
    +
    375 const Eigen::Vector4f & viewPoint = Eigen::Vector4f(0,0,100,0),
    +
    376 float groundNormalsUp = 0);
    +
    381template<typename PointT>
    +
    382void segmentObstaclesFromGround(
    +
    383 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    384 pcl::IndicesPtr & ground,
    +
    385 pcl::IndicesPtr & obstacles,
    +
    386 int normalKSearch,
    +
    387 float groundNormalAngle,
    +
    388 float clusterRadius,
    +
    389 int minClusterSize,
    +
    390 bool segmentFlatObstacles = false,
    +
    391 float maxGroundHeight = 0.0f,
    +
    392 pcl::IndicesPtr * flatObstacles = 0,
    +
    393 const Eigen::Vector4f & viewPoint = Eigen::Vector4f(0,0,100,0),
    +
    394 float groundNormalsUp = 0);
    +
    395
    +
    412template<typename PointT>
    + +
    414 const typename pcl::PointCloud<PointT>::Ptr & groundCloud,
    +
    415 const typename pcl::PointCloud<PointT>::Ptr & obstaclesCloud,
    +
    416 cv::Mat & ground,
    +
    417 cv::Mat & obstacles,
    +
    418 float cellSize);
    +
    423template<typename PointT>
    + +
    425 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    426 const pcl::IndicesPtr & groundIndices,
    +
    427 const pcl::IndicesPtr & obstaclesIndices,
    +
    428 cv::Mat & ground,
    +
    429 cv::Mat & obstacles,
    +
    430 float cellSize);
    +
    431
    +
    458template<typename PointT>
    + +
    460 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    461 const pcl::IndicesPtr & indices,
    +
    462 cv::Mat & ground,
    +
    463 cv::Mat & obstacles,
    +
    464 float cellSize = 0.05f,
    +
    465 float groundNormalAngle = M_PI_4,
    +
    466 int minClusterSize = 20,
    +
    467 bool segmentFlatObstacles = false,
    +
    468 float maxGroundHeight = 0.0f);
    +
    473template<typename PointT>
    + +
    475 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    476 cv::Mat & ground,
    +
    477 cv::Mat & obstacles,
    +
    478 float cellSize = 0.05f,
    +
    479 float groundNormalAngle = M_PI_4,
    +
    480 int minClusterSize = 20,
    +
    481 bool segmentFlatObstacles = false,
    +
    482 float maxGroundHeight = 0.0f);
    +
    483
    +
    484} // namespace util3d
    +
    485} // namespace rtabmap
    +
    486
    +
    487#include "rtabmap/core/impl/util3d_mapping.hpp"
    +
    488
    +
    489#endif /* UTIL3D_MAPPING_H_ */
    +
    void RTABMAP_CORE_EXPORT rayTrace(const cv::Point2i &start, const cv::Point2i &end, cv::Mat &grid, bool stopOnObstacle)
    Performs a 2D ray tracing operation between two points on a grid map.
    +
    pcl::PointCloud< PointT >::Ptr projectCloudOnXYPlane(const typename pcl::PointCloud< PointT > &cloud)
    Projects a point cloud onto the XY plane by setting all Z coordinates to zero.
    +
    RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT occupancy2DFromLaserScan(const cv::Mat &scan, cv::Mat &empty, cv::Mat &occupied, float cellSize, bool unknownSpaceFilled=false, float scanMaxRange=0.0f)
    +
    void occupancy2DFromCloud3D(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, cv::Mat &ground, cv::Mat &obstacles, float cellSize, float groundNormalAngle, int minClusterSize, bool segmentFlatObstacles, float maxGroundHeight)
    Generates 2D ground and obstacle occupancy data from a 3D point cloud.
    +
    cv::Mat RTABMAP_CORE_EXPORT create2DMapFromOccupancyLocalMaps(const std::map< int, Transform > &poses, const std::map< int, std::pair< cv::Mat, cv::Mat > > &occupancy, float cellSize, float &xMin, float &yMin, float minMapSize=0.0f, bool erode=false, float footprintRadius=0.0f)
    Creates a 2D occupancy grid map from local occupancy data.
    +
    cv::Mat RTABMAP_CORE_EXPORT erodeMap(const cv::Mat &map)
    Performs erosion on an occupancy grid map to reduce small noisy obstacles.
    +
    void occupancy2DFromGroundObstacles(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &groundIndices, const pcl::IndicesPtr &obstaclesIndices, cv::Mat &ground, cv::Mat &obstacles, float cellSize)
    Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupanc...
    +
    cv::Mat RTABMAP_CORE_EXPORT convertImage8U2Map(const cv::Mat &map8U, bool pgmFormat=false)
    Converts a grayscale occupancy image (CV_8U) to an occupancy grid map (CV_8S).
    +
    cv::Mat RTABMAP_CORE_EXPORT convertMap2Image8U(const cv::Mat &map8S, bool pgmFormat=false)
    Converts an occupancy grid map (CV_8S) to a grayscale image (CV_8U).
    +
    RTABMAP_DEPRECATED cv::Mat RTABMAP_CORE_EXPORT create2DMap(const std::map< int, Transform > &poses, const std::map< int, pcl::PointCloud< pcl::PointXYZ >::Ptr > &scans, float cellSize, bool unknownSpaceFilled, float &xMin, float &yMin, float minMapSize=0.0f, float scanMaxRange=0.0f)
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__mapping_8hpp_source.html b/preview/pr-1773/api/latest/util3d__mapping_8hpp_source.html new file mode 100644 index 00000000..6b264cd6 --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__mapping_8hpp_source.html @@ -0,0 +1,506 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/impl/util3d_mapping.hpp Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_mapping.hpp
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_MAPPING_HPP_
    +
    29#define UTIL3D_MAPPING_HPP_
    +
    30
    +
    31#include <rtabmap/core/util3d_filtering.h>
    +
    32#include <rtabmap/core/util3d.h>
    +
    33#include <pcl/common/common.h>
    +
    34#include <pcl/common/centroid.h>
    +
    35#include <pcl/common/io.h>
    +
    36
    +
    37namespace rtabmap{
    +
    38namespace util3d{
    +
    39
    +
    40template<typename PointT>
    +
    +
    41typename pcl::PointCloud<PointT>::Ptr projectCloudOnXYPlane(
    +
    42 const typename pcl::PointCloud<PointT> & cloud)
    +
    43{
    +
    44 typename pcl::PointCloud<PointT>::Ptr output(new pcl::PointCloud<PointT>);
    +
    45 *output = cloud;
    +
    46 for(unsigned int i=0; i<output->size(); ++i)
    +
    47 {
    +
    48 output->at(i).z = 0;
    +
    49 }
    +
    50 return output;
    +
    51}
    +
    +
    52
    +
    53template<typename PointT>
    +
    54void segmentObstaclesFromGround(
    +
    55 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    56 const typename pcl::IndicesPtr & indices,
    +
    57 pcl::IndicesPtr & ground,
    +
    58 pcl::IndicesPtr & obstacles,
    +
    59 int normalKSearch,
    +
    60 float groundNormalAngle,
    +
    61 float clusterRadius,
    +
    62 int minClusterSize,
    +
    63 bool segmentFlatObstacles,
    +
    64 float maxGroundHeight,
    +
    65 pcl::IndicesPtr * flatObstacles,
    +
    66 const Eigen::Vector4f & viewPoint,
    +
    67 float groundNormalsUp)
    +
    68{
    +
    69 ground.reset(new std::vector<int>);
    +
    70 obstacles.reset(new std::vector<int>);
    +
    71 if(flatObstacles)
    +
    72 {
    +
    73 flatObstacles->reset(new std::vector<int>);
    +
    74 }
    +
    75
    +
    76 if(cloud->size())
    +
    77 {
    +
    78 // Find the ground
    +
    79 pcl::IndicesPtr flatSurfaces = normalFiltering(
    +
    80 cloud,
    +
    81 indices,
    +
    82 groundNormalAngle,
    +
    83 Eigen::Vector4f(0,0,1,0),
    +
    84 normalKSearch,
    +
    85 viewPoint,
    +
    86 groundNormalsUp);
    +
    87
    +
    88 if(flatSurfaces->size() &&
    +
    89 (segmentFlatObstacles || maxGroundHeight != 0.0f || minClusterSize>1))
    +
    90 {
    +
    91 int biggestFlatSurfaceIndex;
    +
    92 std::vector<pcl::IndicesPtr> clusteredFlatSurfaces = extractClusters(
    +
    93 cloud,
    +
    94 flatSurfaces,
    +
    95 clusterRadius,
    +
    96 minClusterSize,
    +
    97 std::numeric_limits<int>::max(),
    +
    98 &biggestFlatSurfaceIndex);
    +
    99
    +
    100 // cluster all surfaces for which the centroid is in the Z-range of the bigger surface
    +
    101 if(clusteredFlatSurfaces.size())
    +
    102 {
    +
    103 Eigen::Vector4f biggestSurfaceMin,biggestSurfaceMax;
    +
    104 if(maxGroundHeight != 0.0f)
    +
    105 {
    +
    106 // Search for biggest surface under max ground height
    +
    107 size_t points = 0;
    +
    108 biggestFlatSurfaceIndex = -1;
    +
    109 for(size_t i=0;i<clusteredFlatSurfaces.size();++i)
    +
    110 {
    +
    111 Eigen::Vector4f min,max;
    +
    112 pcl::getMinMax3D(*cloud, *clusteredFlatSurfaces.at(i), min, max);
    +
    113 if(min[2]<maxGroundHeight && clusteredFlatSurfaces.at(i)->size() > points)
    +
    114 {
    +
    115 points = clusteredFlatSurfaces.at(i)->size();
    +
    116 biggestFlatSurfaceIndex = i;
    +
    117 biggestSurfaceMin = min;
    +
    118 biggestSurfaceMax = max;
    +
    119 }
    +
    120 }
    +
    121 }
    +
    122 else
    +
    123 {
    +
    124 pcl::getMinMax3D(*cloud, *clusteredFlatSurfaces.at(biggestFlatSurfaceIndex), biggestSurfaceMin, biggestSurfaceMax);
    +
    125 }
    +
    126 if(biggestFlatSurfaceIndex>=0)
    +
    127 {
    +
    128 ground = clusteredFlatSurfaces.at(biggestFlatSurfaceIndex);
    +
    129 }
    +
    130
    +
    131 if(!ground->empty() && (maxGroundHeight == 0.0f || biggestSurfaceMin[2] < maxGroundHeight))
    +
    132 {
    +
    133 for(unsigned int i=0; i<clusteredFlatSurfaces.size(); ++i)
    +
    134 {
    +
    135 if((int)i!=biggestFlatSurfaceIndex)
    +
    136 {
    +
    137 Eigen::Vector4f centroid(0,0,0,1);
    +
    138 pcl::compute3DCentroid(*cloud, *clusteredFlatSurfaces.at(i), centroid);
    +
    139 if((maxGroundHeight!=0.0f && centroid[2] <= maxGroundHeight) ||
    +
    140 centroid[2] <= biggestSurfaceMax[2] ||
    +
    141 (maxGroundHeight==0.0f && !segmentFlatObstacles))
    +
    142 {
    +
    143 ground = util3d::concatenate(ground, clusteredFlatSurfaces.at(i));
    +
    144 }
    +
    145 else if(flatObstacles)
    +
    146 {
    +
    147 *flatObstacles = util3d::concatenate(*flatObstacles, clusteredFlatSurfaces.at(i));
    +
    148 }
    +
    149 }
    +
    150 }
    +
    151 }
    +
    152 else
    +
    153 {
    +
    154 // reject ground!
    +
    155 ground.reset(new std::vector<int>);
    +
    156 if(flatObstacles)
    +
    157 {
    +
    158 *flatObstacles = flatSurfaces;
    +
    159 }
    +
    160 }
    +
    161 }
    +
    162 }
    +
    163 else
    +
    164 {
    +
    165 ground = flatSurfaces;
    +
    166 }
    +
    167
    +
    168 if(ground->size() != cloud->size())
    +
    169 {
    +
    170 // Remove ground
    +
    171 pcl::IndicesPtr notObstacles = ground;
    +
    172 if(indices->size())
    +
    173 {
    +
    174 notObstacles = util3d::extractIndices(cloud, indices, true);
    +
    175 notObstacles = util3d::concatenate(notObstacles, ground);
    +
    176 }
    +
    177 pcl::IndicesPtr otherStuffIndices = util3d::extractIndices(cloud, notObstacles, true);
    +
    178
    +
    179 // If ground height is set, remove obstacles under it
    +
    180 if(maxGroundHeight != 0.0f)
    +
    181 {
    +
    182 otherStuffIndices = rtabmap::util3d::passThrough(cloud, otherStuffIndices, "z", maxGroundHeight, std::numeric_limits<float>::max());
    +
    183 }
    +
    184
    +
    185 //Cluster remaining stuff (obstacles)
    +
    186 if(otherStuffIndices->size())
    +
    187 {
    +
    188 std::vector<pcl::IndicesPtr> clusteredObstaclesSurfaces = util3d::extractClusters(
    +
    189 cloud,
    +
    190 otherStuffIndices,
    +
    191 clusterRadius,
    +
    192 minClusterSize);
    +
    193
    +
    194 // merge indices
    +
    195 obstacles = util3d::concatenate(clusteredObstaclesSurfaces);
    +
    196 }
    +
    197 }
    +
    198 }
    +
    199}
    +
    200
    +
    201template<typename PointT>
    +
    +
    202void segmentObstaclesFromGround(
    +
    203 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    204 pcl::IndicesPtr & ground,
    +
    205 pcl::IndicesPtr & obstacles,
    +
    206 int normalKSearch,
    +
    207 float groundNormalAngle,
    +
    208 float clusterRadius,
    +
    209 int minClusterSize,
    +
    210 bool segmentFlatObstacles,
    +
    211 float maxGroundHeight,
    +
    212 pcl::IndicesPtr * flatObstacles,
    +
    213 const Eigen::Vector4f & viewPoint,
    +
    214 float groundNormalsUp)
    +
    215{
    +
    216 pcl::IndicesPtr indices(new std::vector<int>);
    +
    217 segmentObstaclesFromGround<PointT>(
    +
    218 cloud,
    +
    219 indices,
    +
    220 ground,
    +
    221 obstacles,
    +
    222 normalKSearch,
    +
    223 groundNormalAngle,
    +
    224 clusterRadius,
    +
    225 minClusterSize,
    +
    226 segmentFlatObstacles,
    +
    227 maxGroundHeight,
    +
    228 flatObstacles,
    +
    229 viewPoint,
    +
    230 groundNormalsUp);
    +
    231}
    +
    +
    232
    +
    233template<typename PointT>
    +
    + +
    235 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    236 const pcl::IndicesPtr & groundIndices,
    +
    237 const pcl::IndicesPtr & obstaclesIndices,
    +
    238 cv::Mat & ground,
    +
    239 cv::Mat & obstacles,
    +
    240 float cellSize)
    +
    241{
    +
    242 typename pcl::PointCloud<PointT>::Ptr groundCloud(new pcl::PointCloud<PointT>);
    +
    243 typename pcl::PointCloud<PointT>::Ptr obstaclesCloud(new pcl::PointCloud<PointT>);
    +
    244
    +
    245 if(groundIndices->size())
    +
    246 {
    +
    247 pcl::copyPointCloud(*cloud, *groundIndices, *groundCloud);
    +
    248 }
    +
    249
    +
    250 if(obstaclesIndices->size())
    +
    251 {
    +
    252 pcl::copyPointCloud(*cloud, *obstaclesIndices, *obstaclesCloud);
    +
    253 }
    +
    254
    +
    255 occupancy2DFromGroundObstacles<PointT>(
    +
    256 groundCloud,
    +
    257 obstaclesCloud,
    +
    258 ground,
    +
    259 obstacles,
    +
    260 cellSize);
    +
    261}
    +
    +
    262
    +
    263template<typename PointT>
    +
    + +
    265 const typename pcl::PointCloud<PointT>::Ptr & groundCloud,
    +
    266 const typename pcl::PointCloud<PointT>::Ptr & obstaclesCloud,
    +
    267 cv::Mat & ground,
    +
    268 cv::Mat & obstacles,
    +
    269 float cellSize)
    +
    270{
    +
    271 ground = cv::Mat();
    +
    272 if(groundCloud->size())
    +
    273 {
    +
    274 //project on XY plane
    +
    275 typename pcl::PointCloud<PointT>::Ptr groundCloudProjected;
    +
    276 groundCloudProjected = util3d::projectCloudOnXYPlane(*groundCloud);
    +
    277 //voxelize to grid cell size
    +
    278 groundCloudProjected = util3d::voxelize(groundCloudProjected, cellSize);
    +
    279
    +
    280 ground = cv::Mat(1, (int)groundCloudProjected->size(), CV_32FC2);
    +
    281 for(unsigned int i=0;i<groundCloudProjected->size(); ++i)
    +
    282 {
    +
    283 cv::Vec2f * ptr = ground.ptr<cv::Vec2f>();
    +
    284 ptr[i][0] = groundCloudProjected->at(i).x;
    +
    285 ptr[i][1] = groundCloudProjected->at(i).y;
    +
    286 }
    +
    287 }
    +
    288
    +
    289 obstacles = cv::Mat();
    +
    290 if(obstaclesCloud->size())
    +
    291 {
    +
    292 //project on XY plane
    +
    293 typename pcl::PointCloud<PointT>::Ptr obstaclesCloudProjected;
    +
    294 obstaclesCloudProjected = util3d::projectCloudOnXYPlane(*obstaclesCloud);
    +
    295 //voxelize to grid cell size
    +
    296 obstaclesCloudProjected = util3d::voxelize(obstaclesCloudProjected, cellSize);
    +
    297
    +
    298 obstacles = cv::Mat(1, (int)obstaclesCloudProjected->size(), CV_32FC2);
    +
    299 for(unsigned int i=0;i<obstaclesCloudProjected->size(); ++i)
    +
    300 {
    +
    301 cv::Vec2f * ptr = obstacles.ptr<cv::Vec2f>();
    +
    302 ptr[i][0] = obstaclesCloudProjected->at(i).x;
    +
    303 ptr[i][1] = obstaclesCloudProjected->at(i).y;
    +
    304 }
    +
    305 }
    +
    306}
    +
    +
    307
    +
    308template<typename PointT>
    +
    + +
    310 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    311 const pcl::IndicesPtr & indices,
    +
    312 cv::Mat & ground,
    +
    313 cv::Mat & obstacles,
    +
    314 float cellSize,
    +
    315 float groundNormalAngle,
    +
    316 int minClusterSize,
    +
    317 bool segmentFlatObstacles,
    +
    318 float maxGroundHeight)
    +
    319{
    +
    320 if(cloud->size() == 0)
    +
    321 {
    +
    322 return;
    +
    323 }
    +
    324 pcl::IndicesPtr groundIndices, obstaclesIndices;
    +
    325
    +
    326 segmentObstaclesFromGround<PointT>(
    +
    327 cloud,
    +
    328 indices,
    +
    329 groundIndices,
    +
    330 obstaclesIndices,
    +
    331 20,
    +
    332 groundNormalAngle,
    +
    333 cellSize*2.0f,
    +
    334 minClusterSize,
    +
    335 segmentFlatObstacles,
    +
    336 maxGroundHeight);
    +
    337
    +
    338 occupancy2DFromGroundObstacles<PointT>(
    +
    339 cloud,
    +
    340 groundIndices,
    +
    341 obstaclesIndices,
    +
    342 ground,
    +
    343 obstacles,
    +
    344 cellSize);
    +
    345}
    +
    +
    346
    +
    347template<typename PointT>
    +
    + +
    349 const typename pcl::PointCloud<PointT>::Ptr & cloud,
    +
    350 cv::Mat & ground,
    +
    351 cv::Mat & obstacles,
    +
    352 float cellSize,
    +
    353 float groundNormalAngle,
    +
    354 int minClusterSize,
    +
    355 bool segmentFlatObstacles,
    +
    356 float maxGroundHeight)
    +
    357{
    +
    358 pcl::IndicesPtr indices(new std::vector<int>);
    +
    359 occupancy2DFromCloud3D<PointT>(cloud, indices, ground, obstacles, cellSize, groundNormalAngle, minClusterSize, segmentFlatObstacles, maxGroundHeight);
    +
    360}
    +
    +
    361
    +
    362}
    +
    363}
    +
    364
    +
    365#endif /* UTIL3D_MAPPING_HPP_ */
    +
    std::vector< pcl::IndicesPtr > RTABMAP_CORE_EXPORT extractClusters(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float clusterTolerance, int minClusterSize, int maxClusterSize=std::numeric_limits< int >::max(), int *biggestClusterIndex=0)
    Extract clusters from point cloud of type pcl::PointXYZ.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT extractIndices(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, bool negative)
    Extract indices from point cloud of type pcl::PointXYZ.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT passThrough(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, const std::string &axis, float min, float max, bool negative=false)
    Performs pass-through filtering on a point cloud of type pcl::PointXYZ and returns filtered indices.
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT normalFiltering(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, float angleMax, const Eigen::Vector4f &normal, int normalKSearch, const Eigen::Vector4f &viewpoint, float groundNormalsUp=0.0f)
    Point normal filtering for point cloud of type pcl::PointXYZ.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT voxelize(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const pcl::IndicesPtr &indices, float voxelSize)
    Performs voxel grid downsampling on a point cloud of type pcl::PointXYZ on provided indices.
    +
    pcl::PointCloud< PointT >::Ptr projectCloudOnXYPlane(const typename pcl::PointCloud< PointT > &cloud)
    Projects a point cloud onto the XY plane by setting all Z coordinates to zero.
    +
    void occupancy2DFromCloud3D(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &indices, cv::Mat &ground, cv::Mat &obstacles, float cellSize, float groundNormalAngle, int minClusterSize, bool segmentFlatObstacles, float maxGroundHeight)
    Generates 2D ground and obstacle occupancy data from a 3D point cloud.
    +
    void occupancy2DFromGroundObstacles(const typename pcl::PointCloud< PointT >::Ptr &cloud, const pcl::IndicesPtr &groundIndices, const pcl::IndicesPtr &obstaclesIndices, cv::Mat &ground, cv::Mat &obstacles, float cellSize)
    Projects 3D ground and obstacle point clouds onto the 2D XY plane and voxelizes them into 2D occupanc...
    +
    pcl::IndicesPtr RTABMAP_CORE_EXPORT concatenate(const std::vector< pcl::IndicesPtr > &indices)
    Concatenates multiple sets of indices into a single index vector.
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__motion__estimation_8h_source.html b/preview/pr-1773/api/latest/util3d__motion__estimation_8h_source.html new file mode 100644 index 00000000..8cdadbe7 --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__motion__estimation_8h_source.html @@ -0,0 +1,259 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_motion_estimation.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_motion_estimation.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_MOTION_ESTIMATION_H_
    +
    29#define UTIL3D_MOTION_ESTIMATION_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32
    +
    33#include <rtabmap/core/Transform.h>
    +
    34#include <rtabmap/core/CameraModel.h>
    +
    35
    +
    36namespace rtabmap
    +
    37{
    +
    38
    +
    39namespace util3d
    +
    40{
    +
    41
    +
    65void RTABMAP_CORE_EXPORT setRansacDeterministicSeed(bool enable);
    +
    66
    +
    68bool RTABMAP_CORE_EXPORT ransacDeterministicSeedEnabled();
    +
    69
    +
    105Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D(
    +
    106 const std::map<int, cv::Point3f> & words3A,
    +
    107 const std::map<int, cv::KeyPoint> & words2B,
    +
    108 const CameraModel & cameraModel,
    +
    109 int minInliers = 10,
    +
    110 int iterations = 100,
    +
    111 double reprojError = 5.,
    +
    112 int flagsPnP = 0,
    +
    113 int pnpRefineIterations = 1,
    +
    114 int varianceMedianRatio = 4,
    +
    115 float maxVariance = 0,
    +
    116 const Transform & guess = Transform::getIdentity(),
    +
    117 const std::map<int, cv::Point3f> & words3B = std::map<int, cv::Point3f>(),
    +
    118 cv::Mat * covariance = 0, // mean reproj error if words3B is not set
    +
    119 std::vector<int> * matchesOut = 0,
    +
    120 std::vector<int> * inliersOut = 0,
    +
    121 bool splitLinearCovarianceComponents = false);
    +
    122
    +
    157Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D(
    +
    158 const std::map<int, cv::Point3f> & words3A,
    +
    159 const std::map<int, cv::KeyPoint> & words2B,
    +
    160 const std::vector<CameraModel> & cameraModels,
    +
    161 unsigned int samplingPolicy,
    +
    162 int minInliers,
    +
    163 int iterations,
    +
    164 double reprojError,
    +
    165 int flagsPnP,
    +
    166 int refineIterations,
    +
    167 int varianceMedianRatio,
    +
    168 float maxVariance,
    +
    169 const Transform & guess,
    +
    170 const std::map<int, cv::Point3f> & words3B,
    +
    171 cv::Mat * covariance,
    +
    172 std::vector<std::vector<int> > * matchesOut,
    +
    173 std::vector<std::vector<int> > * inliersOut,
    +
    174 bool splitLinearCovarianceComponents);
    +
    179Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D(
    +
    180 const std::map<int, cv::Point3f> & words3A,
    +
    181 const std::map<int, cv::KeyPoint> & words2B,
    +
    182 const std::vector<CameraModel> & cameraModels,
    +
    183 unsigned int samplingPolicy = 0, // 0=AUTO, 1=ANY, 2=HOMOGENEOUS
    +
    184 int minInliers = 10,
    +
    185 int iterations = 100,
    +
    186 double reprojError = 5.,
    +
    187 int flagsPnP = 0,
    +
    188 int pnpRefineIterations = 1,
    +
    189 int varianceMedianRatio = 4,
    +
    190 float maxVariance = 0,
    +
    191 const Transform & guess = Transform::getIdentity(),
    +
    192 const std::map<int, cv::Point3f> & words3B = std::map<int, cv::Point3f>(),
    +
    193 cv::Mat * covariance = 0, // mean reproj error if words3B is not set
    +
    194 std::vector<int> * matchesOut = 0,
    +
    195 std::vector<int> * inliersOut = 0,
    +
    196 bool splitLinearCovarianceComponents = false);
    +
    197
    +
    219Transform RTABMAP_CORE_EXPORT estimateMotion3DTo3D(
    +
    220 const std::map<int, cv::Point3f> & words3A,
    +
    221 const std::map<int, cv::Point3f> & words3B,
    +
    222 int minInliers = 10,
    +
    223 double inliersDistance = 0.1,
    +
    224 int iterations = 100,
    +
    225 int refineIterations = 5,
    +
    226 cv::Mat * covariance = 0,
    +
    227 std::vector<int> * matchesOut = 0,
    +
    228 std::vector<int> * inliersOut = 0);
    +
    229
    +
    260void RTABMAP_CORE_EXPORT solvePnPRansac(
    +
    261 const std::vector<cv::Point3f> & objectPoints,
    +
    262 const std::vector<cv::Point2f> & imagePoints,
    +
    263 const cv::Mat & cameraMatrix,
    +
    264 const cv::Mat & distCoeffs,
    +
    265 cv::Mat & rvec,
    +
    266 cv::Mat & tvec,
    +
    267 bool useExtrinsicGuess,
    +
    268 int iterationsCount,
    +
    269 float reprojectionError,
    +
    270 int minInliersCount,
    +
    271 std::vector<int> & inliers,
    +
    272 int flags,
    +
    273 int refineIterations = 1,
    +
    274 float refineSigma = 3.0f);
    +
    275
    +
    276} // namespace util3d
    +
    277} // namespace rtabmap
    +
    278
    +
    279#endif /* UTIL3D_TRANSFORMS_H_ */
    +
    Represents a pinhole camera model containing intrinsic and extrinsic parameters, used for projection,...
    Definition CameraModel.h:53
    +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    static Transform getIdentity()
    Returns identity transform.
    +
    void RTABMAP_CORE_EXPORT setRansacDeterministicSeed(bool enable)
    Toggle a deterministic seed for OpenGV's internal RANSAC RNG.
    +
    Transform RTABMAP_CORE_EXPORT estimateMotion3DTo3D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::Point3f > &words3B, int minInliers=10, double inliersDistance=0.1, int iterations=100, int refineIterations=5, cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0)
    Estimates the 3D rigid transformation between two sets of 3D points.
    +
    Transform RTABMAP_CORE_EXPORT estimateMotion3DTo2D(const std::map< int, cv::Point3f > &words3A, const std::map< int, cv::KeyPoint > &words2B, const CameraModel &cameraModel, int minInliers=10, int iterations=100, double reprojError=5., int flagsPnP=0, int pnpRefineIterations=1, int varianceMedianRatio=4, float maxVariance=0, const Transform &guess=Transform::getIdentity(), const std::map< int, cv::Point3f > &words3B=std::map< int, cv::Point3f >(), cv::Mat *covariance=0, std::vector< int > *matchesOut=0, std::vector< int > *inliersOut=0, bool splitLinearCovarianceComponents=false)
    Estimates a 6-DOF camera transform from 3D-2D point correspondences using PnP RANSAC.
    +
    void RTABMAP_CORE_EXPORT solvePnPRansac(const std::vector< cv::Point3f > &objectPoints, const std::vector< cv::Point2f > &imagePoints, const cv::Mat &cameraMatrix, const cv::Mat &distCoeffs, cv::Mat &rvec, cv::Mat &tvec, bool useExtrinsicGuess, int iterationsCount, float reprojectionError, int minInliersCount, std::vector< int > &inliers, int flags, int refineIterations=1, float refineSigma=3.0f)
    Estimates the camera pose using the PnP RANSAC algorithm and optionally refines it.
    +
    bool RTABMAP_CORE_EXPORT ransacDeterministicSeedEnabled()
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__registration_8h_source.html b/preview/pr-1773/api/latest/util3d__registration_8h_source.html new file mode 100644 index 00000000..1640ffce --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__registration_8h_source.html @@ -0,0 +1,267 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_registration.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_registration.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_REGISTRATION_H_
    +
    29#define UTIL3D_REGISTRATION_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32
    +
    33#include <pcl/point_cloud.h>
    +
    34#include <pcl/point_types.h>
    +
    35#include <rtabmap/core/Transform.h>
    +
    36#include <opencv2/core/core.hpp>
    +
    37
    +
    38namespace rtabmap
    +
    39{
    +
    40
    +
    41namespace util3d
    +
    42{
    +
    43
    +
    44int RTABMAP_CORE_EXPORT getCorrespondencesCount(const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloud_source,
    +
    45 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloud_target,
    +
    46 float maxDistance);
    +
    47
    + +
    69 const pcl::PointCloud<pcl::PointXYZ> & cloud1,
    +
    70 const pcl::PointCloud<pcl::PointXYZ> & cloud2);
    +
    71
    + +
    102 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloud1,
    +
    103 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloud2,
    +
    104 double inlierThreshold = 0.02,
    +
    105 int iterations = 100,
    +
    106 int refineModelIterations = 10,
    +
    107 double refineModelSigma = 3.0,
    +
    108 std::vector<int> * inliers = 0,
    +
    109 cv::Mat * variance = 0);
    +
    110
    +
    139void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences(
    +
    140 const pcl::PointCloud<pcl::PointNormal>::ConstPtr & cloudA,
    +
    141 const pcl::PointCloud<pcl::PointNormal>::ConstPtr & cloudB,
    +
    142 double maxCorrespondenceDistance,
    +
    143 double maxCorrespondenceAngle, // <=0 means that we don't care about normal angle difference
    +
    144 double & variance,
    +
    145 int & correspondencesOut,
    +
    146 bool reciprocal);
    +
    148void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences(
    +
    149 const pcl::PointCloud<pcl::PointXYZINormal>::ConstPtr & cloudA,
    +
    150 const pcl::PointCloud<pcl::PointXYZINormal>::ConstPtr & cloudB,
    +
    151 double maxCorrespondenceDistance,
    +
    152 double maxCorrespondenceAngle, // <=0 means that we don't care about normal angle difference
    +
    153 double & variance,
    +
    154 int & correspondencesOut,
    +
    155 bool reciprocal);
    +
    157void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences(
    +
    158 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloudA,
    +
    159 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloudB,
    +
    160 double maxCorrespondenceDistance,
    +
    161 double & variance,
    +
    162 int & correspondencesOut,
    +
    163 bool reciprocal);
    +
    165void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences(
    +
    166 const pcl::PointCloud<pcl::PointXYZI>::ConstPtr & cloudA,
    +
    167 const pcl::PointCloud<pcl::PointXYZI>::ConstPtr & cloudB,
    +
    168 double maxCorrespondenceDistance,
    +
    169 double & variance,
    +
    170 int & correspondencesOut,
    +
    171 bool reciprocal);
    +
    199Transform RTABMAP_CORE_EXPORT icp(
    +
    200 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloud_source,
    +
    201 const pcl::PointCloud<pcl::PointXYZ>::ConstPtr & cloud_target,
    +
    202 double maxCorrespondenceDistance,
    +
    203 int maximumIterations,
    +
    204 bool & hasConverged,
    +
    205 pcl::PointCloud<pcl::PointXYZ> & cloud_source_registered,
    +
    206 float epsilon = 0.0f,
    +
    207 bool icp2D = false,
    +
    208 float ransacOutlierRatio = 0.0f,
    +
    209 int * iterationsDone = nullptr);
    +
    218Transform RTABMAP_CORE_EXPORT icp(
    +
    219 const pcl::PointCloud<pcl::PointXYZI>::ConstPtr & cloud_source,
    +
    220 const pcl::PointCloud<pcl::PointXYZI>::ConstPtr & cloud_target,
    +
    221 double maxCorrespondenceDistance,
    +
    222 int maximumIterations,
    +
    223 bool & hasConverged,
    +
    224 pcl::PointCloud<pcl::PointXYZI> & cloud_source_registered,
    +
    225 float epsilon = 0.0f,
    +
    226 bool icp2D = false,
    +
    227 float ransacOutlierRatio = 0.0f,
    +
    228 int * iterationsDone = nullptr);
    +
    229
    +
    255Transform RTABMAP_CORE_EXPORT icpPointToPlane(
    +
    256 const pcl::PointCloud<pcl::PointNormal>::ConstPtr & cloud_source,
    +
    257 const pcl::PointCloud<pcl::PointNormal>::ConstPtr & cloud_target,
    +
    258 double maxCorrespondenceDistance,
    +
    259 int maximumIterations,
    +
    260 bool & hasConverged,
    +
    261 pcl::PointCloud<pcl::PointNormal> & cloud_source_registered,
    +
    262 float epsilon = 0.0f,
    +
    263 bool icp2D = false,
    +
    264 float ransacOutlierRatio = 0.0f,
    +
    265 int * iterationsDone = nullptr);
    +
    274Transform RTABMAP_CORE_EXPORT icpPointToPlane(
    +
    275 const pcl::PointCloud<pcl::PointXYZINormal>::ConstPtr & cloud_source,
    +
    276 const pcl::PointCloud<pcl::PointXYZINormal>::ConstPtr & cloud_target,
    +
    277 double maxCorrespondenceDistance,
    +
    278 int maximumIterations,
    +
    279 bool & hasConverged,
    +
    280 pcl::PointCloud<pcl::PointXYZINormal> & cloud_source_registered,
    +
    281 float epsilon = 0.0f,
    +
    282 bool icp2D = false,
    +
    283 float ransacOutlierRatio = 0.0f,
    +
    284 int * iterationsDone = nullptr);
    +
    285
    +
    286} // namespace util3d
    +
    287} // namespace rtabmap
    +
    288
    +
    289#endif /* UTIL3D_REGISTRATION_H_ */
    +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    void RTABMAP_CORE_EXPORT computeVarianceAndCorrespondences(const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudA, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloudB, double maxCorrespondenceDistance, double maxCorrespondenceAngle, double &variance, int &correspondencesOut, bool reciprocal)
    Compute with variance and correspondences of pcl::PointNormal point cloud type.
    +
    Transform RTABMAP_CORE_EXPORT transformFromXYZCorrespondencesSVD(const pcl::PointCloud< pcl::PointXYZ > &cloud1, const pcl::PointCloud< pcl::PointXYZ > &cloud2)
    Estimates the rigid 3D transformation between two point clouds using SVD.
    +
    Transform RTABMAP_CORE_EXPORT icpPointToPlane(const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointNormal >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointNormal > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)
    Performs Iterative Closest Point (ICP) alignment using a point-to-plane error metric.
    +
    Transform RTABMAP_CORE_EXPORT transformFromXYZCorrespondences(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud1, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud2, double inlierThreshold=0.02, int iterations=100, int refineModelIterations=10, double refineModelSigma=3.0, std::vector< int > *inliers=0, cv::Mat *variance=0)
    Estimates a rigid transformation between two point clouds using RANSAC with optional refinement.
    +
    Transform RTABMAP_CORE_EXPORT icp(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_source, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &cloud_target, double maxCorrespondenceDistance, int maximumIterations, bool &hasConverged, pcl::PointCloud< pcl::PointXYZ > &cloud_source_registered, float epsilon=0.0f, bool icp2D=false, float ransacOutlierRatio=0.0f, int *iterationsDone=nullptr)
    Performs Iterative Closest Point (ICP) alignment between two point clouds and returns the resulting t...
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__surface_8h_source.html b/preview/pr-1773/api/latest/util3d__surface_8h_source.html new file mode 100644 index 00000000..f2433b89 --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__surface_8h_source.html @@ -0,0 +1,679 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_surface.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_surface.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_SURFACE_H_
    +
    29#define UTIL3D_SURFACE_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32
    +
    33#include <pcl/PolygonMesh.h>
    +
    34#include <pcl/point_cloud.h>
    +
    35#include <pcl/point_types.h>
    +
    36#include <pcl/TextureMesh.h>
    +
    37#include <pcl/pcl_base.h>
    +
    38#include <rtabmap/core/Transform.h>
    +
    39#include <rtabmap/core/CameraModel.h>
    +
    40#include <rtabmap/core/ProgressState.h>
    +
    41#include <rtabmap/core/LaserScan.h>
    +
    42#include <rtabmap/core/Version.h>
    +
    43#include <set>
    +
    44#include <list>
    +
    45
    +
    46namespace rtabmap
    +
    47{
    +
    48
    +
    49class Memory;
    +
    50class DBDriver;
    +
    51
    +
    52namespace util3d
    +
    53{
    +
    54
    +
    64void RTABMAP_CORE_EXPORT createPolygonIndexes(
    +
    65 const std::vector<pcl::Vertices> & polygons,
    +
    66 int cloudSize,
    +
    67 std::vector<std::set<int> > & neighborPolygons,
    +
    68 std::vector<std::set<int> > & vertexPolygons);
    +
    69
    +
    70std::list<std::list<int> > RTABMAP_CORE_EXPORT clusterPolygons(
    +
    71 const std::vector<std::set<int> > & neighborPolygons,
    +
    72 int minClusterSize = 0);
    +
    73
    +
    74std::vector<pcl::Vertices> RTABMAP_CORE_EXPORT organizedFastMesh(
    +
    75 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    76 double angleTolerance,
    +
    77 bool quad,
    +
    78 int trianglePixelSize,
    +
    79 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0));
    +
    80std::vector<pcl::Vertices> RTABMAP_CORE_EXPORT organizedFastMesh(
    +
    81 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    82 double angleTolerance = M_PI/16,
    +
    83 bool quad=true,
    +
    84 int trianglePixelSize = 2,
    +
    85 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0));
    +
    86std::vector<pcl::Vertices> RTABMAP_CORE_EXPORT organizedFastMesh(
    +
    87 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    88 double angleTolerance = M_PI/16,
    +
    89 bool quad=true,
    +
    90 int trianglePixelSize = 2,
    +
    91 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0));
    +
    92
    +
    93void RTABMAP_CORE_EXPORT appendMesh(
    +
    94 pcl::PointCloud<pcl::PointXYZRGBNormal> & cloudA,
    +
    95 std::vector<pcl::Vertices> & polygonsA,
    +
    96 const pcl::PointCloud<pcl::PointXYZRGBNormal> & cloudB,
    +
    97 const std::vector<pcl::Vertices> & polygonsB);
    +
    98void RTABMAP_CORE_EXPORT appendMesh(
    +
    99 pcl::PointCloud<pcl::PointXYZRGB> & cloudA,
    +
    100 std::vector<pcl::Vertices> & polygonsA,
    +
    101 const pcl::PointCloud<pcl::PointXYZRGB> & cloudB,
    +
    102 const std::vector<pcl::Vertices> & polygonsB);
    +
    103
    +
    104// return map from new to old polygon indices
    +
    105std::vector<int> RTABMAP_CORE_EXPORT filterNotUsedVerticesFromMesh(
    +
    106 const pcl::PointCloud<pcl::PointXYZRGBNormal> & cloud,
    +
    107 const std::vector<pcl::Vertices> & polygons,
    +
    108 pcl::PointCloud<pcl::PointXYZRGBNormal> & outputCloud,
    +
    109 std::vector<pcl::Vertices> & outputPolygons);
    +
    110std::vector<int> RTABMAP_CORE_EXPORT filterNotUsedVerticesFromMesh(
    +
    111 const pcl::PointCloud<pcl::PointXYZRGB> & cloud,
    +
    112 const std::vector<pcl::Vertices> & polygons,
    +
    113 pcl::PointCloud<pcl::PointXYZRGB> & outputCloud,
    +
    114 std::vector<pcl::Vertices> & outputPolygons);
    +
    115std::vector<int> RTABMAP_CORE_EXPORT filterNaNPointsFromMesh(
    +
    116 const pcl::PointCloud<pcl::PointXYZRGB> & cloud,
    +
    117 const std::vector<pcl::Vertices> & polygons,
    +
    118 pcl::PointCloud<pcl::PointXYZRGB> & outputCloud,
    +
    119 std::vector<pcl::Vertices> & outputPolygons);
    +
    120
    +
    121std::vector<pcl::Vertices> RTABMAP_CORE_EXPORT filterCloseVerticesFromMesh(
    +
    122 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr cloud,
    +
    123 const std::vector<pcl::Vertices> & polygons,
    +
    124 float radius,
    +
    125 float angle,
    +
    126 bool keepLatestInRadius);
    +
    127
    +
    128std::vector<pcl::Vertices> RTABMAP_CORE_EXPORT filterInvalidPolygons(
    +
    129 const std::vector<pcl::Vertices> & polygons);
    +
    130
    +
    131pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT createMesh(
    +
    132 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloudWithNormals,
    +
    133 float gp3SearchRadius = 0.025,
    +
    134 float gp3Mu = 2.5,
    +
    135 int gp3MaximumNearestNeighbors = 100,
    +
    136 float gp3MaximumSurfaceAngle = M_PI/4,
    +
    137 float gp3MinimumAngle = M_PI/18,
    +
    138 float gp3MaximumAngle = 2*M_PI/3,
    +
    139 bool gp3NormalConsistency = true);
    +
    140
    +
    141pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT createTextureMesh(
    +
    142 const pcl::PolygonMesh::Ptr & mesh,
    +
    143 const std::map<int, Transform> & poses,
    +
    144 const std::map<int, CameraModel> & cameraModels,
    +
    145 const std::map<int, cv::Mat> & cameraDepths,
    +
    146 float maxDistance = 0.0f, // max camera distance to polygon to apply texture
    +
    147 float maxDepthError = 0.0f, // maximum depth error between reprojected mesh and depth image to texture a face (-1=disabled, 0=edge length is used)
    +
    148 float maxAngle = 0.0f, // maximum angle between camera and face (0=disabled)
    +
    149 int minClusterSize = 50, // minimum size of polygons clusters textured
    +
    150 const std::vector<float> & roiRatios = std::vector<float>(), // [left, right, top, bottom] region of interest (in ratios) of the image projected.
    +
    151 const ProgressState * state = 0,
    +
    152 std::vector<std::map<int, pcl::PointXY> > * vertexToPixels = 0, // For each point, we have a list of cameras with corresponding pixel in it. Beware that the camera ids don't correspond to pose ids, they are indexes from 0 to total camera models and texture's materials.
    +
    153 bool distanceToCamPolicy = false,
    +
    154 int numThreads = 1); // number of threads used to compute the visible faces of the cameras (1=sequential)
    +
    155pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT createTextureMesh(
    +
    156 const pcl::PolygonMesh::Ptr & mesh,
    +
    157 const std::map<int, Transform> & poses,
    +
    158 const std::map<int, std::vector<CameraModel> > & cameraModels,
    +
    159 const std::map<int, cv::Mat> & cameraDepths,
    +
    160 float maxDistance = 0.0f, // max camera distance to polygon to apply texture
    +
    161 float maxDepthError = 0.0f, // maximum depth error between reprojected mesh and depth image to texture a face (-1=disabled, 0=edge length is used)
    +
    162 float maxAngle = 0.0f, // maximum angle between camera and face (0=disabled)
    +
    163 int minClusterSize = 50, // minimum size of polygons clusters textured
    +
    164 const std::vector<float> & roiRatios = std::vector<float>(), // [left, right, top, bottom] region of interest (in ratios) of the image projected.
    +
    165 const ProgressState * state = 0,
    +
    166 std::vector<std::map<int, pcl::PointXY> > * vertexToPixels = 0, // For each point, we have a list of cameras with corresponding pixel in it. Beware that the camera ids don't correspond to pose ids, they are indexes from 0 to total camera models and texture's materials.
    +
    167 bool distanceToCamPolicy = false,
    +
    168 int numThreads = 1); // number of threads used to compute the visible faces of the cameras (1=sequential)
    +
    169
    +
    173void RTABMAP_CORE_EXPORT cleanTextureMesh(
    +
    174 pcl::TextureMesh & textureMesh,
    +
    175 int minClusterSize);
    +
    176
    +
    177pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT concatenateTextureMeshes(
    +
    178 const std::list<pcl::TextureMesh::Ptr> & meshes);
    +
    179
    +
    180void RTABMAP_CORE_EXPORT concatenateTextureMaterials(
    +
    181 pcl::TextureMesh & mesh, const cv::Size & imageSize, int textureSize, int maxTextures, float & scale, std::vector<bool> * materialsKept=0);
    +
    182
    +
    183std::vector<std::vector<RTABMAP_PCL_INDEX> > RTABMAP_CORE_EXPORT convertPolygonsFromPCL(
    +
    184 const std::vector<pcl::Vertices> & polygons);
    +
    185std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > RTABMAP_CORE_EXPORT convertPolygonsFromPCL(
    +
    186 const std::vector<std::vector<pcl::Vertices> > & polygons);
    +
    187std::vector<pcl::Vertices> RTABMAP_CORE_EXPORT convertPolygonsToPCL(
    +
    188 const std::vector<std::vector<RTABMAP_PCL_INDEX> > & polygons);
    +
    189std::vector<std::vector<pcl::Vertices> > RTABMAP_CORE_EXPORT convertPolygonsToPCL(
    +
    190 const std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > & tex_polygons);
    +
    191
    +
    192pcl::TextureMesh::Ptr RTABMAP_CORE_EXPORT assembleTextureMesh(
    +
    193 const cv::Mat & cloudMat,
    +
    194 const std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > & polygons,
    +
    195#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
    +
    196 const std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > & texCoords,
    +
    197#else
    +
    198 const std::vector<std::vector<Eigen::Vector2f> > & texCoords,
    +
    199#endif
    +
    200 cv::Mat & textures,
    +
    201 bool mergeTextures = false);
    +
    202
    +
    203pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT assemblePolygonMesh(
    +
    204 const cv::Mat & cloudMat,
    +
    205 const std::vector<std::vector<RTABMAP_PCL_INDEX> > & polygons);
    +
    206
    +
    211cv::Mat RTABMAP_CORE_EXPORT mergeTextures(
    +
    212 pcl::TextureMesh & mesh,
    +
    213 const std::map<int, cv::Mat> & images, // raw or compressed, can be empty if memory or dbDriver should be used
    +
    214 const std::map<int, CameraModel> & calibrations, // Should match images
    +
    215 const Memory * memory = 0, // Should be set if images are not set
    +
    216 const DBDriver * dbDriver = 0, // Should be set if images and memory are not set
    +
    217 int textureSize = 4096,
    +
    218 int textureCount = 1,
    +
    219 const std::vector<std::map<int, pcl::PointXY> > & vertexToPixels = std::vector<std::map<int, pcl::PointXY> >(), // needed for parameters below
    +
    220 bool gainCompensation = true,
    +
    221 float gainBeta = 10.0f,
    +
    222 bool gainRGB = true, //Do gain compensation on each channel
    +
    223 bool blending = true,
    +
    224 int blendingDecimation = 0, //0=auto depending on projected polygon size and texture size
    +
    225 int brightnessContrastRatioLow = 0, //0=disabled, values between 0 and 100
    +
    226 int brightnessContrastRatioHigh = 0, //0=disabled, values between 0 and 100
    +
    227 bool exposureFusion = false, //Exposure fusion can be used only with OpenCV3
    +
    228 const ProgressState * state = 0,
    +
    229 unsigned char blankValue = 255, //Gray value for blank polygons (without texture)
    +
    230 bool clearVertexColorUnderTexture = true,
    +
    231 std::map<int, std::map<int, cv::Vec4d> > * gains = 0, // <Camera ID, Camera Sub Index (multi-cameras), gains Gray-R-G-B>
    +
    232 std::map<int, std::map<int, cv::Mat> > * blendingGains = 0, // <Camera ID, Camera Sub Index (multi-cameras), gains>
    +
    233 std::pair<float, float> * contrastValues = 0); // Alpha/beta contrast values
    +
    234cv::Mat RTABMAP_CORE_EXPORT mergeTextures(
    +
    235 pcl::TextureMesh & mesh,
    +
    236 const std::map<int, cv::Mat> & images, // raw or compressed, can be empty if memory or dbDriver should be used
    +
    237 const std::map<int, std::vector<CameraModel> > & calibrations, // Should match images
    +
    238 const Memory * memory = 0, // Should be set if images are not set
    +
    239 const DBDriver * dbDriver = 0, // Should be set if images and memory are not set
    +
    240 int textureSize = 4096,
    +
    241 int textureCount = 1,
    +
    242 const std::vector<std::map<int, pcl::PointXY> > & vertexToPixels = std::vector<std::map<int, pcl::PointXY> >(), // needed for parameters below
    +
    243 bool gainCompensation = true,
    +
    244 float gainBeta = 10.0f,
    +
    245 bool gainRGB = true, //Do gain compensation on each channel
    +
    246 bool blending = true,
    +
    247 int blendingDecimation = 0, //0=auto depending on projected polygon size and texture size
    +
    248 int brightnessContrastRatioLow = 0, //0=disabled, values between 0 and 100
    +
    249 int brightnessContrastRatioHigh = 0, //0=disabled, values between 0 and 100
    +
    250 bool exposureFusion = false, //Exposure fusion can be used only with OpenCV3
    +
    251 const ProgressState * state = 0,
    +
    252 unsigned char blankValue = 255, //Gray value for blank polygons (without texture)
    +
    253 bool clearVertexColorUnderTexture = true,
    +
    254 std::map<int, std::map<int, cv::Vec4d> > * gains = 0, // <Camera ID, Camera Sub Index (multi-cameras), gains Gray-R-G-B>
    +
    255 std::map<int, std::map<int, cv::Mat> > * blendingGains = 0, // <Camera ID, Camera Sub Index (multi-cameras), gains>
    +
    256 std::pair<float, float> * contrastValues = 0); // Alpha/beta contrast values
    +
    257
    +
    258void RTABMAP_CORE_EXPORT fixTextureMeshForVisualization(pcl::TextureMesh & textureMesh);
    +
    259
    +
    260// Use the same method with 22 parameters instead.
    +
    261RTABMAP_DEPRECATED bool RTABMAP_CORE_EXPORT multiBandTexturing(
    +
    262 const std::string & outputOBJPath,
    +
    263 const pcl::PCLPointCloud2 & cloud,
    +
    264 const std::vector<pcl::Vertices> & polygons,
    +
    265 const std::map<int, Transform> & cameraPoses,
    +
    266 const std::vector<std::map<int, pcl::PointXY> > & vertexToPixels, // required output of util3d::createTextureMesh()
    +
    267 const std::map<int, cv::Mat> & images, // raw or compressed, can be empty if memory or dbDriver should be used
    +
    268 const std::map<int, std::vector<CameraModel> > & cameraModels, // Should match images
    +
    269 const Memory * memory = 0, // Should be set if images are not set
    +
    270 const DBDriver * dbDriver = 0, // Should be set if images and memory are not set
    +
    271 int textureSize = 8192,
    +
    272 const std::string & textureFormat = "jpg", // png, jpg
    +
    273 const std::map<int, std::map<int, cv::Vec4d> > & gains = std::map<int, std::map<int, cv::Vec4d> >(), // optional output of util3d::mergeTextures()
    +
    274 const std::map<int, std::map<int, cv::Mat> > & blendingGains = std::map<int, std::map<int, cv::Mat> >(), // optional output of util3d::mergeTextures()
    +
    275 const std::pair<float, float> & contrastValues = std::pair<float, float>(0,0), // optional output of util3d::mergeTextures()
    +
    276 bool gainRGB = true);
    +
    277
    +
    304bool RTABMAP_CORE_EXPORT multiBandTexturing(
    +
    305 const std::string & outputOBJPath,
    +
    306 const pcl::PCLPointCloud2 & cloud,
    +
    307 const std::vector<pcl::Vertices> & polygons,
    +
    308 const std::map<int, Transform> & cameraPoses,
    +
    309 const std::vector<std::map<int, pcl::PointXY> > & vertexToPixels,
    +
    310 const std::map<int, cv::Mat> & images,
    +
    311 const std::map<int, std::vector<CameraModel> > & cameraModels,
    +
    312 const Memory * memory = 0,
    +
    313 const DBDriver * dbDriver = 0,
    +
    314 unsigned int textureSize = 8192,
    +
    315 unsigned int textureDownscale = 2,
    +
    316 const std::string & nbContrib = "1 5 10 0",
    +
    317 const std::string & textureFormat = "jpg",
    +
    318 const std::map<int, std::map<int, cv::Vec4d> > & gains = std::map<int, std::map<int, cv::Vec4d> >(),
    +
    319 const std::map<int, std::map<int, cv::Mat> > & blendingGains = std::map<int, std::map<int, cv::Mat> >(),
    +
    320 const std::pair<float, float> & contrastValues = std::pair<float, float>(0,0),
    +
    321 bool gainRGB = true,
    +
    322 unsigned int unwrapMethod = 0,
    +
    323 bool fillHoles = false,
    +
    324 unsigned int padding = 5,
    +
    325 double bestScoreThreshold = 0.1,
    +
    326 double angleHardThreshold = 90.0,
    +
    327 bool forceVisibleByAllVertices = false);
    +
    328
    +
    329cv::Mat RTABMAP_CORE_EXPORT computeNormals(
    +
    330 const cv::Mat & laserScan,
    +
    331 int searchK,
    +
    332 float searchRadius);
    +
    333pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals(
    +
    334 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    335 int searchK = 20,
    +
    336 float searchRadius = 0.0f,
    +
    337 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    338pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals(
    +
    339 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    340 int searchK = 20,
    +
    341 float searchRadius = 0.0f,
    +
    342 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    343pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals(
    +
    344 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    345 int searchK = 20,
    +
    346 float searchRadius = 0.0f,
    +
    347 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    348pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals(
    +
    349 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    350 const pcl::IndicesPtr & indices,
    +
    351 int searchK = 20,
    +
    352 float searchRadius = 0.0f,
    +
    353 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    354pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals(
    +
    355 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    356 const pcl::IndicesPtr & indices,
    +
    357 int searchK = 20,
    +
    358 float searchRadius = 0.0f,
    +
    359 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    360pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals(
    +
    361 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    362 const pcl::IndicesPtr & indices,
    +
    363 int searchK = 20,
    +
    364 float searchRadius = 0.0f,
    +
    365 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    366
    +
    367pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals2D(
    +
    368 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    369 int searchK = 5,
    +
    370 float searchRadius = 0.0f,
    +
    371 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    372pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeNormals2D(
    +
    373 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    374 int searchK = 5,
    +
    375 float searchRadius = 0.0f,
    +
    376 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    377pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals2D(
    +
    378 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    379 int searchK = 5,
    +
    380 float searchRadius = 0.0f,
    +
    381 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    382pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals2D(
    +
    383 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    384 int searchK = 5,
    +
    385 float searchRadius = 0.0f,
    +
    386 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    387
    +
    388pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals(
    +
    389 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    390 float maxDepthChangeFactor = 0.02f,
    +
    391 float normalSmoothingSize = 10.0f,
    +
    392 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    393pcl::PointCloud<pcl::Normal>::Ptr RTABMAP_CORE_EXPORT computeFastOrganizedNormals(
    +
    394 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    395 const pcl::IndicesPtr & indices,
    +
    396 float maxDepthChangeFactor = 0.02f,
    +
    397 float normalSmoothingSize = 10.0f,
    +
    398 const Eigen::Vector3f & viewPoint = Eigen::Vector3f(0,0,0));
    +
    399
    +
    435float RTABMAP_CORE_EXPORT computeNormalsComplexity(
    +
    436 const LaserScan & scan,
    +
    437 const Transform & t = Transform::getIdentity(),
    +
    438 cv::Mat * pcaEigenVectors = 0,
    +
    439 cv::Mat * pcaEigenValues = 0,
    +
    440 bool centered = true);
    +
    442float RTABMAP_CORE_EXPORT computeNormalsComplexity(
    +
    443 const pcl::PointCloud<pcl::Normal> & normals,
    +
    444 const Transform & t = Transform::getIdentity(),
    +
    445 bool is2d = false,
    +
    446 cv::Mat * pcaEigenVectors = 0,
    +
    447 cv::Mat * pcaEigenValues = 0,
    +
    448 bool centered = true);
    +
    450float RTABMAP_CORE_EXPORT computeNormalsComplexity(
    +
    451 const pcl::PointCloud<pcl::PointNormal> & cloud,
    +
    452 const Transform & t = Transform::getIdentity(),
    +
    453 bool is2d = false,
    +
    454 cv::Mat * pcaEigenVectors = 0,
    +
    455 cv::Mat * pcaEigenValues = 0,
    +
    456 bool centered = true);
    +
    458float RTABMAP_CORE_EXPORT computeNormalsComplexity(
    +
    459 const pcl::PointCloud<pcl::PointXYZINormal> & cloud,
    +
    460 const Transform & t = Transform::getIdentity(),
    +
    461 bool is2d = false,
    +
    462 cv::Mat * pcaEigenVectors = 0,
    +
    463 cv::Mat * pcaEigenValues = 0,
    +
    464 bool centered = true);
    +
    466float RTABMAP_CORE_EXPORT computeNormalsComplexity(
    +
    467 const pcl::PointCloud<pcl::PointXYZRGBNormal> & cloud,
    +
    468 const Transform & t = Transform::getIdentity(),
    +
    469 bool is2d = false,
    +
    470 cv::Mat * pcaEigenVectors = 0,
    +
    471 cv::Mat * pcaEigenValues = 0,
    +
    472 bool centered = true);
    +
    475pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT mls(
    +
    476 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    477 float searchRadius = 0.0f,
    +
    478 int polygonialOrder = 2,
    +
    479 int upsamplingMethod = 0, // NONE, DISTINCT_CLOUD, SAMPLE_LOCAL_PLANE, RANDOM_UNIFORM_DENSITY, VOXEL_GRID_DILATION
    +
    480 float upsamplingRadius = 0.0f, // SAMPLE_LOCAL_PLANE
    +
    481 float upsamplingStep = 0.0f, // SAMPLE_LOCAL_PLANE
    +
    482 int pointDensity = 0, // RANDOM_UNIFORM_DENSITY
    +
    483 float dilationVoxelSize = 1.0f, // VOXEL_GRID_DILATION
    +
    484 int dilationIterations = 0); // VOXEL_GRID_DILATION
    +
    485pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT mls(
    +
    486 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    487 const pcl::IndicesPtr & indices,
    +
    488 float searchRadius = 0.0f,
    +
    489 int polygonialOrder = 2,
    +
    490 int upsamplingMethod = 0, // NONE, DISTINCT_CLOUD, SAMPLE_LOCAL_PLANE, RANDOM_UNIFORM_DENSITY, VOXEL_GRID_DILATION
    +
    491 float upsamplingRadius = 0.0f, // SAMPLE_LOCAL_PLANE
    +
    492 float upsamplingStep = 0.0f, // SAMPLE_LOCAL_PLANE
    +
    493 int pointDensity = 0, // RANDOM_UNIFORM_DENSITY
    +
    494 float dilationVoxelSize = 1.0f, // VOXEL_GRID_DILATION
    +
    495 int dilationIterations = 0); // VOXEL_GRID_DILATION
    +
    496
    +
    497// Use version with groundNormalsUp as float. For forceGroundNormalsUp=true, set groundNormalsUp to 0.8f, otherwise set groundNormalsUp to 0.0f.
    +
    498RTABMAP_DEPRECATED LaserScan RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    499 const LaserScan & scan,
    +
    500 const Eigen::Vector3f & viewpoint,
    +
    501 bool forceGroundNormalsUp);
    +
    502LaserScan RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    503 const LaserScan & scan,
    +
    504 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0),
    +
    505 float groundNormalsUp = 0.0f);
    +
    506// Use version with groundNormalsUp as float. For forceGroundNormalsUp=true, set groundNormalsUp to 0.8f, otherwise set groundNormalsUp to 0.0f.
    +
    507RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    508 pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    509 const Eigen::Vector3f & viewpoint,
    +
    510 bool forceGroundNormalsUp);
    +
    511void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    512 pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    513 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0),
    +
    514 float groundNormalsUp = 0.0f);
    +
    515// Use version with groundNormalsUp as float. For forceGroundNormalsUp=true, set groundNormalsUp to 0.8f, otherwise set groundNormalsUp to 0.0f.
    +
    516RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    517 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    518 const Eigen::Vector3f & viewpoint,
    +
    519 bool forceGroundNormalsUp);
    +
    520void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    521 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    522 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0),
    +
    523 float groundNormalsUp = 0.0f);
    +
    524// Use version with groundNormalsUp as float. For forceGroundNormalsUp=true, set groundNormalsUp to 0.8f, otherwise set groundNormalsUp to 0.0f.
    +
    525RTABMAP_DEPRECATED void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    526 pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    527 const Eigen::Vector3f & viewpoint,
    +
    528 bool forceGroundNormalsUp);
    +
    529void RTABMAP_CORE_EXPORT adjustNormalsToViewPoint(
    +
    530 pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    531 const Eigen::Vector3f & viewpoint = Eigen::Vector3f(0,0,0),
    +
    532 float groundNormalsUp = 0.0f);
    +
    533
    +
    534void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints(
    +
    535 const std::map<int, Transform> & poses,
    +
    536 const std::vector<int> & cameraIndices,
    +
    537 pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    538 float groundNormalsUp = 0.0f);
    +
    539void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints(
    +
    540 const std::map<int, Transform> & poses,
    +
    541 const std::vector<int> & cameraIndices,
    +
    542 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    543 float groundNormalsUp = 0.0f);
    +
    544void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints(
    +
    545 const std::map<int, Transform> & poses,
    +
    546 const std::vector<int> & cameraIndices,
    +
    547 pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    548 float groundNormalsUp = 0.0f);
    +
    549
    +
    550void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints(
    +
    551 const std::map<int, Transform> & poses,
    +
    552 const pcl::PointCloud<pcl::PointXYZ>::Ptr & rawCloud,
    +
    553 const std::vector<int> & rawCameraIndices,
    +
    554 pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    555 float groundNormalsUp = 0.0f);
    +
    556void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints(
    +
    557 const std::map<int, Transform> & poses,
    +
    558 const pcl::PointCloud<pcl::PointXYZ>::Ptr & rawCloud,
    +
    559 const std::vector<int> & rawCameraIndices,
    +
    560 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    561 float groundNormalsUp = 0.0f);
    +
    562void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints(
    +
    563 const std::map<int, Transform> & poses,
    +
    564 const pcl::PointCloud<pcl::PointXYZ>::Ptr & rawCloud,
    +
    565 const std::vector<int> & rawCameraIndices,
    +
    566 pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    567 float groundNormalsUp = 0.0f);
    +
    568
    +
    569void RTABMAP_CORE_EXPORT adjustNormalsToViewPoints(
    +
    570 const std::map<int, Transform> & viewpoints,
    +
    571 const LaserScan & rawScan,
    +
    572 const std::vector<int> & viewpointIds,
    +
    573 LaserScan & scan,
    +
    574 float groundNormalsUp = 0.0f);
    +
    575
    +
    576pcl::PolygonMesh::Ptr RTABMAP_CORE_EXPORT meshDecimation(const pcl::PolygonMesh::Ptr & mesh, float factor);
    +
    577
    +
    578template<typename pointT>
    +
    579std::vector<pcl::Vertices> normalizePolygonsSide(
    +
    580 const pcl::PointCloud<pointT> & cloud,
    +
    581 const std::vector<pcl::Vertices> & polygons,
    +
    582 const pcl::PointXYZ & viewPoint = pcl::PointXYZ(0,0,0));
    +
    583
    +
    584template<typename pointRGBT>
    +
    585void denseMeshPostProcessing(
    +
    586 pcl::PolygonMeshPtr & mesh,
    +
    587 float meshDecimationFactor = 0.0f, // value between 0 and 1, 0=disabled
    +
    588 int maximumPolygons = 0, // 0=disabled
    +
    589 const typename pcl::PointCloud<pointRGBT>::Ptr & cloud = pcl::PointCloud<pointRGBT>::Ptr(), // A RGB point cloud used to transfer colors back to mesh (needed for parameters below)
    +
    590 float transferColorRadius = 0.05f, // <0=disabled, 0=nearest color
    +
    591 bool coloredOutput = true, // Not used anymore, output is colored if transferColorRadius>=0
    +
    592 bool cleanMesh = true, // Remove polygons not colored (if coloredOutput is disabled, transferColorRadius is still used to clean the mesh)
    +
    593 int minClusterSize = 50, // Remove small polygon clusters after the mesh has been cleaned (0=disabled)
    +
    594 ProgressState * progressState = 0);
    +
    595
    +
    618bool RTABMAP_CORE_EXPORT intersectRayTriangle(
    +
    619 const Eigen::Vector3f & p,
    +
    620 const Eigen::Vector3f & dir,
    +
    621 const Eigen::Vector3f & v0,
    +
    622 const Eigen::Vector3f & v1,
    +
    623 const Eigen::Vector3f & v2,
    +
    624 float & distance,
    +
    625 Eigen::Vector3f & normal);
    +
    626
    +
    627template<typename PointT>
    +
    628bool intersectRayMesh(
    +
    629 const Eigen::Vector3f & origin,
    +
    630 const Eigen::Vector3f & dir,
    +
    631 const typename pcl::PointCloud<PointT> & cloud,
    +
    632 const std::vector<pcl::Vertices> & polygons,
    +
    633 bool ignoreBackFaces,
    +
    634 float & distance,
    +
    635 Eigen::Vector3f & normal,
    +
    636 int & index);
    +
    637
    +
    638int RTABMAP_CORE_EXPORT saveOBJFile(
    +
    639 const std::string &file_name,
    +
    640 const pcl::TextureMesh &tex_mesh,
    +
    641 unsigned precision = 5);
    +
    642
    +
    643int RTABMAP_CORE_EXPORT saveOBJFile(
    +
    644 const std::string &file_name,
    +
    645 const pcl::PolygonMesh &mesh,
    +
    646 unsigned precision = 5);
    +
    647
    +
    648} // namespace util3d
    +
    649} // namespace rtabmap
    +
    650
    +
    651#include "rtabmap/core/impl/util3d_surface.hpp"
    +
    652
    +
    653#endif /* UTIL3D_SURFACE_H_ */
    +
    Abstract database driver for RTAB-Map maps (signatures, links, words, statistics).
    Definition DBDriver.h:72
    +
    Represents 2D or 3D laser scan data with support for multiple point data formats.
    Definition LaserScan.h:46
    +
    Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
    Definition Memory.h:102
    + +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    static Transform getIdentity()
    Returns identity transform.
    +
    float RTABMAP_CORE_EXPORT computeNormalsComplexity(const LaserScan &scan, const Transform &t=Transform::getIdentity(), cv::Mat *pcaEigenVectors=0, cv::Mat *pcaEigenValues=0, bool centered=true)
    Computes the complexity of surface normals in a point cloud of type LaserScan.
    +
    void RTABMAP_CORE_EXPORT cleanTextureMesh(pcl::TextureMesh &textureMesh, int minClusterSize)
    +
    void RTABMAP_CORE_EXPORT createPolygonIndexes(const std::vector< pcl::Vertices > &polygons, int cloudSize, std::vector< std::set< int > > &neighborPolygons, std::vector< std::set< int > > &vertexPolygons)
    Given a set of polygons, create two indexes: polygons to neighbor polygons and vertices to polygons.
    +
    bool RTABMAP_CORE_EXPORT intersectRayTriangle(const Eigen::Vector3f &p, const Eigen::Vector3f &dir, const Eigen::Vector3f &v0, const Eigen::Vector3f &v1, const Eigen::Vector3f &v2, float &distance, Eigen::Vector3f &normal)
    +
    cv::Mat RTABMAP_CORE_EXPORT mergeTextures(pcl::TextureMesh &mesh, const std::map< int, cv::Mat > &images, const std::map< int, CameraModel > &calibrations, const Memory *memory=0, const DBDriver *dbDriver=0, int textureSize=4096, int textureCount=1, const std::vector< std::map< int, pcl::PointXY > > &vertexToPixels=std::vector< std::map< int, pcl::PointXY > >(), bool gainCompensation=true, float gainBeta=10.0f, bool gainRGB=true, bool blending=true, int blendingDecimation=0, int brightnessContrastRatioLow=0, int brightnessContrastRatioHigh=0, bool exposureFusion=false, const ProgressState *state=0, unsigned char blankValue=255, bool clearVertexColorUnderTexture=true, std::map< int, std::map< int, cv::Vec4d > > *gains=0, std::map< int, std::map< int, cv::Mat > > *blendingGains=0, std::pair< float, float > *contrastValues=0)
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__surface_8hpp_source.html b/preview/pr-1773/api/latest/util3d__surface_8hpp_source.html new file mode 100644 index 00000000..f6d41007 --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__surface_8hpp_source.html @@ -0,0 +1,480 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/impl/util3d_surface.hpp Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_surface.hpp
    +
    +
    +
    1/*
    +
    2 * util3d_surface.hpp
    +
    3 *
    +
    4 * Created on: Sep 3, 2016
    +
    5 * Author: mathieu
    +
    6 */
    +
    7
    +
    8#ifndef CORELIB_INCLUDE_RTABMAP_CORE_IMPL_UTIL3D_SURFACE_HPP_
    +
    9#define CORELIB_INCLUDE_RTABMAP_CORE_IMPL_UTIL3D_SURFACE_HPP_
    +
    10
    +
    11#include <pcl/search/kdtree.h>
    +
    12#include <pcl/conversions.h>
    + +
    14
    +
    15namespace rtabmap {
    +
    16
    +
    17namespace util3d {
    +
    18
    +
    19template<typename pointT>
    +
    20std::vector<pcl::Vertices> normalizePolygonsSide(
    +
    21 const typename pcl::PointCloud<pointT> & cloud,
    +
    22 const std::vector<pcl::Vertices> & polygons,
    +
    23 const pcl::PointXYZ & viewPoint)
    +
    24{
    +
    25 std::vector<pcl::Vertices> output(polygons.size());
    +
    26 for(unsigned int i=0; i<polygons.size(); ++i)
    +
    27 {
    +
    28 pcl::Vertices polygon = polygons[i];
    +
    29 Eigen::Vector3f v1 = cloud.at(polygon.vertices[1]).getVector3fMap() - cloud.at(polygon.vertices[0]).getVector3fMap();
    +
    30 Eigen::Vector3f v2 = cloud.at(polygon.vertices[2]).getVector3fMap() - cloud.at(polygon.vertices[0]).getVector3fMap();
    +
    31 Eigen::Vector3f n = (v1.cross(v2)).normalized();
    +
    32
    +
    33 Eigen::Vector3f p = Eigen::Vector3f(viewPoint.x, viewPoint.y, viewPoint.z) - cloud.at(polygon.vertices[1]).getVector3fMap();
    +
    34
    +
    35 float result = n.dot(p);
    +
    36 if(result < 0)
    +
    37 {
    +
    38 //reverse vertices order
    +
    39 int tmp = polygon.vertices[0];
    +
    40 polygon.vertices[0] = polygon.vertices[2];
    +
    41 polygon.vertices[2] = tmp;
    +
    42 }
    +
    43
    +
    44 output[i] = polygon;
    +
    45 }
    +
    46 return output;
    +
    47}
    +
    48
    +
    49template<typename pointRGBT>
    +
    50void denseMeshPostProcessing(
    +
    51 pcl::PolygonMeshPtr & mesh,
    +
    52 float meshDecimationFactor,
    +
    53 int maximumPolygons,
    +
    54 const typename pcl::PointCloud<pointRGBT>::Ptr & cloud,
    +
    55 float transferColorRadius,
    +
    56 bool coloredOutput,
    +
    57 bool cleanMesh,
    +
    58 int minClusterSize,
    +
    59 ProgressState * progressState)
    +
    60{
    +
    61 // compute normals for the mesh if not already here
    +
    62 bool hasNormals = false;
    +
    63 bool hasColors = false;
    +
    64 for(unsigned int i=0; i<mesh->cloud.fields.size(); ++i)
    +
    65 {
    +
    66 if(mesh->cloud.fields[i].name.compare("normal_x") == 0)
    +
    67 {
    +
    68 hasNormals = true;
    +
    69 }
    +
    70 else if(mesh->cloud.fields[i].name.compare("rgb") == 0)
    +
    71 {
    +
    72 hasColors = true;
    +
    73 }
    +
    74 }
    +
    75
    +
    76 if(maximumPolygons > 0)
    +
    77 {
    +
    78 double factor = 1.0-double(maximumPolygons)/double(mesh->polygons.size());
    +
    79 if(factor > meshDecimationFactor)
    +
    80 {
    +
    81 meshDecimationFactor = factor;
    +
    82 }
    +
    83 }
    +
    84 if(meshDecimationFactor > 0.0)
    +
    85 {
    +
    86 unsigned int count = mesh->polygons.size();
    +
    87 if(progressState) progressState->callback(uFormat("Mesh decimation (factor=%f) from %d polygons...",meshDecimationFactor, (int)count));
    +
    88
    +
    89 mesh = util3d::meshDecimation(mesh, (float)meshDecimationFactor);
    +
    90 if(progressState) progressState->callback(uFormat("Mesh decimated (factor=%f) from %d to %d polygons", meshDecimationFactor, (int)count, (int)mesh->polygons.size()));
    +
    91 if(count < mesh->polygons.size())
    +
    92 {
    +
    93 if(progressState) progressState->callback(uFormat("Decimated mesh has more polygons than before!"));
    +
    94 }
    +
    95 hasNormals = false;
    +
    96 hasColors = false;
    +
    97 }
    +
    98
    +
    99 if(cloud.get()!=0 &&
    +
    100 !hasColors &&
    +
    101 transferColorRadius >= 0.0)
    +
    102 {
    +
    103 if(progressState) progressState->callback(uFormat("Transferring color from point cloud to mesh..."));
    +
    104
    +
    105 // transfer color from point cloud to mesh
    +
    106 typename pcl::search::KdTree<pointRGBT>::Ptr tree (new pcl::search::KdTree<pointRGBT>(true));
    +
    107 tree->setInputCloud(cloud);
    +
    108 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr coloredCloud(new pcl::PointCloud<pcl::PointXYZRGBNormal>);
    +
    109 pcl::fromPCLPointCloud2(mesh->cloud, *coloredCloud);
    +
    110 std::vector<bool> coloredPts(coloredCloud->size());
    +
    111 for(unsigned int i=0; i<coloredCloud->size(); ++i)
    +
    112 {
    +
    113 std::vector<int> kIndices;
    +
    114 std::vector<float> kDistances;
    +
    115 pointRGBT pt;
    +
    116 pt.x = coloredCloud->at(i).x;
    +
    117 pt.y = coloredCloud->at(i).y;
    +
    118 pt.z = coloredCloud->at(i).z;
    +
    119 if(transferColorRadius > 0.0)
    +
    120 {
    +
    121 tree->radiusSearch(pt, transferColorRadius, kIndices, kDistances);
    +
    122 }
    +
    123 else
    +
    124 {
    +
    125 tree->nearestKSearch(pt, 1, kIndices, kDistances);
    +
    126 }
    +
    127 if(kIndices.size())
    +
    128 {
    +
    129 //compute average color
    +
    130 int r=0;
    +
    131 int g=0;
    +
    132 int b=0;
    +
    133 int a=0;
    +
    134 for(unsigned int j=0; j<kIndices.size(); ++j)
    +
    135 {
    +
    136 r+=(int)cloud->at(kIndices[j]).r;
    +
    137 g+=(int)cloud->at(kIndices[j]).g;
    +
    138 b+=(int)cloud->at(kIndices[j]).b;
    +
    139 a+=(int)cloud->at(kIndices[j]).a;
    +
    140 }
    +
    141 coloredCloud->at(i).r = r/kIndices.size();
    +
    142 coloredCloud->at(i).g = g/kIndices.size();
    +
    143 coloredCloud->at(i).b = b/kIndices.size();
    +
    144 coloredCloud->at(i).a = a/kIndices.size();
    +
    145 coloredPts.at(i) = true;
    +
    146 }
    +
    147 else
    +
    148 {
    +
    149 //white
    +
    150 coloredCloud->at(i).r = coloredCloud->at(i).g = coloredCloud->at(i).b = 255;
    +
    151 coloredPts.at(i) = false;
    +
    152 }
    +
    153 }
    +
    154 if(coloredOutput) {
    +
    155 pcl::toPCLPointCloud2(*coloredCloud, mesh->cloud);
    +
    156 hasColors = true;
    +
    157 }
    +
    158
    +
    159 // remove polygons with no color
    +
    160 if(cleanMesh)
    +
    161 {
    +
    162 std::vector<pcl::Vertices> filteredPolygons(mesh->polygons.size());
    +
    163 int oi=0;
    +
    164 for(unsigned int i=0; i<mesh->polygons.size(); ++i)
    +
    165 {
    +
    166 bool coloredPolygon = true;
    +
    167 for(unsigned int j=0; j<mesh->polygons[i].vertices.size(); ++j)
    +
    168 {
    +
    169 if(!coloredPts.at(mesh->polygons[i].vertices[j]))
    +
    170 {
    +
    171 coloredPolygon = false;
    +
    172 break;
    +
    173 }
    +
    174 }
    +
    175 if(coloredPolygon)
    +
    176 {
    +
    177 filteredPolygons[oi++] = mesh->polygons[i];
    +
    178 }
    +
    179 }
    +
    180 filteredPolygons.resize(oi);
    +
    181 mesh->polygons = filteredPolygons;
    +
    182 }
    +
    183 }
    +
    184
    +
    185 if(minClusterSize)
    +
    186 {
    +
    187 if(progressState) progressState->callback(uFormat("Filter small polygon clusters..."));
    +
    188
    +
    189 // filter polygons
    +
    190 std::vector<std::set<int> > neighbors;
    +
    191 std::vector<std::set<int> > vertexToPolygons;
    +
    192 util3d::createPolygonIndexes(mesh->polygons,
    +
    193 mesh->cloud.height*mesh->cloud.width,
    +
    194 neighbors,
    +
    195 vertexToPolygons);
    +
    196 std::list<std::list<int> > clusters = util3d::clusterPolygons(
    +
    197 neighbors,
    +
    198 minClusterSize<0?0:minClusterSize);
    +
    199
    +
    200 std::vector<pcl::Vertices> filteredPolygons(mesh->polygons.size());
    +
    201 if(minClusterSize < 0)
    +
    202 {
    +
    203 // only keep the biggest cluster
    +
    204 std::list<std::list<int> >::iterator biggestClusterIndex = clusters.end();
    +
    205 unsigned int biggestClusterSize = 0;
    +
    206 for(std::list<std::list<int> >::iterator iter=clusters.begin(); iter!=clusters.end(); ++iter)
    +
    207 {
    +
    208 if(iter->size() > biggestClusterSize)
    +
    209 {
    +
    210 biggestClusterIndex = iter;
    +
    211 biggestClusterSize = iter->size();
    +
    212 }
    +
    213 }
    +
    214 if(biggestClusterIndex != clusters.end())
    +
    215 {
    +
    216 int oi=0;
    +
    217 for(std::list<int>::iterator jter=biggestClusterIndex->begin(); jter!=biggestClusterIndex->end(); ++jter)
    +
    218 {
    +
    219 filteredPolygons[oi++] = mesh->polygons.at(*jter);
    +
    220 }
    +
    221 filteredPolygons.resize(oi);
    +
    222 }
    +
    223 }
    +
    224 else
    +
    225 {
    +
    226 int oi=0;
    +
    227 for(std::list<std::list<int> >::iterator iter=clusters.begin(); iter!=clusters.end(); ++iter)
    +
    228 {
    +
    229 for(std::list<int>::iterator jter=iter->begin(); jter!=iter->end(); ++jter)
    +
    230 {
    +
    231 filteredPolygons[oi++] = mesh->polygons.at(*jter);
    +
    232 }
    +
    233 }
    +
    234 filteredPolygons.resize(oi);
    +
    235 }
    +
    236
    +
    237 int before = (int)mesh->polygons.size();
    +
    238 mesh->polygons = filteredPolygons;
    +
    239
    +
    240 if(progressState) progressState->callback(uFormat("Filtered %d polygons.", before-(int)mesh->polygons.size()));
    +
    241 }
    +
    242
    +
    243 // compute normals for the mesh if not already here
    +
    244 if(!hasNormals)
    +
    245 {
    +
    246 // use polygons
    +
    247 if(hasColors)
    +
    248 {
    +
    249 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBNormal>);
    +
    250 pcl::fromPCLPointCloud2(mesh->cloud, *cloud);
    +
    251
    +
    252 Eigen::Vector3f normal(1,0,0);
    +
    253 for(unsigned int i=0; i<mesh->polygons.size(); ++i)
    +
    254 {
    +
    255 pcl::Vertices & v = mesh->polygons[i];
    +
    256 if(!hasNormals)
    +
    257 {
    +
    258 UASSERT(v.vertices.size()>2);
    +
    259 Eigen::Vector3f v0(
    +
    260 cloud->at(v.vertices[1]).x - cloud->at(v.vertices[0]).x,
    +
    261 cloud->at(v.vertices[1]).y - cloud->at(v.vertices[0]).y,
    +
    262 cloud->at(v.vertices[1]).z - cloud->at(v.vertices[0]).z);
    +
    263 int last = v.vertices.size()-1;
    +
    264 Eigen::Vector3f v1(
    +
    265 cloud->at(v.vertices[last]).x - cloud->at(v.vertices[0]).x,
    +
    266 cloud->at(v.vertices[last]).y - cloud->at(v.vertices[0]).y,
    +
    267 cloud->at(v.vertices[last]).z - cloud->at(v.vertices[0]).z);
    +
    268 normal = v0.cross(v1);
    +
    269 normal.normalize();
    +
    270 }
    +
    271 // flat normal (per face)
    +
    272 for(unsigned int j=0; j<v.vertices.size(); ++j)
    +
    273 {
    +
    274 cloud->at(v.vertices[j]).normal_x = normal[0];
    +
    275 cloud->at(v.vertices[j]).normal_y = normal[1];
    +
    276 cloud->at(v.vertices[j]).normal_z = normal[2];
    +
    277 }
    +
    278 }
    +
    279 pcl::toPCLPointCloud2 (*cloud, mesh->cloud);
    +
    280 }
    +
    281 else
    +
    282 {
    +
    283 pcl::PointCloud<pcl::PointNormal>::Ptr cloud (new pcl::PointCloud<pcl::PointNormal>);
    +
    284 pcl::fromPCLPointCloud2(mesh->cloud, *cloud);
    +
    285
    +
    286 for(unsigned int i=0; i<mesh->polygons.size(); ++i)
    +
    287 {
    +
    288 pcl::Vertices & v = mesh->polygons[i];
    +
    289 UASSERT(v.vertices.size()>2);
    +
    290 Eigen::Vector3f v0(
    +
    291 cloud->at(v.vertices[1]).x - cloud->at(v.vertices[0]).x,
    +
    292 cloud->at(v.vertices[1]).y - cloud->at(v.vertices[0]).y,
    +
    293 cloud->at(v.vertices[1]).z - cloud->at(v.vertices[0]).z);
    +
    294 int last = v.vertices.size()-1;
    +
    295 Eigen::Vector3f v1(
    +
    296 cloud->at(v.vertices[last]).x - cloud->at(v.vertices[0]).x,
    +
    297 cloud->at(v.vertices[last]).y - cloud->at(v.vertices[0]).y,
    +
    298 cloud->at(v.vertices[last]).z - cloud->at(v.vertices[0]).z);
    +
    299 Eigen::Vector3f normal = v0.cross(v1);
    +
    300 normal.normalize();
    +
    301 // flat normal (per face)
    +
    302 for(unsigned int j=0; j<v.vertices.size(); ++j)
    +
    303 {
    +
    304 cloud->at(v.vertices[j]).normal_x = normal[0];
    +
    305 cloud->at(v.vertices[j]).normal_y = normal[1];
    +
    306 cloud->at(v.vertices[j]).normal_z = normal[2];
    +
    307 }
    +
    308 }
    +
    309 pcl::toPCLPointCloud2 (*cloud, mesh->cloud);
    +
    310 }
    +
    311 }
    +
    312}
    +
    313
    +
    314template<typename PointT>
    +
    315bool intersectRayMesh(
    +
    316 const Eigen::Vector3f & origin,
    +
    317 const Eigen::Vector3f & dir,
    +
    318 const typename pcl::PointCloud<PointT> & cloud,
    +
    319 const std::vector<pcl::Vertices> & polygons,
    +
    320 bool ignoreBackFaces,
    +
    321 float & distance,
    +
    322 Eigen::Vector3f & normal,
    +
    323 int & index)
    +
    324{
    +
    325 bool intersect = false;
    +
    326 distance = std::numeric_limits<float>::max();
    +
    327 for (size_t i = 0; i < polygons.size(); ++i)
    +
    328 {
    +
    329 const pcl::Vertices & vert = polygons.at(i);
    +
    330 UASSERT(vert.vertices.size()==3);
    +
    331 float d;
    +
    332 Eigen::Vector3f n;
    +
    333 if (intersectRayTriangle(origin, dir,
    +
    334 cloud.at(vert.vertices.at(0)).getVector3fMap(),
    +
    335 cloud.at(vert.vertices.at(1)).getVector3fMap(),
    +
    336 cloud.at(vert.vertices.at(2)).getVector3fMap(), d, n) &&
    +
    337 d < distance &&
    +
    338 (!ignoreBackFaces || n.dot(dir)<0))
    +
    339 {
    +
    340 distance = d;
    +
    341 index = i;
    +
    342 normal = n;
    +
    343 intersect |= true;
    +
    344 }
    +
    345 }
    +
    346 normal.normalize();
    +
    347 return intersect;
    +
    348}
    +
    349
    +
    350}
    +
    351
    +
    352}
    +
    353
    +
    354
    +
    355#endif /* CORELIB_INCLUDE_RTABMAP_CORE_IMPL_UTIL3D_SURFACE_HPP_ */
    +
    Some conversion functions.
    +
    std::string UTILITE_EXPORT uFormat(const char *fmt,...)
    +
    #define UASSERT(condition)
    Definition ULogger.h:66
    +
    void RTABMAP_CORE_EXPORT createPolygonIndexes(const std::vector< pcl::Vertices > &polygons, int cloudSize, std::vector< std::set< int > > &neighborPolygons, std::vector< std::set< int > > &vertexPolygons)
    Given a set of polygons, create two indexes: polygons to neighbor polygons and vertices to polygons.
    +
    bool RTABMAP_CORE_EXPORT intersectRayTriangle(const Eigen::Vector3f &p, const Eigen::Vector3f &dir, const Eigen::Vector3f &v0, const Eigen::Vector3f &v1, const Eigen::Vector3f &v2, float &distance, Eigen::Vector3f &normal)
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/util3d__transforms_8h_source.html b/preview/pr-1773/api/latest/util3d__transforms_8h_source.html new file mode 100644 index 00000000..a9021893 --- /dev/null +++ b/preview/pr-1773/api/latest/util3d__transforms_8h_source.html @@ -0,0 +1,244 @@ + + + + + + + + +RTAB-Map: corelib/include/rtabmap/core/util3d_transforms.h Source File + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    RTAB-Map 0.23.12 +
    +
    Real-Time Appearance-Based Mapping
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    util3d_transforms.h
    +
    +
    +
    1/*
    +
    2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
    +
    3All rights reserved.
    +
    4
    +
    5Redistribution and use in source and binary forms, with or without
    +
    6modification, are permitted provided that the following conditions are met:
    +
    7 * Redistributions of source code must retain the above copyright
    +
    8 notice, this list of conditions and the following disclaimer.
    +
    9 * Redistributions in binary form must reproduce the above copyright
    +
    10 notice, this list of conditions and the following disclaimer in the
    +
    11 documentation and/or other materials provided with the distribution.
    +
    12 * Neither the name of the Universite de Sherbrooke nor the
    +
    13 names of its contributors may be used to endorse or promote products
    +
    14 derived from this software without specific prior written permission.
    +
    15
    +
    16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
    +
    17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    +
    18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    +
    19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
    +
    20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +
    21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +
    22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +
    23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +
    24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    +
    25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +
    26*/
    +
    27
    +
    28#ifndef UTIL3D_TRANSFORMS_H_
    +
    29#define UTIL3D_TRANSFORMS_H_
    +
    30
    +
    31#include <rtabmap/core/rtabmap_core_export.h>
    +
    32
    +
    33#include <pcl/point_cloud.h>
    +
    34#include <pcl/point_types.h>
    +
    35#include <pcl/pcl_base.h>
    +
    36#include <rtabmap/core/Transform.h>
    +
    37#include <rtabmap/core/LaserScan.h>
    +
    38
    +
    39namespace rtabmap
    +
    40{
    +
    41
    +
    42namespace util3d
    +
    43{
    +
    44
    +
    75LaserScan RTABMAP_CORE_EXPORT transformLaserScan(
    +
    76 const LaserScan & laserScan,
    +
    77 const Transform & transform);
    +
    78
    +
    93pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    94 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    95 const Transform & transform);
    +
    97pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    98 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    99 const Transform & transform);
    +
    101pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    102 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    103 const Transform & transform);
    +
    105pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    106 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    107 const Transform & transform);
    +
    109pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    110 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    111 const Transform & transform);
    +
    113pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    114 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    115 const Transform & transform);
    +
    116
    +
    118pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    119 const pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud,
    +
    120 const pcl::IndicesPtr & indices,
    +
    121 const Transform & transform);
    +
    123pcl::PointCloud<pcl::PointXYZI>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    124 const pcl::PointCloud<pcl::PointXYZI>::Ptr & cloud,
    +
    125 const pcl::IndicesPtr & indices,
    +
    126 const Transform & transform);
    +
    128pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    129 const pcl::PointCloud<pcl::PointXYZRGB>::Ptr & cloud,
    +
    130 const pcl::IndicesPtr & indices,
    +
    131 const Transform & transform);
    +
    133pcl::PointCloud<pcl::PointNormal>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    134 const pcl::PointCloud<pcl::PointNormal>::Ptr & cloud,
    +
    135 const pcl::IndicesPtr & indices,
    +
    136 const Transform & transform);
    +
    138pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    139 const pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr & cloud,
    +
    140 const pcl::IndicesPtr & indices,
    +
    141 const Transform & transform);
    +
    143pcl::PointCloud<pcl::PointXYZINormal>::Ptr RTABMAP_CORE_EXPORT transformPointCloud(
    +
    144 const pcl::PointCloud<pcl::PointXYZINormal>::Ptr & cloud,
    +
    145 const pcl::IndicesPtr & indices,
    +
    146 const Transform & transform);
    +
    161cv::Point3f RTABMAP_CORE_EXPORT transformPoint(
    +
    162 const cv::Point3f & pt,
    +
    163 const Transform & transform);
    +
    165cv::Point3d RTABMAP_CORE_EXPORT transformPoint(
    +
    166 const cv::Point3d & pt,
    +
    167 const Transform & transform);
    +
    169pcl::PointXYZ RTABMAP_CORE_EXPORT transformPoint(
    +
    170 const pcl::PointXYZ & pt,
    +
    171 const Transform & transform);
    +
    173pcl::PointXYZI RTABMAP_CORE_EXPORT transformPoint(
    +
    174 const pcl::PointXYZI & pt,
    +
    175 const Transform & transform);
    +
    177pcl::PointXYZRGB RTABMAP_CORE_EXPORT transformPoint(
    +
    178 const pcl::PointXYZRGB & pt,
    +
    179 const Transform & transform);
    +
    181pcl::PointNormal RTABMAP_CORE_EXPORT transformPoint(
    +
    182 const pcl::PointNormal & point,
    +
    183 const Transform & transform);
    +
    185pcl::PointXYZRGBNormal RTABMAP_CORE_EXPORT transformPoint(
    +
    186 const pcl::PointXYZRGBNormal & point,
    +
    187 const Transform & transform);
    +
    189pcl::PointXYZINormal RTABMAP_CORE_EXPORT transformPoint(
    +
    190 const pcl::PointXYZINormal & point,
    +
    191 const Transform & transform);
    +
    194} // namespace util3d
    +
    195} // namespace rtabmap
    +
    196
    +
    197#endif /* UTIL3D_TRANSFORMS_H_ */
    +
    Represents 2D or 3D laser scan data with support for multiple point data formats.
    Definition LaserScan.h:46
    +
    Represents a 3D rigid body transformation (rotation + translation).
    Definition Transform.h:53
    +
    cv::Point3f RTABMAP_CORE_EXPORT transformPoint(const cv::Point3f &pt, const Transform &transform)
    Transforms cv::Point3f point type.
    +
    pcl::PointCloud< pcl::PointXYZ >::Ptr RTABMAP_CORE_EXPORT transformPointCloud(const pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud, const Transform &transform)
    Transforms pcl::PointXYZ point cloud type.
    +
    LaserScan RTABMAP_CORE_EXPORT transformLaserScan(const LaserScan &laserScan, const Transform &transform)
    Applies a 3D transform to all points (and normals if present) in a LaserScan.
    + +
    +
    + + + + diff --git a/preview/pr-1773/api/latest/version-switcher.js b/preview/pr-1773/api/latest/version-switcher.js new file mode 100644 index 00000000..7602c6c2 --- /dev/null +++ b/preview/pr-1773/api/latest/version-switcher.js @@ -0,0 +1,74 @@ +/* Renders the version dropdown into Doxygen's #projectnumber element. + * + * Expects two things set up by the generated HTML header (see Doxyfile.in): + * - window.RTABMAP_DOC_ROOT: Doxygen's $relpath^, i.e. the path from the + * current page back to the root of *this* version's documentation. + * - versions.js loaded from the API root, defining RTABMAP_DOC_VERSIONS. + * + * Everything is computed relative to those two, so the same files work for a + * local preview (file:// or a static server) and for the published site, + * whatever prefix it is served under. + */ +(function () { + 'use strict'; + + function onReady(fn) { + if (document.readyState !== 'loading') { + fn(); + } else { + document.addEventListener('DOMContentLoaded', fn); + } + } + + onReady(function () { + var versions = window.RTABMAP_DOC_VERSIONS; + var holder = document.getElementById('projectnumber'); + if (!versions || !versions.length || !holder) { + return; // no version list deployed, or an unexpected Doxygen layout + } + + // Absolute path of this version's doc root, then of the API root above it. + var anchor = document.createElement('a'); + anchor.href = window.RTABMAP_DOC_ROOT || './'; + var versionRoot = anchor.pathname.replace(/[^/]*$/, ''); // .../api// + var apiRoot = versionRoot.replace(/[^/]+\/$/, ''); // .../api/ + var currentDir = versionRoot.slice(apiRoot.length).replace(/\/$/, ''); + var pageInVersion = window.location.pathname.slice(versionRoot.length); + + var select = document.createElement('select'); + select.className = 'rtabmap-version-switcher'; + select.setAttribute('aria-label', 'Documentation version'); + + var matched = false; + versions.forEach(function (entry) { + var option = document.createElement('option'); + option.textContent = entry[0]; + option.value = entry[1]; + if (entry[1] === currentDir) { + option.selected = true; + matched = true; + } + select.appendChild(option); + }); + + // Version not in the list (a local build, or a folder not published yet): + // show it so the box never lies about which docs are open. + if (!matched && currentDir) { + var current = document.createElement('option'); + current.textContent = currentDir; + current.value = currentDir; + current.selected = true; + select.insertBefore(current, select.firstChild); + } + + select.addEventListener('change', function () { + // Keep the reader on the same page in the target version. Pages that + // did not exist back then 404, which is the usual trade-off; the + // alternative (always landing on index.html) is worse for deep links. + window.location.href = apiRoot + select.value + '/' + pageInVersion; + }); + + holder.textContent = ''; + holder.appendChild(select); + }); +})(); diff --git a/preview/pr-1773/api/versions.js b/preview/pr-1773/api/versions.js new file mode 100644 index 00000000..64b2573d --- /dev/null +++ b/preview/pr-1773/api/versions.js @@ -0,0 +1,16 @@ +/* Single source of truth for the API documentation version dropdown. + * + * This file is deployed ONCE at the root of the API docs (e.g. /api/versions.js), + * NOT inside each version folder. Every published version loads this same file, + * so adding an entry here makes the new release appear in the dropdown of all + * previously published versions at once. + * + * To publish a new release, add ONE entry at the top and redeploy this file to + * the API docs root. Format: ['
  • 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 Y%Yzf%4kURiEv!IMVM(E=(^u~Nf0(ChQvd(} literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/UMath_8h__incl.map b/preview/pr-1773/api/latest/UMath_8h__incl.map new file mode 100644 index 00000000..aa1b862f --- /dev/null +++ b/preview/pr-1773/api/latest/UMath_8h__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UMath_8h__incl.md5 b/preview/pr-1773/api/latest/UMath_8h__incl.md5 new file mode 100644 index 00000000..4faf70e5 --- /dev/null +++ b/preview/pr-1773/api/latest/UMath_8h__incl.md5 @@ -0,0 +1 @@ +27c267cbccdda8a9a154e9004b9342b2 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UMath_8h__incl.png b/preview/pr-1773/api/latest/UMath_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..bc205e38fda372ee12711896fbf38dedd2d00e3e GIT binary patch literal 8108 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 T$zcQIcLeDV3gV@rpM3rUf7&*y literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/UMath_8h_source.html b/preview/pr-1773/api/latest/UMath_8h_source.html new file mode 100644 index 00000000..e3bc2ad5 --- /dev/null +++ b/preview/pr-1773/api/latest/UMath_8h_source.html @@ -0,0 +1,899 @@ + + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UMath.h Source File + + + + + + + + + + + + + + + + + + + + +

    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 literal 0 HcmV?d00001 diff --git a/preview/pr-1773/api/latest/UConversion_8h__incl.map b/preview/pr-1773/api/latest/UConversion_8h__incl.map new file mode 100644 index 00000000..ab1aab87 --- /dev/null +++ b/preview/pr-1773/api/latest/UConversion_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/preview/pr-1773/api/latest/UConversion_8h__incl.md5 b/preview/pr-1773/api/latest/UConversion_8h__incl.md5 new file mode 100644 index 00000000..353958cf --- /dev/null +++ b/preview/pr-1773/api/latest/UConversion_8h__incl.md5 @@ -0,0 +1 @@ +a990f62e137578dcec4892d04cbadec6 \ No newline at end of file diff --git a/preview/pr-1773/api/latest/UConversion_8h__incl.png b/preview/pr-1773/api/latest/UConversion_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..be250dcd973f82d76b2244de7fcff392775aefc0 GIT binary patch literal 13703 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 + + + + + + + +RTAB-Map: utilite/include/rtabmap/utilite/UConversion.h Source File + + + + + + + + + + + + + + + + + + + + +